1---------------------------------------- 227 May 2016. Summary of changes for version 20160527: 3 4This release is available at https://acpica.org/downloads 5 6 71) ACPICA kernel-resident subsystem: 8 9Temporarily reverted the new arbitrary bit length/alignment support in 10AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 11a number of regressions with the new code that need to be fully resolved 12and tested before this support can be finally integrated into ACPICA. 13Apologies for any inconveniences these issues may have caused. 14 15The ACPI message macros are not configurable (ACPI_MSG_ERROR, 16ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 17and ACPI_MSG_BIOS_WARNING). Lv Zheng. 18 19Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 20option. Adds a new return macro, return_STR. Junk-uk Kim. 21 22Example Code and Data Size: These are the sizes for the OS-independent 23acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 24debug version of the code includes the debug output trace mechanism and 25has a much larger code and data size. 26 27 Current Release: 28 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 29 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 30 Previous Release: 31 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 32 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 33 34---------------------------------------- 3522 April 2016. Summary of changes for version 20160422: 36 371) ACPICA kernel-resident subsystem: 38 39Fixed a regression in the GAS (generic address structure) arbitrary bit 40support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 41and incorrect return values. Lv Zheng. ACPICA BZ 1270. 42 43ACPI 6.0: Added support for new/renamed resource macros. One new argument 44was added to each of these macros, and the original name has been 45deprecated. The AML disassembler will always disassemble to the new 46names. Support for the new macros was added to iASL, disassembler, 47resource manager, and the acpihelp utility. ACPICA BZ 1274. 48 49 I2cSerialBus -> I2cSerialBusV2 50 SpiSerialBus -> SpiSerialBusV2 51 UartSerialBus -> UartSerialBusV2 52 53ACPI 6.0: Added support for a new integer field that was appended to the 54package object returned by the _BIX method. This adds iASL compile-time 55and AML runtime error checking. ACPICA BZ 1273. 56 57ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 58Subspace Type2" (Headers, Disassembler, and data table compiler). 59 60Example Code and Data Size: These are the sizes for the OS-independent 61acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 62debug version of the code includes the debug output trace mechanism and 63has a much larger code and data size. 64 65 Current Release: 66 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 67 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 68 Previous Release: 69 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 70 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 71 72 732) iASL Compiler/Disassembler and Tools: 74 75iASL: Implemented an ASL grammar extension to allow/enable executable 76"module-level code" to be created and executed under the various 77operators that create new scopes. This type of AML code is already 78supported in all known AML interpreters, and the grammar change will 79appear in the next version of the ACPI specification. Simplifies the 80conditional runtime creation of named objects under these object types: 81 82 Device 83 PowerResource 84 Processor 85 Scope 86 ThermalZone 87 88iASL: Implemented a new ASL extension, a "For" loop macro to add greater 89ease-of-use to the ASL language. The syntax is similar to the 90corresponding C operator, and is implemented with the existing AML While 91opcode -- thus requiring no changes to existing AML interpreters. 92 93 For (Initialize, Predicate, Update) {TermList} 94 95Grammar: 96 ForTerm := 97 For ( 98 Initializer // Nothing | TermArg => ComputationalData 99 Predicate // Nothing | TermArg => ComputationalData 100 Update // Nothing | TermArg => ComputationalData 101 ) {TermList} 102 103 104iASL: The _HID/_ADR detection and validation has been enhanced to search 105under conditionals in order to allow these objects to be conditionally 106created at runtime. 107 108iASL: Fixed several issues with the constant folding feature. The 109improvement allows better detection and resolution of statements that can 110be folded at compile time. ACPICA BZ 1266. 111 112iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 113conversion to the ASL ElseIf operator where incorrect ASL code could be 114generated. 115 116iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 117sometimes an extra (and extraneous) set of parentheses were emitted for 118some combinations of operators. Although this did not cause any problems 119with recompilation of the disassembled code, it made the code more 120difficult to read. David Box. ACPICA BZ 1231. 121 122iASL: Changed to ignore the unreferenced detection for predefined names 123of resource descriptor elements, when the resource descriptor is 124created/defined within a control method. 125 126iASL: Disassembler: Fix a possible fault with externally declared Buffer 127objects. 128 129---------------------------------------- 13018 March 2016. Summary of changes for version 20160318: 131 1321) ACPICA kernel-resident subsystem: 133 134Added support for arbitrary bit lengths and bit offsets for registers 135defined by the Generic Address Structure. Previously, only aligned bit 136lengths of 8/16/32/64 were supported. This was sufficient for many years, 137but recently some machines have been seen that require arbitrary bit- 138level support. ACPICA BZ 1240. Lv Zheng. 139 140Fixed an issue where the \_SB._INI method sometimes must be evaluated 141before any _REG methods are evaluated. Lv Zheng. 142 143Implemented several changes related to ACPI table support 144(Headers/Disassembler/TableCompiler): 145NFIT: For ACPI 6.1, updated to add some additional new fields and 146constants. 147FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 1486). 149DMAR: Added new constants per the 10/2014 DMAR spec. 150IORT: Added new subtable per the 10/2015 IORT spec. 151HEST: For ACPI 6.1, added new constants and new subtable. 152DBG2: Added new constants per the 12/2015 DBG2 spec. 153FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 154ACPICA BZ 1249. 155ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 156 157Updated header support for the DMAR table to match the current version of 158the related spec. 159 160Added extensions to the ASL Concatenate operator to allow any ACPI object 161to be passed as an operand. Any object other than Integer/String/Buffer 162simply returns a string containing the object type. This extends the 163usefulness of the Printf macros. Previously, Concatenate would abort the 164control method if a non-data object was encountered. 165 166ACPICA source code: Deployed the C "const" keyword across the source code 167where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 168 169Example Code and Data Size: These are the sizes for the OS-independent 170acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 171debug version of the code includes the debug output trace mechanism and 172has a much larger code and data size. 173 174 Current Release: 175 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 176 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 177 Previous Release: 178 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 179 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 180 181 1822) iASL Compiler/Disassembler and Tools: 183 184iASL/Disassembler: Improved the heuristic used to determine the number of 185arguments for an externally defined control method (a method in another 186table). Although this is an improvement, there is no deterministic way to 187"guess" the number of method arguments. Only the ACPI 6.0 External opcode 188will completely solve this problem as it is deployed (automatically) in 189newer BIOS code. 190 191iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 192statements that could cause errors when the disassembled file is 193compiled. ACPICA BZ 1243. David Box. 194 195iASL: Fixed a regression caused by the merger of the two versions of the 196local strtoul64. Because of a dependency on a global variable, strtoul64 197could return an error for integers greater than a 32-bit value. ACPICA BZ 1981260. 199 200iASL: Fixed a regression where a fault could occur for an ASL Return 201statement if it invokes a control method that is not resolved. ACPICA BZ 2021264. 203 204AcpiXtract: Improved input file validation: detection of binary files and 205non-acpidump text files. 206 207---------------------------------------- 20812 February 2016. Summary of changes for version 20160212: 209 2101) ACPICA kernel-resident subsystem: 211 212Implemented full support for the ACPI 6.1 specification (released in 213January). This version of the specification is available at: 214http://www.uefi.org/specifications 215 216Only a relatively small number of changes were required in ACPICA to 217support ACPI 6.1, in these areas: 218- New predefined names 219- New _HID values 220- A new subtable for HEST 221- A few other header changes for new values 222 223Ensure \_SB_._INI is executed before any _REG methods are executed. There 224appears to be existing BIOS code that relies on this behavior. Lv Zheng. 225 226Reverted a change made in version 20151218 which enabled method 227invocations to be targets of various ASL operators (SuperName and Target 228grammar elements). While the new behavior is supported by the ACPI 229specification, other AML interpreters do not support this behavior and 230never will. The ACPI specification will be updated for ACPI 6.2 to remove 231this support. Therefore, the change was reverted to the original ACPICA 232behavior. 233 234ACPICA now supports the GCC 6 compiler. 235 236Current Release: (Note: build changes increased sizes) 237 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 238 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 239Previous Release: 240 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 241 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 242 243 2442) iASL Compiler/Disassembler and Tools: 245 246Completed full support for the ACPI 6.0 External() AML opcode. The 247compiler emits an external AML opcode for each ASL External statement. 248This opcode is used by the disassembler to assist with the disassembly of 249external control methods by specifying the required number of arguments 250for the method. AML interpreters do not use this opcode. To ensure that 251interpreters do not even see the opcode, a block of one or more external 252opcodes is surrounded by an "If(0)" construct. As this feature becomes 253commonly deployed in BIOS code, the ability of disassemblers to correctly 254disassemble AML code will be greatly improved. David Box. 255 256iASL: Implemented support for an optional cross-reference output file. 257The -lx option will create a the cross-reference file with the suffix 258"xrf". Three different types of cross-reference are created in this file: 259- List of object references made from within each control method 260- Invocation (caller) list for each user-defined control method 261- List of references to each non-method object in the namespace 262 263iASL: Method invocations as ASL Target operands are now disallowed and 264flagged as errors in preparation for ACPI 6.2 (see the description of the 265problem above). 266 267---------------------------------------- 2688 January 2016. Summary of changes for version 20160108: 269 2701) ACPICA kernel-resident subsystem: 271 272Updated all ACPICA copyrights and signons to 2016: Added the 2016 273copyright to all source code module headers and utility/tool signons. 274This includes the standard Linux dual-license header. This affects 275virtually every file in the ACPICA core subsystem, iASL compiler, all 276ACPICA utilities, and the ACPICA test suite. 277 278Fixed a regression introduced in version 20151218 concerning the 279execution of so-called module-level ASL/AML code. Namespace objects 280created under a module-level If() construct were not properly/fully 281entered into the namespace and could cause an interpreter fault when 282accessed. 283 284Example Code and Data Size: These are the sizes for the OS-independent 285acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 286debug version of the code includes the debug output trace mechanism and 287has a much larger code and data size. 288 289Current Release: 290 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 291 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 292 Previous Release: 293 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 294 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 295 296 2972) iASL Compiler/Disassembler and Tools: 298 299Fixed a problem with the compilation of the GpioIo and GpioInt resource 300descriptors. The _PIN field name was incorrectly defined to be an array 301of 32-bit values, but the _PIN values are in fact 16 bits each. This 302would cause incorrect bit width warnings when using Word (16-bit) fields 303to access the descriptors. 304 305 306---------------------------------------- 30718 December 2015. Summary of changes for version 20151218: 308 3091) ACPICA kernel-resident subsystem: 310 311Implemented per-AML-table execution of "module-level code" as individual 312ACPI tables are loaded into the namespace during ACPICA initialization. 313In other words, any module-level code within an AML table is executed 314immediately after the table is loaded, instead of batched and executed 315after all of the tables have been loaded. This provides compatibility 316with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 317David Box. 318 319To fully support the feature above, the default operation region handlers 320for the SystemMemory, SystemIO, and PCI_Config address spaces are now 321installed before any ACPI tables are loaded. This enables module-level 322code to access these address spaces during the table load and module- 323level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 324Box. 325 326Implemented several changes to the internal _REG support in conjunction 327with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 328utilities for the changes above. Although these tools were changed, host 329operating systems that simply use the default handlers for SystemMemory, 330SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 331 332For example, in the code below, DEV1 is conditionally added to the 333namespace by the DSDT via module-level code that accesses an operation 334region. The SSDT references DEV1 via the Scope operator. DEV1 must be 335created immediately after the DSDT is loaded in order for the SSDT to 336successfully reference DEV1. Previously, this code would cause an 337AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 338fully supported by ACPICA. 339 340 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 341 { 342 OperationRegion (OPR1, SystemMemory, 0x400, 32) 343 Field (OPR1, AnyAcc, NoLock, Preserve) 344 { 345 FLD1, 1 346 } 347 If (FLD1) 348 { 349 Device (\DEV1) 350 { 351 } 352 } 353 } 354 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 355 { 356 External (\DEV1, DeviceObj) 357 Scope (\DEV1) 358 { 359 } 360 } 361 362Fixed an AML interpreter problem where control method invocations were 363not handled correctly when the invocation was itself a SuperName argument 364to another ASL operator. In these cases, the method was not invoked. 365ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 366argument: 367 Store 368 Acquire, Wait 369 CondRefOf, RefOf 370 Decrement, Increment 371 Load, Unload 372 Notify 373 Signal, Release, Reset 374 SizeOf 375 376Implemented automatic String-to-ObjectReference conversion support for 377packages returned by predefined names (such as _DEP). A common BIOS error 378is to add double quotes around an ObjectReference namepath, which turns 379the reference into an unexpected string object. This support detects the 380problem and corrects it before the package is returned to the caller that 381invoked the method. Lv Zheng. 382 383Implemented extensions to the Concatenate operator. Concatenate now 384accepts any type of object, it is not restricted to simply 385Integer/String/Buffer. For objects other than these 3 basic data types, 386the argument is treated as a string containing the name of the object 387type. This expands the utility of Concatenate and the Printf/Fprintf 388macros. ACPICA BZ 1222. 389 390Cleaned up the output of the ASL Debug object. The timer() value is now 391optional and no longer emitted by default. Also, the basic data types of 392Integer/String/Buffer are simply emitted as their values, without a data 393type string -- since the data type is obvious from the output. ACPICA BZ 3941221. 395 396Example Code and Data Size: These are the sizes for the OS-independent 397acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 398debug version of the code includes the debug output trace mechanism and 399has a much larger code and data size. 400 401 Current Release: 402 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 403 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 404 Previous Release: 405 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 406 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 407 408 4092) iASL Compiler/Disassembler and Tools: 410 411iASL: Fixed some issues with the ASL Include() operator. This operator 412was incorrectly defined in the iASL parser rules, causing a new scope to 413be opened for the code within the include file. This could lead to 414several issues, including allowing ASL code that is technically illegal 415and not supported by AML interpreters. Note, this does not affect the 416related #include preprocessor operator. ACPICA BZ 1212. 417 418iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 419operator is essentially an ASL macro since there is no AML opcode 420associated with it. The code emitted by the iASL compiler for ElseIf is 421an Else opcode followed immediately by an If opcode. The disassembler 422will now emit an ElseIf if it finds an Else immediately followed by an 423If. This simplifies the decoded ASL, especially for deeply nested 424If..Else and large Switch constructs. Thus, the disassembled code more 425closely follows the original source ASL. ACPICA BZ 1211. Example: 426 427 Old disassembly: 428 Else 429 { 430 If (Arg0 == 0x02) 431 { 432 Local0 = 0x05 433 } 434 } 435 436 New disassembly: 437 ElseIf (Arg0 == 0x02) 438 { 439 Local0 = 0x05 440 } 441 442AcpiExec: Added support for the new module level code behavior and the 443early region installation. This required a small change to the 444initialization, since AcpiExec must install its own operation region 445handlers. 446 447AcpiExec: Added support to make the debug object timer optional. Default 448is timer disabled. This cleans up the debug object output -- the timer 449data is rarely used. 450 451AcpiExec: Multiple ACPI tables are now loaded in the order that they 452appear on the command line. This can be important when there are 453interdependencies/references between the tables. 454 455iASL/Templates. Add support to generate template files with multiple 456SSDTs within a single output file. Also added ommand line support to 457specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 4581223, 1225. 459 460 461---------------------------------------- 46224 November 2015. Summary of changes for version 20151124: 463 4641) ACPICA kernel-resident subsystem: 465 466Fixed a possible regression for a previous update to FADT handling. The 467FADT no longer has a fixed table ID, causing some issues with code that 468was hardwired to a specific ID. Lv Zheng. 469 470Fixed a problem where the method auto-serialization could interfere with 471the current SyncLevel. This change makes the auto-serialization support 472transparent to the SyncLevel support and management. 473 474Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 475interface is intended for early access to the namespace during the 476initial namespace device discovery walk. The _SUB method has been seen to 477access operation regions in some cases, causing errors because the 478operation regions are not fully initialized. 479 480AML Debugger: Fixed some issues with the terminate/quit/exit commands 481that can cause faults. Lv Zheng. 482 483AML Debugger: Add thread ID support so that single-step mode only applies 484to the AML Debugger thread. This prevents runtime errors within some 485kernels. Lv Zheng. 486 487Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 488methods that are invoked by this interface are optional, removed warnings 489emitted for the case where one or more of these methods do not exist. 490ACPICA BZ 1208, original change by Prarit Bhargava. 491 492Made a major pass through the entire ACPICA source code base to 493standardize formatting that has diverged a bit over time. There are no 494functional changes, but this will of course cause quite a few code 495differences from the previous ACPICA release. 496 497Example Code and Data Size: These are the sizes for the OS-independent 498acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 499debug version of the code includes the debug output trace mechanism and 500has a much larger code and data size. 501 502 Current Release: 503 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 504 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 505 Previous Release: 506 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 507 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 508 509 5102) iASL Compiler/Disassembler and Tools: 511 512iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 513definition blocks within a single ASL file and the resulting AML file. 514Support for this type of file was also added to the various tools that 515use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 516example code below shows two definition blocks within the same file: 517 518 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 5190x12345678) 520 { 521 } 522 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 523 { 524 } 525 526iASL: Enhanced typechecking for the Name() operator. All expressions for 527the value of the named object must be reduced/folded to a single constant 528at compile time, as per the ACPI specification (the AML definition of 529Name()). 530 531iASL: Fixed some code indentation issues for the -ic and -ia options (C 532and assembly headers). Now all emitted code correctly begins in column 1. 533 534iASL: Added an error message for an attempt to open a Scope() on an 535object defined in an SSDT. The DSDT is always loaded into the namespace 536first, so any attempt to open a Scope on an SSDT object will fail at 537runtime. 538 539 540---------------------------------------- 54130 September 2015. Summary of changes for version 20150930: 542 5431) ACPICA kernel-resident subsystem: 544 545Debugger: Implemented several changes and bug fixes to assist support for 546the in-kernel version of the AML debugger. Lv Zheng. 547- Fix the "predefined" command for in-kernel debugger. 548- Do not enter debug command loop for the help and version commands. 549- Disallow "execute" command during execution/single-step of a method. 550 551Interpreter: Updated runtime typechecking for all operators that have 552target operands. The operand is resolved and validated that it is legal. 553For example, the target cannot be a non-data object such as a Device, 554Mutex, ThermalZone, etc., as per the ACPI specification. 555 556Debugger: Fixed the double-mutex user I/O handshake to work when local 557deadlock detection is enabled. 558 559Debugger: limited display of method locals and arguments (LocalX and 560ArgX) to only those that have actually been initialized. This prevents 561lines of extraneous output. 562 563Updated the definition of the NFIT table to correct the bit polarity of 564one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 565 566Example Code and Data Size: These are the sizes for the OS-independent 567acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 568debug version of the code includes the debug output trace mechanism and 569has a much larger code and data size. 570 571 Current Release: 572 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 573 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 574 Previous Release: 575 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 576 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 577 578 5792) iASL Compiler/Disassembler and Tools: 580 581iASL: Improved the compile-time typechecking for operands of many of the 582ASL operators: 583 584-- Added an option to disable compiler operand/operator typechecking (- 585ot). 586 587-- For the following operators, the TermArg operands are now validated 588when possible to be Integer data objects: BankField, OperationRegion, 589DataTableRegion, Buffer, and Package. 590 591-- Store (Source, Target): Both the source and target operands are 592resolved and checked that the operands are both legal. For example, 593neither operand can be a non-data object such as a Device, Mutex, 594ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 595operator can be used to store an object to any type of target object. 596 597-- Store (Source, Target): If the source is a Package object, the target 598must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 599is a Package, the source must also be a Package. 600 601-- Store (Source, Target): A warning is issued if the source and target 602resolve to the identical named object. 603 604-- Store (Source, <method invocation>): An error is generated for the 605target method invocation, as this construct is not supported by the AML 606interpreter. 607 608-- For all ASL math and logic operators, the target operand must be a 609data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 610includes the function return value also. 611 612-- External declarations are also included in the typechecking where 613possible. External objects defined using the UnknownObj keyword cannot be 614typechecked, however. 615 616iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 617operator: 618- Legacy code: Index(PKG1, 3) 619- New ASL+ code: PKG1[3] 620This completes the ACPI 6.0 ASL+ support as it was the only operator not 621supported. 622 623iASL: Fixed the file suffix for the preprocessor output file (.i). Two 624spaces were inadvertently appended to the filename, causing file access 625and deletion problems on some systems. 626 627ASL Test Suite (ASLTS): Updated the master makefile to generate all 628possible compiler output files when building the test suite -- thus 629exercising these features of the compiler. These files are automatically 630deleted when the test suite exits. 631 632 633---------------------------------------- 63418 August 2015. Summary of changes for version 20150818: 635 6361) ACPICA kernel-resident subsystem: 637 638Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 639Zheng. ACPICA BZ 1186. 640 641Completed development to ensure that the ACPICA Disassembler and Debugger 642are fully standalone components of ACPICA. Removed cross-component 643dependences. Lv Zheng. 644 645The max-number-of-AML-loops is now runtime configurable (previously was 646compile-time only). This is essentially a loop timeout to force-abort 647infinite AML loops. ACPCIA BZ 1192. 648 649Debugger: Cleanup output to dump ACPI names and namepaths without any 650trailing underscores. Lv Zheng. ACPICA BZ 1135. 651 652Removed unnecessary conditional compilations across the Debugger and 653Disassembler components where entire modules could be left uncompiled. 654 655The aapits test is deprecated and has been removed from the ACPICA git 656tree. The test has never been completed and has not been maintained, thus 657becoming rather useless. ACPICA BZ 1015, 794. 658 659A batch of small changes to close bugzilla and other reports: 660- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 661- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 662- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 663- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 664Moore. 665- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 666ACPICA BZ 1184. 667- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 668operators. 669- Debugger: Split debugger initialization/termination interfaces. Lv 670Zheng. 671- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 672identification. 673- AcpiExec: Add debug message during _REG method phase during table 674load/init. 675- AcpiNames: Fix a regression where some output was missing and no longer 676emitted. 677- Debugger: General cleanup and simplification. Lv Zheng. 678- Disassembler: Cleanup use of several global option variables. Lv Zheng. 679 680Example Code and Data Size: These are the sizes for the OS-independent 681acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 682debug version of the code includes the debug output trace mechanism and 683has a much larger code and data size. 684 685 Current Release: 686 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 687 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 688 Previous Release: 689 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 690 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 691 692 6932) iASL Compiler/Disassembler and Tools: 694 695AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 696were not handled properly and caused load errors. Now, properly invoke 697and use the ACPICA auto-reallocate mechanism for ACPI table data 698structures. ACPICA BZ 1188 699 700AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 701BZ 1190. 702 703AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 704AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 705executed during initialization. ACPICA BZ 1187, 1189. 706 707iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 708that corresponds to each disassembled ASL statement, to simplify 709debugging. ACPICA BZ 1191. 710 711Debugger: Add option to the "objects" command to display a summary of the 712current namespace objects (Object type and count). This is displayed if 713the command is entered with no arguments. 714 715AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 716 717 718---------------------------------------- 71917 July 2015. Summary of changes for version 20150717: 720 7211) ACPICA kernel-resident subsystem: 722 723Improved the partitioning between the Debugger and Disassembler 724components. This allows the Debugger to be used standalone within kernel 725code without the Disassembler (which is used for single stepping also). 726This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 727 728Debugger: Implemented a new command to trace the execution of control 729methods (Trace). This is especially useful for the in-kernel version of 730the debugger when file I/O may not be available for method trace output. 731See the ACPICA reference for more information. Lv Zheng. 732 733Moved all C library prototypes (used for the local versions of these 734functions when requested) to a new header, acclib.h 735Cleaned up the use of non-ANSI C library functions. These functions are 736implemented locally in ACPICA. Moved all such functions to a common 737source file, utnonansi.c 738 739Debugger: Fixed a problem with the "!!" command (get last command 740executed) where the debugger could enter an infinite loop and eventually 741crash. 742 743Removed the use of local macros that were used for some of the standard C 744library functions to automatically cast input parameters. This mostly 745affected the is* functions where the input parameter is defined to be an 746int. This required a few modifications to the main ACPICA source code to 747provide casting for these functions and eliminate possible compiler 748warnings for these parameters. 749 750Across the source code, added additional status/error checking to resolve 751issues discovered by static source code analysis tools such as Coverity. 752 753Example Code and Data Size: These are the sizes for the OS-independent 754acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 755debug version of the code includes the debug output trace mechanism and 756has a much larger code and data size. 757 758 Current Release: 759 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 760 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 761 Previous Release: 762 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 763 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 764 765 7662) iASL Compiler/Disassembler and Tools: 767 768iASL: Fixed a regression where the device map file feature no longer 769worked properly when used in conjunction with the disassembler. It only 770worked properly with the compiler itself. 771 772iASL: Implemented a new warning for method LocalX variables that are set 773but never used (similar to a C compiler such as gcc). This also applies 774to ArgX variables that are not defined by the parent method, and are 775instead (legally) used as local variables. 776 777iASL/Preprocessor: Finished the pass-through of line numbers from the 778preprocessor to the compiler. This ensures that compiler errors/warnings 779have the correct original line numbers and filenames, regardless of any 780#include files. 781 782iASL/Preprocessor: Fixed a couple of issues with comment handling and the 783pass-through of comments to the preprocessor output file (which becomes 784the compiler input file). Also fixed a problem with // comments that 785appear after a math expression. 786 787iASL: Added support for the TCPA server table to the table compiler and 788template generator. (The client table was already previously supported) 789 790iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 791identify the iASL compiler. 792 793Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 794multiple times. The new names are ACPI_SIGN_NEGATIVE and 795ACPI_SIGN_POSITIVE. 796 797AcpiHelp: Update to expand help messages for the iASL preprocessor 798directives. 799 800 801---------------------------------------- 80219 June 2015. Summary of changes for version 20150619: 803 804Two regressions in version 20150616 have been addressed: 805 806Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 807etc.) This update changes ACPICA to only use the standard headers for 808functions, or the prototypes for the local versions of the C library 809functions. Across the source code, this required some additional casts 810for some Clib invocations for portability. Moved all local prototypes to 811a new file, acclib.h 812 813Fixes several problems with recent changes to the handling of the FACS 814table that could cause some systems not to boot. 815 816 817---------------------------------------- 81816 June 2015. Summary of changes for version 20150616: 819 820 8211) ACPICA kernel-resident subsystem: 822 823Across the entire ACPICA source code base, the various macros for the C 824library functions (such as ACPI_STRLEN, etc.) have been removed and 825replaced by the standard C library names (strlen, etc.) The original 826purpose for these macros is no longer applicable. This simplification 827reduces the number of macros used in the ACPICA source code 828significantly, improving readability and maintainability. 829 830Implemented support for a new ACPI table, the OSDT. This table, the 831"override" SDT, can be loaded directly by the host OS at boot time. It 832enables the replacement of existing namespace objects that were installed 833via the DSDT and/or SSDTs. The primary purpose for this is to replace 834buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 835for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 836Moore. 837 838Added support for systems with (improperly) two FACS tables -- a "32-bit" 839table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 840X field). This change will support both automatically. There continues to 841be systems found with this issue. This support requires a change to the 842AcpiSetFirmwareWakingVector interface. Also, a public global variable has 843been added to allow the host to select which FACS is desired 844(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 845details Lv Zheng. 846 847Added a new feature to allow for systems that do not contain an FACS. 848Although this is already supported on hardware-reduced platforms, the 849feature has been extended for all platforms. The reasoning is that we do 850not want to abort the entire ACPICA initialization just because the 851system is seriously buggy and has no FACS. 852 853Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 854not correctly transcribed from the ACPI specification in ACPICA version 85520150515. 856 857Implemented support for the _CLS object in the AcpiGetObjectInfo external 858interface. 859 860Updated the definitions of the TCPA and TPM2 ACPI tables to the more 861recent TCG ACPI Specification, December 14, 2014. Table disassembler and 862compiler also updated. Note: The TCPA "server" table is not supported by 863the disassembler/table-compiler at this time. 864 865ACPI 6.0: Added definitions for the new GIC version field in the MADT. 866 867Example Code and Data Size: These are the sizes for the OS-independent 868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 869debug version of the code includes the debug output trace mechanism and 870has a much larger code and data size. 871 872 Current Release: 873 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 874 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 875 Previous Release: 876 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 877 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 878 879 8802) iASL Compiler/Disassembler and Tools: 881 882Disassembler: Fixed a problem with the new symbolic operator disassembler 883where incorrect ASL code could be emitted in some cases for the "non- 884commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 885ShiftRight. The actual problem cases seem to be rather unusual in common 886ASL code, however. David Box. 887 888Modified the linux version of acpidump to obtain ACPI tables from not 889just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 890Zheng. 891 892iASL: Fixed a problem where the user preprocessor output file (.i) 893contained extra data that was not expected. The compiler was using this 894file as a temporary file and passed through #line directives in order to 895keep compiler error messages in sync with the input file and line number 896across multiple include files. The (.i) is no longer a temporary file as 897the compiler uses a new, different file for the original purpose. 898 899iASL: Fixed a problem where comments within the original ASL source code 900file were not passed through to the preprocessor output file, nor any 901listing files. 902 903iASL: Fixed some issues for the handling of the "#include" preprocessor 904directive and the similar (but not the same) "Include" ASL operator. 905 906iASL: Add support for the new OSDT in both the disassembler and compiler. 907 908iASL: Fixed a problem with the constant folding support where a Buffer 909object could be incorrectly generated (incorrectly formed) during a 910conversion to a Store() operator. 911 912AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 913description text for the _REV predefined name. _REV now permanently 914returns 2, as per the ACPI 6.0 specification. 915 916Debugger: Enhanced the output of the Debug ASL object for references 917produced by the Index operator. For Buffers and strings, only output the 918actual byte pointed to by the index. For packages, only print the single 919package element decoded by the index. Previously, the entire 920buffer/string/package was emitted. 921 922iASL/Table-compiler: Fixed a regression where the "generic" data types 923were no longer recognized, causing errors. 924 925 926---------------------------------------- 92715 May 2015. Summary of changes for version 20150515: 928 929This release implements most of ACPI 6.0 as described below. 930 9311) ACPICA kernel-resident subsystem: 932 933Implemented runtime argument checking and return value checking for all 934new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 935_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 936 937Example Code and Data Size: These are the sizes for the OS-independent 938acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 939debug version of the code includes the debug output trace mechanism and 940has a much larger code and data size. 941 942 Current Release: 943 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 944 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 945 Previous Release: 946 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 947 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 948 949 9502) iASL Compiler/Disassembler and Tools: 951 952iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 953names (argument count validation and return value typechecking.) 954 955iASL disassembler and table compiler: implemented support for all new 956ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 957 958iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 959tables: FADT, MADT. 960 961iASL preprocessor: Added a new directive to enable inclusion of binary 962blobs into ASL code. The new directive is #includebuffer. It takes a 963binary file as input and emits a named ascii buffer object into the ASL 964code. 965 966AcpiHelp: Added support for all new ACPI 6.0 predefined names. 967 968AcpiHelp: Added a new option, -d, to display all iASL preprocessor 969directives. 970 971AcpiHelp: Added a new option, -t, to display all known/supported ACPI 972tables. 973 974 975---------------------------------------- 97610 April 2015. Summary of changes for version 20150410: 977 978Reverted a change introduced in version 20150408 that caused 979a regression in the disassembler where incorrect operator 980symbols could be emitted. 981 982 983---------------------------------------- 98408 April 2015. Summary of changes for version 20150408: 985 986 9871) ACPICA kernel-resident subsystem: 988 989Permanently set the return value for the _REV predefined name. It now 990returns 2 (was 5). This matches other ACPI implementations. _REV will be 991deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 992for ACPI 2.0 and later. It should never be used to differentiate or 993identify operating systems. 994 995Added the "Windows 2015" string to the _OSI support. ACPICA will now 996return TRUE to a query with this string. 997 998Fixed several issues with the local version of the printf function. 999 1000Added the C99 compiler option (-std=c99) to the Unix makefiles. 1001 1002 Current Release: 1003 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1004 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1005 Previous Release: 1006 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1007 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1008 1009 10102) iASL Compiler/Disassembler and Tools: 1011 1012iASL: Implemented an enhancement to the constant folding feature to 1013transform the parse tree to a simple Store operation whenever possible: 1014 Add (2, 3, X) ==> is converted to: Store (5, X) 1015 X = 2 + 3 ==> is converted to: Store (5, X) 1016 1017Updated support for the SLIC table (Software Licensing Description Table) 1018in both the Data Table compiler and the disassembler. The SLIC table 1019support now conforms to "Microsoft Software Licensing Tables (SLIC and 1020MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1021following the ACPI header is now defined to be "Proprietary Data", and as 1022such, can only be entered or displayed as a hex data block. 1023 1024Implemented full support for the MSDM table as described in the document 1025above. Note: The format of MSDM is similar to SLIC. Any MSDM data 1026following the ACPI header is defined to be "Proprietary Data", and can 1027only be entered or displayed as a hex data block. 1028 1029Implemented the -Pn option for the iASL Table Compiler (was only 1030implemented for the ASL compiler). This option disables the iASL 1031preprocessor. 1032 1033Disassembler: For disassembly of Data Tables, added a comment field 1034around the Ascii equivalent data that is emitted as part of the "Raw 1035Table Data" block. This prevents the iASL Preprocessor from possible 1036confusion if/when the table is compiled. 1037 1038Disassembler: Added an option (-df) to force the disassembler to assume 1039that the table being disassembled contains valid AML. This feature is 1040useful for disassembling AML files that contain ACPI signatures other 1041than DSDT or SSDT (such as OEMx or other signatures). 1042 1043Changes for the EFI version of the tools: 10441) Fixed a build error/issue 10452) Fixed a cast warning 1046 1047iASL: Fixed a path issue with the __FILE__ operator by making the 1048directory prefix optional within the internal SplitInputFilename 1049function. 1050 1051Debugger: Removed some unused global variables. 1052 1053Tests: Updated the makefile for proper generation of the AAPITS suite. 1054 1055 1056---------------------------------------- 105704 February 2015. Summary of changes for version 20150204: 1058 1059ACPICA kernel-resident subsystem: 1060 1061Updated all ACPICA copyrights and signons to 2014. Added the 2014 1062copyright to all module headers and signons, including the standard Linux 1063header. This affects virtually every file in the ACPICA core subsystem, 1064iASL compiler, all ACPICA utilities, and the test suites. 1065 1066Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1067A raw gpe handling mechanism was created to allow better handling of GPE 1068storms that aren't easily managed by the normal handler. The raw handler 1069allows disabling/renabling of the the GPE so that interrupt storms can be 1070avoided in cases where events cannot be timely serviced. In this 1071scenario, handlers should use the AcpiSetGpe() API to disable/enable the 1072GPE. This API will leave the reference counts undisturbed, thereby 1073preventing unintentional clearing of the GPE when the intent in only to 1074temporarily disable it. Raw handlers allow enabling and disabling of a 1075GPE by removing GPE register locking. As such, raw handlers much provide 1076their own locks while using GPE API's to protect access to GPE data 1077structures. 1078Lv Zheng 1079 1080Events: Always modify GPE registers under the GPE lock. 1081Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 1082values. Reported as bug by joe.liu@apple.com. 1083 1084Unix makefiles: Separate option to disable optimizations and 1085_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1086NOOPT disable option and creates a separate flag (NOFORTIFY) for this 1087purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1088errors when building ACPICA. This allows disabling the option without 1089also having to disable optimazations. 1090David Box 1091 1092 Current Release: 1093 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1094 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1095 1096-- 1097-------------------------------------- 109807 November 2014. Summary of changes for version 20141107: 1099 1100This release is available at https://acpica.org/downloads 1101 1102This release introduces and implements language extensions to ASL that 1103provide support for symbolic ("C-style") operators and expressions. These 1104language extensions are known collectively as ASL+. 1105 1106 11071) iASL Compiler/Disassembler and Tools: 1108 1109Disassembler: Fixed a problem with disassembly of the UartSerialBus 1110macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1111Box. 1112 1113Disassembler: Fixed the Unicode macro support to add escape sequences. 1114All non-printable ASCII values are emitted as escape sequences, as well 1115as the standard escapes for quote and backslash. Ensures that the 1116disassembled macro can be correctly recompiled. 1117 1118iASL: Added Printf/Fprintf macros for formatted output. These macros are 1119translated to existing AML Concatenate and Store operations. Printf 1120writes to the ASL Debug object. Fprintf allows the specification of an 1121ASL name as the target. Only a single format specifier is required, %o, 1122since the AML interpreter dynamically converts objects to the required 1123type. David E. Box. 1124 1125 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1126 (Concatenate (Concatenate (Concatenate ("", Arg0), 1127 ": Unexpected value for "), Arg1), ", "), Arg2), 1128 " at line "), Arg3), Debug) 1129 1130 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1131 Arg0, Arg1, Arg2, Arg3) 1132 1133 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1134 ("", Arg1), ": "), Arg0), " Successful"), STR1) 1135 1136 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1137 1138iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1139ASL parse tree before the AML code is generated. This allows blocks of 1140ASL code to be removed in order to help locate and identify problem 1141devices and/or code. David E. Box. 1142 1143AcpiExec: Added support (-fi) for an optional namespace object 1144initialization file. This file specifies initial values for namespace 1145objects as necessary for debugging and testing different ASL code paths 1146that may be taken as a result of BIOS options. 1147 1148 11492) Overview of symbolic operator support for ASL (ASL+) 1150------------------------------------------------------- 1151 1152As an extension to the ASL language, iASL implements support for symbolic 1153(C-style) operators for math and logical expressions. This can greatly 1154simplify ASL code as well as improve both readability and 1155maintainability. These language extensions can exist concurrently with 1156all legacy ASL code and expressions. 1157 1158The symbolic extensions are 100% compatible with existing AML 1159interpreters, since no new AML opcodes are created. To implement the 1160extensions, the iASL compiler transforms the symbolic expressions into 1161the legacy ASL/AML equivalents at compile time. 1162 1163Full symbolic expressions are supported, along with the standard C 1164precedence and associativity rules. 1165 1166Full disassembler support for the symbolic expressions is provided, and 1167creates an automatic migration path for existing ASL code to ASL+ code 1168via the disassembly process. By default, the disassembler now emits ASL+ 1169code with symbolic expressions. An option (-dl) is provided to force the 1170disassembler to emit legacy ASL code if desired. 1171 1172Below is the complete list of the currently supported symbolic operators 1173with examples. See the iASL User Guide for additional information. 1174 1175 1176ASL+ Syntax Legacy ASL Equivalent 1177----------- --------------------- 1178 1179 // Math operators 1180 1181Z = X + Y Add (X, Y, Z) 1182Z = X - Y Subtract (X, Y, Z) 1183Z = X * Y Multiply (X, Y, Z) 1184Z = X / Y Divide (X, Y, , Z) 1185Z = X % Y Mod (X, Y, Z) 1186Z = X << Y ShiftLeft (X, Y, Z) 1187Z = X >> Y ShiftRight (X, Y, Z) 1188Z = X & Y And (X, Y, Z) 1189Z = X | Y Or (X, Y, Z) 1190Z = X ^ Y Xor (X, Y, Z) 1191Z = ~X Not (X, Z) 1192X++ Increment (X) 1193X-- Decrement (X) 1194 1195 // Logical operators 1196 1197(X == Y) LEqual (X, Y) 1198(X != Y) LNotEqual (X, Y) 1199(X < Y) LLess (X, Y) 1200(X > Y) LGreater (X, Y) 1201(X <= Y) LLessEqual (X, Y) 1202(X >= Y) LGreaterEqual (X, Y) 1203(X && Y) LAnd (X, Y) 1204(X || Y) LOr (X, Y) 1205(!X) LNot (X) 1206 1207 // Assignment and compound assignment operations 1208 1209X = Y Store (Y, X) 1210X += Y Add (X, Y, X) 1211X -= Y Subtract (X, Y, X) 1212X *= Y Multiply (X, Y, X) 1213X /= Y Divide (X, Y, , X) 1214X %= Y Mod (X, Y, X) 1215X <<= Y ShiftLeft (X, Y, X) 1216X >>= Y ShiftRight (X, Y, X) 1217X &= Y And (X, Y, X) 1218X |= Y Or (X, Y, X) 1219X ^= Y Xor (X, Y, X) 1220 1221 12223) ASL+ Examples: 1223----------------- 1224 1225Legacy ASL: 1226 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1227 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 12280x03FB), 1229 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1230 { 1231 And (MEMB, 0xFFFFFFF0, SRMB) 1232 Store (MEMB, Local2) 1233 Store (PDBM, Local1) 1234 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1235 Store (SRMB, MEMB) 1236 Or (PDBM, 0x02, PDBM) 1237 } 1238 1239ASL+ version: 1240 If (((R510 & 0x03FB) == 0x02E0) || 1241 ((R520 & 0x03FB) == 0x02E0) || 1242 ((R530 & 0x03FB) == 0x02E0) || 1243 ((R540 & 0x03FB) == 0x02E0)) 1244 { 1245 SRMB = (MEMB & 0xFFFFFFF0) 1246 Local2 = MEMB 1247 Local1 = PDBM 1248 PDBM &= 0xFFFFFFFFFFFFFFF9 1249 MEMB = SRMB 1250 PDBM |= 0x02 1251 } 1252 1253Legacy ASL: 1254 Store (0x1234, Local1) 1255 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1256 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1257 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1258 Store (Index (PKG1, 0x03), Local6) 1259 Store (Add (Local3, Local2), Debug) 1260 Add (Local1, 0x0F, Local2) 1261 Add (Local1, Multiply (Local2, Local3), Local2) 1262 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1263 1264ASL+ version: 1265 Local1 = 0x1234 1266 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1267 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1268 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1269 Local6 = Index (PKG1, 0x03) 1270 Debug = (Local3 + Local2) 1271 Local2 = (Local1 + 0x0F) 1272 Local2 = (Local1 + (Local2 * Local3)) 1273 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1274 1275 1276---------------------------------------- 127726 September 2014. Summary of changes for version 20140926: 1278 12791) ACPICA kernel-resident subsystem: 1280 1281Updated the GPIO operation region handler interface (GeneralPurposeIo). 1282In order to support GPIO Connection objects with multiple pins, along 1283with the related Field objects, the following changes to the interface 1284have been made: The Address is now defined to be the offset in bits of 1285the field unit from the previous invocation of a Connection. It can be 1286viewed as a "Pin Number Index" into the connection resource descriptor. 1287The BitWidth is the exact bit width of the field. It is usually one bit, 1288but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1289additional information and examples. 1290 1291GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1292corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1293by the firmware), so that they cannot fire until they are enabled via 1294AcpiUpdateAllGpes. Rafael J. Wysocki. 1295 1296Added a new return flag for the Event/GPE status interfaces -- 1297AcpiGetEventStatus and AcpiGetGpeStatus. The new 1298ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1299GPE currently has a handler associated with it, and can thus actually 1300affect the system. Lv Zheng. 1301 1302Example Code and Data Size: These are the sizes for the OS-independent 1303acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1304debug version of the code includes the debug output trace mechanism and 1305has a much larger code and data size. 1306 1307 Current Release: 1308 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1309 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1310 Previous Release: 1311 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1312 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1313 13142) iASL Compiler/Disassembler and Tools: 1315 1316iASL: Fixed a memory allocation/free regression introduced in 20140828 1317that could cause the compiler to crash. This was introduced inadvertently 1318during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 13191113. 1320 1321iASL: Removed two error messages that have been found to create false 1322positives, until they can be fixed and fully validated (ACPICA BZ 1112): 13231) Illegal forward reference within a method 13242) Illegal reference across two methods 1325 1326iASL: Implemented a new option (-lm) to create a hardware mapping file 1327that summarizes all GPIO, I2C, SPI, and UART connections. This option 1328works for both the compiler and disassembler. See the iASL compiler user 1329guide for additional information and examples (section 6.4.6). 1330 1331AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1332version 2. This corrects the AE_BAD_HEADER exception seen on systems with 1333a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1334 1335AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1336unless STDIN is actually a terminal. Assists with batch-mode processing. 1337ACPICA BZ 1114. 1338 1339Disassembler/AcpiHelp: Added another large group of recognized _HID 1340values. 1341 1342 1343---------------------------------------- 134428 August 2014. Summary of changes for version 20140828: 1345 13461) ACPICA kernel-resident subsystem: 1347 1348Fixed a problem related to the internal use of the Timer() operator where 1349a 64-bit divide could cause an attempted link to a double-precision math 1350library. This divide is not actually necessary, so the code was 1351restructured to eliminate it. Lv Zheng. 1352 1353ACPI 5.1: Added support for the runtime validation of the _DSD package 1354(similar to the iASL support). 1355 1356ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1357SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1358 1359Example Code and Data Size: These are the sizes for the OS-independent 1360acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1361debug version of the code includes the debug output trace mechanism and 1362has a much larger code and data size. 1363 1364 Current Release: 1365 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1366 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1367 Previous Release: 1368 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1369 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1370 13712) iASL Compiler/Disassembler and Tools: 1372 1373AcpiExec: Fixed a problem on unix systems where the original terminal 1374state was not always properly restored upon exit. Seen when using the -v 1375option. ACPICA BZ 1104. 1376 1377iASL: Fixed a problem with the validation of the ranges/length within the 1378Memory24 resource descriptor. There was a boundary condition when the 1379range was equal to the (length -1) caused by the fact that these values 1380are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1381 1382Disassembler: Fixed a problem with the GpioInt descriptor interrupt 1383polarity 1384flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1385is 1386now supported properly. 1387 1388ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1389in the disassembler, data table compiler, and table template generator. 1390 1391iASL: Added a requirement for Device() objects that one of either a _HID 1392or _ADR must exist within the scope of a Device, as per the ACPI 1393specification. Remove a similar requirement that was incorrectly in place 1394for the _DSD object. 1395 1396iASL: Added error detection for illegal named references within control 1397methods that would cause runtime failures. Now trapped as errors are: 1) 1398References to objects within a non-parent control method. 2) Forward 1399references (within a method) -- for control methods, AML interpreters use 1400a one-pass parse of control methods. ACPICA BZ 1008. 1401 1402iASL: Added error checking for dependencies related to the _PSx power 1403methods. ACPICA BZ 1029. 14041) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1405_PS3. 14062) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1407scope. 1408 1409iASL and table compiler: Cleanup miscellaneous memory leaks by fully 1410deploying the existing object and string caches and adding new caches for 1411the table compiler. 1412 1413iASL: Split the huge parser source file into multiple subfiles to improve 1414manageability. Generation now requires the M4 macro preprocessor, which 1415is part of the Bison distribution on both unix and windows platforms. 1416 1417AcpiSrc: Fixed and removed all extraneous warnings generated during 1418entire ACPICA source code scan and/or conversion. 1419 1420 1421---------------------------------------- 1422 142324 July 2014. Summary of changes for version 20140724: 1424 1425The ACPI 5.1 specification has been released and is available at: 1426http://uefi.org/specs/access 1427 1428 14290) ACPI 5.1 support in ACPICA: 1430 1431ACPI 5.1 is fully supported in ACPICA as of this release. 1432 1433New predefined names. Support includes iASL and runtime ACPICA 1434validation. 1435 _CCA (Cache Coherency Attribute). 1436 _DSD (Device-Specific Data). David Box. 1437 1438Modifications to existing ACPI tables. Support includes headers, iASL 1439Data Table compiler, disassembler, and the template generator. 1440 FADT - New fields and flags. Graeme Gregory. 1441 GTDT - One new subtable and new fields. Tomasz Nowicki. 1442 MADT - Two new subtables. Tomasz Nowicki. 1443 PCCT - One new subtable. 1444 1445Miscellaneous. 1446 New notification type for System Resource Affinity change events. 1447 1448 14491) ACPICA kernel-resident subsystem: 1450 1451Fixed a regression introduced in 20140627 where a fault can happen during 1452the deletion of Alias AML namespace objects. The problem affected both 1453the core ACPICA and the ACPICA tools including iASL and AcpiExec. 1454 1455Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 1456simple mechanism to enable wake GPEs that have no associated handler or 1457control method. Rafael Wysocki. 1458 1459Updated the AcpiEnableGpe interface to disallow the enable if there is no 1460handler or control method associated with the particular GPE. This will 1461help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 1462 1463Updated GPE handling and dispatch by disabling the GPE before clearing 1464the status bit for edge-triggered GPEs. Lv Zheng. 1465 1466Added Timer() support to the AML Debug object. The current timer value is 1467now displayed with each invocation of (Store to) the debug object to 1468enable simple generation of execution times for AML code (method 1469execution for example.) ACPICA BZ 1093. 1470 1471Example Code and Data Size: These are the sizes for the OS-independent 1472acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1473debug version of the code includes the debug output trace mechanism and 1474has a much larger code and data size. 1475 1476 Current Release: 1477 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 1478 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1479 Previous Release: 1480 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1481 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1482 1483 14842) iASL Compiler/Disassembler and Tools: 1485 1486Fixed an issue with the recently added local printf implementation, 1487concerning width/precision specifiers that could cause incorrect output. 1488Lv Zheng. ACPICA BZ 1094. 1489 1490Disassembler: Added support to detect buffers that contain UUIDs and 1491disassemble them to an invocation of the ToUUID operator. Also emit 1492commented descriptions of known ACPI-related UUIDs. 1493 1494AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 1495-u. Adds three new files. 1496 1497iASL: Update table compiler and disassembler for DMAR table changes that 1498were introduced in September 2013. With assistance by David Woodhouse. 1499 1500---------------------------------------- 150127 June 2014. Summary of changes for version 20140627: 1502 15031) ACPICA kernel-resident subsystem: 1504 1505Formatted Output: Implemented local versions of standard formatted output 1506utilities such as printf, etc. Over time, it has been discovered that 1507there are in fact many portability issues with printf, and the addition 1508of this feature will fix/prevent these issues once and for all. Some 1509known issues are summarized below: 1510 15111) Output of 64-bit values is not portable. For example, UINT64 is %ull 1512for the Linux kernel and is %uI64 for some MSVC versions. 15132) Invoking printf consistently in a manner that is portable across both 151432-bit and 64-bit platforms is difficult at best in many situations. 15153) The output format for pointers varies from system to system (leading 1516zeros especially), and leads to inconsistent output from ACPICA across 1517platforms. 15184) Certain platform-specific printf formats may conflict with ACPICA use. 15195) If there is no local C library available, ACPICA now has local support 1520for printf. 1521 1522-- To address these printf issues in a complete manner, ACPICA now 1523directly implements a small subset of printf format specifiers, only 1524those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 1525 1526Implemented support for ACPICA generation within the EFI environment. 1527Initially, the AcpiDump utility is supported in the UEFI shell 1528environment. Lv Zheng. 1529 1530Added a new external interface, AcpiLogError, to improve ACPICA 1531portability. This allows the host to redirect error messages from the 1532ACPICA utilities. Lv Zheng. 1533 1534Added and deployed new OSL file I/O interfaces to improve ACPICA 1535portability: 1536 AcpiOsOpenFile 1537 AcpiOsCloseFile 1538 AcpiOsReadFile 1539 AcpiOsWriteFile 1540 AcpiOsGetFileOffset 1541 AcpiOsSetFileOffset 1542There are C library implementations of these functions in the new file 1543service_layers/oslibcfs.c -- however, the functions can be implemented by 1544the local host in any way necessary. Lv Zheng. 1545 1546Implemented a mechanism to disable/enable ACPI table checksum validation 1547at runtime. This can be useful when loading tables very early during OS 1548initialization when it may not be possible to map the entire table in 1549order to compute the checksum. Lv Zheng. 1550 1551Fixed a buffer allocation issue for the Generic Serial Bus support. 1552Originally, a fixed buffer length was used. This change allows for 1553variable-length buffers based upon the protocol indicated by the field 1554access attributes. Reported by Lan Tianyu. Lv Zheng. 1555 1556Fixed a problem where an object detached from a namespace node was not 1557properly terminated/cleared and could cause a circular list problem if 1558reattached. ACPICA BZ 1063. David Box. 1559 1560Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 1561 1562Fixed a possible memory leak in an error return path within the function 1563AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 1564 1565Example Code and Data Size: These are the sizes for the OS-independent 1566acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1567debug version of the code includes the debug output trace mechanism and 1568has a much larger code and data size. 1569 1570 Current Release: 1571 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1572 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1573 Previous Release: 1574 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1575 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1576 1577 15782) iASL Compiler/Disassembler and Tools: 1579 1580Disassembler: Add dump of ASCII equivalent text within a comment at the 1581end of each line of the output for the Buffer() ASL operator. 1582 1583AcpiDump: Miscellaneous changes: 1584 Fixed repetitive table dump in -n mode. 1585 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 1586the ACPI 2.0 GUID fails. 1587 1588iASL: Fixed a problem where the compiler could fault if incorrectly given 1589an acpidump output file as input. ACPICA BZ 1088. David Box. 1590 1591AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 1592they are invoked without any arguments. 1593 1594Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 15951086. Colin Ian King. 1596 1597Disassembler: Cleaned up a block of code that extracts a parent Op 1598object. Added a comment that explains that the parent is guaranteed to be 1599valid in this case. ACPICA BZ 1069. 1600 1601 1602---------------------------------------- 160324 April 2014. Summary of changes for version 20140424: 1604 16051) ACPICA kernel-resident subsystem: 1606 1607Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 1608Some of these tables are known to contain a trailing NULL entry. Lv 1609Zheng. 1610 1611Removed an extraneous error message for the case where there are a large 1612number of system GPEs (> 124). This was the "32-bit FADT register is too 1613long to convert to GAS struct" message, which is irrelevant for GPEs 1614since the GPEx_BLK_LEN fields of the FADT are always used instead of the 1615(limited capacity) GAS bit length. Also, several changes to ensure proper 1616support for GPE numbers > 255, where some "GPE number" fields were 8-bits 1617internally. 1618 1619Implemented and deployed additional configuration support for the public 1620ACPICA external interfaces. Entire classes of interfaces can now be 1621easily modified or configured out, replaced by stubbed inline functions 1622by default. Lv Zheng. 1623 1624Moved all public ACPICA runtime configuration globals to the public 1625ACPICA external interface file for convenience. Also, removed some 1626obsolete/unused globals. See the file acpixf.h. Lv Zheng. 1627 1628Documentation: Added a new section to the ACPICA reference describing the 1629maximum number of GPEs that can be supported by the FADT-defined GPEs in 1630block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 1631reference. 1632 1633Example Code and Data Size: These are the sizes for the OS-independent 1634acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1635debug version of the code includes the debug output trace mechanism and 1636has a much larger code and data size. 1637 1638 Current Release: 1639 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1640 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1641 Previous Release: 1642 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1643 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1644 1645 16462) iASL Compiler/Disassembler and Tools: 1647 1648iASL and disassembler: Add full support for the LPIT table (Low Power 1649Idle Table). Includes support in the disassembler, data table compiler, 1650and template generator. 1651 1652AcpiDump utility: 16531) Add option to force the use of the RSDT (over the XSDT). 16542) Improve validation of the RSDP signature (use 8 chars instead of 4). 1655 1656iASL: Add check for predefined packages that are too large. For 1657predefined names that contain subpackages, check if each subpackage is 1658too large. (Check for too small already exists.) 1659 1660Debugger: Updated the GPE command (which simulates a GPE by executing the 1661GPE code paths in ACPICA). The GPE device is now optional, and defaults 1662to the GPE 0/1 FADT-defined blocks. 1663 1664Unix application OSL: Update line-editing support. Add additional error 1665checking and take care not to reset terminal attributes on exit if they 1666were never set. This should help guarantee that the terminal is always 1667left in the previous state on program exit. 1668 1669 1670---------------------------------------- 167125 March 2014. Summary of changes for version 20140325: 1672 16731) ACPICA kernel-resident subsystem: 1674 1675Updated the auto-serialize feature for control methods. This feature 1676automatically serializes all methods that create named objects in order 1677to prevent runtime errors. The update adds support to ignore the 1678currently executing AML SyncLevel when invoking such a method, in order 1679to prevent disruption of any existing SyncLevel priorities that may exist 1680in the AML code. Although the use of SyncLevels is relatively rare, this 1681change fixes a regression where an AE_AML_MUTEX_ORDER exception can 1682appear on some machines starting with the 20140214 release. 1683 1684Added a new external interface to allow the host to install ACPI tables 1685very early, before the namespace is even created. AcpiInstallTable gives 1686the host additional flexibility for ACPI table management. Tables can be 1687installed directly by the host as if they had originally appeared in the 1688XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 1689(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 1690with additional internal restructuring and cleanup. See the ACPICA 1691Reference for interface details. Lv Zheng. 1692 1693Added validation of the checksum for all incoming dynamically loaded 1694tables (via external interfaces or via AML Load/LoadTable operators). Lv 1695Zheng. 1696 1697Updated the use of the AcpiOsWaitEventsComplete interface during Notify 1698and GPE handler removal. Restructured calls to eliminate possible race 1699conditions. Lv Zheng. 1700 1701Added a warning for the use/execution of the ASL/AML Unload (table) 1702operator. This will help detect and identify machines that use this 1703operator if and when it is ever used. This operator has never been seen 1704in the field and the usage model and possible side-effects of the drastic 1705runtime action of a full table removal are unknown. 1706 1707Reverted the use of #pragma push/pop which was introduced in the 20140214 1708release. It appears that push and pop are not implemented by enough 1709compilers to make the use of this feature feasible for ACPICA at this 1710time. However, these operators may be deployed in a future ACPICA 1711release. 1712 1713Added the missing EXPORT_SYMBOL macros for the install and remove SCI 1714handler interfaces. 1715 1716Source code generation: 17171) Disabled the use of the "strchr" macro for the gcc-specific 1718generation. For some versions of gcc, this macro can periodically expose 1719a compiler bug which in turn causes compile-time error(s). 17202) Added support for PPC64 compilation. Colin Ian King. 1721 1722Example Code and Data Size: These are the sizes for the OS-independent 1723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1724debug version of the code includes the debug output trace mechanism and 1725has a much larger code and data size. 1726 1727 Current Release: 1728 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1729 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1730 Previous Release: 1731 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1732 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1733 1734 17352) iASL Compiler/Disassembler and Tools: 1736 1737Disassembler: Added several new features to improve the readability of 1738the resulting ASL code. Extra information is emitted within comment 1739fields in the ASL code: 17401) Known _HID/_CID values are decoded to descriptive text. 17412) Standard values for the Notify() operator are decoded to descriptive 1742text. 17433) Target operands are expanded to full pathnames (in a comment) when 1744possible. 1745 1746Disassembler: Miscellaneous updates for extern() handling: 17471) Abort compiler if file specified by -fe option does not exist. 17482) Silence unnecessary warnings about argument count mismatches. 17493) Update warning messages concerning unresolved method externals. 17504) Emit "UnknownObj" keyword for externals whose type cannot be 1751determined. 1752 1753AcpiHelp utility: 17541) Added the -a option to display both the ASL syntax and the AML 1755encoding for an input ASL operator. This effectively displays all known 1756information about an ASL operator with one AcpiHelp invocation. 17572) Added substring match support (similar to a wildcard) for the -i 1758(_HID/PNP IDs) option. 1759 1760iASL/Disassembler: Since this tool does not yet support execution on big- 1761endian machines, added detection of endianness and an error message if 1762execution is attempted on big-endian. Support for big-endian within iASL 1763is a feature that is on the ACPICA to-be-done list. 1764 1765AcpiBin utility: 17661) Remove option to extract binary files from an acpidump; this function 1767is made obsolete by the AcpiXtract utility. 17682) General cleanup of open files and allocated buffers. 1769 1770 1771---------------------------------------- 177214 February 2014. Summary of changes for version 20140214: 1773 17741) ACPICA kernel-resident subsystem: 1775 1776Implemented a new mechanism to proactively prevent problems with ill- 1777behaved reentrant control methods that create named ACPI objects. This 1778behavior is illegal as per the ACPI specification, but is nonetheless 1779frequently seen in the field. Previously, this could lead to an 1780AE_ALREADY_EXISTS exception if the method was actually entered by more 1781than one thread. This new mechanism detects such methods at table load 1782time and marks them "serialized" to prevent reentrancy. A new global 1783option, AcpiGbl_AutoSerializeMethods, has been added to disable this 1784feature if desired. This mechanism and global option obsoletes and 1785supersedes the previous AcpiGbl_SerializeAllMethods option. 1786 1787Added the "Windows 2013" string to the _OSI support. ACPICA will now 1788respond TRUE to _OSI queries with this string. It is the stated policy of 1789ACPICA to add new strings to the _OSI support as soon as possible after 1790they are defined. See the full ACPICA _OSI policy which has been added to 1791the utilities/utosi.c file. 1792 1793Hardened/updated the _PRT return value auto-repair code: 17941) Do not abort the repair on a single subpackage failure, continue to 1795check all subpackages. 17962) Add check for the minimum subpackage length (4). 17973) Properly handle extraneous NULL package elements. 1798 1799Added support to avoid the possibility of infinite loops when traversing 1800object linked lists. Never allow an infinite loop, even in the face of 1801corrupted object lists. 1802 1803ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 1804pack(pop) directives to ensure that the ACPICA headers are independent of 1805compiler settings or other host headers. 1806 1807Example Code and Data Size: These are the sizes for the OS-independent 1808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1809debug version of the code includes the debug output trace mechanism and 1810has a much larger code and data size. 1811 1812 Current Release: 1813 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1814 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1815 Previous Release: 1816 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1817 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1818 1819 18202) iASL Compiler/Disassembler and Tools: 1821 1822iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 1823first reserved field was incorrectly forced to have a value of zero. This 1824change correctly forces the field to have a value of one. ACPICA BZ 1081. 1825 1826Debugger: Added missing support for the "Extra" and "Data" subobjects 1827when displaying object data. 1828 1829Debugger: Added support to display entire object linked lists when 1830displaying object data. 1831 1832iASL: Removed the obsolete -g option to obtain ACPI tables from the 1833Windows registry. This feature has been superseded by the acpidump 1834utility. 1835 1836 1837---------------------------------------- 183814 January 2014. Summary of changes for version 20140114: 1839 18401) ACPICA kernel-resident subsystem: 1841 1842Updated all ACPICA copyrights and signons to 2014. Added the 2014 1843copyright to all module headers and signons, including the standard Linux 1844header. This affects virtually every file in the ACPICA core subsystem, 1845iASL compiler, all ACPICA utilities, and the test suites. 1846 1847Improved parameter validation for AcpiInstallGpeBlock. Added the 1848following checks: 18491) The incoming device handle refers to type ACPI_TYPE_DEVICE. 18502) There is not already a GPE block attached to the device. 1851Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 1852device. 1853 1854Correctly support "references" in the ACPI_OBJECT. This change fixes the 1855support to allow references (namespace nodes) to be passed as arguments 1856to control methods via the evaluate object interface. This is probably 1857most useful for testing purposes, however. 1858 1859Improved support for 32/64 bit physical addresses in printf()-like 1860output. This change improves the support for physical addresses in printf 1861debug statements and other output on both 32-bit and 64-bit hosts. It 1862consistently outputs the appropriate number of bytes for each host. The 1863%p specifier is unsatisfactory since it does not emit uniform output on 1864all hosts/clib implementations (on some, leading zeros are not supported, 1865leading to difficult-to-read output). 1866 1867Example Code and Data Size: These are the sizes for the OS-independent 1868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1869debug version of the code includes the debug output trace mechanism and 1870has a much larger code and data size. 1871 1872 Current Release: 1873 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1874 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1875 Previous Release: 1876 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1877 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1878 1879 18802) iASL Compiler/Disassembler and Tools: 1881 1882iASL: Fix a possible fault when using the Connection() operator. Fixes a 1883problem if the parent Field definition for the Connection operator refers 1884to an operation region that does not exist. ACPICA BZ 1064. 1885 1886AcpiExec: Load of local test tables is now optional. The utility has the 1887capability to load some various tables to test features of ACPICA. 1888However, there are enough of them that the output of the utility became 1889confusing. With this change, only the required local tables are displayed 1890(RSDP, XSDT, etc.) along with the actual tables loaded via the command 1891line specification. This makes the default output simler and easier to 1892understand. The -el command line option restores the original behavior 1893for testing purposes. 1894 1895AcpiExec: Added support for overlapping operation regions. This change 1896expands the simulation of operation regions by supporting regions that 1897overlap within the given address space. Supports SystemMemory and 1898SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 1899 1900AcpiExec: Added region handler support for PCI_Config and EC spaces. This 1901allows AcpiExec to simulate these address spaces, similar to the current 1902support for SystemMemory and SystemIO. 1903 1904Debugger: Added new command to read/write/compare all namespace objects. 1905The command "test objects" will exercise the entire namespace by writing 1906new values to each data object, and ensuring that the write was 1907successful. The original value is then restored and verified. 1908 1909Debugger: Added the "test predefined" command. This change makes this 1910test public and puts it under the new "test" command. The test executes 1911each and every predefined name within the current namespace. 1912 1913 1914---------------------------------------- 191518 December 2013. Summary of changes for version 20131218: 1916 1917Global note: The ACPI 5.0A specification was released this month. There 1918are no changes needed for ACPICA since this release of ACPI is an 1919errata/clarification release. The specification is available at 1920acpi.info. 1921 1922 19231) ACPICA kernel-resident subsystem: 1924 1925Added validation of the XSDT root table if it is present. Some older 1926platforms contain an XSDT that is ill-formed or otherwise invalid (such 1927as containing some or all entries that are NULL pointers). This change 1928adds a new function to validate the XSDT before actually using it. If the 1929XSDT is found to be invalid, ACPICA will now automatically fall back to 1930using the RSDT instead. Original implementation by Zhao Yakui. Ported to 1931ACPICA and enhanced by Lv Zheng and Bob Moore. 1932 1933Added a runtime option to ignore the XSDT and force the use of the RSDT. 1934This change adds a runtime option that will force ACPICA to use the RSDT 1935instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1936requires that an XSDT be used instead of the RSDT, the XSDT has been 1937found to be corrupt or ill-formed on some machines. Lv Zheng. 1938 1939Added a runtime option to favor 32-bit FADT register addresses over the 194064-bit addresses. This change adds an option to favor 32-bit FADT 1941addresses when there is a conflict between the 32-bit and 64-bit versions 1942of the same register. The default behavior is to use the 64-bit version 1943in accordance with the ACPI specification. This can now be overridden via 1944the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1945 1946During the change above, the internal "Convert FADT" and "Verify FADT" 1947functions have been merged to simplify the code, making it easier to 1948understand and maintain. ACPICA BZ 933. 1949 1950Improve exception reporting and handling for GPE block installation. 1951Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1952status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1953 1954Added helper macros to extract bus/segment numbers from the HEST table. 1955This change adds two macros to extract the encoded bus and segment 1956numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1957Betty Dall <betty.dall@hp.com> 1958 1959Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1960by ACPICA. It is not a public macro, so it should have no effect on 1961existing OSV code. Lv Zheng. 1962 1963Example Code and Data Size: These are the sizes for the OS-independent 1964acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1965debug version of the code includes the debug output trace mechanism and 1966has a much larger code and data size. 1967 1968 Current Release: 1969 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1970 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1971 Previous Release: 1972 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1973 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1974 1975 19762) iASL Compiler/Disassembler and Tools: 1977 1978Disassembler: Improved pathname support for emitted External() 1979statements. This change adds full pathname support for external names 1980that have been resolved internally by the inclusion of additional ACPI 1981tables (via the iASL -e option). Without this change, the disassembler 1982can emit multiple externals for the same object, or it become confused 1983when the Scope() operator is used on an external object. Overall, greatly 1984improves the ability to actually recompile the emitted ASL code when 1985objects a referenced across multiple ACPI tables. Reported by Michael 1986Tsirkin (mst@redhat.com). 1987 1988Tests/ASLTS: Updated functional control suite to execute with no errors. 1989David Box. Fixed several errors related to the testing of the interpreter 1990slack mode. Lv Zheng. 1991 1992iASL: Added support to detect names that are declared within a control 1993method, but are unused (these are temporary names that are only valid 1994during the time the method is executing). A remark is issued for these 1995cases. ACPICA BZ 1022. 1996 1997iASL: Added full support for the DBG2 table. Adds full disassembler, 1998table compiler, and template generator support for the DBG2 table (Debug 1999Port 2 table). 2000 2001iASL: Added full support for the PCCT table, update the table definition. 2002Updates the PCCT table definition in the actbl3.h header and adds table 2003compiler and template generator support. 2004 2005iASL: Added an option to emit only error messages (no warnings/remarks). 2006The -ve option will enable only error messages, warnings and remarks are 2007suppressed. This can simplify debugging when only the errors are 2008important, such as when an ACPI table is disassembled and there are many 2009warnings and remarks -- but only the actual errors are of real interest. 2010 2011Example ACPICA code (source/tools/examples): Updated the example code so 2012that it builds to an actual working program, not just example code. Added 2013ACPI tables and execution of an example control method in the DSDT. Added 2014makefile support for Unix generation. 2015 2016 2017---------------------------------------- 201815 November 2013. Summary of changes for version 20131115: 2019 2020This release is available at https://acpica.org/downloads 2021 2022 20231) ACPICA kernel-resident subsystem: 2024 2025Resource Manager: Fixed loop termination for the "get AML length" 2026function. The loop previously had an error termination on a NULL resource 2027pointer, which can never happen since the loop simply increments a valid 2028resource pointer. This fix changes the loop to terminate with an error on 2029an invalid end-of-buffer condition. The problem can be seen as an 2030infinite loop by callers to AcpiSetCurrentResources with an invalid or 2031corrupted resource descriptor, or a resource descriptor that is missing 2032an END_TAG descriptor. Reported by Dan Carpenter 2033<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2034 2035Table unload and ACPICA termination: Delete all attached data objects 2036during namespace node deletion. This fix updates namespace node deletion 2037to delete the entire list of attached objects (attached via 2038AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 20391024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2040 2041ACPICA termination: Added support to delete all objects attached to the 2042root namespace node. This fix deletes any and all objects that have been 2043attached to the root node via AcpiAttachData. Previously, none of these 2044objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2045 2046Debug output: Do not emit the function nesting level for the in-kernel 2047build. The nesting level is really only useful during a single-thread 2048execution. Therefore, only enable this output for the AcpiExec utility. 2049Also, only emit the thread ID when executing under AcpiExec (Context 2050switches are still always detected and a message is emitted). ACPICA BZ 2051972. 2052 2053Example Code and Data Size: These are the sizes for the OS-independent 2054acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2055debug version of the code includes the debug output trace mechanism and 2056has a much larger code and data size. 2057 2058 Current Release: 2059 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2060 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2061 Previous Release: 2062 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2063 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2064 2065 20662) iASL Compiler/Disassembler and Tools: 2067 2068AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2069correct portable POSIX header for terminal control functions. 2070 2071Disassembler: Fixed control method invocation issues related to the use 2072of the CondRefOf() operator. The problem is seen in the disassembly where 2073control method invocations may not be disassembled properly if the 2074control method name has been used previously as an argument to CondRefOf. 2075The solution is to not attempt to emit an external declaration for the 2076CondRefOf target (it is not necessary in the first place). This prevents 2077disassembler object type confusion. ACPICA BZ 988. 2078 2079Unix Makefiles: Added an option to disable compiler optimizations and the 2080_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2081with optimizations (reportedly, gcc 4.4 for example). This change adds a 2082command line option for make (NOOPT) that disables all compiler 2083optimizations and the _FORTIFY_SOURCE compiler flag. The default 2084optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 20851034. Lv Zheng, Bob Moore. 2086 2087Tests/ASLTS: Added options to specify individual test cases and modes. 2088This allows testers running aslts.sh to optionally specify individual 2089test modes and test cases. Also added an option to disable the forced 2090generation of the ACPICA tools from source if desired. Lv Zheng. 2091 2092---------------------------------------- 209327 September 2013. Summary of changes for version 20130927: 2094 2095This release is available at https://acpica.org/downloads 2096 2097 20981) ACPICA kernel-resident subsystem: 2099 2100Fixed a problem with store operations to reference objects. This change 2101fixes a problem where a Store operation to an ArgX object that contained 2102a 2103reference to a field object did not complete the automatic dereference 2104and 2105then write to the actual field object. Instead, the object type of the 2106field object was inadvertently changed to match the type of the source 2107operand. The new behavior will actually write to the field object (buffer 2108field or field unit), thus matching the correct ACPI-defined behavior. 2109 2110Implemented support to allow the host to redefine individual OSL 2111prototypes. This change enables the host to redefine OSL prototypes found 2112in the acpiosxf.h file. This allows the host to implement OSL interfaces 2113with a macro or inlined function. Further, it allows the host to add any 2114additional required modifiers such as __iomem, __init, __exit, etc., as 2115necessary on a per-interface basis. Enables maximum flexibility for the 2116OSL interfaces. Lv Zheng. 2117 2118Hardcoded the access width for the FADT-defined reset register. The ACPI 2119specification requires the reset register width to be 8 bits. ACPICA now 2120hardcodes the width to 8 and ignores the FADT width value. This provides 2121compatibility with other ACPI implementations that have allowed BIOS code 2122with bad register width values to go unnoticed. Matthew Garett, Bob 2123Moore, 2124Lv Zheng. 2125 2126Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2127used 2128in the OSL header (acpiosxf). The change modifies the position of this 2129macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2130build issues if the OSL defines the implementation of the interface to be 2131an inline stub function. Lv Zheng. 2132 2133Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2134initialization interfaces. This change adds a new macro for the main init 2135and terminate external interfaces in order to support hosts that require 2136additional or different processing for these functions. Changed from 2137ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2138Zheng, Bob Moore. 2139 2140Cleaned up the memory allocation macros for configurability. In the 2141common 2142case, the ACPI_ALLOCATE and related macros now resolve directly to their 2143respective AcpiOs* OSL interfaces. Two options: 21441) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2145default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 21462) For AcpiExec (and for debugging), the macros can optionally be 2147resolved 2148to the local ACPICA interfaces that track each allocation (local tracking 2149is used to immediately detect memory leaks). 2150Lv Zheng. 2151 2152Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2153to predefine this macro to either TRUE or FALSE during the system build. 2154 2155Replaced __FUNCTION_ with __func__ in the gcc-specific header. 2156 2157Example Code and Data Size: These are the sizes for the OS-independent 2158acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2159debug version of the code includes the debug output trace mechanism and 2160has a much larger code and data size. 2161 2162 Current Release: 2163 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2164 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2165 Previous Release: 2166 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2167 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2168 2169 21702) iASL Compiler/Disassembler and Tools: 2171 2172iASL: Implemented wildcard support for the -e option. This simplifies use 2173when there are many SSDTs that must be included to resolve external 2174method 2175declarations. ACPICA BZ 1041. Example: 2176 iasl -e ssdt*.dat -d dsdt.dat 2177 2178AcpiExec: Add history/line-editing for Unix/Linux systems. This change 2179adds a portable module that implements full history and limited line 2180editing for Unix and Linux systems. It does not use readline() due to 2181portability issues. Instead it uses the POSIX termio interface to put the 2182terminal in raw input mode so that the various special keys can be 2183trapped 2184(such as up/down-arrow for history support and left/right-arrow for line 2185editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2186 2187AcpiXtract: Add support to handle (ignore) "empty" lines containing only 2188one or more spaces. This provides compatible with early or different 2189versions of the AcpiDump utility. ACPICA BZ 1044. 2190 2191AcpiDump: Do not ignore tables that contain only an ACPI table header. 2192Apparently, some BIOSs create SSDTs that contain an ACPI table header but 2193no other data. This change adds support to dump these tables. Any tables 2194shorter than the length of an ACPI table header remain in error (an error 2195message is emitted). Reported by Yi Li. 2196 2197Debugger: Echo actual command along with the "unknown command" message. 2198 2199---------------------------------------- 220023 August 2013. Summary of changes for version 20130823: 2201 22021) ACPICA kernel-resident subsystem: 2203 2204Implemented support for host-installed System Control Interrupt (SCI) 2205handlers. Certain ACPI functionality requires the host to handle raw 2206SCIs. For example, the "SCI Doorbell" that is defined for memory power 2207state support requires the host device driver to handle SCIs to examine 2208if the doorbell has been activated. Multiple SCI handlers can be 2209installed to allow for future expansion. New external interfaces are 2210AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2211details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2212 2213Operation region support: Never locally free the handler "context" 2214pointer. This change removes some dangerous code that attempts to free 2215the handler context pointer in some (rare) circumstances. The owner of 2216the handler owns this pointer and the ACPICA code should never touch it. 2217Although not seen to be an issue in any kernel, it did show up as a 2218problem (fault) under AcpiExec. Also, set the internal storage field for 2219the context pointer to zero when the region is deactivated, simply for 2220sanity. David Box. ACPICA BZ 1039. 2221 2222AcpiRead: On error, do not modify the return value target location. If an 2223error happens in the middle of a split 32/32 64-bit I/O operation, do not 2224modify the target of the return value pointer. Makes the code consistent 2225with the rest of ACPICA. Bjorn Helgaas. 2226 2227Example Code and Data Size: These are the sizes for the OS-independent 2228acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2229debug version of the code includes the debug output trace mechanism and 2230has a much larger code and data size. 2231 2232 Current Release: 2233 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2234 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2235 Previous Release: 2236 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2237 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2238 2239 22402) iASL Compiler/Disassembler and Tools: 2241 2242AcpiDump: Implemented several new features and fixed some problems: 22431) Added support to dump the RSDP, RSDT, and XSDT tables. 22442) Added support for multiple table instances (SSDT, UEFI). 22453) Added option to dump "customized" (overridden) tables (-c). 22464) Fixed a problem where some table filenames were improperly 2247constructed. 22485) Improved some error messages, removed some unnecessary messages. 2249 2250iASL: Implemented additional support for disassembly of ACPI tables that 2251contain invocations of external control methods. The -fe<file> option 2252allows the import of a file that specifies the external methods along 2253with the required number of arguments for each -- allowing for the 2254correct disassembly of the table. This is a workaround for a limitation 2255of AML code where the disassembler often cannot determine the number of 2256arguments required for an external control method and generates incorrect 2257ASL code. See the iASL reference for details. ACPICA BZ 1030. 2258 2259Debugger: Implemented a new command (paths) that displays the full 2260pathnames (namepaths) and object types of all objects in the namespace. 2261This is an alternative to the namespace command. 2262 2263Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2264mechanism and any installed handlers. 2265 2266iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2267This can occur if there are too many parent prefixes in a namepath (for 2268example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2269 2270Application OSLs: Set the return value for the PCI read functions. These 2271functions simply return AE_OK, but should set the return value to zero 2272also. This change implements this. ACPICA BZ 1038. 2273 2274Debugger: Prevent possible command line buffer overflow. Increase the 2275size of a couple of the debugger line buffers, and ensure that overflow 2276cannot happen. ACPICA BZ 1037. 2277 2278iASL: Changed to abort immediately on serious errors during the parsing 2279phase. Due to the nature of ASL, there is no point in attempting to 2280compile these types of errors, and they typically end up causing a 2281cascade of hundreds of errors which obscure the original problem. 2282 2283---------------------------------------- 228425 July 2013. Summary of changes for version 20130725: 2285 22861) ACPICA kernel-resident subsystem: 2287 2288Fixed a problem with the DerefOf operator where references to FieldUnits 2289and BufferFields incorrectly returned the parent object, not the actual 2290value of the object. After this change, a dereference of a FieldUnit 2291reference results in a read operation on the field to get the value, and 2292likewise, the appropriate BufferField value is extracted from the target 2293buffer. 2294 2295Fixed a problem where the _WAK method could cause a fault under these 2296circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2297method returned no value. The problem is rarely seen because most kernels 2298run ACPICA in slack mode. 2299 2300For the DerefOf operator, a fatal error now results if an attempt is made 2301to dereference a reference (created by the Index operator) to a NULL 2302package element. Provides compatibility with other ACPI implementations, 2303and this behavior will be added to a future version of the ACPI 2304specification. 2305 2306The ACPI Power Management Timer (defined in the FADT) is now optional. 2307This provides compatibility with other ACPI implementations and will 2308appear in the next version of the ACPI specification. If there is no PM 2309Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2310zero in the FADT indicates no PM timer. 2311 2312Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2313allows the host to globally enable/disable all vendor strings, all 2314feature strings, or both. Intended to be primarily used for debugging 2315purposes only. Lv Zheng. 2316 2317Expose the collected _OSI data to the host via a global variable. This 2318data tracks the highest level vendor ID that has been invoked by the BIOS 2319so that the host (and potentially ACPICA itself) can change behaviors 2320based upon the age of the BIOS. 2321 2322Example Code and Data Size: These are the sizes for the OS-independent 2323acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2324debug version of the code includes the debug output trace mechanism and 2325has a much larger code and data size. 2326 2327 Current Release: 2328 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2329 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2330 Previous Release: 2331 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2332 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2333 2334 23352) iASL Compiler/Disassembler and Tools: 2336 2337iASL: Created the following enhancements for the -so option (create 2338offset table): 23391)Add offsets for the last nameseg in each namepath for every supported 2340object type 23412)Add support for Processor, Device, Thermal Zone, and Scope objects 23423)Add the actual AML opcode for the parent object of every supported 2343object type 23444)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2345 2346Disassembler: Emit all unresolved external symbols in a single block. 2347These are external references to control methods that could not be 2348resolved, and thus, the disassembler had to make a guess at the number of 2349arguments to parse. 2350 2351iASL: The argument to the -T option (create table template) is now 2352optional. If not specified, the default table is a DSDT, typically the 2353most common case. 2354 2355---------------------------------------- 235626 June 2013. Summary of changes for version 20130626: 2357 23581) ACPICA kernel-resident subsystem: 2359 2360Fixed an issue with runtime repair of the _CST object. Null or invalid 2361elements were not always removed properly. Lv Zheng. 2362 2363Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 2364FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2365the maximum number of GPEs is 1016. Use of multiple GPE block devices 2366makes the system-wide number of GPEs essentially unlimited. 2367 2368Example Code and Data Size: These are the sizes for the OS-independent 2369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2370debug version of the code includes the debug output trace mechanism and 2371has a much larger code and data size. 2372 2373 Current Release: 2374 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2375 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2376 Previous Release: 2377 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2378 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2379 2380 23812) iASL Compiler/Disassembler and Tools: 2382 2383Portable AcpiDump: Implemented full support for the Linux and FreeBSD 2384hosts. Now supports Linux, FreeBSD, and Windows. 2385 2386Disassembler: Added some missing types for the HEST and EINJ tables: "Set 2387Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2388 2389iASL/Preprocessor: Implemented full support for nested 2390#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2391 2392Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 2393max. The original purpose of this constraint was to limit the amount of 2394debug output. However, the string function in question (UtPrintString) is 2395now used for the disassembler also, where 256 bytes is insufficient. 2396Reported by RehabMan@GitHub. 2397 2398iASL/DataTables: Fixed some problems and issues with compilation of DMAR 2399tables. ACPICA BZ 999. Lv Zheng. 2400 2401iASL: Fixed a couple of error exit issues that could result in a "Could 2402not delete <file>" message during ASL compilation. 2403 2404AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2405the actual signatures for these tables are "FACP" and "APIC", 2406respectively. 2407 2408AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2409tables are allowed to have multiple instances. 2410 2411---------------------------------------- 241217 May 2013. Summary of changes for version 20130517: 2413 24141) ACPICA kernel-resident subsystem: 2415 2416Fixed a regression introduced in version 20130328 for _INI methods. This 2417change fixes a problem introduced in 20130328 where _INI methods are no 2418longer executed properly because of a memory block that was not 2419initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2420<tomasz.nowicki@linaro.org>. 2421 2422Fixed a possible problem with the new extended sleep registers in the 2423ACPI 24245.0 FADT. Do not use these registers (even if populated) unless the HW- 2425reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 24261020. Lv Zheng. 2427 2428Implemented return value repair code for _CST predefined objects: Sort 2429the 2430list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2431 2432Implemented a debug-only option to disable loading of SSDTs from the 2433RSDT/XSDT during ACPICA initialization. This can be useful for debugging 2434ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2435acglobal.h - ACPICA BZ 1005. Lv Zheng. 2436 2437Fixed some issues in the ACPICA initialization and termination code: 2438Tomasz Nowicki <tomasz.nowicki@linaro.org> 24391) Clear events initialized flag upon event component termination. ACPICA 2440BZ 1013. 24412) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 24423) Delete global lock pending lock during termination. ACPICA BZ 1012. 24434) Clear debug buffer global on termination to prevent possible multiple 2444delete. ACPICA BZ 1010. 2445 2446Standardized all switch() blocks across the entire source base. After 2447many 2448years, different formatting for switch() had crept in. This change makes 2449the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2450 2451Split some files to enhance ACPICA modularity and configurability: 24521) Split buffer dump routines into utilities/utbuffer.c 24532) Split internal error message routines into utilities/uterror.c 24543) Split table print utilities into tables/tbprint.c 24554) Split iASL command-line option processing into asloptions.c 2456 2457Makefile enhancements: 24581) Support for all new files above. 24592) Abort make on errors from any subcomponent. Chao Guan. 24603) Add build support for Apple Mac OS X. Liang Qi. 2461 2462Example Code and Data Size: These are the sizes for the OS-independent 2463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2464debug version of the code includes the debug output trace mechanism and 2465has a much larger code and data size. 2466 2467 Current Release: 2468 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2469 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2470 Previous Release: 2471 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2472 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2473 2474 24752) iASL Compiler/Disassembler and Tools: 2476 2477New utility: Implemented an easily portable version of the acpidump 2478utility to extract ACPI tables from the system (or a file) in an ASCII 2479hex 2480dump format. The top-level code implements the various command line 2481options, file I/O, and table dump routines. To port to a new host, only 2482three functions need to be implemented to get tables -- since this 2483functionality is OS-dependent. See the tools/acpidump/apmain.c module and 2484the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 24851) The Windows version obtains the ACPI tables from the Registry. 24862) The Linux version is under development. 24873) Other hosts - If an OS-dependent module is submitted, it will be 2488distributed with ACPICA. 2489 2490iASL: Fixed a regression for -D preprocessor option (define symbol). A 2491restructuring/change to the initialization sequence caused this option to 2492no longer work properly. 2493 2494iASL: Implemented a mechanism to disable specific warnings and remarks. 2495Adds a new command line option, "-vw <messageid> as well as "#pragma 2496disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 2497 2498iASL: Fix for too-strict package object validation. The package object 2499validation for return values from the predefined names is a bit too 2500strict, it does not allow names references within the package (which will 2501be resolved at runtime.) These types of references cannot be validated at 2502compile time. This change ignores named references within package objects 2503for names that return or define static packages. 2504 2505Debugger: Fixed the 80-character command line limitation for the History 2506command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 2507 2508iASL: Added control method and package support for the -so option 2509(generates AML offset table for BIOS support.) 2510 2511iASL: issue a remark if a non-serialized method creates named objects. If 2512a thread blocks within the method for any reason, and another thread 2513enters the method, the method will fail because an attempt will be made 2514to 2515create the same (named) object twice. In this case, issue a remark that 2516the method should be marked serialized. NOTE: may become a warning later. 2517ACPICA BZ 909. 2518 2519---------------------------------------- 252018 April 2013. Summary of changes for version 20130418: 2521 25221) ACPICA kernel-resident subsystem: 2523 2524Fixed a possible buffer overrun during some rare but specific field unit 2525read operations. This overrun can only happen if the DSDT version is 1 -- 2526meaning that all AML integers are 32 bits -- and the field length is 2527between 33 and 55 bits long. During the read, an internal buffer object 2528is 2529created for the field unit because the field is larger than an integer 2530(32 2531bits). However, in this case, the buffer will be incorrectly written 2532beyond the end because the buffer length is less than the internal 2533minimum 2534of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 2535long, but a full 8 bytes will be written. 2536 2537Updated the Embedded Controller "orphan" _REG method support. This refers 2538to _REG methods under the EC device that have no corresponding operation 2539region. This is allowed by the ACPI specification. This update removes a 2540dependency on the existence an ECDT table. It will execute an orphan _REG 2541method as long as the operation region handler for the EC is installed at 2542the EC device node and not the namespace root. Rui Zhang (original 2543update), Bob Moore (update/integrate). 2544 2545Implemented run-time argument typechecking for all predefined ACPI names 2546(_STA, _BIF, etc.) This change performs object typechecking on all 2547incoming arguments for all predefined names executed via 2548AcpiEvaluateObject. This ensures that ACPI-related device drivers are 2549passing correct object types as well as the correct number of arguments 2550(therefore identifying any issues immediately). Also, the ASL/namespace 2551definition of the predefined name is checked against the ACPI 2552specification for the proper argument count. Adds one new file, 2553nsarguments.c 2554 2555Changed an exception code for the ASL UnLoad() operator. Changed the 2556exception code for the case where the input DdbHandle is invalid, from 2557AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 2558 2559Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 2560global makefile. The use of this flag causes compiler errors on earlier 2561versions of GCC, so it has been removed for compatibility. 2562 2563Miscellaneous cleanup: 25641) Removed some unused/obsolete macros 25652) Fixed a possible memory leak in the _OSI support 25663) Removed an unused variable in the predefined name support 25674) Windows OSL: remove obsolete reference to a memory list field 2568 2569Example Code and Data Size: These are the sizes for the OS-independent 2570acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2571debug version of the code includes the debug output trace mechanism and 2572has a much larger code and data size. 2573 2574 Current Release: 2575 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2576 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2577 Previous Release: 2578 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2579 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2580 2581 25822) iASL Compiler/Disassembler and Tools: 2583 2584AcpiExec: Added installation of a handler for the SystemCMOS address 2585space. This prevents control method abort if a method accesses this 2586space. 2587 2588AcpiExec: Added support for multiple EC devices, and now install EC 2589operation region handler(s) at the actual EC device instead of the 2590namespace root. This reflects the typical behavior of host operating 2591systems. 2592 2593AcpiExec: Updated to ensure that all operation region handlers are 2594installed before the _REG methods are executed. This prevents a _REG 2595method from aborting if it accesses an address space has no handler. 2596AcpiExec installs a handler for every possible address space. 2597 2598Debugger: Enhanced the "handlers" command to display non-root handlers. 2599This change enhances the handlers command to display handlers associated 2600with individual devices throughout the namespace, in addition to the 2601currently supported display of handlers associated with the root 2602namespace 2603node. 2604 2605ASL Test Suite: Several test suite errors have been identified and 2606resolved, reducing the total error count during execution. Chao Guan. 2607 2608---------------------------------------- 260928 March 2013. Summary of changes for version 20130328: 2610 26111) ACPICA kernel-resident subsystem: 2612 2613Fixed several possible race conditions with the internal object reference 2614counting mechanism. Some of the external ACPICA interfaces update object 2615reference counts without holding the interpreter or namespace lock. This 2616change adds a spinlock to protect reference count updates on the internal 2617ACPICA objects. Reported by and with assistance from Andriy Gapon 2618(avg@FreeBSD.org). 2619 2620FADT support: Removed an extraneous warning for very large GPE register 2621sets. This change removes a size mismatch warning if the legacy length 2622field for a GPE register set is larger than the 64-bit GAS structure can 2623accommodate. GPE register sets can be larger than the 255-bit width 2624limitation of the GAS structure. Linn Crosetto (linn@hp.com). 2625 2626_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 2627return from this interface. Handles a possible timeout case if 2628ACPI_WAIT_FOREVER is modified by the host to be a value less than 2629"forever". Jung-uk Kim. 2630 2631Predefined name support: Add allowed/required argument type information 2632to 2633the master predefined info table. This change adds the infrastructure to 2634enable typechecking on incoming arguments for all predefined 2635methods/objects. It does not actually contain the code that will fully 2636utilize this information, this is still under development. Also condenses 2637some duplicate code for the predefined names into a new module, 2638utilities/utpredef.c 2639 2640Example Code and Data Size: These are the sizes for the OS-independent 2641acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2642debug version of the code includes the debug output trace mechanism and 2643has a much larger code and data size. 2644 2645 Previous Release: 2646 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2647 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2648 Current Release: 2649 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2650 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2651 2652 26532) iASL Compiler/Disassembler and Tools: 2654 2655iASL: Implemented a new option to simplify the development of ACPI- 2656related 2657BIOS code. Adds support for a new "offset table" output file. The -so 2658option will create a C table containing the AML table offsets of various 2659named objects in the namespace so that BIOS code can modify them easily 2660at 2661boot time. This can simplify BIOS runtime code by eliminating expensive 2662searches for "magic values", enhancing boot times and adding greater 2663reliability. With assistance from Lee Hamel. 2664 2665iASL: Allow additional predefined names to return zero-length packages. 2666Now, all predefined names that are defined by the ACPI specification to 2667return a "variable-length package of packages" are allowed to return a 2668zero length top-level package. This allows the BIOS to tell the host that 2669the requested feature is not supported, and supports existing BIOS/ASL 2670code and practices. 2671 2672iASL: Changed the "result not used" warning to an error. This is the case 2673where an ASL operator is effectively a NOOP because the result of the 2674operation is not stored anywhere. For example: 2675 Add (4, Local0) 2676There is no target (missing 3rd argument), nor is the function return 2677value used. This is potentially a very serious problem -- since the code 2678was probably intended to do something, but for whatever reason, the value 2679was not stored. Therefore, this issue has been upgraded from a warning to 2680an error. 2681 2682AcpiHelp: Added allowable/required argument types to the predefined names 2683info display. This feature utilizes the recent update to the predefined 2684names table (above). 2685 2686---------------------------------------- 268714 February 2013. Summary of changes for version 20130214: 2688 26891) ACPICA Kernel-resident Subsystem: 2690 2691Fixed a possible regression on some hosts: Reinstated the safe return 2692macros (return_ACPI_STATUS, etc.) that ensure that the argument is 2693evaluated only once. Although these macros are not needed for the ACPICA 2694code itself, they are often used by ACPI-related host device drivers 2695where 2696the safe feature may be necessary. 2697 2698Fixed several issues related to the ACPI 5.0 reduced hardware support 2699(SOC): Now ensure that if the platform declares itself as hardware- 2700reduced 2701via the FADT, the following functions become NOOPs (and always return 2702AE_OK) because ACPI is always enabled by definition on these machines: 2703 AcpiEnable 2704 AcpiDisable 2705 AcpiHwGetMode 2706 AcpiHwSetMode 2707 2708Dynamic Object Repair: Implemented additional runtime repairs for 2709predefined name return values. Both of these repairs can simplify code in 2710the related device drivers that invoke these methods: 27111) For the _STR and _MLS names, automatically repair/convert an ASCII 2712string to a Unicode buffer. 27132) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 2714a 2715lone end tag descriptor in the following cases: A Return(0) was executed, 2716a null buffer was returned, or no object at all was returned (non-slack 2717mode only). Adds a new file, nsconvert.c 2718ACPICA BZ 998. Bob Moore, Lv Zheng. 2719 2720Resource Manager: Added additional code to prevent possible infinite 2721loops 2722while traversing corrupted or ill-formed resource template buffers. Check 2723for zero-length resource descriptors in all code that loops through 2724resource templates (the length field is used to index through the 2725template). This change also hardens the external AcpiWalkResources and 2726AcpiWalkResourceBuffer interfaces. 2727 2728Local Cache Manager: Enhanced the main data structure to eliminate an 2729unnecessary mechanism to access the next object in the list. Actually 2730provides a small performance enhancement for hosts that use the local 2731ACPICA cache manager. Jung-uk Kim. 2732 2733Example Code and Data Size: These are the sizes for the OS-independent 2734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2735debug version of the code includes the debug output trace mechanism and 2736has a much larger code and data size. 2737 2738 Previous Release: 2739 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2740 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2741 Current Release: 2742 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2743 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2744 2745 27462) iASL Compiler/Disassembler and Tools: 2747 2748iASL/Disassembler: Fixed several issues with the definition of the ACPI 27495.0 RASF table (RAS Feature Table). This change incorporates late changes 2750that were made to the ACPI 5.0 specification. 2751 2752iASL/Disassembler: Added full support for the following new ACPI tables: 2753 1) The MTMR table (MID Timer Table) 2754 2) The VRTC table (Virtual Real Time Clock Table). 2755Includes header file, disassembler, table compiler, and template support 2756for both tables. 2757 2758iASL: Implemented compile-time validation of package objects returned by 2759predefined names. This new feature validates static package objects 2760returned by the various predefined names defined to return packages. Both 2761object types and package lengths are validated, for both parent packages 2762and sub-packages, if any. The code is similar in structure and behavior 2763to 2764the runtime repair mechanism within the AML interpreter and uses the 2765existing predefined name information table. Adds a new file, aslprepkg.c. 2766ACPICA BZ 938. 2767 2768iASL: Implemented auto-detection of binary ACPI tables for disassembly. 2769This feature detects a binary file with a valid ACPI table header and 2770invokes the disassembler automatically. Eliminates the need to 2771specifically invoke the disassembler with the -d option. ACPICA BZ 862. 2772 2773iASL/Disassembler: Added several warnings for the case where there are 2774unresolved control methods during the disassembly. This can potentially 2775cause errors when the output file is compiled, because the disassembler 2776assumes zero method arguments in these cases (it cannot determine the 2777actual number of arguments without resolution/definition of the method). 2778 2779Debugger: Added support to display all resources with a single command. 2780Invocation of the resources command with no arguments will now display 2781all 2782resources within the current namespace. 2783 2784AcpiHelp: Added descriptive text for each ACPICA exception code displayed 2785via the -e option. 2786 2787---------------------------------------- 278817 January 2013. Summary of changes for version 20130117: 2789 27901) ACPICA Kernel-resident Subsystem: 2791 2792Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 2793return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 2794objects to return a package containing one integer, most BIOS code 2795returns 2796two integers and the previous code reflects that. However, we also need 2797to 2798support BIOS code that actually implements to the ACPI spec, and this 2799change reflects this. 2800 2801Fixed two issues with the ACPI_DEBUG_PRINT macros: 28021) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 2803C compilers that require this support. 28042) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 2805ACPI_DEBUG is already used by many of the various hosts. 2806 2807Updated all ACPICA copyrights and signons to 2013. Added the 2013 2808copyright to all module headers and signons, including the standard Linux 2809header. This affects virtually every file in the ACPICA core subsystem, 2810iASL compiler, all ACPICA utilities, and the test suites. 2811 2812Example Code and Data Size: These are the sizes for the OS-independent 2813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2814debug version of the code includes the debug output trace mechanism and 2815has a much larger code and data size. 2816 2817 Previous Release: 2818 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2819 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2820 Current Release: 2821 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2822 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2823 2824 28252) iASL Compiler/Disassembler and Tools: 2826 2827Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 2828prevent a possible fault on some hosts. Some C libraries modify the arg 2829pointer parameter to vfprintf making it difficult to call it twice in the 2830AcpiOsVprintf function. Use a local buffer to workaround this issue. This 2831does not affect the Windows OSL since the Win C library does not modify 2832the arg pointer. Chao Guan, Bob Moore. 2833 2834iASL: Fixed a possible infinite loop when the maximum error count is 2835reached. If an output file other than the .AML file is specified (such as 2836a listing file), and the maximum number of errors is reached, do not 2837attempt to flush data to the output file(s) as the compiler is aborting. 2838This can cause an infinite loop as the max error count code essentially 2839keeps calling itself. 2840 2841iASL/Disassembler: Added an option (-in) to ignore NOOP 2842opcodes/operators. 2843Implemented for both the compiler and the disassembler. Often, the NOOP 2844opcode is used as padding for packages that are changed dynamically by 2845the 2846BIOS. When disassembled and recompiled, these NOOPs will cause syntax 2847errors. This option causes the disassembler to ignore all NOOP opcodes 2848(0xA3), and it also causes the compiler to ignore all ASL source code 2849NOOP 2850statements as well. 2851 2852Debugger: Enhanced the Sleep command to execute all sleep states. This 2853change allows Sleep to be invoked with no arguments and causes the 2854debugger to execute all of the sleep states, 0-5, automatically. 2855 2856---------------------------------------- 285720 December 2012. Summary of changes for version 20121220: 2858 28591) ACPICA Kernel-resident Subsystem: 2860 2861Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 2862alternate entry point for AcpiWalkResources and improves the usability of 2863the resource manager by accepting as input a buffer containing the output 2864of either a _CRS, _PRS, or _AEI method. The key functionality is that the 2865input buffer is not deleted by this interface so that it can be used by 2866the host later. See the ACPICA reference for details. 2867 2868Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 2869(DSDT version < 2). The constant will be truncated and this warning 2870reflects that behavior. 2871 2872Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 2873ExtendedInterrupt, and GpioInt descriptors. This change adds support to 2874both get and set the new wake bit in these descriptors, separately from 2875the existing share bit. Reported by Aaron Lu. 2876 2877Interpreter: Fix Store() when an implicit conversion is not possible. For 2878example, in the cases such as a store of a string to an existing package 2879object, implement the store as a CopyObject(). This is a small departure 2880from the ACPI specification which states that the control method should 2881be 2882aborted in this case. However, the ASLTS suite depends on this behavior. 2883 2884Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 2885macros: check if debug output is currently enabled as soon as possible to 2886minimize performance impact if debug is in fact not enabled. 2887 2888Source code restructuring: Cleanup to improve modularity. The following 2889new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 2890psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 2891Associated makefiles and project files have been updated. 2892 2893Changed an exception code for LoadTable operator. For the case where one 2894of the input strings is too long, change the returned exception code from 2895AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 2896 2897Fixed a possible memory leak in dispatcher error path. On error, delete 2898the mutex object created during method mutex creation. Reported by 2899tim.gardner@canonical.com. 2900 2901Example Code and Data Size: These are the sizes for the OS-independent 2902acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2903debug version of the code includes the debug output trace mechanism and 2904has a much larger code and data size. 2905 2906 Previous Release: 2907 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2908 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2909 Current Release: 2910 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2911 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2912 2913 29142) iASL Compiler/Disassembler and Tools: 2915 2916iASL: Disallow a method call as argument to the ObjectType ASL operator. 2917This change tracks an errata to the ACPI 5.0 document. The AML grammar 2918will not allow the interpreter to differentiate between a method and a 2919method invocation when these are used as an argument to the ObjectType 2920operator. The ACPI specification change is to disallow a method 2921invocation 2922(UserTerm) for the ObjectType operator. 2923 2924Finish support for the TPM2 and CSRT tables in the headers, table 2925compiler, and disassembler. 2926 2927Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 2928always expires immediately if the semaphore is not available. The 2929original 2930code was using a relative-time timeout, but sem_timedwait requires the 2931use 2932of an absolute time. 2933 2934iASL: Added a remark if the Timer() operator is used within a 32-bit 2935table. This operator returns a 64-bit time value that will be truncated 2936within a 32-bit table. 2937 2938iASL Source code restructuring: Cleanup to improve modularity. The 2939following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2940aslmethod.c, and aslfileio.c. Associated makefiles and project files have 2941been updated. 2942 2943 2944---------------------------------------- 294514 November 2012. Summary of changes for version 20121114: 2946 29471) ACPICA Kernel-resident Subsystem: 2948 2949Implemented a performance enhancement for ACPI/AML Package objects. This 2950change greatly increases the performance of Package objects within the 2951interpreter. It changes the processing of reference counts for packages 2952by 2953optimizing for the most common case where the package sub-objects are 2954either Integers, Strings, or Buffers. Increases the overall performance 2955of 2956the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 29572X.) 2958Chao Guan. ACPICA BZ 943. 2959 2960Implemented and deployed common macros to extract flag bits from resource 2961descriptors. Improves readability and maintainability of the code. Fixes 2962a 2963problem with the UART serial bus descriptor for the number of data bits 2964flags (was incorrectly 2 bits, should be 3). 2965 2966Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2967of the macros and changed the SETx macros to the style of (destination, 2968source). Also added ACPI_CASTx companion macros. Lv Zheng. 2969 2970Example Code and Data Size: These are the sizes for the OS-independent 2971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2972debug version of the code includes the debug output trace mechanism and 2973has a much larger code and data size. 2974 2975 Previous Release: 2976 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2977 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2978 Current Release: 2979 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2980 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2981 2982 29832) iASL Compiler/Disassembler and Tools: 2984 2985Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2986adds the ShareAndWake and ExclusiveAndWake flags which were added to the 2987Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2988 2989Disassembler: Fixed a problem with external declaration generation. Fixes 2990a problem where an incorrect pathname could be generated for an external 2991declaration if the original reference to the object includes leading 2992carats (^). ACPICA BZ 984. 2993 2994Debugger: Completed a major update for the Disassemble<method> command. 2995This command was out-of-date and did not properly disassemble control 2996methods that had any reasonable complexity. This fix brings the command 2997up 2998to the same level as the rest of the disassembler. Adds one new file, 2999dmdeferred.c, which is existing code that is now common with the main 3000disassembler and the debugger disassemble command. ACPICA MZ 978. 3001 3002iASL: Moved the parser entry prototype to avoid a duplicate declaration. 3003Newer versions of Bison emit this prototype, so moved the prototype out 3004of 3005the iASL header to where it is actually used in order to avoid a 3006duplicate 3007declaration. 3008 3009iASL/Tools: Standardized use of the stream I/O functions: 3010 1) Ensure check for I/O error after every fopen/fread/fwrite 3011 2) Ensure proper order of size/count arguments for fread/fwrite 3012 3) Use test of (Actual != Requested) after all fwrite, and most fread 3013 4) Standardize I/O error messages 3014Improves reliability and maintainability of the code. Bob Moore, Lv 3015Zheng. 3016ACPICA BZ 981. 3017 3018Disassembler: Prevent duplicate External() statements. During generation 3019of external statements, detect similar pathnames that are actually 3020duplicates such as these: 3021 External (\ABCD) 3022 External (ABCD) 3023Remove all leading '\' characters from pathnames during the external 3024statement generation so that duplicates will be detected and tossed. 3025ACPICA BZ 985. 3026 3027Tools: Replace low-level I/O with stream I/O functions. Replace 3028open/read/write/close with the stream I/O equivalents 3029fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3030Moore. 3031 3032AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3033name header so that AcpiXtract recognizes the output file/table. 3034 3035iASL: Remove obsolete -2 option flag. Originally intended to force the 3036compiler/disassembler into an ACPI 2.0 mode, this was never implemented 3037and the entire concept is now obsolete. 3038 3039---------------------------------------- 304018 October 2012. Summary of changes for version 20121018: 3041 3042 30431) ACPICA Kernel-resident Subsystem: 3044 3045Updated support for the ACPI 5.0 MPST table. Fixes some problems 3046introduced by late changes to the table as it was added to the ACPI 5.0 3047specification. Includes header, disassembler, and data table compiler 3048support as well as a new version of the MPST template. 3049 3050AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 30515.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3052methods: _HID, _CID, and _UID. 3053 3054Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3055ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3056name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3057names for their various drivers. Affects the AcpiGetObjectInfo external 3058interface, and other internal interfaces as well. 3059 3060Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3061This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3062on machines that support non-aligned transfers. Optimizes for this case 3063rather than using a strncpy. With assistance from Zheng Lv. 3064 3065Resource Manager: Small fix for buffer size calculation. Fixed a one byte 3066error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3067 3068Added a new debug print message for AML mutex objects that are force- 3069released. At control method termination, any currently acquired mutex 3070objects are force-released. Adds a new debug-only message for each one 3071that is released. 3072 3073Audited/updated all ACPICA return macros and the function debug depth 3074counter: 1) Ensure that all functions that use the various TRACE macros 3075also use the appropriate ACPICA return macros. 2) Ensure that all normal 3076return statements surround the return expression (value) with parens to 3077ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3078Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 3079 3080Global source code changes/maintenance: All extra lines at the start and 3081end of each source file have been removed for consistency. Also, within 3082comments, all new sentences start with a single space instead of a double 3083space, again for consistency across the code base. 3084 3085Example Code and Data Size: These are the sizes for the OS-independent 3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3087debug version of the code includes the debug output trace mechanism and 3088has a much larger code and data size. 3089 3090 Previous Release: 3091 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3092 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3093 Current Release: 3094 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3095 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3096 3097 30982) iASL Compiler/Disassembler and Tools: 3099 3100AcpiExec: Improved the algorithm used for memory leak/corruption 3101detection. Added some intelligence to the code that maintains the global 3102list of allocated memory. The list is now ordered by allocated memory 3103address, significantly improving performance. When running AcpiExec on 3104the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3105on the platform and/or the environment. Note, this performance 3106enhancement affects the AcpiExec utility only, not the kernel-resident 3107ACPICA code. 3108 3109Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3110the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3111incorrect table offset reported for invalid opcodes. Report the original 311232-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3113 3114Disassembler: Enhanced the -vt option to emit the binary table data in 3115hex format to assist with debugging. 3116 3117Fixed a potential filename buffer overflow in osunixdir.c. Increased the 3118size of file structure. Colin Ian King. 3119 3120---------------------------------------- 312113 September 2012. Summary of changes for version 20120913: 3122 3123 31241) ACPICA Kernel-resident Subsystem: 3125 3126ACPI 5.0: Added two new notify types for the Hardware Error Notification 3127Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3128and 3129MCE(6). 3130 3131Table Manager: Merged/removed duplicate code in the root table resize 3132functions. One function is external, the other is internal. Lv Zheng, 3133ACPICA 3134BZ 846. 3135 3136Makefiles: Completely removed the obsolete "Linux" makefiles under 3137acpica/generate/linux. These makefiles are obsolete and have been 3138replaced 3139by 3140the generic unix makefiles under acpica/generate/unix. 3141 3142Makefiles: Ensure that binary files always copied properly. Minor rule 3143change 3144to ensure that the final binary output files are always copied up to the 3145appropriate binary directory (bin32 or bin64.) 3146 3147Example Code and Data Size: These are the sizes for the OS-independent 3148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3149debug 3150version of the code includes the debug output trace mechanism and has a 3151much 3152larger code and data size. 3153 3154 Previous Release: 3155 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3156 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3157 Current Release: 3158 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3159 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3160 3161 31622) iASL Compiler/Disassembler and Tools: 3163 3164Disassembler: Fixed a possible fault during the disassembly of resource 3165descriptors when a second parse is required because of the invocation of 3166external control methods within the table. With assistance from 3167adq@lidskialf.net. ACPICA BZ 976. 3168 3169iASL: Fixed a namepath optimization problem. An error can occur if the 3170parse 3171node that contains the namepath to be optimized does not have a parent 3172node 3173that is a named object. This change fixes the problem. 3174 3175iASL: Fixed a regression where the AML file is not deleted on errors. The 3176AML 3177output file should be deleted if there are any errors during the 3178compiler. 3179The 3180only exception is if the -f (force output) option is used. ACPICA BZ 974. 3181 3182iASL: Added a feature to automatically increase internal line buffer 3183sizes. 3184Via realloc(), automatically increase the internal line buffer sizes as 3185necessary to support very long source code lines. The current version of 3186the 3187preprocessor requires a buffer long enough to contain full source code 3188lines. 3189This change increases the line buffer(s) if the input lines go beyond the 3190current buffer size. This eliminates errors that occurred when a source 3191code 3192line was longer than the buffer. 3193 3194iASL: Fixed a problem with constant folding in method declarations. The 3195SyncLevel term is a ByteConstExpr, and incorrect code would be generated 3196if a 3197Type3 opcode was used. 3198 3199Debugger: Improved command help support. For incorrect argument count, 3200display 3201full help for the command. For help command itself, allow an argument to 3202specify a command. 3203 3204Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3205errors during execution of the suite. Guan Chao. 3206 3207---------------------------------------- 320816 August 2012. Summary of changes for version 20120816: 3209 3210 32111) ACPICA Kernel-resident Subsystem: 3212 3213Removed all use of the deprecated _GTS and _BFS predefined methods. The 3214_GTS 3215(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3216deprecated and will probably be removed from the ACPI specification. 3217Windows 3218does not invoke them, and reportedly never will. The final nail in the 3219coffin 3220is that the ACPI specification states that these methods must be run with 3221interrupts off, which is not going to happen in a kernel interpreter. 3222Note: 3223Linux has removed all use of the methods also. It was discovered that 3224invoking these functions caused failures on some machines, probably 3225because 3226they were never tested since Windows does not call them. Affects two 3227external 3228interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3229ACPICA BZ 969. 3230 3231Implemented support for complex bit-packed buffers returned from the _PLD 3232(Physical Location of Device) predefined method. Adds a new external 3233interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3234C 3235structure. Note: C Bitfields cannot be used for this type of predefined 3236structure since the memory layout of individual bitfields is not defined 3237by 3238the C language. In addition, there are endian concerns where a compiler 3239will 3240change the bitfield ordering based on the machine type. The new ACPICA 3241interface eliminates these issues, and should be called after _PLD is 3242executed. ACPICA BZ 954. 3243 3244Implemented a change to allow a scope change to root (via "Scope (\)") 3245during 3246execution of module-level ASL code (code that is executed at table load 3247time.) Lin Ming. 3248 3249Added the Windows8/Server2012 string for the _OSI method. This change 3250adds 3251a 3252new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 32532012. 3254 3255Added header support for the new ACPI tables DBG2 (Debug Port Table Type 32562) 3257and CSRT (Core System Resource Table). 3258 3259Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3260names. This simplifies access to the buffers returned by these predefined 3261names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3262 3263GPE support: Removed an extraneous parameter from the various low-level 3264internal GPE functions. Tang Feng. 3265 3266Removed the linux makefiles from the unix packages. The generate/linux 3267makefiles are obsolete and have been removed from the unix tarball 3268release 3269packages. The replacement makefiles are under generate/unix, and there is 3270a 3271top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3272 3273Updates for Unix makefiles: 32741) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 32752) Update linker flags (move to end of command line) for AcpiExec 3276utility. 3277Guan Chao. 3278 3279Split ACPICA initialization functions to new file, utxfinit.c. Split from 3280utxface.c to improve modularity and reduce file size. 3281 3282Example Code and Data Size: These are the sizes for the OS-independent 3283acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3284debug version of the code includes the debug output trace mechanism and 3285has a 3286much larger code and data size. 3287 3288 Previous Release: 3289 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3290 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3291 Current Release: 3292 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3293 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3294 3295 32962) iASL Compiler/Disassembler and Tools: 3297 3298iASL: Fixed a problem with constant folding for fixed-length constant 3299expressions. The constant-folding code was not being invoked for constant 3300expressions that allow the use of type 3/4/5 opcodes to generate 3301constants 3302for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3303result 3304in the generation of invalid AML bytecode. ACPICA BZ 970. 3305 3306iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3307apparently automatically emit some of the necessary externals. This 3308change 3309handles these versions in order to eliminate generation warnings. 3310 3311Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3312 3313Disassembler: Add support to decode _PLD buffers. The decoded buffer 3314appears 3315within comments in the output file. 3316 3317Debugger: Fixed a regression with the "Threads" command where 3318AE_BAD_PARAMETER was always returned. 3319 3320---------------------------------------- 332111 July 2012. Summary of changes for version 20120711: 3322 33231) ACPICA Kernel-resident Subsystem: 3324 3325Fixed a possible fault in the return package object repair code. Fixes a 3326problem that can occur when a lone package object is wrapped with an 3327outer 3328package object in order to force conformance to the ACPI specification. 3329Can 3330affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3331_DLM, 3332_CSD, _PSD, _TSD. 3333 3334Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 3335PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3336ARB_DIS bit must be implemented in the host-dependent C3 processor power 3337state 3338support. Note, ARB_DIS is obsolete and only applies to older chipsets, 3339both 3340Intel and other vendors. (for Intel: ICH4-M and earlier) 3341 3342This change removes the code to disable/enable bus master arbitration 3343during 3344suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3345causes 3346resume problems on some machines. The change has been in use for over 3347seven 3348years within Linux. 3349 3350Implemented two new external interfaces to support host-directed dynamic 3351ACPI 3352table load and unload. They are intended to simplify the host 3353implementation 3354of hot-plug support: 3355 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3356 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3357table. 3358See the ACPICA reference for additional details. Adds one new file, 3359components/tables/tbxfload.c 3360 3361Implemented and deployed two new interfaces for errors and warnings that 3362are 3363known to be caused by BIOS/firmware issues: 3364 AcpiBiosError: Prints "ACPI Firmware Error" message. 3365 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3366Deployed these new interfaces in the ACPICA Table Manager code for ACPI 3367table 3368and FADT errors. Additional deployment to be completed as appropriate in 3369the 3370future. The associated conditional macros are ACPI_BIOS_ERROR and 3371ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3372ACPICA 3373BZ 3374843. 3375 3376Implicit notify support: ensure that no memory allocation occurs within a 3377critical region. This fix moves a memory allocation outside of the time 3378that a 3379spinlock is held. Fixes issues on systems that do not allow this 3380behavior. 3381Jung-uk Kim. 3382 3383Split exception code utilities and tables into a new file, 3384utilities/utexcep.c 3385 3386Example Code and Data Size: These are the sizes for the OS-independent 3387acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3388debug 3389version of the code includes the debug output trace mechanism and has a 3390much 3391larger code and data size. 3392 3393 Previous Release: 3394 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3395 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3396 Current Release: 3397 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3398 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3399 3400 34012) iASL Compiler/Disassembler and Tools: 3402 3403iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3404of 34050. Jung-uk Kim. 3406 3407Debugger: Enhanced the "tables" command to emit additional information 3408about 3409the current set of ACPI tables, including the owner ID and flags decode. 3410 3411Debugger: Reimplemented the "unload" command to use the new 3412AcpiUnloadParentTable external interface. This command was disable 3413previously 3414due to need for an unload interface. 3415 3416AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3417option 3418will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3419 3420---------------------------------------- 342120 June 2012. Summary of changes for version 20120620: 3422 3423 34241) ACPICA Kernel-resident Subsystem: 3425 3426Implemented support to expand the "implicit notify" feature to allow 3427multiple 3428devices to be notified by a single GPE. This feature automatically 3429generates a 3430runtime device notification in the absence of a BIOS-provided GPE control 3431method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3432notify is 3433provided by ACPICA for Windows compatibility, and is a workaround for 3434BIOS 3435AML 3436code errors. See the description of the AcpiSetupGpeForWake interface in 3437the 3438APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3439 3440Changed some comments and internal function names to simplify and ensure 3441correctness of the Linux code translation. No functional changes. 3442 3443Example Code and Data Size: These are the sizes for the OS-independent 3444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3445debug 3446version of the code includes the debug output trace mechanism and has a 3447much 3448larger code and data size. 3449 3450 Previous Release: 3451 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3452 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3453 Current Release: 3454 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3455 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3456 3457 34582) iASL Compiler/Disassembler and Tools: 3459 3460Disassembler: Added support to emit short, commented descriptions for the 3461ACPI 3462predefined names in order to improve the readability of the disassembled 3463output. ACPICA BZ 959. Changes include: 3464 1) Emit descriptions for all standard predefined names (_INI, _STA, 3465_PRW, 3466etc.) 3467 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 3468 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 3469etc.) 3470 3471AcpiSrc: Fixed several long-standing Linux code translation issues. 3472Argument 3473descriptions in function headers are now translated properly to lower 3474case 3475and 3476underscores. ACPICA BZ 961. Also fixes translation problems such as 3477these: 3478(old -> new) 3479 i_aSL -> iASL 3480 00-7_f -> 00-7F 3481 16_k -> 16K 3482 local_fADT -> local_FADT 3483 execute_oSI -> execute_OSI 3484 3485iASL: Fixed a problem where null bytes were inadvertently emitted into 3486some 3487listing files. 3488 3489iASL: Added the existing debug options to the standard help screen. There 3490are 3491no longer two different help screens. ACPICA BZ 957. 3492 3493AcpiHelp: Fixed some typos in the various predefined name descriptions. 3494Also 3495expand some of the descriptions where appropriate. 3496 3497iASL: Fixed the -ot option (display compile times/statistics). Was not 3498working 3499properly for standard output; only worked for the debug file case. 3500 3501---------------------------------------- 350218 May 2012. Summary of changes for version 20120518: 3503 3504 35051) ACPICA Core Subsystem: 3506 3507Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 3508defined 3509to block until asynchronous events such as notifies and GPEs have 3510completed. 3511Within ACPICA, it is only called before a notify or GPE handler is 3512removed/uninstalled. It also may be useful for the host OS within related 3513drivers such as the Embedded Controller driver. See the ACPICA reference 3514for 3515additional information. ACPICA BZ 868. 3516 3517ACPI Tables: Added a new error message for a possible overflow failure 3518during 3519the conversion of FADT 32-bit legacy register addresses to internal 3520common 352164- 3522bit GAS structure representation. The GAS has a one-byte "bit length" 3523field, 3524thus limiting the register length to 255 bits. ACPICA BZ 953. 3525 3526Example Code and Data Size: These are the sizes for the OS-independent 3527acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3528debug 3529version of the code includes the debug output trace mechanism and has a 3530much 3531larger code and data size. 3532 3533 Previous Release: 3534 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3535 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3536 Current Release: 3537 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3538 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3539 3540 35412) iASL Compiler/Disassembler and Tools: 3542 3543iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 3544macro. 3545This keyword was added late in the ACPI 5.0 release cycle and was not 3546implemented until now. 3547 3548Disassembler: Added support for Operation Region externals. Adds missing 3549support for operation regions that are defined in another table, and 3550referenced locally via a Field or BankField ASL operator. Now generates 3551the 3552correct External statement. 3553 3554Disassembler: Several additional fixes for the External() statement 3555generation 3556related to some ASL operators. Also, order the External() statements 3557alphabetically in the disassembler output. Fixes the External() 3558generation 3559for 3560the Create* field, Alias, and Scope operators: 3561 1) Create* buffer field operators - fix type mismatch warning on 3562disassembly 3563 2) Alias - implement missing External support 3564 3) Scope - fix to make sure all necessary externals are emitted. 3565 3566iASL: Improved pathname support. For include files, merge the prefix 3567pathname 3568with the file pathname and eliminate unnecessary components. Convert 3569backslashes in all pathnames to forward slashes, for readability. Include 3570file 3571pathname changes affect both #include and Include() type operators. 3572 3573iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 3574end 3575of a valid line by inserting a newline and then returning the EOF during 3576the 3577next call to GetNextLine. Prevents the line from being ignored due to EOF 3578condition. 3579 3580iASL: Implemented some changes to enhance the IDE support (-vi option.) 3581Error 3582and Warning messages are now correctly recognized for both the source 3583code 3584browser and the global error and warning counts. 3585 3586---------------------------------------- 358720 April 2012. Summary of changes for version 20120420: 3588 3589 35901) ACPICA Core Subsystem: 3591 3592Implemented support for multiple notify handlers. This change adds 3593support 3594to 3595allow multiple system and device notify handlers on Device, Thermal Zone, 3596and 3597Processor objects. This can simplify the host OS notification 3598implementation. 3599Also re-worked and restructured the entire notify support code to 3600simplify 3601handler installation, handler removal, notify event queuing, and notify 3602dispatch to handler(s). Note: there can still only be two global notify 3603handlers - one for system notifies and one for device notifies. There are 3604no 3605changes to the existing handler install/remove interfaces. Lin Ming, Bob 3606Moore, Rafael Wysocki. 3607 3608Fixed a regression in the package repair code where the object reference 3609count was calculated incorrectly. Regression was introduced in the commit 3610"Support to add Package wrappers". 3611 3612Fixed a couple possible memory leaks in the AML parser, in the error 3613recovery 3614path. Jesper Juhl, Lin Ming. 3615 3616Example Code and Data Size: These are the sizes for the OS-independent 3617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3618debug version of the code includes the debug output trace mechanism and 3619has a 3620much larger code and data size. 3621 3622 Previous Release: 3623 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3624 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3625 Current Release: 3626 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3627 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3628 3629 36302) iASL Compiler/Disassembler and Tools: 3631 3632iASL: Fixed a problem with the resource descriptor support where the 3633length 3634of the StartDependentFn and StartDependentFnNoPrio descriptors were not 3635included in cumulative descriptor offset, resulting in incorrect values 3636for 3637resource tags within resource descriptors appearing after a 3638StartDependent* 3639descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 3640 3641iASL and Preprocessor: Implemented full support for the #line directive 3642to 3643correctly track original source file line numbers through the .i 3644preprocessor 3645output file - for error and warning messages. 3646 3647iASL: Expand the allowable byte constants for address space IDs. 3648Previously, 3649the allowable range was 0x80-0xFF (user-defined spaces), now the range is 36500x0A-0xFF to allow for custom and new IDs without changing the compiler. 3651 3652iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 3653 3654iASL: Add option to completely disable the preprocessor (-Pn). 3655 3656iASL: Now emit all error/warning messages to standard error (stderr) by 3657default (instead of the previous stdout). 3658 3659ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 3660Update 3661for resource descriptor offset fix above. Update/cleanup error output 3662routines. Enable and send iASL errors/warnings to an error logfile 3663(error.txt). Send all other iASL output to a logfile (compiler.txt). 3664Fixed 3665several extraneous "unrecognized operator" messages. 3666 3667---------------------------------------- 366820 March 2012. Summary of changes for version 20120320: 3669 3670 36711) ACPICA Core Subsystem: 3672 3673Enhanced the sleep/wake interfaces to optionally execute the _GTS method 3674(Going To Sleep) and the _BFS method (Back From Sleep). Windows 3675apparently 3676does not execute these methods, and therefore these methods are often 3677untested. It has been seen on some systems where the execution of these 3678methods causes errors and also prevents the machine from entering S5. It 3679is 3680therefore suggested that host operating systems do not execute these 3681methods 3682by default. In the future, perhaps these methods can be optionally 3683executed 3684based on the age of the system and/or what is the newest version of 3685Windows 3686that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 3687and 3688AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 3689Ming. 3690 3691Fixed a problem where the length of the local/common FADT was set too 3692early. 3693The local FADT table length cannot be set to the common length until the 3694original length has been examined. There is code that checks the table 3695length 3696and sets various fields appropriately. This can affect older machines 3697with 3698early FADT versions. For example, this can cause inadvertent writes to 3699the 3700CST_CNT register. Julian Anastasov. 3701 3702Fixed a mapping issue related to a physical table override. Use the 3703deferred 3704mapping mechanism for tables loaded via the physical override OSL 3705interface. 3706This allows for early mapping before the virtual memory manager is 3707available. 3708Thomas Renninger, Bob Moore. 3709 3710Enhanced the automatic return-object repair code: Repair a common problem 3711with 3712predefined methods that are defined to return a variable-length Package 3713of 3714sub-objects. If there is only one sub-object, some BIOS ASL code 3715mistakenly 3716simply returns the single object instead of a Package with one sub- 3717object. 3718This new support will repair this error by wrapping a Package object 3719around 3720the original object, creating the correct and expected Package with one 3721sub- 3722object. Names that can be repaired in this manner include: _ALR, _CSD, 3723_HPX, 3724_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 3725939. 3726 3727Changed the exception code returned for invalid ACPI paths passed as 3728parameters to external interfaces such as AcpiEvaluateObject. Was 3729AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 3730 3731Example Code and Data Size: These are the sizes for the OS-independent 3732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3733debug 3734version of the code includes the debug output trace mechanism and has a 3735much 3736larger code and data size. 3737 3738 Previous Release: 3739 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3740 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3741 Current Release: 3742 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3743 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3744 3745 37462) iASL Compiler/Disassembler and Tools: 3747 3748iASL: Added the infrastructure and initial implementation of a integrated 3749C- 3750like preprocessor. This will simplify BIOS development process by 3751eliminating 3752the need for a separate preprocessing step during builds. On Windows, it 3753also 3754eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 3755features including full #define() macro support are still under 3756development. 3757These preprocessor directives are supported: 3758 #define 3759 #elif 3760 #else 3761 #endif 3762 #error 3763 #if 3764 #ifdef 3765 #ifndef 3766 #include 3767 #pragma message 3768 #undef 3769 #warning 3770In addition, these new command line options are supported: 3771 -D <symbol> Define symbol for preprocessor use 3772 -li Create preprocessed output file (*.i) 3773 -P Preprocess only and create preprocessor output file (*.i) 3774 3775Table Compiler: Fixed a problem where the equals operator within an 3776expression 3777did not work properly. 3778 3779Updated iASL to use the current versions of Bison/Flex. Updated the 3780Windows 3781project file to invoke these tools from the standard location. ACPICA BZ 3782904. 3783Versions supported: 3784 Flex for Windows: V2.5.4 3785 Bison for Windows: V2.4.1 3786 3787---------------------------------------- 378815 February 2012. Summary of changes for version 20120215: 3789 3790 37911) ACPICA Core Subsystem: 3792 3793There have been some major changes to the sleep/wake support code, as 3794described below (a - e). 3795 3796a) The AcpiLeaveSleepState has been split into two interfaces, similar to 3797AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 3798AcpiLeaveSleepStatePrep. This allows the host to perform actions between 3799the 3800time the _BFS method is called and the _WAK method is called. NOTE: all 3801hosts 3802must update their wake/resume code or else sleep/wake will not work 3803properly. 3804Rafael Wysocki. 3805 3806b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 3807_WAK 3808method. Some machines require that the GPEs are enabled before the _WAK 3809method 3810is executed. Thomas Renninger. 3811 3812c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 3813bit. 3814Some BIOS code assumes that WAK_STS will be cleared on resume and use it 3815to 3816determine whether the system is rebooting or resuming. Matthew Garrett. 3817 3818d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 3819Sleep) to 3820match the ACPI specification requirement. Rafael Wysocki. 3821 3822e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 3823registers within the V5 FADT. This support adds two new files: 3824hardware/hwesleep.c implements the support for the new registers. Moved 3825all 3826sleep/wake external interfaces to hardware/hwxfsleep.c. 3827 3828 3829Added a new OSL interface for ACPI table overrides, 3830AcpiOsPhysicalTableOverride. This interface allows the host to override a 3831table via a physical address, instead of the logical address required by 3832AcpiOsTableOverride. This simplifies the host implementation. Initial 3833implementation by Thomas Renninger. The ACPICA implementation creates a 3834single 3835shared function for table overrides that attempts both a logical and a 3836physical override. 3837 3838Expanded the OSL memory read/write interfaces to 64-bit data 3839(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 3840transfer support for GAS register structures passed to AcpiRead and 3841AcpiWrite. 3842 3843Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 3844custom 3845build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 3846model. 3847See the ACPICA reference for details. ACPICA BZ 942. This option removes 3848about 384910% of the code and 5% of the static data, and the following hardware 3850ACPI 3851features become unavailable: 3852 PM Event and Control registers 3853 SCI interrupt (and handler) 3854 Fixed Events 3855 General Purpose Events (GPEs) 3856 Global Lock 3857 ACPI PM timer 3858 FACS table (Waking vectors and Global Lock) 3859 3860Updated the unix tarball directory structure to match the ACPICA git 3861source 3862tree. This ensures that the generic unix makefiles work properly (in 3863generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 3864867. 3865 3866Updated the return value of the _REV predefined method to integer value 5 3867to 3868reflect ACPI 5.0 support. 3869 3870Moved the external ACPI PM timer interface prototypes to the public 3871acpixf.h 3872file where they belong. 3873 3874Example Code and Data Size: These are the sizes for the OS-independent 3875acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3876debug 3877version of the code includes the debug output trace mechanism and has a 3878much 3879larger code and data size. 3880 3881 Previous Release: 3882 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3883 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3884 Current Release: 3885 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3886 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3887 3888 38892) iASL Compiler/Disassembler and Tools: 3890 3891Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 3892descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 3893incorrectly displayed. 3894 3895AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 3896specification. 3897 3898---------------------------------------- 389911 January 2012. Summary of changes for version 20120111: 3900 3901 39021) ACPICA Core Subsystem: 3903 3904Implemented a new mechanism to allow host device drivers to check for 3905address 3906range conflicts with ACPI Operation Regions. Both SystemMemory and 3907SystemIO 3908address spaces are supported. A new external interface, 3909AcpiCheckAddressRange, 3910allows drivers to check an address range against the ACPI namespace. See 3911the 3912ACPICA reference for additional details. Adds one new file, 3913utilities/utaddress.c. Lin Ming, Bob Moore. 3914 3915Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 3916Control 3917and 3918Status registers, update the ACPI 5.0 flags, and update internal data 3919structures to handle an FADT larger than 256 bytes. The size of the ACPI 39205.0 3921FADT is 268 bytes. 3922 3923Updated all ACPICA copyrights and signons to 2012. Added the 2012 3924copyright to 3925all module headers and signons, including the standard Linux header. This 3926affects virtually every file in the ACPICA core subsystem, iASL compiler, 3927and 3928all ACPICA utilities. 3929 3930Example Code and Data Size: These are the sizes for the OS-independent 3931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3932debug 3933version of the code includes the debug output trace mechanism and has a 3934much 3935larger code and data size. 3936 3937 Previous Release: 3938 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3939 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3940 Current Release: 3941 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3942 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3943 3944 39452) iASL Compiler/Disassembler and Tools: 3946 3947Disassembler: fixed a problem with the automatic resource tag generation 3948support. Fixes a problem where the resource tags are inadvertently not 3949constructed if the table being disassembled contains external references 3950to 3951control methods. Moved the actual construction of the tags to after the 3952final 3953namespace is constructed (after 2nd parse is invoked due to external 3954control 3955method references.) ACPICA BZ 941. 3956 3957Table Compiler: Make all "generic" operators caseless. These are the 3958operators 3959like UINT8, String, etc. Making these caseless improves ease-of-use. 3960ACPICA BZ 3961934. 3962 3963---------------------------------------- 396423 November 2011. Summary of changes for version 20111123: 3965 39660) ACPI 5.0 Support: 3967 3968This release contains full support for the ACPI 5.0 specification, as 3969summarized below. 3970 3971Reduced Hardware Support: 3972------------------------- 3973 3974This support allows for ACPI systems without the usual ACPI hardware. 3975This 3976support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3977will 3978not attempt to initialize or use any of the usual ACPI hardware. Note, 3979when 3980this flag is set, all of the following ACPI hardware is assumed to be not 3981present and is not initialized or accessed: 3982 3983 General Purpose Events (GPEs) 3984 Fixed Events (PM1a/PM1b and PM Control) 3985 Power Management Timer and Console Buttons (power/sleep) 3986 Real-time Clock Alarm 3987 Global Lock 3988 System Control Interrupt (SCI) 3989 The FACS is assumed to be non-existent 3990 3991ACPI Tables: 3992------------ 3993 3994All new tables and updates to existing tables are fully supported in the 3995ACPICA headers (for use by device drivers), the disassembler, and the 3996iASL 3997Data Table Compiler. ACPI 5.0 defines these new tables: 3998 3999 BGRT /* Boot Graphics Resource Table */ 4000 DRTM /* Dynamic Root of Trust for Measurement table */ 4001 FPDT /* Firmware Performance Data Table */ 4002 GTDT /* Generic Timer Description Table */ 4003 MPST /* Memory Power State Table */ 4004 PCCT /* Platform Communications Channel Table */ 4005 PMTT /* Platform Memory Topology Table */ 4006 RASF /* RAS Feature table */ 4007 4008Operation Regions/SpaceIDs: 4009--------------------------- 4010 4011All new operation regions are fully supported by the iASL compiler, the 4012disassembler, and the ACPICA runtime code (for dispatch to region 4013handlers.) 4014The new operation region Space IDs are: 4015 4016 GeneralPurposeIo 4017 GenericSerialBus 4018 4019Resource Descriptors: 4020--------------------- 4021 4022All new ASL resource descriptors are fully supported by the iASL 4023compiler, 4024the 4025ASL/AML disassembler, and the ACPICA runtime Resource Manager code 4026(including 4027all new predefined resource tags). New descriptors are: 4028 4029 FixedDma 4030 GpioIo 4031 GpioInt 4032 I2cSerialBus 4033 SpiSerialBus 4034 UartSerialBus 4035 4036ASL/AML Operators, New and Modified: 4037------------------------------------ 4038 4039One new operator is added, the Connection operator, which is used to 4040associate 4041a GeneralPurposeIo or GenericSerialBus resource descriptor with 4042individual 4043field objects within an operation region. Several new protocols are 4044associated 4045with the AccessAs operator. All are fully supported by the iASL compiler, 4046disassembler, and runtime ACPICA AML interpreter: 4047 4048 Connection // Declare Field Connection 4049attributes 4050 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4051 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4052Protocol 4053 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4054 RawDataBuffer // Data type for Vendor Data 4055fields 4056 4057Predefined ASL/AML Objects: 4058--------------------------- 4059 4060All new predefined objects/control-methods are supported by the iASL 4061compiler 4062and the ACPICA runtime validation/repair (arguments and return values.) 4063New 4064predefined names include the following: 4065 4066Standard Predefined Names (Objects or Control Methods): 4067 _AEI, _CLS, _CPC, _CWS, _DEP, 4068 _DLM, _EVT, _GCP, _CRT, _GWS, 4069 _HRV, _PRE, _PSE, _SRT, _SUB. 4070 4071Resource Tags (Names used to access individual fields within resource 4072descriptors): 4073 _DBT, _DPL, _DRS, _END, _FLC, 4074 _IOR, _LIN, _MOD, _PAR, _PHA, 4075 _PIN, _PPI, _POL, _RXL, _SLV, 4076 _SPE, _STB, _TXL, _VEN. 4077 4078ACPICA External Interfaces: 4079--------------------------- 4080 4081Several new interfaces have been defined for use by ACPI-related device 4082drivers and other host OS services: 4083 4084AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4085to 4086acquire and release AML mutexes that are defined in the DSDT/SSDT tables 4087provided by the BIOS. They are intended to be used in conjunction with 4088the 4089ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4090mutual exclusion with the AML code/interpreter. 4091 4092AcpiGetEventResources: Returns the (formatted) resource descriptors as 4093defined 4094by the ACPI 5.0 _AEI object (ACPI Event Information). This object 4095provides 4096resource descriptors associated with hardware-reduced platform events, 4097similar 4098to the AcpiGetCurrentResources interface. 4099 4100Operation Region Handlers: For General Purpose IO and Generic Serial Bus 4101operation regions, information about the Connection() object and any 4102optional 4103length information is passed to the region handler within the Context 4104parameter. 4105 4106AcpiBufferToResource: This interface converts a raw AML buffer containing 4107a 4108resource template or resource descriptor to the ACPI_RESOURCE internal 4109format 4110suitable for use by device drivers. Can be used by an operation region 4111handler 4112to convert the Connection() buffer object into a ACPI_RESOURCE. 4113 4114Miscellaneous/Tools/TestSuites: 4115------------------------------- 4116 4117Support for extended _HID names (Four alpha characters instead of three). 4118Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4119Support for ACPI 5.0 features in the ASLTS test suite. 4120Fully updated documentation (ACPICA and iASL reference documents.) 4121 4122ACPI Table Definition Language: 4123------------------------------- 4124 4125Support for this language was implemented and released as a subsystem of 4126the 4127iASL compiler in 2010. (See the iASL compiler User Guide.) 4128 4129 4130Non-ACPI 5.0 changes for this release: 4131-------------------------------------- 4132 41331) ACPICA Core Subsystem: 4134 4135Fix a problem with operation region declarations where a failure can 4136occur 4137if 4138the region name and an argument that evaluates to an object (such as the 4139region address) are in different namespace scopes. Lin Ming, ACPICA BZ 4140937. 4141 4142Do not abort an ACPI table load if an invalid space ID is found within. 4143This 4144will be caught later if the offending method is executed. ACPICA BZ 925. 4145 4146Fixed an issue with the FFixedHW space ID where the ID was not always 4147recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4148 4149Fixed a problem with the 32-bit generation of the unix-specific OSL 4150(osunixxf.c). Lin Ming, ACPICA BZ 936. 4151 4152Several changes made to enable generation with the GCC 4.6 compiler. 4153ACPICA BZ 4154935. 4155 4156New error messages: Unsupported I/O requests (not 8/16/32 bit), and 4157Index/Bank 4158field registers out-of-range. 4159 41602) iASL Compiler/Disassembler and Tools: 4161 4162iASL: Implemented the __PATH__ operator, which returns the full pathname 4163of 4164the current source file. 4165 4166AcpiHelp: Automatically display expanded keyword information for all ASL 4167operators. 4168 4169Debugger: Add "Template" command to disassemble/dump resource template 4170buffers. 4171 4172Added a new master script to generate and execute the ASLTS test suite. 4173Automatically handles 32- and 64-bit generation. See tests/aslts.sh 4174 4175iASL: Fix problem with listing generation during processing of the 4176Switch() 4177operator where AML listing was disabled until the entire Switch block was 4178completed. 4179 4180iASL: Improve support for semicolon statement terminators. Fix "invalid 4181character" message for some cases when the semicolon is used. Semicolons 4182are 4183now allowed after every <Term> grammar element. ACPICA BZ 927. 4184 4185iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4186923. 4187 4188Disassembler: Fix problem with disassembly of the DataTableRegion 4189operator 4190where an inadvertent "Unhandled deferred opcode" message could be 4191generated. 4192 41933) Example Code and Data Size 4194 4195These are the sizes for the OS-independent acpica.lib produced by the 4196Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4197includes the debug output trace mechanism and has a much larger code and 4198data 4199size. 4200 4201 Previous Release: 4202 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4203 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4204 Current Release: 4205 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4206 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4207 4208---------------------------------------- 420922 September 2011. Summary of changes for version 20110922: 4210 42110) ACPI 5.0 News: 4212 4213Support for ACPI 5.0 in ACPICA has been underway for several months and 4214will 4215be released at the same time that ACPI 5.0 is officially released. 4216 4217The ACPI 5.0 specification is on track for release in the next few 4218months. 4219 42201) ACPICA Core Subsystem: 4221 4222Fixed a problem where the maximum sleep time for the Sleep() operator was 4223intended to be limited to two seconds, but was inadvertently limited to 422420 4225seconds instead. 4226 4227Linux and Unix makefiles: Added header file dependencies to ensure 4228correct 4229generation of ACPICA core code and utilities. Also simplified the 4230makefiles 4231considerably through the use of the vpath variable to specify search 4232paths. 4233ACPICA BZ 924. 4234 42352) iASL Compiler/Disassembler and Tools: 4236 4237iASL: Implemented support to check the access length for all fields 4238created to 4239access named Resource Descriptor fields. For example, if a resource field 4240is 4241defined to be two bits, a warning is issued if a CreateXxxxField() is 4242used 4243with an incorrect bit length. This is implemented for all current 4244resource 4245descriptor names. ACPICA BZ 930. 4246 4247Disassembler: Fixed a byte ordering problem with the output of 24-bit and 424856- 4249bit integers. 4250 4251iASL: Fixed a couple of issues associated with variable-length package 4252objects. 1) properly handle constants like One, Ones, Zero -- do not make 4253a 4254VAR_PACKAGE when these are used as a package length. 2) Allow the 4255VAR_PACKAGE 4256opcode (in addition to PACKAGE) when validating object types for 4257predefined 4258names. 4259 4260iASL: Emit statistics for all output files (instead of just the ASL input 4261and 4262AML output). Includes listings, hex files, etc. 4263 4264iASL: Added -G option to the table compiler to allow the compilation of 4265custom 4266ACPI tables. The only part of a table that is required is the standard 426736- 4268byte 4269ACPI header. 4270 4271AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4272headers), 4273which also adds correct 64-bit support. Also, now all output filenames 4274are 4275completely lower case. 4276 4277AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4278loading table files. A warning is issued for any such tables. The only 4279exception is an FADT. This also fixes a possible fault when attempting to 4280load 4281non-AML tables. ACPICA BZ 932. 4282 4283AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4284a 4285missing table terminator could cause a fault when using the -p option. 4286 4287AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4288statistics. 4289 42903) Example Code and Data Size 4291 4292These are the sizes for the OS-independent acpica.lib produced by the 4293Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4294includes the debug output trace mechanism and has a much larger code and 4295data 4296size. 4297 4298 Previous Release (VC 9.0): 4299 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4300 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4301 Current Release (VC 9.0): 4302 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4303 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4304 4305 4306---------------------------------------- 430723 June 2011. Summary of changes for version 20110623: 4308 43091) ACPI CA Core Subsystem: 4310 4311Updated the predefined name repair mechanism to not attempt repair of a 4312_TSS 4313return object if a _PSS object is present. We can only sort the _TSS 4314return 4315package if there is no _PSS within the same scope. This is because if 4316_PSS 4317is 4318present, the ACPI specification dictates that the _TSS Power Dissipation 4319field 4320is to be ignored, and therefore some BIOSs leave garbage values in the 4321_TSS 4322Power field(s). In this case, it is best to just return the _TSS package 4323as- 4324is. Reported by, and fixed with assistance from Fenghua Yu. 4325 4326Added an option to globally disable the control method return value 4327validation 4328and repair. This runtime option can be used to disable return value 4329repair 4330if 4331this is causing a problem on a particular machine. Also added an option 4332to 4333AcpiExec (-dr) to set this disable flag. 4334 4335All makefiles and project files: Major changes to improve generation of 4336ACPICA 4337tools. ACPICA BZ 912: 4338 Reduce default optimization levels to improve compatibility 4339 For Linux, add strict-aliasing=0 for gcc 4 4340 Cleanup and simplify use of command line defines 4341 Cleanup multithread library support 4342 Improve usage messages 4343 4344Linux-specific header: update handling of THREAD_ID and pthread. For the 434532- 4346bit case, improve casting to eliminate possible warnings, especially with 4347the 4348acpica tools. 4349 4350Example Code and Data Size: These are the sizes for the OS-independent 4351acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4352debug 4353version of the code includes the debug output trace mechanism and has a 4354much 4355larger code and data size. 4356 4357 Previous Release (VC 9.0): 4358 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4359 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4360 Current Release (VC 9.0): 4361 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4362 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4363 43642) iASL Compiler/Disassembler and Tools: 4365 4366With this release, a new utility named "acpihelp" has been added to the 4367ACPICA 4368package. This utility summarizes the ACPI specification chapters for the 4369ASL 4370and AML languages. It generates under Linux/Unix as well as Windows, and 4371provides the following functionality: 4372 Find/display ASL operator(s) -- with description and syntax. 4373 Find/display ASL keyword(s) -- with exact spelling and descriptions. 4374 Find/display ACPI predefined name(s) -- with description, number 4375 of arguments, and the return value data type. 4376 Find/display AML opcode name(s) -- with opcode, arguments, and 4377grammar. 4378 Decode/display AML opcode -- with opcode name, arguments, and 4379grammar. 4380 4381Service Layers: Make multi-thread support configurable. Conditionally 4382compile 4383the multi-thread support so that threading libraries will not be linked 4384if 4385not 4386necessary. The only tool that requires multi-thread support is AcpiExec. 4387 4388iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4389of 4390Bison appear to want the interface to yyerror to be a const char * (or at 4391least this is a problem when generating iASL on some systems.) ACPICA BZ 4392923 4393Pierre Lejeune. 4394 4395Tools: Fix for systems where O_BINARY is not defined. Only used for 4396Windows 4397versions of the tools. 4398 4399---------------------------------------- 440027 May 2011. Summary of changes for version 20110527: 4401 44021) ACPI CA Core Subsystem: 4403 4404ASL Load() operator: Reinstate most restrictions on the incoming ACPI 4405table 4406signature. Now, only allow SSDT, OEMx, and a null signature. History: 4407 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4408 (PSDT is now obsolete.) 4409 2) We added support for OEMx tables, signature "OEM" plus a fourth 4410 "don't care" character. 4411 3) Valid tables were encountered with a null signature, so we just 4412 gave up on validating the signature, (05/2008). 4413 4) We encountered non-AML tables such as the MADT, which caused 4414 interpreter errors and kernel faults. So now, we once again allow 4415 only SSDT, OEMx, and now, also a null signature. (05/2011). 4416 4417Added the missing _TDL predefined name to the global name list in order 4418to 4419enable validation. Affects both the core ACPICA code and the iASL 4420compiler. 4421 4422Example Code and Data Size: These are the sizes for the OS-independent 4423acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4424debug 4425version of the code includes the debug output trace mechanism and has a 4426much 4427larger code and data size. 4428 4429 Previous Release (VC 9.0): 4430 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4431 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4432 Current Release (VC 9.0): 4433 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4434 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4435 44362) iASL Compiler/Disassembler and Tools: 4437 4438Debugger/AcpiExec: Implemented support for "complex" method arguments on 4439the 4440debugger command line. This adds support beyond simple integers -- 4441including 4442Strings, Buffers, and Packages. Includes support for nested packages. 4443Increased the default command line buffer size to accommodate these 4444arguments. 4445See the ACPICA reference for details and syntax. ACPICA BZ 917. 4446 4447Debugger/AcpiExec: Implemented support for "default" method arguments for 4448the 4449Execute/Debug command. Now, the debugger will always invoke a control 4450method 4451with the required number of arguments -- even if the command line 4452specifies 4453none or insufficient arguments. It uses default integer values for any 4454missing 4455arguments. Also fixes a bug where only six method arguments maximum were 4456supported instead of the required seven. 4457 4458Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 4459and 4460also return status in order to prevent buffer overruns. See the ACPICA 4461reference for details and syntax. ACPICA BZ 921 4462 4463iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 4464makefiles to simplify support for the two different but similar parser 4465generators, bison and yacc. 4466 4467Updated the generic unix makefile for gcc 4. The default gcc version is 4468now 4469expected to be 4 or greater, since options specific to gcc 4 are used. 4470 4471---------------------------------------- 447213 April 2011. Summary of changes for version 20110413: 4473 44741) ACPI CA Core Subsystem: 4475 4476Implemented support to execute a so-called "orphan" _REG method under the 4477EC 4478device. This change will force the execution of a _REG method underneath 4479the 4480EC 4481device even if there is no corresponding operation region of type 4482EmbeddedControl. Fixes a problem seen on some machines and apparently is 4483compatible with Windows behavior. ACPICA BZ 875. 4484 4485Added more predefined methods that are eligible for automatic NULL 4486package 4487element removal. This change adds another group of predefined names to 4488the 4489list 4490of names that can be repaired by having NULL package elements dynamically 4491removed. This group are those methods that return a single variable- 4492length 4493package containing simple data types such as integers, buffers, strings. 4494This 4495includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 4496_PSL, 4497_Sx, 4498and _TZD. ACPICA BZ 914. 4499 4500Split and segregated all internal global lock functions to a new file, 4501evglock.c. 4502 4503Updated internal address SpaceID for DataTable regions. Moved this 4504internal 4505space 4506id in preparation for ACPI 5.0 changes that will include some new space 4507IDs. 4508This 4509change should not affect user/host code. 4510 4511Example Code and Data Size: These are the sizes for the OS-independent 4512acpica.lib 4513produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4514version of 4515the code includes the debug output trace mechanism and has a much larger 4516code 4517and 4518data size. 4519 4520 Previous Release (VC 9.0): 4521 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4522 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4523 Current Release (VC 9.0): 4524 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4525 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4526 45272) iASL Compiler/Disassembler and Tools: 4528 4529iASL/DTC: Major update for new grammar features. Allow generic data types 4530in 4531custom ACPI tables. Field names are now optional. Any line can be split 4532to 4533multiple lines using the continuation char (\). Large buffers now use 4534line- 4535continuation character(s) and no colon on the continuation lines. See the 4536grammar 4537update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 4538Moore. 4539 4540iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 4541statements. 4542Since the parser stuffs a "zero" as the return value for these statements 4543(due 4544to 4545the underlying AML grammar), they were seen as "return with value" by the 4546iASL 4547semantic checking. They are now seen correctly as "null" return 4548statements. 4549 4550iASL: Check if a_REG declaration has a corresponding Operation Region. 4551Adds a 4552check for each _REG to ensure that there is in fact a corresponding 4553operation 4554region declaration in the same scope. If not, the _REG method is not very 4555useful 4556since it probably won't be executed. ACPICA BZ 915. 4557 4558iASL/DTC: Finish support for expression evaluation. Added a new 4559expression 4560parser 4561that implements c-style operator precedence and parenthesization. ACPICA 4562bugzilla 4563908. 4564 4565Disassembler/DTC: Remove support for () and <> style comments in data 4566tables. 4567Now 4568that DTC has full expression support, we don't want to have comment 4569strings 4570that 4571start with a parentheses or a less-than symbol. Now, only the standard /* 4572and 4573// 4574comments are supported, as well as the bracket [] comments. 4575 4576AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 4577"unusual" 4578headers in the acpidump file. Update the header validation to support 4579these 4580tables. Problem introduced in previous AcpiXtract version in the change 4581to 4582support "wrong checksum" error messages emitted by acpidump utility. 4583 4584iASL: Add a * option to generate all template files (as a synonym for 4585ALL) 4586as 4587in 4588"iasl -T *" or "iasl -T ALL". 4589 4590iASL/DTC: Do not abort compiler on fatal errors. We do not want to 4591completely 4592abort the compiler on "fatal" errors, simply should abort the current 4593compile. 4594This allows multiple compiles with a single (possibly wildcard) compiler 4595invocation. 4596 4597---------------------------------------- 459816 March 2011. Summary of changes for version 20110316: 4599 46001) ACPI CA Core Subsystem: 4601 4602Fixed a problem caused by a _PRW method appearing at the namespace root 4603scope 4604during the setup of wake GPEs. A fault could occur if a _PRW directly 4605under 4606the 4607root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 4608 4609Implemented support for "spurious" Global Lock interrupts. On some 4610systems, a 4611global lock interrupt can occur without the pending flag being set. Upon 4612a 4613GL 4614interrupt, we now ensure that a thread is actually waiting for the lock 4615before 4616signaling GL availability. Rafael Wysocki, Bob Moore. 4617 4618Example Code and Data Size: These are the sizes for the OS-independent 4619acpica.lib 4620produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4621version of 4622the code includes the debug output trace mechanism and has a much larger 4623code 4624and 4625data size. 4626 4627 Previous Release (VC 9.0): 4628 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4629 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4630 Current Release (VC 9.0): 4631 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4632 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4633 46342) iASL Compiler/Disassembler and Tools: 4635 4636Implemented full support for the "SLIC" ACPI table. Includes support in 4637the 4638header files, disassembler, table compiler, and template generator. Bob 4639Moore, 4640Lin Ming. 4641 4642AcpiXtract: Correctly handle embedded comments and messages from 4643AcpiDump. 4644Apparently some or all versions of acpidump will occasionally emit a 4645comment 4646like 4647"Wrong checksum", etc., into the dump file. This was causing problems for 4648AcpiXtract. ACPICA BZ 905. 4649 4650iASL: Fix the Linux makefile by removing an inadvertent double file 4651inclusion. 4652ACPICA BZ 913. 4653 4654AcpiExec: Update installation of operation region handlers. Install one 4655handler 4656for a user-defined address space. This is used by the ASL test suite 4657(ASLTS). 4658 4659---------------------------------------- 466011 February 2011. Summary of changes for version 20110211: 4661 46621) ACPI CA Core Subsystem: 4663 4664Added a mechanism to defer _REG methods for some early-installed 4665handlers. 4666Most user handlers should be installed before call to 4667AcpiEnableSubsystem. 4668However, Event handlers and region handlers should be installed after 4669AcpiInitializeObjects. Override handlers for the "default" regions should 4670be 4671installed early, however. This change executes all _REG methods for the 4672default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 4673chicken/egg issues between them. ACPICA BZ 848. 4674 4675Implemented an optimization for GPE detection. This optimization will 4676simply 4677ignore GPE registers that contain no enabled GPEs -- there is no need to 4678read the register since this information is available internally. This 4679becomes more important on machines with a large GPE space. ACPICA 4680bugzilla 4681884. Lin Ming. Suggestion from Joe Liu. 4682 4683Removed all use of the highly unreliable FADT revision field. The 4684revision 4685number in the FADT has been found to be completely unreliable and cannot 4686be 4687trusted. Only the actual table length can be used to infer the version. 4688This 4689change updates the ACPICA core and the disassembler so that both no 4690longer 4691even look at the FADT version and instead depend solely upon the FADT 4692length. 4693 4694Fix an unresolved name issue for the no-debug and no-error-message source 4695generation cases. The _AcpiModuleName was left undefined in these cases, 4696but 4697it is actually needed as a parameter to some interfaces. Define 4698_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 4699 4700Split several large files (makefiles and project files updated) 4701 utglobal.c -> utdecode.c 4702 dbcomds.c -> dbmethod.c dbnames.c 4703 dsopcode.c -> dsargs.c dscontrol.c 4704 dsload.c -> dsload2.c 4705 aslanalyze.c -> aslbtypes.c aslwalks.c 4706 4707Example Code and Data Size: These are the sizes for the OS-independent 4708acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4709debug version of the code includes the debug output trace mechanism and 4710has 4711a much larger code and data size. 4712 4713 Previous Release (VC 9.0): 4714 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4715 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4716 Current Release (VC 9.0): 4717 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4718 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4719 47202) iASL Compiler/Disassembler and Tools: 4721 4722iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 4723These are useful C-style macros with the standard definitions. ACPICA 4724bugzilla 898. 4725 4726iASL/DTC: Added support for integer expressions and labels. Support for 4727full 4728expressions for all integer fields in all ACPI tables. Support for labels 4729in 4730"generic" portions of tables such as UEFI. See the iASL reference manual. 4731 4732Debugger: Added a command to display the status of global handlers. The 4733"handlers" command will display op region, fixed event, and miscellaneous 4734global handlers. installation status -- and for op regions, whether 4735default 4736or user-installed handler will be used. 4737 4738iASL: Warn if reserved method incorrectly returns a value. Many 4739predefined 4740names are defined such that they do not return a value. If implemented as 4741a 4742method, issue a warning if such a name explicitly returns a value. ACPICA 4743Bugzilla 855. 4744 4745iASL: Added detection of GPE method name conflicts. Detects a conflict 4746where 4747there are two GPE methods of the form _Lxy and _Exy in the same scope. 4748(For 4749example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 4750 4751iASL/DTC: Fixed a couple input scanner issues with comments and line 4752numbers. Comment remover could get confused and miss a comment ending. 4753Fixed 4754a problem with line counter maintenance. 4755 4756iASL/DTC: Reduced the severity of some errors from fatal to error. There 4757is 4758no need to abort on simple errors within a field definition. 4759 4760Debugger: Simplified the output of the help command. All help output now 4761in 4762a single screen, instead of help subcommands. ACPICA Bugzilla 897. 4763 4764---------------------------------------- 476512 January 2011. Summary of changes for version 20110112: 4766 47671) ACPI CA Core Subsystem: 4768 4769Fixed a race condition between method execution and namespace walks that 4770can 4771possibly cause a fault. The problem was apparently introduced in version 477220100528 as a result of a performance optimization that reduces the 4773number 4774of 4775namespace walks upon method exit by using the delete_namespace_subtree 4776function instead of the delete_namespace_by_owner function used 4777previously. 4778Bug is a missing namespace lock in the delete_namespace_subtree function. 4779dana.myers@oracle.com 4780 4781Fixed several issues and a possible fault with the automatic "serialized" 4782method support. History: This support changes a method to "serialized" on 4783the 4784fly if the method generates an AE_ALREADY_EXISTS error, indicating the 4785possibility that it cannot handle reentrancy. This fix repairs a couple 4786of 4787issues seen in the field, especially on machines with many cores: 4788 4789 1) Delete method children only upon the exit of the last thread, 4790 so as to not delete objects out from under other running threads 4791 (and possibly causing a fault.) 4792 2) Set the "serialized" bit for the method only upon the exit of the 4793 Last thread, so as to not cause deadlock when running threads 4794 attempt to exit. 4795 3) Cleanup the use of the AML "MethodFlags" and internal method flags 4796 so that there is no longer any confusion between the two. 4797 4798 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 4799 4800Debugger: Now lock the namespace for duration of a namespace dump. 4801Prevents 4802issues if the namespace is changing dynamically underneath the debugger. 4803Especially affects temporary namespace nodes, since the debugger displays 4804these also. 4805 4806Updated the ordering of include files. The ACPICA headers should appear 4807before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 4808set 4809any necessary compiler-specific defines, etc. Affects the ACPI-related 4810tools 4811and utilities. 4812 4813Updated all ACPICA copyrights and signons to 2011. Added the 2011 4814copyright 4815to all module headers and signons, including the Linux header. This 4816affects 4817virtually every file in the ACPICA core subsystem, iASL compiler, and all 4818utilities. 4819 4820Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 4821project files for VC++ 6.0 are now obsolete. New project files can be 4822found 4823under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 4824details. 4825 4826Example Code and Data Size: These are the sizes for the OS-independent 4827acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4828debug version of the code includes the debug output trace mechanism and 4829has a 4830much larger code and data size. 4831 4832 Previous Release (VC 6.0): 4833 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4834 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4835 Current Release (VC 9.0): 4836 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4837 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4838 48392) iASL Compiler/Disassembler and Tools: 4840 4841iASL: Added generic data types to the Data Table compiler. Add "generic" 4842data 4843types such as UINT32, String, Unicode, etc., to simplify the generation 4844of 4845platform-defined tables such as UEFI. Lin Ming. 4846 4847iASL: Added listing support for the Data Table Compiler. Adds listing 4848support 4849(-l) to display actual binary output for each line of input code. 4850 4851---------------------------------------- 485209 December 2010. Summary of changes for version 20101209: 4853 48541) ACPI CA Core Subsystem: 4855 4856Completed the major overhaul of the GPE support code that was begun in 4857July 48582010. Major features include: removal of _PRW execution in ACPICA (host 4859executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 4860changes to existing interfaces, simplification of GPE handler operation, 4861and 4862a handful of new interfaces: 4863 4864 AcpiUpdateAllGpes 4865 AcpiFinishGpe 4866 AcpiSetupGpeForWake 4867 AcpiSetGpeWakeMask 4868 One new file, evxfgpe.c to consolidate all external GPE interfaces. 4869 4870See the ACPICA Programmer Reference for full details and programming 4871information. See the new section 4.4 "General Purpose Event (GPE) 4872Support" 4873for a full overview, and section 8.7 "ACPI General Purpose Event 4874Management" 4875for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 4876Ming, 4877Bob Moore, Rafael Wysocki. 4878 4879Implemented a new GPE feature for Windows compatibility, the "Implicit 4880Wake 4881GPE Notify". This feature will automatically issue a Notify(2) on a 4882device 4883when a Wake GPE is received if there is no corresponding GPE method or 4884handler. ACPICA BZ 870. 4885 4886Fixed a problem with the Scope() operator during table parse and load 4887phase. 4888During load phase (table load or method execution), the scope operator 4889should 4890not enter the target into the namespace. Instead, it should open a new 4891scope 4892at the target location. Linux BZ 19462, ACPICA BZ 882. 4893 4894Example Code and Data Size: These are the sizes for the OS-independent 4895acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4896debug version of the code includes the debug output trace mechanism and 4897has a 4898much larger code and data size. 4899 4900 Previous Release: 4901 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4902 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4903 Current Release: 4904 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4905 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4906 49072) iASL Compiler/Disassembler and Tools: 4908 4909iASL: Relax the alphanumeric restriction on _CID strings. These strings 4910are 4911"bus-specific" per the ACPI specification, and therefore any characters 4912are 4913acceptable. The only checks that can be performed are for a null string 4914and 4915perhaps for a leading asterisk. ACPICA BZ 886. 4916 4917iASL: Fixed a problem where a syntax error that caused a premature EOF 4918condition on the source file emitted a very confusing error message. The 4919premature EOF is now detected correctly. ACPICA BZ 891. 4920 4921Disassembler: Decode the AccessSize within a Generic Address Structure 4922(byte 4923access, word access, etc.) Note, this field does not allow arbitrary bit 4924access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 4925 4926New: AcpiNames utility - Example namespace dump utility. Shows an example 4927of 4928ACPICA configuration for a minimal namespace dump utility. Uses table and 4929namespace managers, but no AML interpreter. Does not add any 4930functionality 4931over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 4932partition and configure ACPICA. ACPICA BZ 883. 4933 4934AML Debugger: Increased the debugger buffer size for method return 4935objects. 4936Was 4K, increased to 16K. Also enhanced error messages for debugger 4937method 4938execution, including the buffer overflow case. 4939 4940---------------------------------------- 494113 October 2010. Summary of changes for version 20101013: 4942 49431) ACPI CA Core Subsystem: 4944 4945Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4946now 4947clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4948HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4949 4950Changed the type of the predefined namespace object _TZ from ThermalZone 4951to 4952Device. This was found to be confusing to the host software that 4953processes 4954the various thermal zones, since _TZ is not really a ThermalZone. 4955However, 4956a 4957Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4958Zhang. 4959 4960Added Windows Vista SP2 to the list of supported _OSI strings. The actual 4961string is "Windows 2006 SP2". 4962 4963Eliminated duplicate code in AcpiUtExecute* functions. Now that the 4964nsrepair 4965code automatically repairs _HID-related strings, this type of code is no 4966longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4967878. 4968 4969Example Code and Data Size: These are the sizes for the OS-independent 4970acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4971debug version of the code includes the debug output trace mechanism and 4972has a 4973much larger code and data size. 4974 4975 Previous Release: 4976 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4977 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4978 Current Release: 4979 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4980 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4981 49822) iASL Compiler/Disassembler and Tools: 4983 4984iASL: Implemented additional compile-time validation for _HID strings. 4985The 4986non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4987length 4988of 4989the string must be exactly seven or eight characters. For both _HID and 4990_CID 4991strings, all characters must be alphanumeric. ACPICA BZ 874. 4992 4993iASL: Allow certain "null" resource descriptors. Some BIOS code creates 4994descriptors that are mostly or all zeros, with the expectation that they 4995will 4996be filled in at runtime. iASL now allows this as long as there is a 4997"resource 4998tag" (name) associated with the descriptor, which gives the ASL a handle 4999needed to modify the descriptor. ACPICA BZ 873. 5000 5001Added single-thread support to the generic Unix application OSL. 5002Primarily 5003for iASL support, this change removes the use of semaphores in the 5004single- 5005threaded ACPICA tools/applications - increasing performance. The 5006_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5007option. ACPICA BZ 879. 5008 5009AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5010support 5011for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5012 5013iASL: Moved all compiler messages to a new file, aslmessages.h. 5014 5015---------------------------------------- 501615 September 2010. Summary of changes for version 20100915: 5017 50181) ACPI CA Core Subsystem: 5019 5020Removed the AcpiOsDerivePciId OSL interface. The various host 5021implementations 5022of this function were not OS-dependent and are now obsolete and can be 5023removed from all host OSLs. This function has been replaced by 5024AcpiHwDerivePciId, which is now part of the ACPICA core code. 5025AcpiHwDerivePciId has been implemented without recursion. Adds one new 5026module, hwpci.c. ACPICA BZ 857. 5027 5028Implemented a dynamic repair for _HID and _CID strings. The following 5029problems are now repaired at runtime: 1) Remove a leading asterisk in the 5030string, and 2) the entire string is uppercased. Both repairs are in 5031accordance with the ACPI specification and will simplify host driver 5032code. 5033ACPICA BZ 871. 5034 5035The ACPI_THREAD_ID type is no longer configurable, internally it is now 5036always UINT64. This simplifies the ACPICA code, especially any printf 5037output. 5038UINT64 is the only common data type for all thread_id types across all 5039operating systems. It is now up to the host OSL to cast the native 5040thread_id 5041type to UINT64 before returning the value to ACPICA (via 5042AcpiOsGetThreadId). 5043Lin Ming, Bob Moore. 5044 5045Added the ACPI_INLINE type to enhance the ACPICA configuration. The 5046"inline" 5047keyword is not standard across compilers, and this type allows inline to 5048be 5049configured on a per-compiler basis. Lin Ming. 5050 5051Made the system global AcpiGbl_SystemAwakeAndRunning publically 5052available. 5053Added an extern for this boolean in acpixf.h. Some hosts utilize this 5054value 5055during suspend/restore operations. ACPICA BZ 869. 5056 5057All code that implements error/warning messages with the "ACPI:" prefix 5058has 5059been moved to a new module, utxferror.c. 5060 5061The UINT64_OVERLAY was moved to utmath.c, which is the only module where 5062it 5063is used. ACPICA BZ 829. Lin Ming, Bob Moore. 5064 5065Example Code and Data Size: These are the sizes for the OS-independent 5066acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5067debug version of the code includes the debug output trace mechanism and 5068has a 5069much larger code and data size. 5070 5071 Previous Release: 5072 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5073 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5074 Current Release: 5075 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5076 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5077 50782) iASL Compiler/Disassembler and Tools: 5079 5080iASL/Disassembler: Write ACPI errors to stderr instead of the output 5081file. 5082This keeps the output files free of random error messages that may 5083originate 5084from within the namespace/interpreter code. Used this opportunity to 5085merge 5086all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5087866. Lin Ming, Bob Moore. 5088 5089Tools: update some printfs for ansi warnings on size_t. Handle width 5090change 5091of size_t on 32-bit versus 64-bit generations. Lin Ming. 5092 5093---------------------------------------- 509406 August 2010. Summary of changes for version 20100806: 5095 50961) ACPI CA Core Subsystem: 5097 5098Designed and implemented a new host interface to the _OSI support code. 5099This 5100will allow the host to dynamically add or remove multiple _OSI strings, 5101as 5102well as install an optional handler that is called for each _OSI 5103invocation. 5104Also added a new AML debugger command, 'osi' to display and modify the 5105global 5106_OSI string table, and test support in the AcpiExec utility. See the 5107ACPICA 5108reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5109New Functions: 5110 AcpiInstallInterface - Add an _OSI string. 5111 AcpiRemoveInterface - Delete an _OSI string. 5112 AcpiInstallInterfaceHandler - Install optional _OSI handler. 5113Obsolete Functions: 5114 AcpiOsValidateInterface - no longer used. 5115New Files: 5116 source/components/utilities/utosi.c 5117 5118Re-introduced the support to enable multi-byte transfers for Embedded 5119Controller (EC) operation regions. A reported problem was found to be a 5120bug 5121in the host OS, not in the multi-byte support. Previously, the maximum 5122data 5123size passed to the EC operation region handler was a single byte. There 5124are 5125often EC Fields larger than one byte that need to be transferred, and it 5126is 5127useful for the EC driver to lock these as a single transaction. This 5128change 5129enables single transfers larger than 8 bits. This effectively changes the 5130access to the EC space from ByteAcc to AnyAcc, and will probably require 5131changes to the host OS Embedded Controller driver to enable 16/32/64/256- 5132bit 5133transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5134 5135Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5136prototype in acpiosxf.h had the output value pointer as a (void *). 5137It should be a (UINT64 *). This may affect some host OSL code. 5138 5139Fixed a couple problems with the recently modified Linux makefiles for 5140iASL 5141and AcpiExec. These new makefiles place the generated object files in the 5142local directory so that there can be no collisions between the files that 5143are 5144shared between them that are compiled with different options. 5145 5146Example Code and Data Size: These are the sizes for the OS-independent 5147acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5148debug version of the code includes the debug output trace mechanism and 5149has a 5150much larger code and data size. 5151 5152 Previous Release: 5153 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5154 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5155 Current Release: 5156 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5157 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5158 51592) iASL Compiler/Disassembler and Tools: 5160 5161iASL/Disassembler: Added a new option (-da, "disassemble all") to load 5162the 5163namespace from and disassemble an entire group of AML files. Useful for 5164loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5165and 5166disassembling with one simple command. ACPICA BZ 865. Lin Ming. 5167 5168iASL: Allow multiple invocations of -e option. This change allows 5169multiple 5170uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5171834. 5172Lin Ming. 5173 5174---------------------------------------- 517502 July 2010. Summary of changes for version 20100702: 5176 51771) ACPI CA Core Subsystem: 5178 5179Implemented several updates to the recently added GPE reference count 5180support. The model for "wake" GPEs is changing to give the host OS 5181complete 5182control of these GPEs. Eventually, the ACPICA core will not execute any 5183_PRW 5184methods, since the host already must execute them. Also, additional 5185changes 5186were made to help ensure that the reference counts are kept in proper 5187synchronization with reality. Rafael J. Wysocki. 5188 51891) Ensure that GPEs are not enabled twice during initialization. 51902) Ensure that GPE enable masks stay in sync with the reference count. 51913) Do not inadvertently enable GPEs when writing GPE registers. 51924) Remove the internal wake reference counter and add new AcpiGpeWakeup 5193interface. This interface will set or clear individual GPEs for wakeup. 51945) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5195interfaces 5196are now used for "runtime" GPEs only. 5197 5198Changed the behavior of the GPE install/remove handler interfaces. The 5199GPE 5200is 5201no longer disabled during this process, as it was found to cause problems 5202on 5203some machines. Rafael J. Wysocki. 5204 5205Reverted a change introduced in version 20100528 to enable Embedded 5206Controller multi-byte transfers. This change was found to cause problems 5207with 5208Index Fields and possibly Bank Fields. It will be reintroduced when these 5209problems have been resolved. 5210 5211Fixed a problem with references to Alias objects within Package Objects. 5212A 5213reference to an Alias within the definition of a Package was not always 5214resolved properly. Aliases to objects like Processors, Thermal zones, 5215etc. 5216were resolved to the actual object instead of a reference to the object 5217as 5218it 5219should be. Package objects are only allowed to contain integer, string, 5220buffer, package, and reference objects. Redhat bugzilla 608648. 5221 5222Example Code and Data Size: These are the sizes for the OS-independent 5223acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5224debug version of the code includes the debug output trace mechanism and 5225has a 5226much larger code and data size. 5227 5228 Previous Release: 5229 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5230 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5231 Current Release: 5232 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5233 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5234 52352) iASL Compiler/Disassembler and Tools: 5236 5237iASL: Implemented a new compiler subsystem to allow definition and 5238compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5239These 5240are called "ACPI Data Tables", and the new compiler is the "Data Table 5241Compiler". This compiler is intended to simplify the existing error-prone 5242process of creating these tables for the BIOS, as well as allowing the 5243disassembly, modification, recompilation, and override of existing ACPI 5244data 5245tables. See the iASL User Guide for detailed information. 5246 5247iASL: Implemented a new Template Generator option in support of the new 5248Data 5249Table Compiler. This option will create examples of all known ACPI tables 5250that can be used as the basis for table development. See the iASL 5251documentation and the -T option. 5252 5253Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5254Descriptor Table). 5255 5256Updated the Linux makefiles for iASL and AcpiExec to place the generated 5257object files in the local directory so that there can be no collisions 5258between the shared files between them that are generated with different 5259options. 5260 5261Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5262Use 5263the #define __APPLE__ to enable this support. 5264 5265---------------------------------------- 526628 May 2010. Summary of changes for version 20100528: 5267 5268Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5269available at www.acpi.info. This is primarily an errata release. 5270 52711) ACPI CA Core Subsystem: 5272 5273Undefined ACPI tables: We are looking for the definitions for the 5274following 5275ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5276 5277Implemented support to enable multi-byte transfers for Embedded 5278Controller 5279(EC) operation regions. Previously, the maximum data size passed to the 5280EC 5281operation region handler was a single byte. There are often EC Fields 5282larger 5283than one byte that need to be transferred, and it is useful for the EC 5284driver 5285to lock these as a single transaction. This change enables single 5286transfers 5287larger than 8 bits. This effectively changes the access to the EC space 5288from 5289ByteAcc to AnyAcc, and will probably require changes to the host OS 5290Embedded 5291Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5292bit 5293transfers. Alexey Starikovskiy, Lin Ming 5294 5295Implemented a performance enhancement for namespace search and access. 5296This 5297change enhances the performance of namespace searches and walks by adding 5298a 5299backpointer to the parent in each namespace node. On large namespaces, 5300this 5301change can improve overall ACPI performance by up to 9X. Adding a pointer 5302to 5303each namespace node increases the overall size of the internal namespace 5304by 5305about 5%, since each namespace entry usually consists of both a namespace 5306node and an ACPI operand object. However, this is the first growth of the 5307namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5308 5309Implemented a performance optimization that reduces the number of 5310namespace 5311walks. On control method exit, only walk the namespace if the method is 5312known 5313to have created namespace objects outside of its local scope. Previously, 5314the 5315entire namespace was traversed on each control method exit. This change 5316can 5317improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5318Moore. 5319 5320Added support to truncate I/O addresses to 16 bits for Windows 5321compatibility. 5322Some ASL code has been seen in the field that inadvertently has bits set 5323above bit 15. This feature is optional and is enabled if the BIOS 5324requests 5325any Windows OSI strings. It can also be enabled by the host OS. Matthew 5326Garrett, Bob Moore. 5327 5328Added support to limit the maximum time for the ASL Sleep() operator. To 5329prevent accidental deep sleeps, limit the maximum time that Sleep() will 5330actually sleep. Configurable, the default maximum is two seconds. ACPICA 5331bugzilla 854. 5332 5333Added run-time validation support for the _WDG and_WED Microsoft 5334predefined 5335methods. These objects are defined by "Windows Instrumentation", and are 5336not 5337part of the ACPI spec. ACPICA BZ 860. 5338 5339Expanded all statistic counters used during namespace and device 5340initialization from 16 to 32 bits in order to support very large 5341namespaces. 5342 5343Replaced all instances of %d in printf format specifiers with %u since 5344nearly 5345all integers in ACPICA are unsigned. 5346 5347Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5348returned 5349as AE_NO_HANDLER. 5350 5351Example Code and Data Size: These are the sizes for the OS-independent 5352acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5353debug version of the code includes the debug output trace mechanism and 5354has a 5355much larger code and data size. 5356 5357 Previous Release: 5358 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5359 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5360 Current Release: 5361 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5362 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5363 53642) iASL Compiler/Disassembler and Tools: 5365 5366iASL: Added compiler support for the _WDG and_WED Microsoft predefined 5367methods. These objects are defined by "Windows Instrumentation", and are 5368not 5369part of the ACPI spec. ACPICA BZ 860. 5370 5371AcpiExec: added option to disable the memory tracking mechanism. The -dt 5372option will disable the tracking mechanism, which improves performance 5373considerably. 5374 5375AcpiExec: Restructured the command line options into -d (disable) and -e 5376(enable) options. 5377 5378---------------------------------------- 537928 April 2010. Summary of changes for version 20100428: 5380 53811) ACPI CA Core Subsystem: 5382 5383Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5384including FADT-based and GPE Block Devices, execute any _PRW methods in 5385the 5386new table, and process any _Lxx/_Exx GPE methods in the new table. Any 5387runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 5388immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5389Devices. Provides compatibility with other ACPI implementations. Two new 5390files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5391Moore. 5392 5393Fixed a regression introduced in version 20100331 within the table 5394manager 5395where initial table loading could fail. This was introduced in the fix 5396for 5397AcpiReallocateRootTable. Also, renamed some of fields in the table 5398manager 5399data structures to clarify their meaning and use. 5400 5401Fixed a possible allocation overrun during internal object copy in 5402AcpiUtCopySimpleObject. The original code did not correctly handle the 5403case 5404where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5405847. 5406 5407Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5408possible access beyond end-of-allocation. Also, now fully validate 5409descriptor 5410(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5411 5412Example Code and Data Size: These are the sizes for the OS-independent 5413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5414debug version of the code includes the debug output trace mechanism and 5415has a 5416much larger code and data size. 5417 5418 Previous Release: 5419 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5420 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5421 Current Release: 5422 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5423 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5424 54252) iASL Compiler/Disassembler and Tools: 5426 5427iASL: Implemented Min/Max/Len/Gran validation for address resource 5428descriptors. This change implements validation for the address fields 5429that 5430are common to all address-type resource descriptors. These checks are 5431implemented: Checks for valid Min/Max, length within the Min/Max window, 5432valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5433per 5434table 6-40 in the ACPI 4.0a specification. Also split the large 5435aslrestype1.c 5436and aslrestype2.c files into five new files. ACPICA BZ 840. 5437 5438iASL: Added support for the _Wxx predefined names. This support was 5439missing 5440and these names were not recognized by the compiler as valid predefined 5441names. ACPICA BZ 851. 5442 5443iASL: Added an error for all predefined names that are defined to return 5444no 5445value and thus must be implemented as Control Methods. These include all 5446of 5447the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5448names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5449 5450iASL: Implemented the -ts option to emit hex AML data in ASL format, as 5451an 5452ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5453be 5454dynamically loaded via the Load() operator. Also cleaned up output for 5455the 5456- 5457ta and -tc options. ACPICA BZ 853. 5458 5459Tests: Added a new file with examples of extended iASL error checking. 5460Demonstrates the advanced error checking ability of the iASL compiler. 5461Available at tests/misc/badcode.asl. 5462 5463---------------------------------------- 546431 March 2010. Summary of changes for version 20100331: 5465 54661) ACPI CA Core Subsystem: 5467 5468Completed a major update for the GPE support in order to improve support 5469for 5470shared GPEs and to simplify both host OS and ACPICA code. Added a 5471reference 5472count mechanism to support shared GPEs that require multiple device 5473drivers. 5474Several external interfaces have changed. One external interface has been 5475removed. One new external interface was added. Most of the GPE external 5476interfaces now use the GPE spinlock instead of the events mutex (and the 5477Flags parameter for many GPE interfaces has been removed.) See the 5478updated 5479ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 5480Rafael 5481Wysocki. ACPICA BZ 831. 5482 5483Changed: 5484 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 5485Removed: 5486 AcpiSetGpeType 5487New: 5488 AcpiSetGpe 5489 5490Implemented write support for DataTable operation regions. These regions 5491are 5492defined via the DataTableRegion() operator. Previously, only read support 5493was 5494implemented. The ACPI specification allows DataTableRegions to be 5495read/write, 5496however. 5497 5498Implemented a new subsystem option to force a copy of the DSDT to local 5499memory. Optionally copy the entire DSDT to local memory (instead of 5500simply 5501mapping it.) There are some (albeit very rare) BIOSs that corrupt or 5502replace 5503the original DSDT, creating the need for this option. Default is FALSE, 5504do 5505not copy the DSDT. 5506 5507Implemented detection of a corrupted or replaced DSDT. This change adds 5508support to detect a DSDT that has been corrupted and/or replaced from 5509outside 5510the OS (by firmware). This is typically catastrophic for the system, but 5511has 5512been seen on some machines. Once this problem has been detected, the DSDT 5513copy option can be enabled via system configuration. Lin Ming, Bob Moore. 5514 5515Fixed two problems with AcpiReallocateRootTable during the root table 5516copy. 5517When copying the root table to the new allocation, the length used was 5518incorrect. The new size was used instead of the current table size, 5519meaning 5520too much data was copied. Also, the count of available slots for ACPI 5521tables 5522was not set correctly. Alexey Starikovskiy, Bob Moore. 5523 5524Example Code and Data Size: These are the sizes for the OS-independent 5525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5526debug version of the code includes the debug output trace mechanism and 5527has a 5528much larger code and data size. 5529 5530 Previous Release: 5531 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5532 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5533 Current Release: 5534 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5535 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5536 55372) iASL Compiler/Disassembler and Tools: 5538 5539iASL: Implement limited typechecking for values returned from predefined 5540control methods. The type of any returned static (unnamed) object is now 5541validated. For example, Return(1). ACPICA BZ 786. 5542 5543iASL: Fixed a predefined name object verification regression. Fixes a 5544problem 5545introduced in version 20100304. An error is incorrectly generated if a 5546predefined name is declared as a static named object with a value defined 5547using the keywords "Zero", "One", or "Ones". Lin Ming. 5548 5549iASL: Added Windows 7 support for the -g option (get local ACPI tables) 5550by 5551reducing the requested registry access rights. ACPICA BZ 842. 5552 5553Disassembler: fixed a possible fault when generating External() 5554statements. 5555Introduced in commit ae7d6fd: Properly handle externals with parent- 5556prefix 5557(carat). Fixes a string length allocation calculation. Lin Ming. 5558 5559---------------------------------------- 556004 March 2010. Summary of changes for version 20100304: 5561 55621) ACPI CA Core Subsystem: 5563 5564Fixed a possible problem with the AML Mutex handling function 5565AcpiExReleaseMutex where the function could fault under the very rare 5566condition when the interpreter has blocked, the interpreter lock is 5567released, 5568the interpreter is then reentered via the same thread, and attempts to 5569acquire an AML mutex that was previously acquired. FreeBSD report 140979. 5570Lin 5571Ming. 5572 5573Implemented additional configuration support for the AML "Debug Object". 5574Output from the debug object can now be enabled via a global variable, 5575AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 5576debugging. 5577This debug output is now available in the release version of ACPICA 5578instead 5579of just the debug version. Also, the entire debug output module can now 5580be 5581configured out of the ACPICA build if desired. One new file added, 5582executer/exdebug.c. Lin Ming, Bob Moore. 5583 5584Added header support for the ACPI MCHI table (Management Controller Host 5585Interface Table). This table was added in ACPI 4.0, but the defining 5586document 5587has only recently become available. 5588 5589Standardized output of integer values for ACPICA warnings/errors. Always 5590use 55910x prefix for hex output, always use %u for unsigned integer decimal 5592output. 5593Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 5594400 5595invocations.) These invocations were converted from the original 5596ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 5597 5598Example Code and Data Size: These are the sizes for the OS-independent 5599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5600debug version of the code includes the debug output trace mechanism and 5601has a 5602much larger code and data size. 5603 5604 Previous Release: 5605 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5606 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5607 Current Release: 5608 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5609 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5610 56112) iASL Compiler/Disassembler and Tools: 5612 5613iASL: Implemented typechecking support for static (non-control method) 5614predefined named objects that are declared with the Name() operator. For 5615example, the type of this object is now validated to be of type Integer: 5616Name(_BBN, 1). This change migrates the compiler to using the core 5617predefined 5618name table instead of maintaining a local version. Added a new file, 5619aslpredef.c. ACPICA BZ 832. 5620 5621Disassembler: Added support for the ACPI 4.0 MCHI table. 5622 5623---------------------------------------- 562421 January 2010. Summary of changes for version 20100121: 5625 56261) ACPI CA Core Subsystem: 5627 5628Added the 2010 copyright to all module headers and signons. This affects 5629virtually every file in the ACPICA core subsystem, the iASL compiler, the 5630tools/utilities, and the test suites. 5631 5632Implemented a change to the AcpiGetDevices interface to eliminate 5633unnecessary 5634invocations of the _STA method. In the case where a specific _HID is 5635requested, do not run _STA until a _HID match is found. This eliminates 5636potentially dozens of _STA calls during a search for a particular 5637device/HID, 5638which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 5639 5640Implemented an additional repair for predefined method return values. 5641Attempt 5642to repair unexpected NULL elements within returned Package objects. 5643Create 5644an 5645Integer of value zero, a NULL String, or a zero-length Buffer as 5646appropriate. 5647ACPICA BZ 818. Lin Ming, Bob Moore. 5648 5649Removed the obsolete ACPI_INTEGER data type. This type was introduced as 5650the 5651code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 5652(with 565364-bit AML integers). It is now obsolete and this change removes it from 5654the 5655ACPICA code base, replaced by UINT64. The original typedef has been 5656retained 5657for now for compatibility with existing device driver code. ACPICA BZ 5658824. 5659 5660Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 5661in 5662the parse tree object. 5663 5664Added additional warning options for the gcc-4 generation. Updated the 5665source 5666accordingly. This includes some code restructuring to eliminate 5667unreachable 5668code, elimination of some gotos, elimination of unused return values, 5669some 5670additional casting, and removal of redundant declarations. 5671 5672Example Code and Data Size: These are the sizes for the OS-independent 5673acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5674debug version of the code includes the debug output trace mechanism and 5675has a 5676much larger code and data size. 5677 5678 Previous Release: 5679 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5680 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5681 Current Release: 5682 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5683 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5684 56852) iASL Compiler/Disassembler and Tools: 5686 5687No functional changes for this release. 5688 5689---------------------------------------- 569014 December 2009. Summary of changes for version 20091214: 5691 56921) ACPI CA Core Subsystem: 5693 5694Enhanced automatic data type conversions for predefined name repairs. 5695This 5696change expands the automatic repairs/conversions for predefined name 5697return 5698values to make Integers, Strings, and Buffers fully interchangeable. 5699Also, 5700a 5701Buffer can be converted to a Package of Integers if necessary. The 5702nsrepair.c 5703module was completely restructured. Lin Ming, Bob Moore. 5704 5705Implemented automatic removal of null package elements during predefined 5706name 5707repairs. This change will automatically remove embedded and trailing NULL 5708package elements from returned package objects that are defined to 5709contain 5710a 5711variable number of sub-packages. The driver is then presented with a 5712package 5713with no null elements to deal with. ACPICA BZ 819. 5714 5715Implemented a repair for the predefined _FDE and _GTM names. The expected 5716return value for both names is a Buffer of 5 DWORDs. This repair fixes 5717two 5718possible problems (both seen in the field), where a package of integers 5719is 5720returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 5721Kim. 5722 5723Implemented additional module-level code support. This change will 5724properly 5725execute module-level code that is not at the root of the namespace (under 5726a 5727Device object, etc.). Now executes the code within the current scope 5728instead 5729of the root. ACPICA BZ 762. Lin Ming. 5730 5731Fixed possible mutex acquisition errors when running _REG methods. Fixes 5732a 5733problem where mutex errors can occur when running a _REG method that is 5734in 5735the same scope as a method-defined operation region or an operation 5736region 5737under a module-level IF block. This type of code is rare, so the problem 5738has 5739not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 5740 5741Fixed a possible memory leak during module-level code execution. An 5742object 5743could be leaked for each block of executed module-level code if the 5744interpreter slack mode is enabled This change deletes any implicitly 5745returned 5746object from the module-level code block. Lin Ming. 5747 5748Removed messages for successful predefined repair(s). The repair 5749mechanism 5750was considered too wordy. Now, messages are only unconditionally emitted 5751if 5752the return object cannot be repaired. Existing messages for successful 5753repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 5754827. 5755 5756Example Code and Data Size: These are the sizes for the OS-independent 5757acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5758debug version of the code includes the debug output trace mechanism and 5759has a 5760much larger code and data size. 5761 5762 Previous Release: 5763 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5764 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5765 Current Release: 5766 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5767 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5768 57692) iASL Compiler/Disassembler and Tools: 5770 5771iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 5772files 5773were no longer automatically removed at the termination of the compile. 5774 5775acpiexec: Implemented the -f option to specify default region fill value. 5776This option specifies the value used to initialize buffers that simulate 5777operation regions. Default value is zero. Useful for debugging problems 5778that 5779depend on a specific initial value for a region or field. 5780 5781---------------------------------------- 578212 November 2009. Summary of changes for version 20091112: 5783 57841) ACPI CA Core Subsystem: 5785 5786Implemented a post-order callback to AcpiWalkNamespace. The existing 5787interface only has a pre-order callback. This change adds an additional 5788parameter for a post-order callback which will be more useful for bus 5789scans. 5790ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 5791 5792Modified the behavior of the operation region memory mapping cache for 5793SystemMemory. Ensure that the memory mappings created for operation 5794regions 5795do not cross 4K page boundaries. Crossing a page boundary while mapping 5796regions can cause kernel warnings on some hosts if the pages have 5797different 5798attributes. Such regions are probably BIOS bugs, and this is the 5799workaround. 5800Linux BZ 14445. Lin Ming. 5801 5802Implemented an automatic repair for predefined methods that must return 5803sorted lists. This change will repair (by sorting) packages returned by 5804_ALR, 5805_PSS, and _TSS. Drivers can now assume that the packages are correctly 5806sorted 5807and do not contain NULL package elements. Adds one new file, 5808namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 5809 5810Fixed a possible fault during predefined name validation if a return 5811Package 5812object contains NULL elements. Also adds a warning if a NULL element is 5813followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 5814may 5815include repair or removal of all such NULL elements where possible. 5816 5817Implemented additional module-level executable AML code support. This 5818change 5819will execute module-level code that is not at the root of the namespace 5820(under a Device object, etc.) at table load time. Module-level executable 5821AML 5822code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 5823 5824Implemented a new internal function to create Integer objects. This 5825function 5826simplifies miscellaneous object creation code. ACPICA BZ 823. 5827 5828Reduced the severity of predefined repair messages, Warning to Info. 5829Since 5830the object was successfully repaired, a warning is too severe. Reduced to 5831an 5832info message for now. These messages may eventually be changed to debug- 5833only. 5834ACPICA BZ 812. 5835 5836Example Code and Data Size: These are the sizes for the OS-independent 5837acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5838debug version of the code includes the debug output trace mechanism and 5839has a 5840much larger code and data size. 5841 5842 Previous Release: 5843 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5844 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5845 Current Release: 5846 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5847 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5848 58492) iASL Compiler/Disassembler and Tools: 5850 5851iASL: Implemented Switch() with While(1) so that Break works correctly. 5852This 5853change correctly implements the Switch operator with a surrounding 5854While(1) 5855so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 5856 5857iASL: Added a message if a package initializer list is shorter than 5858package 5859length. Adds a new remark for a Package() declaration if an initializer 5860list 5861exists, but is shorter than the declared length of the package. Although 5862technically legal, this is probably a coding error and it is seen in the 5863field. ACPICA BZ 815. Lin Ming, Bob Moore. 5864 5865iASL: Fixed a problem where the compiler could fault after the maximum 5866number 5867of errors was reached (200). 5868 5869acpixtract: Fixed a possible warning for pointer cast if the compiler 5870warning 5871level set very high. 5872 5873---------------------------------------- 587413 October 2009. Summary of changes for version 20091013: 5875 58761) ACPI CA Core Subsystem: 5877 5878Fixed a problem where an Operation Region _REG method could be executed 5879more 5880than once. If a custom address space handler is installed by the host 5881before 5882the "initialize operation regions" phase of the ACPICA initialization, 5883any 5884_REG methods for that address space could be executed twice. This change 5885fixes the problem. ACPICA BZ 427. Lin Ming. 5886 5887Fixed a possible memory leak for the Scope() ASL operator. When the exact 5888invocation of "Scope(\)" is executed (change scope to root), one internal 5889operand object was leaked. Lin Ming. 5890 5891Implemented a run-time repair for the _MAT predefined method. If the _MAT 5892return value is defined as a Field object in the AML, and the field 5893size is less than or equal to the default width of an integer (32 or 589464),_MAT 5895can incorrectly return an Integer instead of a Buffer. ACPICA now 5896automatically repairs this problem. ACPICA BZ 810. 5897 5898Implemented a run-time repair for the _BIF and _BIX predefined methods. 5899The 5900"OEM Information" field is often incorrectly returned as an Integer with 5901value zero if the field is not supported by the platform. This is due to 5902an 5903ambiguity in the ACPI specification. The field should always be a string. 5904ACPICA now automatically repairs this problem by returning a NULL string 5905within the returned Package. ACPICA BZ 807. 5906 5907Example Code and Data Size: These are the sizes for the OS-independent 5908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5909debug version of the code includes the debug output trace mechanism and 5910has a 5911much larger code and data size. 5912 5913 Previous Release: 5914 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5915 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5916 Current Release: 5917 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5918 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5919 59202) iASL Compiler/Disassembler and Tools: 5921 5922Disassembler: Fixed a problem where references to external symbols that 5923contained one or more parent-prefixes (carats) were not handled 5924correctly, 5925possibly causing a fault. ACPICA BZ 806. Lin Ming. 5926 5927Disassembler: Restructured the code so that all functions that handle 5928external symbols are in a single module. One new file is added, 5929common/dmextern.c. 5930 5931AML Debugger: Added a max count argument for the Batch command (which 5932executes multiple predefined methods within the namespace.) 5933 5934iASL: Updated the compiler documentation (User Reference.) Available at 5935http://www.acpica.org/documentation/. ACPICA BZ 750. 5936 5937AcpiXtract: Updated for Lint and other formatting changes. Close all open 5938files. 5939 5940---------------------------------------- 594103 September 2009. Summary of changes for version 20090903: 5942 59431) ACPI CA Core Subsystem: 5944 5945For Windows Vista compatibility, added the automatic execution of an _INI 5946method located at the namespace root (\_INI). This method is executed at 5947table load time. This support is in addition to the automatic execution 5948of 5949\_SB._INI. Lin Ming. 5950 5951Fixed a possible memory leak in the interpreter for AML package objects 5952if 5953the package initializer list is longer than the defined size of the 5954package. 5955This apparently can only happen if the BIOS changes the package size on 5956the 5957fly (seen in a _PSS object), as ASL compilers do not allow this. The 5958interpreter will truncate the package to the defined size (and issue an 5959error 5960message), but previously could leave the extra objects undeleted if they 5961were 5962pre-created during the argument processing (such is the case if the 5963package 5964consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5965 5966Fixed a problem seen when a Buffer or String is stored to itself via ASL. 5967This has been reported in the field. Previously, ACPICA would zero out 5968the 5969buffer/string. Now, the operation is treated as a noop. Provides Windows 5970compatibility. ACPICA BZ 803. Lin Ming. 5971 5972Removed an extraneous error message for ASL constructs of the form 5973Store(LocalX,LocalX) when LocalX is uninitialized. These curious 5974statements 5975are seen in many BIOSs and are once again treated as NOOPs and no error 5976is 5977emitted when they are encountered. ACPICA BZ 785. 5978 5979Fixed an extraneous warning message if a _DSM reserved method returns a 5980Package object. _DSM can return any type of object, so validation on the 5981return type cannot be performed. ACPICA BZ 802. 5982 5983Example Code and Data Size: These are the sizes for the OS-independent 5984acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5985debug version of the code includes the debug output trace mechanism and 5986has a 5987much larger code and data size. 5988 5989 Previous Release: 5990 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5991 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5992 Current Release: 5993 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5994 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5995 59962) iASL Compiler/Disassembler and Tools: 5997 5998iASL: Fixed a problem with the use of the Alias operator and Resource 5999Templates. The correct alias is now constructed and no error is emitted. 6000ACPICA BZ 738. 6001 6002iASL: Implemented the -I option to specify additional search directories 6003for 6004include files. Allows multiple additional search paths for include files. 6005Directories are searched in the order specified on the command line 6006(after 6007the local directory is searched.) ACPICA BZ 800. 6008 6009iASL: Fixed a problem where the full pathname for include files was not 6010emitted for warnings/errors. This caused the IDE support to not work 6011properly. ACPICA BZ 765. 6012 6013iASL: Implemented the -@ option to specify a Windows-style response file 6014containing additional command line options. ACPICA BZ 801. 6015 6016AcpiExec: Added support to load multiple AML files simultaneously (such 6017as 6018a 6019DSDT and multiple SSDTs). Also added support for wildcards within the AML 6020pathname. These features allow all machine tables to be easily loaded and 6021debugged together. ACPICA BZ 804. 6022 6023Disassembler: Added missing support for disassembly of HEST table Error 6024Bank 6025subtables. 6026 6027---------------------------------------- 602830 July 2009. Summary of changes for version 20090730: 6029 6030The ACPI 4.0 implementation for ACPICA is complete with this release. 6031 60321) ACPI CA Core Subsystem: 6033 6034ACPI 4.0: Added header file support for all new and changed ACPI tables. 6035Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6036new 6037for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6038BERT, 6039EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6040There 6041have been some ACPI 4.0 changes to other existing tables. Split the large 6042actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6043 6044ACPI 4.0: Implemented predefined name validation for all new names. There 6045are 604631 new names in ACPI 4.0. The predefined validation module was split into 6047two 6048files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6049 6050Implemented support for so-called "module-level executable code". This is 6051executable AML code that exists outside of any control method and is 6052intended 6053to be executed at table load time. Although illegal since ACPI 2.0, this 6054type 6055of code still exists and is apparently still being created. Blocks of 6056this 6057code are now detected and executed as intended. Currently, the code 6058blocks 6059must exist under either an If, Else, or While construct; these are the 6060typical cases seen in the field. ACPICA BZ 762. Lin Ming. 6061 6062Implemented an automatic dynamic repair for predefined names that return 6063nested Package objects. This applies to predefined names that are defined 6064to 6065return a variable-length Package of sub-packages. If the number of sub- 6066packages is one, BIOS code is occasionally seen that creates a simple 6067single 6068package with no sub-packages. This code attempts to fix the problem by 6069wrapping a new package object around the existing package. These methods 6070can 6071be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6072BZ 6073790. 6074 6075Fixed a regression introduced in 20090625 for the AcpiGetDevices 6076interface. 6077The _HID/_CID matching was broken and no longer matched IDs correctly. 6078ACPICA 6079BZ 793. 6080 6081Fixed a problem with AcpiReset where the reset would silently fail if the 6082register was one of the protected I/O ports. AcpiReset now bypasses the 6083port 6084validation mechanism. This may eventually be driven into the 6085AcpiRead/Write 6086interfaces. 6087 6088Fixed a regression related to the recent update of the AcpiRead/Write 6089interfaces. A sleep/suspend could fail if the optional PM2 Control 6090register 6091does not exist during an attempt to write the Bus Master Arbitration bit. 6092(However, some hosts already delete the code that writes this bit, and 6093the 6094code may in fact be obsolete at this date.) ACPICA BZ 799. 6095 6096Fixed a problem where AcpiTerminate could fault if inadvertently called 6097twice 6098in succession. ACPICA BZ 795. 6099 6100Example Code and Data Size: These are the sizes for the OS-independent 6101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6102debug version of the code includes the debug output trace mechanism and 6103has a 6104much larger code and data size. 6105 6106 Previous Release: 6107 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6108 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6109 Current Release: 6110 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6111 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6112 61132) iASL Compiler/Disassembler and Tools: 6114 6115ACPI 4.0: Implemented disassembler support for all new ACPI tables and 6116changes to existing tables. ACPICA BZ 775. 6117 6118---------------------------------------- 611925 June 2009. Summary of changes for version 20090625: 6120 6121The ACPI 4.0 Specification was released on June 16 and is available at 6122www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6123continue for the next few releases. 6124 61251) ACPI CA Core Subsystem: 6126 6127ACPI 4.0: Implemented interpreter support for the IPMI operation region 6128address space. Includes support for bi-directional data buffers and an 6129IPMI 6130address space handler (to be installed by an IPMI device driver.) ACPICA 6131BZ 6132773. Lin Ming. 6133 6134ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6135Includes 6136support in both the header files and the disassembler. 6137 6138Completed a major update for the AcpiGetObjectInfo external interface. 6139Changes include: 6140 - Support for variable, unlimited length HID, UID, and CID strings. 6141 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6142etc.) 6143 - Call the _SxW power methods on behalf of a device object. 6144 - Determine if a device is a PCI root bridge. 6145 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6146These changes will require an update to all callers of this interface. 6147See 6148the updated ACPICA Programmer Reference for details. One new source file 6149has 6150been added - utilities/utids.c. ACPICA BZ 368, 780. 6151 6152Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6153transfers. The Value parameter has been extended from 32 bits to 64 bits 6154in 6155order to support new ACPI 4.0 tables. These changes will require an 6156update 6157to 6158all callers of these interfaces. See the ACPICA Programmer Reference for 6159details. ACPICA BZ 768. 6160 6161Fixed several problems with AcpiAttachData. The handler was not invoked 6162when 6163the host node was deleted. The data sub-object was not automatically 6164deleted 6165when the host node was deleted. The interface to the handler had an 6166unused 6167parameter, this was removed. ACPICA BZ 778. 6168 6169Enhanced the function that dumps ACPI table headers. All non-printable 6170characters in the string fields are now replaced with '?' (Signature, 6171OemId, 6172OemTableId, and CompilerId.) ACPI tables with non-printable characters in 6173these fields are occasionally seen in the field. ACPICA BZ 788. 6174 6175Fixed a problem with predefined method repair code where the code that 6176attempts to repair/convert an object of incorrect type is only executed 6177on 6178the first time the predefined method is called. The mechanism that 6179disables 6180warnings on subsequent calls was interfering with the repair mechanism. 6181ACPICA BZ 781. 6182 6183Fixed a possible memory leak in the predefined validation/repair code 6184when 6185a 6186buffer is automatically converted to an expected string object. 6187 6188Removed obsolete 16-bit files from the distribution and from the current 6189git 6190tree head. ACPICA BZ 776. 6191 6192Example Code and Data Size: These are the sizes for the OS-independent 6193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6194debug version of the code includes the debug output trace mechanism and 6195has a 6196much larger code and data size. 6197 6198 Previous Release: 6199 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6200 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6201 Current Release: 6202 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6203 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6204 62052) iASL Compiler/Disassembler and Tools: 6206 6207ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6208operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6209 6210ACPI 4.0: iASL - implemented compile-time validation support for all new 6211predefined names and control methods (31 total). ACPICA BZ 769. 6212 6213---------------------------------------- 621421 May 2009. Summary of changes for version 20090521: 6215 62161) ACPI CA Core Subsystem: 6217 6218Disabled the preservation of the SCI enable bit in the PM1 control 6219register. 6220The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6221to 6222be 6223a "preserved" bit - "OSPM always preserves this bit position", section 62244.7.3.2.1. However, some machines fail if this bit is in fact preserved 6225because the bit needs to be explicitly set by the OS as a workaround. No 6226machines fail if the bit is not preserved. Therefore, ACPICA no longer 6227attempts to preserve this bit. 6228 6229Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6230incorrectly formed _PRT package could cause a fault. Added validation to 6231ensure that each package element is actually a sub-package. 6232 6233Implemented a new interface to install or override a single control 6234method, 6235AcpiInstallMethod. This interface is useful when debugging in order to 6236repair 6237an existing method or to install a missing method without having to 6238override 6239the entire ACPI table. See the ACPICA Programmer Reference for use and 6240examples. Lin Ming, Bob Moore. 6241 6242Fixed several reference count issues with the DdbHandle object that is 6243created from a Load or LoadTable operator. Prevent premature deletion of 6244the 6245object. Also, mark the object as invalid once the table has been 6246unloaded. 6247This is needed because the handle itself may not be deleted after the 6248table 6249unload, depending on whether it has been stored in a named object by the 6250caller. Lin Ming. 6251 6252Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6253mutexes of the same sync level are acquired but then not released in 6254strict 6255opposite order, the internally maintained Current Sync Level becomes 6256confused 6257and can cause subsequent execution errors. ACPICA BZ 471. 6258 6259Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6260specification has been changed to make the SyncLevel for mutex objects 6261more 6262useful. When releasing a mutex, the SyncLevel of the mutex must now be 6263the 6264same as the current sync level. This makes more sense than the previous 6265rule 6266(SyncLevel less than or equal). This change updates the code to match the 6267specification. 6268 6269Fixed a problem with the local version of the AcpiOsPurgeCache function. 6270The 6271(local) cache must be locked during all cache object deletions. Andrew 6272Baumann. 6273 6274Updated the Load operator to use operation region interfaces. This 6275replaces 6276direct memory mapping with region access calls. Now, all region accesses 6277go 6278through the installed region handler as they should. 6279 6280Simplified and optimized the NsGetNextNode function. Reduced parameter 6281count 6282and reduced code for this frequently used function. 6283 6284Example Code and Data Size: These are the sizes for the OS-independent 6285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6286debug version of the code includes the debug output trace mechanism and 6287has a 6288much larger code and data size. 6289 6290 Previous Release: 6291 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6292 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6293 Current Release: 6294 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6295 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6296 62972) iASL Compiler/Disassembler and Tools: 6298 6299Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6300problems 6301with sub-table disassembly and handling invalid sub-tables. Attempt 6302recovery 6303after an invalid sub-table ID. 6304 6305---------------------------------------- 630622 April 2009. Summary of changes for version 20090422: 6307 63081) ACPI CA Core Subsystem: 6309 6310Fixed a compatibility issue with the recently released I/O port 6311protection 6312mechanism. For windows compatibility, 1) On a port protection violation, 6313simply ignore the request and do not return an exception (allow the 6314control 6315method to continue execution.) 2) If only part of the request overlaps a 6316protected port, read/write the individual ports that are not protected. 6317Linux 6318BZ 13036. Lin Ming 6319 6320Enhanced the execution of the ASL/AML BreakPoint operator so that it 6321actually 6322breaks into the AML debugger if the debugger is present. This matches the 6323ACPI-defined behavior. 6324 6325Fixed several possible warnings related to the use of the configurable 6326ACPI_THREAD_ID. This type can now be configured as either an integer or a 6327pointer with no warnings. Also fixes several warnings in printf-like 6328statements for the 64-bit build when the type is configured as a pointer. 6329ACPICA BZ 766, 767. 6330 6331Fixed a number of possible warnings when compiling with gcc 4+ (depending 6332on 6333warning options.) Examples include printf formats, aliasing, unused 6334globals, 6335missing prototypes, missing switch default statements, use of non-ANSI 6336library functions, use of non-ANSI constructs. See generate/unix/Makefile 6337for 6338a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6339 6340Example Code and Data Size: These are the sizes for the OS-independent 6341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6342debug version of the code includes the debug output trace mechanism and 6343has a 6344much larger code and data size. 6345 6346 Previous Release: 6347 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6348 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6349 Current Release: 6350 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6351 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6352 63532) iASL Compiler/Disassembler and Tools: 6354 6355iASL: Fixed a generation warning from Bison 2.3 and fixed several 6356warnings 6357on 6358the 64-bit build. 6359 6360iASL: Fixed a problem where the Unix/Linux versions of the compiler could 6361not 6362correctly digest Windows/DOS formatted files (with CR/LF). 6363 6364iASL: Added a new option for "quiet mode" (-va) that produces only the 6365compilation summary, not individual errors and warnings. Useful for large 6366batch compilations. 6367 6368AcpiExec: Implemented a new option (-z) to enable a forced 6369semaphore/mutex 6370timeout that can be used to detect hang conditions during execution of 6371AML 6372code (includes both internal semaphores and AML-defined mutexes and 6373events.) 6374 6375Added new makefiles for the generation of acpica in a generic unix-like 6376environment. These makefiles are intended to generate the acpica tools 6377and 6378utilities from the original acpica git source tree structure. 6379 6380Test Suites: Updated and cleaned up the documentation files. Updated the 6381copyrights to 2009, affecting all source files. Use the new version of 6382iASL 6383with quiet mode. Increased the number of available semaphores in the 6384Windows 6385OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6386added 6387an alternate implementation of the semaphore timeout to allow aslts to 6388execute fully on Cygwin. 6389 6390---------------------------------------- 639120 March 2009. Summary of changes for version 20090320: 6392 63931) ACPI CA Core Subsystem: 6394 6395Fixed a possible race condition between AcpiWalkNamespace and dynamic 6396table 6397unloads. Added a reader/writer locking mechanism to allow multiple 6398concurrent 6399namespace walks (readers), but block a dynamic table unload until it can 6400gain 6401exclusive write access to the namespace. This fixes a problem where a 6402table 6403unload could (possibly catastrophically) delete the portion of the 6404namespace 6405that is currently being examined by a walk. Adds a new file, utlock.c, 6406that 6407implements the reader/writer lock mechanism. ACPICA BZ 749. 6408 6409Fixed a regression introduced in version 20090220 where a change to the 6410FADT 6411handling could cause the ACPICA subsystem to access non-existent I/O 6412ports. 6413 6414Modified the handling of FADT register and table (FACS/DSDT) addresses. 6415The 6416FADT can contain both 32-bit and 64-bit versions of these addresses. 6417Previously, the 64-bit versions were favored, meaning that if both 32 and 641864 6419versions were valid, but not equal, the 64-bit version was used. This was 6420found to cause some machines to fail. Now, in this case, the 32-bit 6421version 6422is used instead. This now matches the Windows behavior. 6423 6424Implemented a new mechanism to protect certain I/O ports. Provides 6425Microsoft 6426compatibility and protects the standard PC I/O ports from access via AML 6427code. Adds a new file, hwvalid.c 6428 6429Fixed a possible extraneous warning message from the FADT support. The 6430message warns of a 32/64 length mismatch between the legacy and GAS 6431definitions for a register. 6432 6433Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 6434is 6435made obsolete by the port protection mechanism above. It was previously 6436used 6437to validate the entire address range of an operation region, which could 6438be 6439incorrect if the range included illegal ports, but fields within the 6440operation region did not actually access those ports. Validation is now 6441performed on a per-field basis instead of the entire region. 6442 6443Modified the handling of the PM1 Status Register ignored bit (bit 11.) 6444Ignored bits must be "preserved" according to the ACPI spec. Usually, 6445this 6446means a read/modify/write when writing to the register. However, for 6447status 6448registers, writing a one means clear the event. Writing a zero means 6449preserve 6450the event (do not clear.) This behavior is clarified in the ACPI 4.0 6451spec, 6452and the ACPICA code now simply always writes a zero to the ignored bit. 6453 6454Modified the handling of ignored bits for the PM1 A/B Control Registers. 6455As 6456per the ACPI specification, for the control registers, preserve 6457(read/modify/write) all bits that are defined as either reserved or 6458ignored. 6459 6460Updated the handling of write-only bits in the PM1 A/B Control Registers. 6461When reading the register, zero the write-only bits as per the ACPI spec. 6462ACPICA BZ 443. Lin Ming. 6463 6464Removed "Linux" from the list of supported _OSI strings. Linux no longer 6465wants to reply true to this request. The Windows strings are the only 6466paths 6467through the AML that are tested and known to work properly. 6468 6469 Previous Release: 6470 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6471 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6472 Current Release: 6473 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6474 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6475 64762) iASL Compiler/Disassembler and Tools: 6477 6478Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 6479and 6480aetables.c 6481 6482---------------------------------------- 648320 February 2009. Summary of changes for version 20090220: 6484 64851) ACPI CA Core Subsystem: 6486 6487Optimized the ACPI register locking. Removed locking for reads from the 6488ACPI 6489bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 6490is 6491not required when reading the single-bit registers. The 6492AcpiGetRegisterUnlocked function is no longer needed and has been 6493removed. 6494This will improve performance for reads on these registers. ACPICA BZ 6495760. 6496 6497Fixed the parameter validation for AcpiRead/Write. Now return 6498AE_BAD_PARAMETER if the input register pointer is null, and 6499AE_BAD_ADDRESS 6500if 6501the register has an address of zero. Previously, these cases simply 6502returned 6503AE_OK. For optional registers such as PM1B status/enable/control, the 6504caller 6505should check for a valid register address before calling. ACPICA BZ 748. 6506 6507Renamed the external ACPI bit register access functions. Renamed 6508AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 6509functions. The new names are AcpiReadBitRegister and 6510AcpiWriteBitRegister. 6511Also, restructured the code for these functions by simplifying the code 6512path 6513and condensing duplicate code to reduce code size. 6514 6515Added new functions to transparently handle the possibly split PM1 A/B 6516registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 6517functions 6518now handle the split registers for PM1 Status, Enable, and Control. 6519ACPICA 6520BZ 6521746. 6522 6523Added a function to handle the PM1 control registers, 6524AcpiHwWritePm1Control. 6525This function writes both of the PM1 control registers (A/B). These 6526registers 6527are different than the PM1 A/B status and enable registers in that 6528different 6529values can be written to the A/B registers. Most notably, the SLP_TYP 6530bits 6531can be different, as per the values returned from the _Sx predefined 6532methods. 6533 6534Removed an extra register write within AcpiHwClearAcpiStatus. This 6535function 6536was writing an optional PM1B status register twice. The existing call to 6537the 6538low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 6539A/B 6540register. ACPICA BZ 751. 6541 6542Split out the PM1 Status registers from the FADT. Added new globals for 6543these 6544registers (A/B), similar to the way the PM1 Enable registers are handled. 6545Instead of overloading the FADT Event Register blocks. This makes the 6546code 6547clearer and less prone to error. 6548 6549Fixed the warning message for when the platform contains too many ACPI 6550tables 6551for the default size of the global root table data structure. The 6552calculation 6553for the truncation value was incorrect. 6554 6555Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 6556obsolete macro, since it is now a simple reference to ->common.type. 6557There 6558were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 6559 6560Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 6561TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 6562simply SLEEP_TYPE. ACPICA BZ 754. 6563 6564Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 6565function is only needed on 64-bit host operating systems and is thus not 6566included for 32-bit hosts. 6567 6568Debug output: print the input and result for invocations of the _OSI 6569reserved 6570control method via the ACPI_LV_INFO debug level. Also, reduced some of 6571the 6572verbosity of this debug level. Len Brown. 6573 6574Example Code and Data Size: These are the sizes for the OS-independent 6575acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6576debug version of the code includes the debug output trace mechanism and 6577has a 6578much larger code and data size. 6579 6580 Previous Release: 6581 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6582 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6583 Current Release: 6584 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6585 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6586 65872) iASL Compiler/Disassembler and Tools: 6588 6589Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 6590various legal performance profiles. 6591 6592---------------------------------------- 659323 January 2009. Summary of changes for version 20090123: 6594 65951) ACPI CA Core Subsystem: 6596 6597Added the 2009 copyright to all module headers and signons. This affects 6598virtually every file in the ACPICA core subsystem, the iASL compiler, and 6599the tools/utilities. 6600 6601Implemented a change to allow the host to override any ACPI table, 6602including 6603dynamically loaded tables. Previously, only the DSDT could be replaced by 6604the 6605host. With this change, the AcpiOsTableOverride interface is called for 6606each 6607table found in the RSDT/XSDT during ACPICA initialization, and also 6608whenever 6609a table is dynamically loaded via the AML Load operator. 6610 6611Updated FADT flag definitions, especially the Boot Architecture flags. 6612 6613Debugger: For the Find command, automatically pad the input ACPI name 6614with 6615underscores if the name is shorter than 4 characters. This enables a 6616match 6617with the actual namespace entry which is itself padded with underscores. 6618 6619Example Code and Data Size: These are the sizes for the OS-independent 6620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6621debug version of the code includes the debug output trace mechanism and 6622has a 6623much larger code and data size. 6624 6625 Previous Release: 6626 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6627 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6628 Current Release: 6629 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6630 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6631 66322) iASL Compiler/Disassembler and Tools: 6633 6634Fix build error under Bison-2.4. 6635 6636Dissasembler: Enhanced FADT support. Added decoding of the Boot 6637Architecture 6638flags. Now decode all flags, regardless of the FADT version. Flag output 6639includes the FADT version which first defined each flag. 6640 6641The iASL -g option now dumps the RSDT to a file (in addition to the FADT 6642and 6643DSDT). Windows only. 6644 6645---------------------------------------- 664604 December 2008. Summary of changes for version 20081204: 6647 66481) ACPI CA Core Subsystem: 6649 6650The ACPICA Programmer Reference has been completely updated and revamped 6651for 6652this release. This includes updates to the external interfaces, OSL 6653interfaces, the overview sections, and the debugger reference. 6654 6655Several new ACPICA interfaces have been implemented and documented in the 6656programmer reference: 6657AcpiReset - Writes the reset value to the FADT-defined reset register. 6658AcpiDisableAllGpes - Disable all available GPEs. 6659AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 6660AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 6661AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 6662AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 6663AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 6664 6665Most of the public ACPI hardware-related interfaces have been moved to a 6666new 6667file, components/hardware/hwxface.c 6668 6669Enhanced the FADT parsing and low-level ACPI register access: The ACPI 6670register lengths within the FADT are now used, and the low level ACPI 6671register access no longer hardcodes the ACPI register lengths. Given that 6672there may be some risk in actually trusting the FADT register lengths, a 6673run- 6674time option was added to fall back to the default hardcoded lengths if 6675the 6676FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 6677option is set to true for now, and a warning is issued if a suspicious 6678FADT 6679register length is overridden with the default value. 6680 6681Fixed a reference count issue in NsRepairObject. This problem was 6682introduced 6683in version 20081031 as part of a fix to repair Buffer objects within 6684Packages. Lin Ming. 6685 6686Added semaphore support to the Linux/Unix application OS-services layer 6687(OSL). ACPICA BZ 448. Lin Ming. 6688 6689Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 6690will 6691be implemented in the OSL, or will binary semaphores be used instead. 6692 6693Example Code and Data Size: These are the sizes for the OS-independent 6694acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6695debug version of the code includes the debug output trace mechanism and 6696has a 6697much larger code and data size. 6698 6699 Previous Release: 6700 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6701 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6702 Current Release: 6703 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6704 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6705 67062) iASL Compiler/Disassembler and Tools: 6707 6708iASL: Completed the '-e' option to include additional ACPI tables in 6709order 6710to 6711aid with disassembly and External statement generation. ACPICA BZ 742. 6712Lin 6713Ming. 6714 6715iASL: Removed the "named object in while loop" error. The compiler cannot 6716determine how many times a loop will execute. ACPICA BZ 730. 6717 6718Disassembler: Implemented support for FADT revision 2 (MS extension). 6719ACPICA 6720BZ 743. 6721 6722Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 6723MCFG). 6724 6725---------------------------------------- 672631 October 2008. Summary of changes for version 20081031: 6727 67281) ACPI CA Core Subsystem: 6729 6730Restructured the ACPICA header files into public/private. acpi.h now 6731includes 6732only the "public" acpica headers. All other acpica headers are "private" 6733and 6734should not be included by acpica users. One new file, accommon.h is used 6735to 6736include the commonly used private headers for acpica code generation. 6737Future 6738plans include moving all private headers to a new subdirectory. 6739 6740Implemented an automatic Buffer->String return value conversion for 6741predefined ACPI methods. For these methods (such as _BIF), added 6742automatic 6743conversion for return objects that are required to be a String, but a 6744Buffer 6745was found instead. This can happen when reading string battery data from 6746an 6747operation region, because it used to be difficult to convert the data 6748from 6749buffer to string from within the ASL. Ensures that the host OS is 6750provided 6751with a valid null-terminated string. Linux BZ 11822. 6752 6753Updated the FACS waking vector interfaces. Split 6754AcpiSetFirmwareWakingVector 6755into two: one for the 32-bit vector, another for the 64-bit vector. This 6756is 6757required because the host OS must setup the wake much differently for 6758each 6759vector (real vs. protected mode, etc.) and the interface itself should 6760not 6761be 6762deciding which vector to use. Also, eliminated the 6763GetFirmwareWakingVector 6764interface, as it served no purpose (only the firmware reads the vector, 6765OS 6766only writes the vector.) ACPICA BZ 731. 6767 6768Implemented a mechanism to escape infinite AML While() loops. Added a 6769loop 6770counter to force exit from AML While loops if the count becomes too 6771large. 6772This can occur in poorly written AML when the hardware does not respond 6773within a while loop and the loop does not implement a timeout. The 6774maximum 6775loop count is configurable. A new exception code is returned when a loop 6776is 6777broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 6778 6779Optimized the execution of AML While loops. Previously, a control state 6780object was allocated and freed for each execution of the loop. The 6781optimization is to simply reuse the control state for each iteration. 6782This 6783speeds up the raw loop execution time by about 5%. 6784 6785Enhanced the implicit return mechanism. For Windows compatibility, return 6786an 6787implicit integer of value zero for methods that contain no executable 6788code. 6789Such methods are seen in the field as stubs (presumably), and can cause 6790drivers to fail if they expect a return value. Lin Ming. 6791 6792Allow multiple backslashes as root prefixes in namepaths. In a fully 6793qualified namepath, allow multiple backslash prefixes. This can happen 6794(and 6795is seen in the field) because of the use of a double-backslash in strings 6796(since backslash is the escape character) causing confusion. ACPICA BZ 6797739 6798Lin Ming. 6799 6800Emit a warning if two different FACS or DSDT tables are discovered in the 6801FADT. Checks if there are two valid but different addresses for the FACS 6802and 6803DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 6804 6805Consolidated the method argument count validation code. Merged the code 6806that 6807validates control method argument counts into the predefined validation 6808module. Eliminates possible multiple warnings for incorrect argument 6809counts. 6810 6811Implemented ACPICA example code. Includes code for ACPICA initialization, 6812handler installation, and calling a control method. Available at 6813source/tools/examples. 6814 6815Added a global pointer for FACS table to simplify internal FACS access. 6816Use 6817the global pointer instead of using AcpiGetTableByIndex for each FACS 6818access. 6819This simplifies the code for the Global Lock and the Firmware Waking 6820Vector(s). 6821 6822Example Code and Data Size: These are the sizes for the OS-independent 6823acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6824debug version of the code includes the debug output trace mechanism and 6825has a 6826much larger code and data size. 6827 6828 Previous Release: 6829 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6830 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6831 Current Release: 6832 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6833 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6834 68352) iASL Compiler/Disassembler and Tools: 6836 6837iASL: Improved disassembly of external method calls. Added the -e option 6838to 6839allow the inclusion of additional ACPI tables to help with the 6840disassembly 6841of 6842method invocations and the generation of external declarations during the 6843disassembly. Certain external method invocations cannot be disassembled 6844properly without the actual declaration of the method. Use the -e option 6845to 6846include the table where the external method(s) are actually declared. 6847Most 6848useful for disassembling SSDTs that make method calls back to the master 6849DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 6850-d 6851-e dsdt.aml ssdt1.aml 6852 6853iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 6854problem where the use of an alias within a namepath would result in a not 6855found error or cause the compiler to fault. Also now allows forward 6856references from the Alias operator itself. ACPICA BZ 738. 6857 6858---------------------------------------- 685926 September 2008. Summary of changes for version 20080926: 6860 68611) ACPI CA Core Subsystem: 6862 6863Designed and implemented a mechanism to validate predefined ACPI methods 6864and 6865objects. This code validates the predefined ACPI objects (objects whose 6866names 6867start with underscore) that appear in the namespace, at the time they are 6868evaluated. The argument count and the type of the returned object are 6869validated against the ACPI specification. The purpose of this validation 6870is 6871to detect problems with the BIOS-implemented predefined ACPI objects 6872before 6873the results are returned to the ACPI-related drivers. Future enhancements 6874may 6875include actual repair of incorrect return objects where possible. Two new 6876files are nspredef.c and acpredef.h. 6877 6878Fixed a fault in the AML parser if a memory allocation fails during the 6879Op 6880completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 6881 6882Fixed an issue with implicit return compatibility. This change improves 6883the 6884implicit return mechanism to be more compatible with the MS interpreter. 6885Lin 6886Ming, ACPICA BZ 349. 6887 6888Implemented support for zero-length buffer-to-string conversions. Allow 6889zero 6890length strings during interpreter buffer-to-string conversions. For 6891example, 6892during the ToDecimalString and ToHexString operators, as well as implicit 6893conversions. Fiodor Suietov, ACPICA BZ 585. 6894 6895Fixed two possible memory leaks in the error exit paths of 6896AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 6897are 6898similar in that they use a stack of state objects in order to eliminate 6899recursion. The stack must be fully unwound and deallocated if an error 6900occurs. Lin Ming. ACPICA BZ 383. 6901 6902Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 6903global 6904ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 6905Moore ACPICA BZ 442. 6906 6907Removed the obsolete version number in module headers. Removed the 6908"$Revision" number that appeared in each module header. This version 6909number 6910was useful under SourceSafe and CVS, but has no meaning under git. It is 6911not 6912only incorrect, it could also be misleading. 6913 6914Example Code and Data Size: These are the sizes for the OS-independent 6915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6916debug version of the code includes the debug output trace mechanism and 6917has a 6918much larger code and data size. 6919 6920 Previous Release: 6921 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6922 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6923 Current Release: 6924 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6925 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6926 6927---------------------------------------- 692829 August 2008. Summary of changes for version 20080829: 6929 69301) ACPI CA Core Subsystem: 6931 6932Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 6933Reference. Changes include the elimination of cheating on the Object 6934field 6935for the DdbHandle subtype, addition of a reference class field to 6936differentiate the various reference types (instead of an AML opcode), and 6937the 6938cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6939 6940Reduce an error to a warning for an incorrect method argument count. 6941Previously aborted with an error if too few arguments were passed to a 6942control method via the external ACPICA interface. Now issue a warning 6943instead 6944and continue. Handles the case where the method inadvertently declares 6945too 6946many arguments, but does not actually use the extra ones. Applies mainly 6947to 6948the predefined methods. Lin Ming. Linux BZ 11032. 6949 6950Disallow the evaluation of named object types with no intrinsic value. 6951Return 6952AE_TYPE for objects that have no value and therefore evaluation is 6953undefined: 6954Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6955of 6956these types were allowed, but an exception would be generated at some 6957point 6958during the evaluation. Now, the error is generated up front. 6959 6960Fixed a possible memory leak in the AcpiNsGetExternalPathname function 6961(nsnames.c). Fixes a leak in the error exit path. 6962 6963Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6964debug 6965levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6966ACPI_EXCEPTION 6967interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6968ACPI_LV_EVENTS. 6969 6970Removed obsolete and/or unused exception codes from the acexcep.h header. 6971There is the possibility that certain device drivers may be affected if 6972they 6973use any of these exceptions. 6974 6975The ACPICA documentation has been added to the public git source tree, 6976under 6977acpica/documents. Included are the ACPICA programmer reference, the iASL 6978compiler reference, and the changes.txt release logfile. 6979 6980Example Code and Data Size: These are the sizes for the OS-independent 6981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6982debug version of the code includes the debug output trace mechanism and 6983has a 6984much larger code and data size. 6985 6986 Previous Release: 6987 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6988 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6989 Current Release: 6990 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6991 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6992 69932) iASL Compiler/Disassembler and Tools: 6994 6995Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 6996defines _SCP with 3 arguments. Previous versions defined it with only 1 6997argument. iASL now allows both definitions. 6998 6999iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7000zero- 7001length subtables when disassembling ACPI tables. Also fixed a couple of 7002errors where a full 16-bit table type field was not extracted from the 7003input 7004properly. 7005 7006acpisrc: Improve comment counting mechanism for generating source code 7007statistics. Count first and last lines of multi-line comments as 7008whitespace, 7009not comment lines. Handle Linux legal header in addition to standard 7010acpica 7011header. 7012 7013---------------------------------------- 7014 701529 July 2008. Summary of changes for version 20080729: 7016 70171) ACPI CA Core Subsystem: 7018 7019Fix a possible deadlock in the GPE dispatch. Remove call to 7020AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7021attempt 7022to acquire the GPE lock but can deadlock since the GPE lock is already 7023held 7024at dispatch time. This code was introduced in version 20060831 as a 7025response 7026to Linux BZ 6881 and has since been removed from Linux. 7027 7028Add a function to dereference returned reference objects. Examines the 7029return 7030object from a call to AcpiEvaluateObject. Any Index or RefOf references 7031are 7032automatically dereferenced in an attempt to return something useful 7033(these 7034reference types cannot be converted into an external ACPI_OBJECT.) 7035Provides 7036MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7037 7038x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7039subtables for the MADT and one new subtable for the SRAT. Includes 7040disassembler and AcpiSrc support. Data from the Intel 64 Architecture 7041x2APIC 7042Specification, June 2008. 7043 7044Additional error checking for pathname utilities. Add error check after 7045all 7046calls to AcpiNsGetPathnameLength. Add status return from 7047AcpiNsBuildExternalPath and check after all calls. Add parameter 7048validation 7049to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7050 7051Return status from the global init function AcpiUtGlobalInitialize. This 7052is 7053used by both the kernel subsystem and the utilities such as iASL 7054compiler. 7055The function could possibly fail when the caches are initialized. Yang 7056Yi. 7057 7058Add a function to decode reference object types to strings. Created for 7059improved error messages. 7060 7061Improve object conversion error messages. Better error messages during 7062object 7063conversion from internal to the external ACPI_OBJECT. Used for external 7064calls 7065to AcpiEvaluateObject. 7066 7067Example Code and Data Size: These are the sizes for the OS-independent 7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7069debug version of the code includes the debug output trace mechanism and 7070has a 7071much larger code and data size. 7072 7073 Previous Release: 7074 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7075 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7076 Current Release: 7077 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7078 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7079 70802) iASL Compiler/Disassembler and Tools: 7081 7082Debugger: fix a possible hang when evaluating non-methods. Fixes a 7083problem 7084introduced in version 20080701. If the object being evaluated (via 7085execute 7086command) is not a method, the debugger can hang while trying to obtain 7087non- 7088existent parameters. 7089 7090iASL: relax error for using reserved "_T_x" identifiers. These names can 7091appear in a disassembled ASL file if they were emitted by the original 7092compiler. Instead of issuing an error or warning and forcing the user to 7093manually change these names, issue a remark instead. 7094 7095iASL: error if named object created in while loop. Emit an error if any 7096named 7097object is created within a While loop. If allowed, this code will 7098generate 7099a 7100run-time error on the second iteration of the loop when an attempt is 7101made 7102to 7103create the same named object twice. ACPICA bugzilla 730. 7104 7105iASL: Support absolute pathnames for include files. Add support for 7106absolute 7107pathnames within the Include operator. previously, only relative 7108pathnames 7109were supported. 7110 7111iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7112Descriptor. 7113The ACPI spec requires one interrupt minimum. BZ 423 7114 7115iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7116Handles the case for the Interrupt Resource Descriptor where 7117the ResourceSource argument is omitted but ResourceSourceIndex 7118is present. Now leave room for the Index. BZ 426 7119 7120iASL: Prevent error message if CondRefOf target does not exist. Fixes 7121cases 7122where an error message is emitted if the target does not exist. BZ 516 7123 7124iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7125(get ACPI tables on Windows). This was apparently broken in version 712620070919. 7127 7128AcpiXtract: Handle EOF while extracting data. Correctly handle the case 7129where 7130the EOF happens immediately after the last table in the input file. Print 7131completion message. Previously, no message was displayed in this case. 7132 7133---------------------------------------- 713401 July 2008. Summary of changes for version 20080701: 7135 71360) Git source tree / acpica.org 7137 7138Fixed a problem where a git-clone from http would not transfer the entire 7139source tree. 7140 71411) ACPI CA Core Subsystem: 7142 7143Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7144enable bit. Now performs a read-change-write of the enable register 7145instead 7146of simply writing out the cached enable mask. This will prevent 7147inadvertent 7148enabling of GPEs if a rogue GPE is received during initialization (before 7149GPE 7150handlers are installed.) 7151 7152Implemented a copy for dynamically loaded tables. Previously, dynamically 7153loaded tables were simply mapped - but on some machines this memory is 7154corrupted after suspend. Now copy the table to a local buffer. For the 7155OpRegion case, added checksum verify. Use the table length from the table 7156header, not the region length. For the Buffer case, use the table length 7157also. Dennis Noordsij, Bob Moore. BZ 10734 7158 7159Fixed a problem where the same ACPI table could not be dynamically loaded 7160and 7161unloaded more than once. Without this change, a table cannot be loaded 7162again 7163once it has been loaded/unloaded one time. The current mechanism does not 7164unregister a table upon an unload. During a load, if the same table is 7165found, 7166this no longer returns an exception. BZ 722 7167 7168Fixed a problem where the wrong descriptor length was calculated for the 7169EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7170EndTag 7171are calculated as 12 bytes long, but the actual length in the internal 7172descriptor is 16 because of the round-up to 8 on the 64-bit build. 7173Reported 7174by Linn Crosetto. BZ 728 7175 7176Fixed a possible memory leak in the Unload operator. The DdbHandle 7177returned 7178by Load() did not have its reference count decremented during unload, 7179leading 7180to a memory leak. Lin Ming. BZ 727 7181 7182Fixed a possible memory leak when deleting thermal/processor objects. Any 7183associated notify handlers (and objects) were not being deleted. Fiodor 7184Suietov. BZ 506 7185 7186Fixed the ordering of the ASCII names in the global mutex table to match 7187the 7188actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7189only. 7190Vegard Nossum. BZ 726 7191 7192Enhanced the AcpiGetObjectInfo interface to return the number of required 7193arguments if the object is a control method. Added this call to the 7194debugger 7195so the proper number of default arguments are passed to a method. This 7196prevents a warning when executing methods from AcpiExec. 7197 7198Added a check for an invalid handle in AcpiGetObjectInfo. Return 7199AE_BAD_PARAMETER if input handle is invalid. BZ 474 7200 7201Fixed an extraneous warning from exconfig.c on the 64-bit build. 7202 7203Example Code and Data Size: These are the sizes for the OS-independent 7204acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7205debug version of the code includes the debug output trace mechanism and 7206has a 7207much larger code and data size. 7208 7209 Previous Release: 7210 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7211 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7212 Current Release: 7213 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7214 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7215 72162) iASL Compiler/Disassembler and Tools: 7217 7218iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7219resource descriptor names. 7220 7221iASL: Detect invalid ASCII characters in input (windows version). Removed 7222the 7223"-CF" flag from the flex compile, enables correct detection of non-ASCII 7224characters in the input. BZ 441 7225 7226iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7227the 7228"result of operation not used" warning when the DDB handle returned from 7229LoadTable is not used. The warning is not needed. BZ 590 7230 7231AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7232method 7233to 7234pass address of table to the AML. Added option to disable OpRegion 7235simulation 7236to allow creation of an OpRegion with a real address that was passed to 7237_CFG. 7238All of this allows testing of the Load and Unload operators from 7239AcpiExec. 7240 7241Debugger: update tables command for unloaded tables. Handle unloaded 7242tables 7243and use the standard table header output routine. 7244 7245---------------------------------------- 724609 June 2008. Summary of changes for version 20080609: 7247 72481) ACPI CA Core Subsystem: 7249 7250Implemented a workaround for reversed _PRT entries. A significant number 7251of 7252BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7253change dynamically detects and repairs this problem. Provides 7254compatibility 7255with MS ACPI. BZ 6859 7256 7257Simplified the internal ACPI hardware interfaces to eliminate the locking 7258flag parameter from Register Read/Write. Added a new external interface, 7259AcpiGetRegisterUnlocked. 7260 7261Fixed a problem where the invocation of a GPE control method could hang. 7262This 7263was a regression introduced in 20080514. The new method argument count 7264validation mechanism can enter an infinite loop when a GPE method is 7265dispatched. Problem fixed by removing the obsolete code that passed GPE 7266block 7267information to the notify handler via the control method parameter 7268pointer. 7269 7270Fixed a problem where the _SST execution status was incorrectly returned 7271to 7272the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7273in 727420080514. _SST is optional and a NOT_FOUND exception should never be 7275returned. BZ 716 7276 7277Fixed a problem where a deleted object could be accessed from within the 7278AML 7279parser. This was a regression introduced in version 20080123 as a fix for 7280the 7281Unload operator. Lin Ming. BZ 10669 7282 7283Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7284operands 7285and eliminated the use of a negative index in a loop. Operands are now 7286displayed in the correct order, not backwards. This also fixes a 7287regression 7288introduced in 20080514 on 64-bit systems where the elimination of 7289ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7290715 7291 7292Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7293exit 7294path did not delete a locally allocated structure. 7295 7296Updated definitions for the DMAR and SRAT tables to synchronize with the 7297current specifications. Includes disassembler support. 7298 7299Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7300loop termination value was used. Loop terminated on iteration early, 7301missing 7302one mutex. Linn Crosetto 7303 7304Example Code and Data Size: These are the sizes for the OS-independent 7305acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7306debug version of the code includes the debug output trace mechanism and 7307has a 7308much larger code and data size. 7309 7310 Previous Release: 7311 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7312 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7313 Current Release: 7314 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7315 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7316 73172) iASL Compiler/Disassembler and Tools: 7318 7319Disassembler: Implemented support for EisaId() within _CID objects. Now 7320disassemble integer _CID objects back to EisaId invocations, including 7321multiple integers within _CID packages. Includes single-step support for 7322debugger also. 7323 7324Disassembler: Added support for DMAR and SRAT table definition changes. 7325 7326---------------------------------------- 732714 May 2008. Summary of changes for version 20080514: 7328 73291) ACPI CA Core Subsystem: 7330 7331Fixed a problem where GPEs were enabled too early during the ACPICA 7332initialization. This could lead to "handler not installed" errors on some 7333machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7334This 7335ensures that all operation regions and devices throughout the namespace 7336have 7337been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7338 7339Implemented a change to the enter sleep code. Moved execution of the _GTS 7340method to just before setting sleep enable bit. The execution was moved 7341from 7342AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7343immediately before the SLP_EN bit is set, as per the ACPI specification. 7344Luming Yu, BZ 1653. 7345 7346Implemented a fix to disable unknown GPEs (2nd version). Now always 7347disable 7348the GPE, even if ACPICA thinks that that it is already disabled. It is 7349possible that the AML or some other code has enabled the GPE unbeknownst 7350to 7351the ACPICA code. 7352 7353Fixed a problem with the Field operator where zero-length fields would 7354return 7355an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7356ASL 7357field declarations in Field(), BankField(), and IndexField(). BZ 10606. 7358 7359Implemented a fix for the Load operator, now load the table at the 7360namespace 7361root. This reverts a change introduced in version 20071019. The table is 7362now 7363loaded at the namespace root even though this goes against the ACPI 7364specification. This provides compatibility with other ACPI 7365implementations. 7366The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7367Ming. 7368 7369Fixed a problem where ACPICA would not Load() tables with unusual 7370signatures. 7371Now ignore ACPI table signature for Load() operator. Only "SSDT" is 7372acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7373Therefore, signature validation is worthless. Apparently MS ACPI accepts 7374such 7375signatures, ACPICA must be compatible. BZ 10454. 7376 7377Fixed a possible negative array index in AcpiUtValidateException. Added 7378NULL 7379fields to the exception string arrays to eliminate a -1 subtraction on 7380the 7381SubStatus field. 7382 7383Updated the debug tracking macros to reduce overall code and data size. 7384Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7385instead of pointers to static strings. Jan Beulich and Bob Moore. 7386 7387Implemented argument count checking in control method invocation via 7388AcpiEvaluateObject. Now emit an error if too few arguments, warning if 7389too 7390many. This applies only to extern programmatic control method execution, 7391not 7392method-to-method calls within the AML. Lin Ming. 7393 7394Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7395no 7396longer needed, especially with the removal of 16-bit support. It was 7397replaced 7398mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7399bit 7400on 740132/64-bit platforms is required. 7402 7403Added the C const qualifier for appropriate string constants -- mostly 7404MODULE_NAME and printf format strings. Jan Beulich. 7405 7406Example Code and Data Size: These are the sizes for the OS-independent 7407acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7408debug version of the code includes the debug output trace mechanism and 7409has a 7410much larger code and data size. 7411 7412 Previous Release: 7413 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7414 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7415 Current Release: 7416 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7417 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7418 74192) iASL Compiler/Disassembler and Tools: 7420 7421Implemented ACPI table revision ID validation in the disassembler. Zero 7422is 7423always invalid. For DSDTs, the ID controls the interpreter integer width. 74241 7425means 32-bit and this is unusual. 2 or greater is 64-bit. 7426 7427---------------------------------------- 742821 March 2008. Summary of changes for version 20080321: 7429 74301) ACPI CA Core Subsystem: 7431 7432Implemented an additional change to the GPE support in order to suppress 7433spurious or stray GPEs. The AcpiEvDisableGpe function will now 7434permanently 7435disable incoming GPEs that are neither enabled nor disabled -- meaning 7436that 7437the GPE is unknown to the system. This should prevent future interrupt 7438floods 7439from that GPE. BZ 6217 (Zhang Rui) 7440 7441Fixed a problem where NULL package elements were not returned to the 7442AcpiEvaluateObject interface correctly. The element was simply ignored 7443instead of returning a NULL ACPI_OBJECT package element, potentially 7444causing 7445a buffer overflow and/or confusing the caller who expected a fixed number 7446of 7447elements. BZ 10132 (Lin Ming, Bob Moore) 7448 7449Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7450Dword, 7451Qword), Field, BankField, and IndexField operators when invoked from 7452inside 7453an executing control method. In this case, these operators created 7454namespace 7455nodes that were incorrectly left marked as permanent nodes instead of 7456temporary nodes. This could cause a problem if there is race condition 7457between an exiting control method and a running namespace walk. (Reported 7458by 7459Linn Crosetto) 7460 7461Fixed a problem where the CreateField and CreateXXXField operators would 7462incorrectly allow duplicate names (the name of the field) with no 7463exception 7464generated. 7465 7466Implemented several changes for Notify handling. Added support for new 7467Notify 7468values (ACPI 2.0+) and improved the Notify debug output. Notify on 7469PowerResource objects is no longer allowed, as per the ACPI 7470specification. 7471(Bob Moore, Zhang Rui) 7472 7473All Reference Objects returned via the AcpiEvaluateObject interface are 7474now 7475marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 7476for 7477NULL objects - either NULL package elements or unresolved named 7478references. 7479 7480Fixed a problem where an extraneous debug message was produced for 7481package 7482objects (when debugging enabled). The message "Package List length larger 7483than NumElements count" is now produced in the correct case, and is now 7484an 7485error message rather than a debug message. Added a debug message for the 7486opposite case, where NumElements is larger than the Package List (the 7487package 7488will be padded out with NULL elements as per the ACPI spec.) 7489 7490Implemented several improvements for the output of the ASL "Debug" object 7491to 7492clarify and keep all data for a given object on one output line. 7493 7494Fixed two size calculation issues with the variable-length Start 7495Dependent 7496resource descriptor. 7497 7498Example Code and Data Size: These are the sizes for the OS-independent 7499acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7500debug version of the code includes the debug output trace mechanism and 7501has 7502a much larger code and data size. 7503 7504 Previous Release: 7505 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7506 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7507 Current Release: 7508 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7509 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7510 75112) iASL Compiler/Disassembler and Tools: 7512 7513Fixed a problem with the use of the Switch operator where execution of 7514the 7515containing method by multiple concurrent threads could cause an 7516AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 7517actual Switch opcode, it must be simulated with local named temporary 7518variables and if/else pairs. The solution chosen was to mark any method 7519that 7520uses Switch as Serialized, thus preventing multiple thread entries. BZ 7521469. 7522 7523---------------------------------------- 752413 February 2008. Summary of changes for version 20080213: 7525 75261) ACPI CA Core Subsystem: 7527 7528Implemented another MS compatibility design change for GPE/Notify 7529handling. 7530GPEs are now cleared/enabled asynchronously to allow all pending notifies 7531to 7532complete first. It is expected that the OSL will queue the enable request 7533behind all pending notify requests (may require changes to the local host 7534OSL 7535in AcpiOsExecute). Alexey Starikovskiy. 7536 7537Fixed a problem where buffer and package objects passed as arguments to a 7538control method via the external AcpiEvaluateObject interface could cause 7539an 7540AE_AML_INTERNAL exception depending on the order and type of operators 7541executed by the target control method. 7542 7543Fixed a problem where resource descriptor size optimization could cause a 7544problem when a _CRS resource template is passed to a _SRS method. The 7545_SRS 7546resource template must use the same descriptors (with the same size) as 7547returned from _CRS. This change affects the following resource 7548descriptors: 7549IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 75509487) 7551 7552Fixed a problem where a CopyObject to RegionField, BankField, and 7553IndexField 7554objects did not perform an implicit conversion as it should. These types 7555must 7556retain their initial type permanently as per the ACPI specification. 7557However, 7558a CopyObject to all other object types should not perform an implicit 7559conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 7560 7561Fixed a problem with the AcpiGetDevices interface where the mechanism to 7562match device CIDs did not examine the entire list of available CIDs, but 7563instead aborted on the first non-matching CID. Andrew Patterson. 7564 7565Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 7566was 7567inadvertently changed to return a 16-bit value instead of a 32-bit value, 7568truncating the upper dword of a 64-bit value. This macro is only used to 7569display debug output, so no incorrect calculations were made. Also, 7570reimplemented the macro so that a 64-bit shift is not performed by 7571inefficient compilers. 7572 7573Added missing va_end statements that should correspond with each va_start 7574statement. 7575 7576Example Code and Data Size: These are the sizes for the OS-independent 7577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7578debug version of the code includes the debug output trace mechanism and 7579has 7580a much larger code and data size. 7581 7582 Previous Release: 7583 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7584 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7585 Current Release: 7586 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7587 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7588 75892) iASL Compiler/Disassembler and Tools: 7590 7591Implemented full disassembler support for the following new ACPI tables: 7592BERT, EINJ, and ERST. Implemented partial disassembler support for the 7593complicated HEST table. These tables support the Windows Hardware Error 7594Architecture (WHEA). 7595 7596---------------------------------------- 759723 January 2008. Summary of changes for version 20080123: 7598 75991) ACPI CA Core Subsystem: 7600 7601Added the 2008 copyright to all module headers and signons. This affects 7602virtually every file in the ACPICA core subsystem, the iASL compiler, and 7603the tools/utilities. 7604 7605Fixed a problem with the SizeOf operator when used with Package and 7606Buffer 7607objects. These objects have deferred execution for some arguments, and 7608the 7609execution is now completed before the SizeOf is executed. This problem 7610caused 7611unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 7612BZ 76139558 7614 7615Implemented an enhancement to the interpreter "slack mode". In the 7616absence 7617of 7618an explicit return or an implicitly returned object from the last 7619executed 7620opcode, a control method will now implicitly return an integer of value 0 7621for 7622Microsoft compatibility. (Lin Ming) BZ 392 7623 7624Fixed a problem with the Load operator where an exception was not 7625returned 7626in 7627the case where the table is already loaded. (Lin Ming) BZ 463 7628 7629Implemented support for the use of DDBHandles as an Indexed Reference, as 7630per 7631the ACPI spec. (Lin Ming) BZ 486 7632 7633Implemented support for UserTerm (Method invocation) for the Unload 7634operator 7635as per the ACPI spec. (Lin Ming) BZ 580 7636 7637Fixed a problem with the LoadTable operator where the OemId and 7638OemTableId 7639input strings could cause unexpected failures if they were shorter than 7640the 7641maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 7642 7643Implemented support for UserTerm (Method invocation) for the Unload 7644operator 7645as per the ACPI spec. (Lin Ming) BZ 580 7646 7647Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 7648HEST, 7649IBFT, UEFI, WDAT. Disassembler support is forthcoming. 7650 7651Example Code and Data Size: These are the sizes for the OS-independent 7652acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7653debug version of the code includes the debug output trace mechanism and 7654has 7655a much larger code and data size. 7656 7657 Previous Release: 7658 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7659 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7660 Current Release: 7661 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7662 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7663 76642) iASL Compiler/Disassembler and Tools: 7665 7666Implemented support in the disassembler for checksum validation on 7667incoming 7668binary DSDTs and SSDTs. If incorrect, a message is displayed within the 7669table 7670header dump at the start of the disassembly. 7671 7672Implemented additional debugging information in the namespace listing 7673file 7674created during compilation. In addition to the namespace hierarchy, the 7675full 7676pathname to each namespace object is displayed. 7677 7678Fixed a problem with the disassembler where invalid ACPI tables could 7679cause 7680faults or infinite loops. 7681 7682Fixed an unexpected parse error when using the optional "parameter types" 7683list in a control method declaration. (Lin Ming) BZ 397 7684 7685Fixed a problem where two External declarations with the same name did 7686not 7687cause an error (Lin Ming) BZ 509 7688 7689Implemented support for full TermArgs (adding Argx, Localx and method 7690invocation) for the ParameterData parameter to the LoadTable operator. 7691(Lin 7692Ming) BZ 583,587 7693 7694---------------------------------------- 769519 December 2007. Summary of changes for version 20071219: 7696 76971) ACPI CA Core Subsystem: 7698 7699Implemented full support for deferred execution for the TermArg string 7700arguments for DataTableRegion. This enables forward references and full 7701operand resolution for the three string arguments. Similar to 7702OperationRegion 7703deferred argument execution.) Lin Ming. BZ 430 7704 7705Implemented full argument resolution support for the BankValue argument 7706to 7707BankField. Previously, only constants were supported, now any TermArg may 7708be 7709used. Lin Ming BZ 387, 393 7710 7711Fixed a problem with AcpiGetDevices where the search of a branch of the 7712device tree could be terminated prematurely. In accordance with the ACPI 7713specification, the search down the current branch is terminated if a 7714device 7715is both not present and not functional (instead of just not present.) 7716Yakui 7717Zhao. 7718 7719Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 7720if 7721the underlying AML code changed the GPE enable registers. Now, any 7722unknown 7723incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 7724disabled 7725instead of simply ignored. Rui Zhang. 7726 7727Fixed a problem with Index Fields where the Index register was 7728incorrectly 7729limited to a maximum of 32 bits. Now any size may be used. 7730 7731Fixed a couple memory leaks associated with "implicit return" objects 7732when 7733the AML Interpreter slack mode is enabled. Lin Ming BZ 349 7734 7735Example Code and Data Size: These are the sizes for the OS-independent 7736acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7737debug version of the code includes the debug output trace mechanism and 7738has 7739a much larger code and data size. 7740 7741 Previous Release: 7742 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7743 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7744 Current Release: 7745 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7746 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7747 7748---------------------------------------- 774914 November 2007. Summary of changes for version 20071114: 7750 77511) ACPI CA Core Subsystem: 7752 7753Implemented event counters for each of the Fixed Events, the ACPI SCI 7754(interrupt) itself, and control methods executed. Named 7755AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 7756These 7757should be useful for debugging and statistics. 7758 7759Implemented a new external interface, AcpiGetStatistics, to retrieve the 7760contents of the various event counters. Returns the current values for 7761AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 7762AcpiMethodCount. The interface can be expanded in the future if new 7763counters 7764are added. Device drivers should use this interface rather than access 7765the 7766counters directly. 7767 7768Fixed a problem with the FromBCD and ToBCD operators. With some 7769compilers, 7770the ShortDivide function worked incorrectly, causing problems with the 7771BCD 7772functions with large input values. A truncation from 64-bit to 32-bit 7773inadvertently occurred. Internal BZ 435. Lin Ming 7774 7775Fixed a problem with Index references passed as method arguments. 7776References 7777passed as arguments to control methods were dereferenced immediately 7778(before 7779control was passed to the called method). The references are now 7780correctly 7781passed directly to the called method. BZ 5389. Lin Ming 7782 7783Fixed a problem with CopyObject used in conjunction with the Index 7784operator. 7785The reference was incorrectly dereferenced before the copy. The reference 7786is 7787now correctly copied. BZ 5391. Lin Ming 7788 7789Fixed a problem with Control Method references within Package objects. 7790These 7791references are now correctly generated. This completes the package 7792construction overhaul that began in version 20071019. 7793 7794Example Code and Data Size: These are the sizes for the OS-independent 7795acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7796debug version of the code includes the debug output trace mechanism and 7797has 7798a much larger code and data size. 7799 7800 Previous Release: 7801 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7802 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7803 Current Release: 7804 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7805 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7806 7807 78082) iASL Compiler/Disassembler and Tools: 7809 7810The AcpiExec utility now installs handlers for all of the predefined 7811Operation Region types. New types supported are: PCI_Config, CMOS, and 7812PCIBARTarget. 7813 7814Fixed a problem with the 64-bit version of AcpiExec where the extended 7815(64- 7816bit) address fields for the DSDT and FACS within the FADT were not being 7817used, causing truncation of the upper 32-bits of these addresses. Lin 7818Ming 7819and Bob Moore 7820 7821---------------------------------------- 782219 October 2007. Summary of changes for version 20071019: 7823 78241) ACPI CA Core Subsystem: 7825 7826Fixed a problem with the Alias operator when the target of the alias is a 7827named ASL operator that opens a new scope -- Scope, Device, 7828PowerResource, 7829Processor, and ThermalZone. In these cases, any children of the original 7830operator could not be accessed via the alias, potentially causing 7831unexpected 7832AE_NOT_FOUND exceptions. (BZ 9067) 7833 7834Fixed a problem with the Package operator where all named references were 7835created as object references and left otherwise unresolved. According to 7836the 7837ACPI specification, a Package can only contain Data Objects or references 7838to 7839control methods. The implication is that named references to Data Objects 7840(Integer, Buffer, String, Package, BufferField, Field) should be resolved 7841immediately upon package creation. This is the approach taken with this 7842change. References to all other named objects (Methods, Devices, Scopes, 7843etc.) are all now properly created as reference objects. (BZ 5328) 7844 7845Reverted a change to Notify handling that was introduced in version 784620070508. This version changed the Notify handling from asynchronous to 7847fully synchronous (Device driver Notify handling with respect to the 7848Notify 7849ASL operator). It was found that this change caused more problems than it 7850solved and was removed by most users. 7851 7852Fixed a problem with the Increment and Decrement operators where the type 7853of 7854the target object could be unexpectedly and incorrectly changed. (BZ 353) 7855Lin Ming. 7856 7857Fixed a problem with the Load and LoadTable operators where the table 7858location within the namespace was ignored. Instead, the table was always 7859loaded into the root or current scope. Lin Ming. 7860 7861Fixed a problem with the Load operator when loading a table from a buffer 7862object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 7863 7864Fixed a problem with the Debug object where a store of a DdbHandle 7865reference 7866object to the Debug object could cause a fault. 7867 7868Added a table checksum verification for the Load operator, in the case 7869where 7870the load is from a buffer. (BZ 578). 7871 7872Implemented additional parameter validation for the LoadTable operator. 7873The 7874length of the input strings SignatureString, OemIdString, and OemTableId 7875are 7876now checked for maximum lengths. (BZ 582) Lin Ming. 7877 7878Example Code and Data Size: These are the sizes for the OS-independent 7879acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7880debug version of the code includes the debug output trace mechanism and 7881has 7882a much larger code and data size. 7883 7884 Previous Release: 7885 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7886 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7887 Current Release: 7888 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7889 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7890 7891 78922) iASL Compiler/Disassembler: 7893 7894Fixed a problem where if a single file was specified and the file did not 7895exist, no error message was emitted. (Introduced with wildcard support in 7896version 20070917.) 7897 7898---------------------------------------- 789919 September 2007. Summary of changes for version 20070919: 7900 79011) ACPI CA Core Subsystem: 7902 7903Designed and implemented new external interfaces to install and remove 7904handlers for ACPI table-related events. Current events that are defined 7905are 7906LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 7907they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 7908AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 7909 7910Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 7911(acpi_serialized option on Linux) could cause some systems to hang during 7912initialization. (Bob Moore) BZ 8171 7913 7914Fixed a problem where objects of certain types (Device, ThermalZone, 7915Processor, PowerResource) can be not found if they are declared and 7916referenced from within the same control method (Lin Ming) BZ 341 7917 7918Example Code and Data Size: These are the sizes for the OS-independent 7919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7920debug version of the code includes the debug output trace mechanism and 7921has 7922a much larger code and data size. 7923 7924 Previous Release: 7925 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7926 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7927 Current Release: 7928 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7929 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7930 7931 79322) iASL Compiler/Disassembler: 7933 7934Implemented support to allow multiple files to be compiled/disassembled 7935in 7936a 7937single invocation. This includes command line wildcard support for both 7938the 7939Windows and Unix versions of the compiler. This feature simplifies the 7940disassembly and compilation of multiple ACPI tables in a single 7941directory. 7942 7943---------------------------------------- 794408 May 2007. Summary of changes for version 20070508: 7945 79461) ACPI CA Core Subsystem: 7947 7948Implemented a Microsoft compatibility design change for the handling of 7949the 7950Notify AML operator. Previously, notify handlers were dispatched and 7951executed completely asynchronously in a deferred thread. The new design 7952still executes the notify handlers in a different thread, but the 7953original 7954thread that executed the Notify() now waits at a synchronization point 7955for 7956the notify handler to complete. Some machines depend on a synchronous 7957Notify 7958operator in order to operate correctly. 7959 7960Implemented support to allow Package objects to be passed as method 7961arguments to the external AcpiEvaluateObject interface. Previously, this 7962would return the AE_NOT_IMPLEMENTED exception. This feature had not been 7963implemented since there were no reserved control methods that required it 7964until recently. 7965 7966Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7967that 7968contained invalid non-zero values in reserved fields could cause later 7969failures because these fields have meaning in later revisions of the 7970FADT. 7971For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7972fields 7973are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7974 7975Fixed a problem where the Global Lock handle was not properly updated if 7976a 7977thread that acquired the Global Lock via executing AML code then 7978attempted 7979to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7980Joe 7981Liu. 7982 7983Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7984could be corrupted if the interrupt being removed was at the head of the 7985list. Reported by Linn Crosetto. 7986 7987Example Code and Data Size: These are the sizes for the OS-independent 7988acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7989debug version of the code includes the debug output trace mechanism and 7990has 7991a much larger code and data size. 7992 7993 Previous Release: 7994 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7995 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7996 Current Release: 7997 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7998 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7999 8000---------------------------------------- 800120 March 2007. Summary of changes for version 20070320: 8002 80031) ACPI CA Core Subsystem: 8004 8005Implemented a change to the order of interpretation and evaluation of AML 8006operand objects within the AML interpreter. The interpreter now evaluates 8007operands in the order that they appear in the AML stream (and the 8008corresponding ASL code), instead of in the reverse order (after the 8009entire 8010operand list has been parsed). The previous behavior caused several 8011subtle 8012incompatibilities with the Microsoft AML interpreter as well as being 8013somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8014 8015Implemented a change to the ACPI Global Lock support. All interfaces to 8016the 8017global lock now allow the same thread to acquire the lock multiple times. 8018This affects the AcpiAcquireGlobalLock external interface to the global 8019lock 8020as well as the internal use of the global lock to support AML fields -- a 8021control method that is holding the global lock can now simultaneously 8022access 8023AML fields that require global lock protection. Previously, in both 8024cases, 8025this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8026to 8027AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8028Controller. There is no change to the behavior of the AML Acquire 8029operator, 8030as this can already be used to acquire a mutex multiple times by the same 8031thread. BZ 8066. With assistance from Alexey Starikovskiy. 8032 8033Fixed a problem where invalid objects could be referenced in the AML 8034Interpreter after error conditions. During operand evaluation, ensure 8035that 8036the internal "Return Object" field is cleared on error and only valid 8037pointers are stored there. Caused occasional access to deleted objects 8038that 8039resulted in "large reference count" warning messages. Valery Podrezov. 8040 8041Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8042on 8043deeply nested control method invocations. BZ 7873, local BZ 487. Valery 8044Podrezov. 8045 8046Fixed an internal problem with the handling of result objects on the 8047interpreter result stack. BZ 7872. Valery Podrezov. 8048 8049Removed obsolete code that handled the case where AML_NAME_OP is the 8050target 8051of a reference (Reference.Opcode). This code was no longer necessary. BZ 80527874. Valery Podrezov. 8053 8054Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8055was 8056a 8057remnant from the previously discontinued 16-bit support. 8058 8059Example Code and Data Size: These are the sizes for the OS-independent 8060acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8061debug version of the code includes the debug output trace mechanism and 8062has 8063a much larger code and data size. 8064 8065 Previous Release: 8066 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8067 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8068 Current Release: 8069 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8070 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8071 8072---------------------------------------- 807326 January 2007. Summary of changes for version 20070126: 8074 80751) ACPI CA Core Subsystem: 8076 8077Added the 2007 copyright to all module headers and signons. This affects 8078virtually every file in the ACPICA core subsystem, the iASL compiler, and 8079the utilities. 8080 8081Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8082during a table load. A bad pointer was passed in the case where the DSDT 8083is 8084overridden, causing a fault in this case. 8085 8086Example Code and Data Size: These are the sizes for the OS-independent 8087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8088debug version of the code includes the debug output trace mechanism and 8089has 8090a much larger code and data size. 8091 8092 Previous Release: 8093 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8094 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8095 Current Release: 8096 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8097 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8098 8099---------------------------------------- 810015 December 2006. Summary of changes for version 20061215: 8101 81021) ACPI CA Core Subsystem: 8103 8104Support for 16-bit ACPICA has been completely removed since it is no 8105longer 8106necessary and it clutters the code. All 16-bit macros, types, and 8107conditional compiles have been removed, cleaning up and simplifying the 8108code 8109across the entire subsystem. DOS support is no longer needed since the 8110bootable Linux firmware kit is now available. 8111 8112The handler for the Global Lock is now removed during AcpiTerminate to 8113enable a clean subsystem restart, via the implementation of the 8114AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8115HP) 8116 8117Implemented enhancements to the multithreading support within the 8118debugger 8119to enable improved multithreading debugging and evaluation of the 8120subsystem. 8121(Valery Podrezov) 8122 8123Debugger: Enhanced the Statistics/Memory command to emit the total 8124(maximum) 8125memory used during the execution, as well as the maximum memory consumed 8126by 8127each of the various object types. (Valery Podrezov) 8128 8129Example Code and Data Size: These are the sizes for the OS-independent 8130acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8131debug version of the code includes the debug output trace mechanism and 8132has 8133a much larger code and data size. 8134 8135 Previous Release: 8136 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8137 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8138 Current Release: 8139 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8140 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8141 8142 81432) iASL Compiler/Disassembler and Tools: 8144 8145AcpiExec: Implemented a new option (-m) to display full memory use 8146statistics upon subsystem/program termination. (Valery Podrezov) 8147 8148---------------------------------------- 814909 November 2006. Summary of changes for version 20061109: 8150 81511) ACPI CA Core Subsystem: 8152 8153Optimized the Load ASL operator in the case where the source operand is 8154an 8155operation region. Simply map the operation region memory, instead of 8156performing a bytewise read. (Region must be of type SystemMemory, see 8157below.) 8158 8159Fixed the Load ASL operator for the case where the source operand is a 8160region field. A buffer object is also allowed as the source operand. BZ 8161480 8162 8163Fixed a problem where the Load ASL operator allowed the source operand to 8164be 8165an operation region of any type. It is now restricted to regions of type 8166SystemMemory, as per the ACPI specification. BZ 481 8167 8168Additional cleanup and optimizations for the new Table Manager code. 8169 8170AcpiEnable will now fail if all of the required ACPI tables are not 8171loaded 8172(FADT, FACS, DSDT). BZ 477 8173 8174Added #pragma pack(8/4) to acobject.h to ensure that the structures in 8175this 8176header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8177manually optimized to be aligned and will not work if it is byte-packed. 8178 8179Example Code and Data Size: These are the sizes for the OS-independent 8180acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8181debug version of the code includes the debug output trace mechanism and 8182has 8183a much larger code and data size. 8184 8185 Previous Release: 8186 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8187 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8188 Current Release: 8189 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8190 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8191 8192 81932) iASL Compiler/Disassembler and Tools: 8194 8195Fixed a problem where the presence of the _OSI predefined control method 8196within complex expressions could cause an internal compiler error. 8197 8198AcpiExec: Implemented full region support for multiple address spaces. 8199SpaceId is now part of the REGION object. BZ 429 8200 8201---------------------------------------- 820211 October 2006. Summary of changes for version 20061011: 8203 82041) ACPI CA Core Subsystem: 8205 8206Completed an AML interpreter performance enhancement for control method 8207execution. Previously a 2-pass parse/execution, control methods are now 8208completely parsed and executed in a single pass. This improves overall 8209interpreter performance by ~25%, reduces code size, and reduces CPU stack 8210use. (Valery Podrezov + interpreter changes in version 20051202 that 8211eliminated namespace loading during the pass one parse.) 8212 8213Implemented _CID support for PCI Root Bridge detection. If the _HID does 8214not 8215match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8216now 8217obtained and also checked for an ID match. 8218 8219Implemented additional support for the PCI _ADR execution: upsearch until 8220a 8221device scope is found before executing _ADR. This allows PCI_Config 8222operation regions to be declared locally within control methods 8223underneath 8224PCI device objects. 8225 8226Fixed a problem with a possible race condition between threads executing 8227AcpiWalkNamespace and the AML interpreter. This condition was removed by 8228modifying AcpiWalkNamespace to (by default) ignore all temporary 8229namespace 8230entries created during any concurrent control method execution. An 8231additional namespace race condition is known to exist between 8232AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8233investigation. 8234 8235Restructured the AML ParseLoop function, breaking it into several 8236subfunctions in order to reduce CPU stack use and improve 8237maintainability. 8238(Mikhail Kouzmich) 8239 8240AcpiGetHandle: Fix for parameter validation to detect invalid 8241combinations 8242of prefix handle and pathname. BZ 478 8243 8244Example Code and Data Size: These are the sizes for the OS-independent 8245acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8246debug version of the code includes the debug output trace mechanism and 8247has 8248a much larger code and data size. 8249 8250 Previous Release: 8251 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8252 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8253 Current Release: 8254 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8255 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8256 82572) iASL Compiler/Disassembler and Tools: 8258 8259Ported the -g option (get local ACPI tables) to the new ACPICA Table 8260Manager 8261to restore original behavior. 8262 8263---------------------------------------- 826427 September 2006. Summary of changes for version 20060927: 8265 82661) ACPI CA Core Subsystem: 8267 8268Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8269These functions now use a spinlock for mutual exclusion and the interrupt 8270level indication flag is not needed. 8271 8272Fixed a problem with the Global Lock where the lock could appear to be 8273obtained before it is actually obtained. The global lock semaphore was 8274inadvertently created with one unit instead of zero units. (BZ 464) 8275Fiodor 8276Suietov. 8277 8278Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8279during 8280a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8281 8282Example Code and Data Size: These are the sizes for the OS-independent 8283acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8284debug version of the code includes the debug output trace mechanism and 8285has 8286a much larger code and data size. 8287 8288 Previous Release: 8289 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8290 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8291 Current Release: 8292 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8293 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8294 8295 82962) iASL Compiler/Disassembler and Tools: 8297 8298Fixed a compilation problem with the pre-defined Resource Descriptor 8299field 8300names where an "object does not exist" error could be incorrectly 8301generated 8302if the parent ResourceTemplate pathname places the template within a 8303different namespace scope than the current scope. (BZ 7212) 8304 8305Fixed a problem where the compiler could hang after syntax errors 8306detected 8307in an ElseIf construct. (BZ 453) 8308 8309Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8310operator. An incorrect output filename was produced when this parameter 8311was 8312a null string (""). Now, the original input filename is used as the AML 8313output filename, with an ".aml" extension. 8314 8315Implemented a generic batch command mode for the AcpiExec utility 8316(execute 8317any AML debugger command) (Valery Podrezov). 8318 8319---------------------------------------- 832012 September 2006. Summary of changes for version 20060912: 8321 83221) ACPI CA Core Subsystem: 8323 8324Enhanced the implementation of the "serialized mode" of the interpreter 8325(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8326specified, instead of creating a serialization semaphore per control 8327method, 8328the interpreter lock is simply no longer released before a blocking 8329operation during control method execution. This effectively makes the AML 8330Interpreter single-threaded. The overhead of a semaphore per-method is 8331eliminated. 8332 8333Fixed a regression where an error was no longer emitted if a control 8334method 8335attempts to create 2 objects of the same name. This once again returns 8336AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8337that 8338will dynamically serialize the control method to possible prevent future 8339errors. (BZ 440) 8340 8341Integrated a fix for a problem with PCI Express HID detection in the PCI 8342Config Space setup procedure. (BZ 7145) 8343 8344Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8345AcpiHwInitialize function - the FADT registers are now validated when the 8346table is loaded. 8347 8348Added two new warnings during FADT verification - 1) if the FADT is 8349larger 8350than the largest known FADT version, and 2) if there is a mismatch 8351between 8352a 835332-bit block address and the 64-bit X counterpart (when both are non- 8354zero.) 8355 8356Example Code and Data Size: These are the sizes for the OS-independent 8357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8358debug version of the code includes the debug output trace mechanism and 8359has 8360a much larger code and data size. 8361 8362 Previous Release: 8363 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8364 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8365 Current Release: 8366 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8367 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8368 8369 83702) iASL Compiler/Disassembler and Tools: 8371 8372Fixed a problem with the implementation of the Switch() operator where 8373the 8374temporary variable was declared too close to the actual Switch, instead 8375of 8376at method level. This could cause a problem if the Switch() operator is 8377within a while loop, causing an error on the second iteration. (BZ 460) 8378 8379Disassembler - fix for error emitted for unknown type for target of scope 8380operator. Now, ignore it and continue. 8381 8382Disassembly of an FADT now verifies the input FADT and reports any errors 8383found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8384 8385Disassembly of raw data buffers with byte initialization data now 8386prefixes 8387each output line with the current buffer offset. 8388 8389Disassembly of ASF! table now includes all variable-length data fields at 8390the end of some of the subtables. 8391 8392The disassembler now emits a comment if a buffer appears to be a 8393ResourceTemplate, but cannot be disassembled as such because the EndTag 8394does 8395not appear at the very end of the buffer. 8396 8397AcpiExec - Added the "-t" command line option to enable the serialized 8398mode 8399of the AML interpreter. 8400 8401---------------------------------------- 840231 August 2006. Summary of changes for version 20060831: 8403 84041) ACPI CA Core Subsystem: 8405 8406Miscellaneous fixes for the Table Manager: 8407- Correctly initialize internal common FADT for all 64-bit "X" fields 8408- Fixed a couple table mapping issues during table load 8409- Fixed a couple alignment issues for IA64 8410- Initialize input array to zero in AcpiInitializeTables 8411- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8412AcpiGetTableByIndex 8413 8414Change for GPE support: when a "wake" GPE is received, all wake GPEs are 8415now 8416immediately disabled to prevent the waking GPE from firing again and to 8417prevent other wake GPEs from interrupting the wake process. 8418 8419Added the AcpiGpeCount global that tracks the number of processed GPEs, 8420to 8421be used for debugging systems with a large number of ACPI interrupts. 8422 8423Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8424both the ACPICA headers and the disassembler. 8425 8426Example Code and Data Size: These are the sizes for the OS-independent 8427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8428debug version of the code includes the debug output trace mechanism and 8429has 8430a much larger code and data size. 8431 8432 Previous Release: 8433 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8434 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8435 Current Release: 8436 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8437 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8438 8439 84402) iASL Compiler/Disassembler and Tools: 8441 8442Disassembler support for the DMAR ACPI table. 8443 8444---------------------------------------- 844523 August 2006. Summary of changes for version 20060823: 8446 84471) ACPI CA Core Subsystem: 8448 8449The Table Manager component has been completely redesigned and 8450reimplemented. The new design is much simpler, and reduces the overall 8451code 8452and data size of the kernel-resident ACPICA by approximately 5%. Also, it 8453is 8454now possible to obtain the ACPI tables very early during kernel 8455initialization, even before dynamic memory management is initialized. 8456(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 8457 8458Obsolete ACPICA interfaces: 8459 8460- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 8461init 8462time). 8463- AcpiLoadTable: Not needed. 8464- AcpiUnloadTable: Not needed. 8465 8466New ACPICA interfaces: 8467 8468- AcpiInitializeTables: Must be called before the table manager can be 8469used. 8470- AcpiReallocateRootTable: Used to transfer the root table to dynamically 8471allocated memory after it becomes available. 8472- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 8473tables 8474in the RSDT/XSDT. 8475 8476Other ACPICA changes: 8477 8478- AcpiGetTableHeader returns the actual mapped table header, not a copy. 8479Use 8480AcpiOsUnmapMemory to free this mapping. 8481- AcpiGetTable returns the actual mapped table. The mapping is managed 8482internally and must not be deleted by the caller. Use of this interface 8483causes no additional dynamic memory allocation. 8484- AcpiFindRootPointer: Support for physical addressing has been 8485eliminated, 8486it appeared to be unused. 8487- The interface to AcpiOsMapMemory has changed to be consistent with the 8488other allocation interfaces. 8489- The interface to AcpiOsGetRootPointer has changed to eliminate 8490unnecessary 8491parameters. 8492- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 849364- 8494bit platforms. Was previously 64 bits on all platforms. 8495- The interface to the ACPI Global Lock acquire/release macros have 8496changed 8497slightly since ACPICA no longer keeps a local copy of the FACS with a 8498constructed pointer to the actual global lock. 8499 8500Porting to the new table manager: 8501 8502- AcpiInitializeTables: Must be called once, and can be called anytime 8503during the OS initialization process. It allows the host to specify an 8504area 8505of memory to be used to store the internal version of the RSDT/XSDT (root 8506table). This allows the host to access ACPI tables before memory 8507management 8508is initialized and running. 8509- AcpiReallocateRootTable: Can be called after memory management is 8510running 8511to copy the root table to a dynamically allocated array, freeing up the 8512scratch memory specified in the call to AcpiInitializeTables. 8513- AcpiSubsystemInitialize: This existing interface is independent of the 8514Table Manager, and does not have to be called before the Table Manager 8515can 8516be used, it only must be called before the rest of ACPICA can be used. 8517- ACPI Tables: Some changes have been made to the names and structure of 8518the 8519actbl.h and actbl1.h header files and may require changes to existing 8520code. 8521For example, bitfields have been completely removed because of their lack 8522of 8523portability across C compilers. 8524- Update interfaces to the Global Lock acquire/release macros if local 8525versions are used. (see acwin.h) 8526 8527Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 8528 8529New files: tbfind.c 8530 8531Example Code and Data Size: These are the sizes for the OS-independent 8532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8533debug version of the code includes the debug output trace mechanism and 8534has 8535a much larger code and data size. 8536 8537 Previous Release: 8538 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8539 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8540 Current Release: 8541 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8542 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8543 8544 85452) iASL Compiler/Disassembler and Tools: 8546 8547No changes for this release. 8548 8549---------------------------------------- 855021 July 2006. Summary of changes for version 20060721: 8551 85521) ACPI CA Core Subsystem: 8553 8554The full source code for the ASL test suite used to validate the iASL 8555compiler and the ACPICA core subsystem is being released with the ACPICA 8556source for the first time. The source is contained in a separate package 8557and 8558consists of over 1100 files that exercise all ASL/AML operators. The 8559package 8560should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 8561Fiodor 8562Suietov) 8563 8564Completed a new design and implementation for support of the ACPI Global 8565Lock. On the OS side, the global lock is now treated as a standard AML 8566mutex. Previously, multiple OS threads could "acquire" the global lock 8567simultaneously. However, this could cause the BIOS to be starved out of 8568the 8569lock - especially in cases such as the Embedded Controller driver where 8570there is a tight coupling between the OS and the BIOS. 8571 8572Implemented an optimization for the ACPI Global Lock interrupt mechanism. 8573The Global Lock interrupt handler no longer queues the execution of a 8574separate thread to signal the global lock semaphore. Instead, the 8575semaphore 8576is signaled directly from the interrupt handler. 8577 8578Implemented support within the AML interpreter for package objects that 8579contain a larger AML length (package list length) than the package 8580element 8581count. In this case, the length of the package is truncated to match the 8582package element count. Some BIOS code apparently modifies the package 8583length 8584on the fly, and this change supports this behavior. Provides 8585compatibility 8586with the MS AML interpreter. (With assistance from Fiodor Suietov) 8587 8588Implemented a temporary fix for the BankValue parameter of a Bank Field 8589to 8590support all constant values, now including the Zero and One opcodes. 8591Evaluation of this parameter must eventually be converted to a full 8592TermArg 8593evaluation. A not-implemented error is now returned (temporarily) for 8594non- 8595constant values for this parameter. 8596 8597Fixed problem reports (Fiodor Suietov) integrated: 8598- Fix for premature object deletion after CopyObject on Operation Region 8599(BZ 8600350) 8601 8602Example Code and Data Size: These are the sizes for the OS-independent 8603acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8604debug version of the code includes the debug output trace mechanism and 8605has 8606a much larger code and data size. 8607 8608 Previous Release: 8609 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 8610 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 8611 Current Release: 8612 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8613 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8614 8615 86162) iASL Compiler/Disassembler and Tools: 8617 8618No changes for this release. 8619 8620---------------------------------------- 862107 July 2006. Summary of changes for version 20060707: 8622 86231) ACPI CA Core Subsystem: 8624 8625Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 8626that do not allow the initialization of address pointers within packed 8627structures - even though the hardware itself may support misaligned 8628transfers. Some of the debug data structures are packed by default to 8629minimize size. 8630 8631Added an error message for the case where AcpiOsGetThreadId() returns 8632zero. 8633A non-zero value is required by the core ACPICA code to ensure the proper 8634operation of AML mutexes and recursive control methods. 8635 8636The DSDT is now the only ACPI table that determines whether the AML 8637interpreter is in 32-bit or 64-bit mode. Not really a functional change, 8638but 8639the hooks for per-table 32/64 switching have been removed from the code. 8640A 8641clarification to the ACPI specification is forthcoming in ACPI 3.0B. 8642 8643Fixed a possible leak of an OwnerID in the error path of 8644AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 8645deletion to a single place in AcpiTbUninstallTable to correct possible 8646leaks 8647when using the AcpiTbDeleteTablesByType interface (with assistance from 8648Lance Ortiz.) 8649 8650Fixed a problem with Serialized control methods where the semaphore 8651associated with the method could be over-signaled after multiple method 8652invocations. 8653 8654Fixed two issues with the locking of the internal namespace data 8655structure. 8656Both the Unload() operator and AcpiUnloadTable interface now lock the 8657namespace during the namespace deletion associated with the table unload 8658(with assistance from Linn Crosetto.) 8659 8660Fixed problem reports (Valery Podrezov) integrated: 8661- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 8662 8663Fixed problem reports (Fiodor Suietov) integrated: 8664- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 8665- On Address Space handler deletion, needless deactivation call (BZ 374) 8666- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 8667375) 8668- Possible memory leak, Notify sub-objects of Processor, Power, 8669ThermalZone 8670(BZ 376) 8671- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 8672- Minimum Length of RSDT should be validated (BZ 379) 8673- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 8674Handler (BZ (380) 8675- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 8676loaded 8677(BZ 381) 8678 8679Example Code and Data Size: These are the sizes for the OS-independent 8680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8681debug version of the code includes the debug output trace mechanism and 8682has 8683a much larger code and data size. 8684 8685 Previous Release: 8686 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8687 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8688 Current Release: 8689 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8690 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8691 8692 86932) iASL Compiler/Disassembler and Tools: 8694 8695Fixed problem reports: 8696Compiler segfault when ASL contains a long (>1024) String declaration (BZ 8697436) 8698 8699---------------------------------------- 870023 June 2006. Summary of changes for version 20060623: 8701 87021) ACPI CA Core Subsystem: 8703 8704Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 8705allows the type to be customized to the host OS for improved efficiency 8706(since a spinlock is usually a very small object.) 8707 8708Implemented support for "ignored" bits in the ACPI registers. According 8709to 8710the ACPI specification, these bits should be preserved when writing the 8711registers via a read/modify/write cycle. There are 3 bits preserved in 8712this 8713manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 8714 8715Implemented the initial deployment of new OSL mutex interfaces. Since 8716some 8717host operating systems have separate mutex and semaphore objects, this 8718feature was requested. The base code now uses mutexes (and the new mutex 8719interfaces) wherever a binary semaphore was used previously. However, for 8720the current release, the mutex interfaces are defined as macros to map 8721them 8722to the existing semaphore interfaces. Therefore, no OSL changes are 8723required 8724at this time. (See acpiosxf.h) 8725 8726Fixed several problems with the support for the control method SyncLevel 8727parameter. The SyncLevel now works according to the ACPI specification 8728and 8729in concert with the Mutex SyncLevel parameter, since the current 8730SyncLevel 8731is a property of the executing thread. Mutual exclusion for control 8732methods 8733is now implemented with a mutex instead of a semaphore. 8734 8735Fixed three instances of the use of the C shift operator in the bitfield 8736support code (exfldio.c) to avoid the use of a shift value larger than 8737the 8738target data width. The behavior of C compilers is undefined in this case 8739and 8740can cause unpredictable results, and therefore the case must be detected 8741and 8742avoided. (Fiodor Suietov) 8743 8744Added an info message whenever an SSDT or OEM table is loaded dynamically 8745via the Load() or LoadTable() ASL operators. This should improve 8746debugging 8747capability since it will show exactly what tables have been loaded 8748(beyond 8749the tables present in the RSDT/XSDT.) 8750 8751Example Code and Data Size: These are the sizes for the OS-independent 8752acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8753debug version of the code includes the debug output trace mechanism and 8754has 8755a much larger code and data size. 8756 8757 Previous Release: 8758 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8759 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8760 Current Release: 8761 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8762 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8763 8764 87652) iASL Compiler/Disassembler and Tools: 8766 8767No changes for this release. 8768 8769---------------------------------------- 877008 June 2006. Summary of changes for version 20060608: 8771 87721) ACPI CA Core Subsystem: 8773 8774Converted the locking mutex used for the ACPI hardware to a spinlock. 8775This 8776change should eliminate all problems caused by attempting to acquire a 8777semaphore at interrupt level, and it means that all ACPICA external 8778interfaces that directly access the ACPI hardware can be safely called 8779from 8780interrupt level. OSL code that implements the semaphore interfaces should 8781be 8782able to eliminate any workarounds for being called at interrupt level. 8783 8784Fixed a regression introduced in 20060526 where the ACPI device 8785initialization could be prematurely aborted with an AE_NOT_FOUND if a 8786device 8787did not have an optional _INI method. 8788 8789Fixed an IndexField issue where a write to the Data Register should be 8790limited in size to the AccessSize (width) of the IndexField itself. (BZ 8791433, 8792Fiodor Suietov) 8793 8794Fixed problem reports (Valery Podrezov) integrated: 8795- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 8796 8797Fixed problem reports (Fiodor Suietov) integrated: 8798- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 8799 8800Removed four global mutexes that were obsolete and were no longer being 8801used. 8802 8803Example Code and Data Size: These are the sizes for the OS-independent 8804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8805debug version of the code includes the debug output trace mechanism and 8806has 8807a much larger code and data size. 8808 8809 Previous Release: 8810 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8811 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8812 Current Release: 8813 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8814 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8815 8816 88172) iASL Compiler/Disassembler and Tools: 8818 8819Fixed a fault when using -g option (get tables from registry) on Windows 8820machines. 8821 8822Fixed problem reports integrated: 8823- Generate error if CreateField NumBits parameter is zero. (BZ 405) 8824- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 8825Suietov) 8826- Global table revision override (-r) is ignored (BZ 413) 8827 8828---------------------------------------- 882926 May 2006. Summary of changes for version 20060526: 8830 88311) ACPI CA Core Subsystem: 8832 8833Restructured, flattened, and simplified the internal interfaces for 8834namespace object evaluation - resulting in smaller code, less CPU stack 8835use, 8836and fewer interfaces. (With assistance from Mikhail Kouzmich) 8837 8838Fixed a problem with the CopyObject operator where the first parameter 8839was 8840not typed correctly for the parser, interpreter, compiler, and 8841disassembler. 8842Caused various errors and unexpected behavior. 8843 8844Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 8845produced incorrect results with some C compilers. Since the behavior of C 8846compilers when the shift value is larger than the datatype width is 8847apparently not well defined, the interpreter now detects this condition 8848and 8849simply returns zero as expected in all such cases. (BZ 395) 8850 8851Fixed problem reports (Valery Podrezov) integrated: 8852- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 8853- Allow interpreter to handle nested method declarations (BZ 5361) 8854 8855Fixed problem reports (Fiodor Suietov) integrated: 8856- AcpiTerminate doesn't free debug memory allocation list objects (BZ 8857355) 8858- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 8859356) 8860- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 8861- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 8862- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 8863- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 8864- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 8865- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 8866- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 8867365) 8868- Status of the Global Initialization Handler call not used (BZ 366) 8869- Incorrect object parameter to Global Initialization Handler (BZ 367) 8870 8871Example Code and Data Size: These are the sizes for the OS-independent 8872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8873debug version of the code includes the debug output trace mechanism and 8874has 8875a much larger code and data size. 8876 8877 Previous Release: 8878 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8879 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8880 Current Release: 8881 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8882 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8883 8884 88852) iASL Compiler/Disassembler and Tools: 8886 8887Modified the parser to allow the names IO, DMA, and IRQ to be used as 8888namespace identifiers with no collision with existing resource descriptor 8889macro names. This provides compatibility with other ASL compilers and is 8890most useful for disassembly/recompilation of existing tables without 8891parse 8892errors. (With assistance from Thomas Renninger) 8893 8894Disassembler: fixed an incorrect disassembly problem with the 8895DataTableRegion and CopyObject operators. Fixed a possible fault during 8896disassembly of some Alias operators. 8897 8898---------------------------------------- 889912 May 2006. Summary of changes for version 20060512: 8900 89011) ACPI CA Core Subsystem: 8902 8903Replaced the AcpiOsQueueForExecution interface with a new interface named 8904AcpiOsExecute. The major difference is that the new interface does not 8905have 8906a Priority parameter, this appeared to be useless and has been replaced 8907by 8908a 8909Type parameter. The Type tells the host what type of execution is being 8910requested, such as global lock handler, notify handler, GPE handler, etc. 8911This allows the host to queue and execute the request as appropriate for 8912the 8913request type, possibly using different work queues and different 8914priorities 8915for the various request types. This enables fixes for multithreading 8916deadlock problems such as BZ #5534, and will require changes to all 8917existing 8918OS interface layers. (Alexey Starikovskiy and Bob Moore) 8919 8920Fixed a possible memory leak associated with the support for the so- 8921called 8922"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 8923Suietov) 8924 8925Fixed a problem with the Load() operator where a table load from an 8926operation region could overwrite an internal table buffer by up to 7 8927bytes 8928and cause alignment faults on IPF systems. (With assistance from Luming 8929Yu) 8930 8931Example Code and Data Size: These are the sizes for the OS-independent 8932acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8933debug version of the code includes the debug output trace mechanism and 8934has 8935a much larger code and data size. 8936 8937 Previous Release: 8938 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8939 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8940 Current Release: 8941 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8942 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8943 8944 8945 89462) iASL Compiler/Disassembler and Tools: 8947 8948Disassembler: Implemented support to cross reference the internal 8949namespace 8950and automatically generate ASL External() statements for symbols not 8951defined 8952within the current table being disassembled. This will simplify the 8953disassembly and recompilation of interdependent tables such as SSDTs 8954since 8955these statements will no longer have to be added manually. 8956 8957Disassembler: Implemented experimental support to automatically detect 8958invocations of external control methods and generate appropriate 8959External() 8960statements. This is problematic because the AML cannot be correctly 8961parsed 8962until the number of arguments for each control method is known. 8963Currently, 8964standalone method invocations and invocations as the source operand of a 8965Store() statement are supported. 8966 8967Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8968LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8969LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8970more readable and likely closer to the original ASL source. 8971 8972---------------------------------------- 897321 April 2006. Summary of changes for version 20060421: 8974 89751) ACPI CA Core Subsystem: 8976 8977Removed a device initialization optimization introduced in 20051216 where 8978the _STA method was not run unless an _INI was also present for the same 8979device. This optimization could cause problems because it could allow 8980_INI 8981methods to be run within a not-present device subtree. (If a not-present 8982device had no _INI, _STA would not be run, the not-present status would 8983not 8984be discovered, and the children of the device would be incorrectly 8985traversed.) 8986 8987Implemented a new _STA optimization where namespace subtrees that do not 8988contain _INI are identified and ignored during device initialization. 8989Selectively running _STA can significantly improve boot time on large 8990machines (with assistance from Len Brown.) 8991 8992Implemented support for the device initialization case where the returned 8993_STA flags indicate a device not-present but functioning. In this case, 8994_INI 8995is not run, but the device children are examined for presence, as per the 8996ACPI specification. 8997 8998Implemented an additional change to the IndexField support in order to 8999conform to MS behavior. The value written to the Index Register is not 9000simply a byte offset, it is a byte offset in units of the access width of 9001the parent Index Field. (Fiodor Suietov) 9002 9003Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 9004interface is called during the creation of all AML operation regions, and 9005allows the host OS to exert control over what addresses it will allow the 9006AML code to access. Operation Regions whose addresses are disallowed will 9007cause a runtime exception when they are actually accessed (will not 9008affect 9009or abort table loading.) See oswinxf or osunixxf for an example 9010implementation. 9011 9012Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 9013interface allows the host OS to match the various "optional" 9014interface/behavior strings for the _OSI predefined control method as 9015appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9016for an example implementation. 9017 9018Restructured and corrected various problems in the exception handling 9019code 9020paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9021(with assistance from Takayoshi Kochi.) 9022 9023Modified the Linux source converter to ignore quoted string literals 9024while 9025converting identifiers from mixed to lower case. This will correct 9026problems 9027with the disassembler and other areas where such strings must not be 9028modified. 9029 9030The ACPI_FUNCTION_* macros no longer require quotes around the function 9031name. This allows the Linux source converter to convert the names, now 9032that 9033the converter ignores quoted strings. 9034 9035Example Code and Data Size: These are the sizes for the OS-independent 9036acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9037debug version of the code includes the debug output trace mechanism and 9038has 9039a much larger code and data size. 9040 9041 Previous Release: 9042 9043 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9044 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9045 Current Release: 9046 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9047 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9048 9049 90502) iASL Compiler/Disassembler and Tools: 9051 9052Implemented 3 new warnings for iASL, and implemented multiple warning 9053levels 9054(w2 flag). 9055 90561) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9057not 9058WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9059check for the possible timeout, a warning is issued. 9060 90612) Useless operators: If an ASL operator does not specify an optional 9062target 9063operand and it also does not use the function return value from the 9064operator, a warning is issued since the operator effectively does 9065nothing. 9066 90673) Unreferenced objects: If a namespace object is created, but never 9068referenced, a warning is issued. This is a warning level 2 since there 9069are 9070cases where this is ok, such as when a secondary table is loaded that 9071uses 9072the unreferenced objects. Even so, care is taken to only flag objects 9073that 9074don't look like they will ever be used. For example, the reserved methods 9075(starting with an underscore) are usually not referenced because it is 9076expected that the OS will invoke them. 9077 9078---------------------------------------- 907931 March 2006. Summary of changes for version 20060331: 9080 90811) ACPI CA Core Subsystem: 9082 9083Implemented header file support for the following additional ACPI tables: 9084ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9085support, 9086all current and known ACPI tables are now defined in the ACPICA headers 9087and 9088are available for use by device drivers and other software. 9089 9090Implemented support to allow tables that contain ACPI names with invalid 9091characters to be loaded. Previously, this would cause the table load to 9092fail, but since there are several known cases of such tables on existing 9093machines, this change was made to enable ACPI support for them. Also, 9094this 9095matches the behavior of the Microsoft ACPI implementation. 9096 9097Fixed a couple regressions introduced during the memory optimization in 9098the 909920060317 release. The namespace node definition required additional 9100reorganization and an internal datatype that had been changed to 8-bit 9101was 9102restored to 32-bit. (Valery Podrezov) 9103 9104Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9105could be passed through to AcpiOsReleaseObject which is unexpected. Such 9106null pointers are now trapped and ignored, matching the behavior of the 9107previous implementation before the deployment of AcpiOsReleaseObject. 9108(Valery Podrezov, Fiodor Suietov) 9109 9110Fixed a memory mapping leak during the deletion of a SystemMemory 9111operation 9112region where a cached memory mapping was not deleted. This became a 9113noticeable problem for operation regions that are defined within 9114frequently 9115used control methods. (Dana Meyers) 9116 9117Reorganized the ACPI table header files into two main files: one for the 9118ACPI tables consumed by the ACPICA core, and another for the 9119miscellaneous 9120ACPI tables that are consumed by the drivers and other software. The 9121various 9122FADT definitions were merged into one common section and three different 9123tables (ACPI 1.0, 1.0+, and 2.0) 9124 9125Example Code and Data Size: These are the sizes for the OS-independent 9126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9127debug version of the code includes the debug output trace mechanism and 9128has 9129a much larger code and data size. 9130 9131 Previous Release: 9132 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9133 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9134 Current Release: 9135 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9136 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9137 9138 91392) iASL Compiler/Disassembler and Tools: 9140 9141Disassembler: Implemented support to decode and format all non-AML ACPI 9142tables (tables other than DSDTs and SSDTs.) This includes the new tables 9143added to the ACPICA headers, therefore all current and known ACPI tables 9144are 9145supported. 9146 9147Disassembler: The change to allow ACPI names with invalid characters also 9148enables the disassembly of such tables. Invalid characters within names 9149are 9150changed to '*' to make the name printable; the iASL compiler will still 9151generate an error for such names, however, since this is an invalid ACPI 9152character. 9153 9154Implemented an option for AcpiXtract (-a) to extract all tables found in 9155the 9156input file. The default invocation extracts only the DSDTs and SSDTs. 9157 9158Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 9159makefile for the AcpiXtract utility. 9160 9161---------------------------------------- 916217 March 2006. Summary of changes for version 20060317: 9163 91641) ACPI CA Core Subsystem: 9165 9166Implemented the use of a cache object for all internal namespace nodes. 9167Since there are about 1000 static nodes in a typical system, this will 9168decrease memory use for cache implementations that minimize per- 9169allocation 9170overhead (such as a slab allocator.) 9171 9172Removed the reference count mechanism for internal namespace nodes, since 9173it 9174was deemed unnecessary. This reduces the size of each namespace node by 9175about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9176case, 9177and 32 bytes for the 64-bit case. 9178 9179Optimized several internal data structures to reduce object size on 64- 9180bit 9181platforms by packing data within the 64-bit alignment. This includes the 9182frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9183instances corresponding to the namespace objects. 9184 9185Added two new strings for the predefined _OSI method: "Windows 2001.1 9186SP1" 9187and "Windows 2006". 9188 9189Split the allocation tracking mechanism out to a separate file, from 9190utalloc.c to uttrack.c. This mechanism appears to be only useful for 9191application-level code. Kernels may wish to not include uttrack.c in 9192distributions. 9193 9194Removed all remnants of the obsolete ACPI_REPORT_* macros and the 9195associated 9196code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9197macros.) 9198 9199Code and Data Size: These are the sizes for the acpica.lib produced by 9200the 9201Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9202ACPI 9203driver or OSPM code. The debug version of the code includes the debug 9204output 9205trace mechanism and has a much larger code and data size. Note that these 9206values will vary depending on the efficiency of the compiler and the 9207compiler options used during generation. 9208 9209 Previous Release: 9210 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9211 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9212 Current Release: 9213 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9214 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9215 9216 92172) iASL Compiler/Disassembler and Tools: 9218 9219Implemented an ANSI C version of the acpixtract utility. This version 9220will 9221automatically extract the DSDT and all SSDTs from the input acpidump text 9222file and dump the binary output to separate files. It can also display a 9223summary of the input file including the headers for each table found and 9224will extract any single ACPI table, with any signature. (See 9225source/tools/acpixtract) 9226 9227---------------------------------------- 922810 March 2006. Summary of changes for version 20060310: 9229 92301) ACPI CA Core Subsystem: 9231 9232Tagged all external interfaces to the subsystem with the new 9233ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9234assist 9235kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9236macro. The default definition is NULL. 9237 9238Added the ACPI_THREAD_ID type for the return value from 9239AcpiOsGetThreadId. 9240This allows the host to define this as necessary to simplify kernel 9241integration. The default definition is ACPI_NATIVE_UINT. 9242 9243Fixed two interpreter problems related to error processing, the deletion 9244of 9245objects, and placing invalid pointers onto the internal operator result 9246stack. BZ 6028, 6151 (Valery Podrezov) 9247 9248Increased the reference count threshold where a warning is emitted for 9249large 9250reference counts in order to eliminate unnecessary warnings on systems 9251with 9252large namespaces (especially 64-bit.) Increased the value from 0x400 to 92530x800. 9254 9255Due to universal disagreement as to the meaning of the 'c' in the 9256calloc() 9257function, the ACPI_MEM_CALLOCATE macro has been renamed to 9258ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9259ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9260ACPI_FREE. 9261 9262Code and Data Size: These are the sizes for the acpica.lib produced by 9263the 9264Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9265ACPI 9266driver or OSPM code. The debug version of the code includes the debug 9267output 9268trace mechanism and has a much larger code and data size. Note that these 9269values will vary depending on the efficiency of the compiler and the 9270compiler options used during generation. 9271 9272 Previous Release: 9273 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9274 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9275 Current Release: 9276 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9277 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9278 9279 92802) iASL Compiler/Disassembler: 9281 9282Disassembler: implemented support for symbolic resource descriptor 9283references. If a CreateXxxxField operator references a fixed offset 9284within 9285a 9286resource descriptor, a name is assigned to the descriptor and the offset 9287is 9288translated to the appropriate resource tag and pathname. The addition of 9289this support brings the disassembled code very close to the original ASL 9290source code and helps eliminate run-time errors when the disassembled 9291code 9292is modified (and recompiled) in such a way as to invalidate the original 9293fixed offsets. 9294 9295Implemented support for a Descriptor Name as the last parameter to the 9296ASL 9297Register() macro. This parameter was inadvertently left out of the ACPI 9298specification, and will be added for ACPI 3.0b. 9299 9300Fixed a problem where the use of the "_OSI" string (versus the full path 9301"\_OSI") caused an internal compiler error. ("No back ptr to op") 9302 9303Fixed a problem with the error message that occurs when an invalid string 9304is 9305used for a _HID object (such as one with an embedded asterisk: 9306"*PNP010A".) 9307The correct message is now displayed. 9308 9309---------------------------------------- 931017 February 2006. Summary of changes for version 20060217: 9311 93121) ACPI CA Core Subsystem: 9313 9314Implemented a change to the IndexField support to match the behavior of 9315the 9316Microsoft AML interpreter. The value written to the Index register is now 9317a 9318byte offset, no longer an index based upon the width of the Data 9319register. 9320This should fix IndexField problems seen on some machines where the Data 9321register is not exactly one byte wide. The ACPI specification will be 9322clarified on this point. 9323 9324Fixed a problem where several resource descriptor types could overrun the 9325internal descriptor buffer due to size miscalculation: VendorShort, 9326VendorLong, and Interrupt. This was noticed on IA64 machines, but could 9327affect all platforms. 9328 9329Fixed a problem where individual resource descriptors were misaligned 9330within 9331the internal buffer, causing alignment faults on IA64 platforms. 9332 9333Code and Data Size: These are the sizes for the acpica.lib produced by 9334the 9335Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9336ACPI 9337driver or OSPM code. The debug version of the code includes the debug 9338output 9339trace mechanism and has a much larger code and data size. Note that these 9340values will vary depending on the efficiency of the compiler and the 9341compiler options used during generation. 9342 9343 Previous Release: 9344 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9345 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9346 Current Release: 9347 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9348 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9349 9350 93512) iASL Compiler/Disassembler: 9352 9353Implemented support for new reserved names: _WDG and _WED are Microsoft 9354extensions for Windows Instrumentation Management, _TDL is a new ACPI- 9355defined method (Throttling Depth Limit.) 9356 9357Fixed a problem where a zero-length VendorShort or VendorLong resource 9358descriptor was incorrectly emitted as a descriptor of length one. 9359 9360---------------------------------------- 936110 February 2006. Summary of changes for version 20060210: 9362 93631) ACPI CA Core Subsystem: 9364 9365Removed a couple of extraneous ACPI_ERROR messages that appeared during 9366normal execution. These became apparent after the conversion from 9367ACPI_DEBUG_PRINT. 9368 9369Fixed a problem where the CreateField operator could hang if the BitIndex 9370or 9371NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9372 9373Fixed a problem where a DeRefOf operation on a buffer object incorrectly 9374failed with an exception. This also fixes a couple of related RefOf and 9375DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9376 9377Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9378of 9379AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9380BZ 93815480) 9382 9383Implemented a memory cleanup at the end of the execution of each 9384iteration 9385of an AML While() loop, preventing the accumulation of outstanding 9386objects. 9387(Valery Podrezov, BZ 5427) 9388 9389Eliminated a chunk of duplicate code in the object resolution code. 9390(Valery 9391Podrezov, BZ 5336) 9392 9393Fixed several warnings during the 64-bit code generation. 9394 9395The AcpiSrc source code conversion tool now inserts one line of 9396whitespace 9397after an if() statement that is followed immediately by a comment, 9398improving 9399readability of the Linux code. 9400 9401Code and Data Size: The current and previous library sizes for the core 9402subsystem are shown below. These are the code and data sizes for the 9403acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9404These 9405values do not include any ACPI driver or OSPM code. The debug version of 9406the 9407code includes the debug output trace mechanism and has a much larger code 9408and data size. Note that these values will vary depending on the 9409efficiency 9410of the compiler and the compiler options used during generation. 9411 9412 Previous Release: 9413 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9414 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9415 Current Release: 9416 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9417 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9418 9419 94202) iASL Compiler/Disassembler: 9421 9422Fixed a problem with the disassembly of a BankField operator with a 9423complex 9424expression for the BankValue parameter. 9425 9426---------------------------------------- 942727 January 2006. Summary of changes for version 20060127: 9428 94291) ACPI CA Core Subsystem: 9430 9431Implemented support in the Resource Manager to allow unresolved 9432namestring 9433references within resource package objects for the _PRT method. This 9434support 9435is in addition to the previously implemented unresolved reference support 9436within the AML parser. If the interpreter slack mode is enabled, these 9437unresolved references will be passed through to the caller as a NULL 9438package 9439entry. 9440 9441Implemented and deployed new macros and functions for error and warning 9442messages across the subsystem. These macros are simpler and generate less 9443code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9444ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9445macros remain defined to allow ACPI drivers time to migrate to the new 9446macros. 9447 9448Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9449the 9450Acquire/Release Lock OSL interfaces. 9451 9452Fixed a problem where Alias ASL operators are sometimes not correctly 9453resolved, in both the interpreter and the iASL compiler. 9454 9455Fixed several problems with the implementation of the 9456ConcatenateResTemplate 9457ASL operator. As per the ACPI specification, zero length buffers are now 9458treated as a single EndTag. One-length buffers always cause a fatal 9459exception. Non-zero length buffers that do not end with a full 2-byte 9460EndTag 9461cause a fatal exception. 9462 9463Fixed a possible structure overwrite in the AcpiGetObjectInfo external 9464interface. (With assistance from Thomas Renninger) 9465 9466Code and Data Size: The current and previous library sizes for the core 9467subsystem are shown below. These are the code and data sizes for the 9468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9469These 9470values do not include any ACPI driver or OSPM code. The debug version of 9471the 9472code includes the debug output trace mechanism and has a much larger code 9473and data size. Note that these values will vary depending on the 9474efficiency 9475of the compiler and the compiler options used during generation. 9476 9477 Previous Release: 9478 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9479 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9480 Current Release: 9481 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9482 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9483 9484 94852) iASL Compiler/Disassembler: 9486 9487Fixed an internal error that was generated for any forward references to 9488ASL 9489Alias objects. 9490 9491---------------------------------------- 949213 January 2006. Summary of changes for version 20060113: 9493 94941) ACPI CA Core Subsystem: 9495 9496Added 2006 copyright to all module headers and signons. This affects 9497virtually every file in the ACPICA core subsystem, iASL compiler, and the 9498utilities. 9499 9500Enhanced the ACPICA error reporting in order to simplify user migration 9501to 9502the non-debug version of ACPICA. Replaced all instances of the 9503ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 9504debug 9505levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 9506respectively. This preserves all error and warning messages in the non- 9507debug 9508version of the ACPICA code (this has been referred to as the "debug lite" 9509option.) Over 200 cases were converted to create a total of over 380 9510error/warning messages across the ACPICA code. This increases the code 9511and 9512data size of the default non-debug version of the code somewhat (about 951313K), 9514but all error/warning reporting may be disabled if desired (and code 9515eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 9516configuration option. The size of the debug version of ACPICA remains 9517about 9518the same. 9519 9520Fixed a memory leak within the AML Debugger "Set" command. One object was 9521not properly deleted for every successful invocation of the command. 9522 9523Code and Data Size: The current and previous library sizes for the core 9524subsystem are shown below. These are the code and data sizes for the 9525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9526These 9527values do not include any ACPI driver or OSPM code. The debug version of 9528the 9529code includes the debug output trace mechanism and has a much larger code 9530and data size. Note that these values will vary depending on the 9531efficiency 9532of the compiler and the compiler options used during generation. 9533 9534 Previous Release: 9535 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9536 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9537 Current Release: 9538 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9539 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9540 9541 95422) iASL Compiler/Disassembler: 9543 9544The compiler now officially supports the ACPI 3.0a specification that was 9545released on December 30, 2005. (Specification is available at 9546www.acpi.info) 9547 9548---------------------------------------- 954916 December 2005. Summary of changes for version 20051216: 9550 95511) ACPI CA Core Subsystem: 9552 9553Implemented optional support to allow unresolved names within ASL Package 9554objects. A null object is inserted in the package when a named reference 9555cannot be located in the current namespace. Enabled via the interpreter 9556slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 9557machines 9558that contain such code. 9559 9560Implemented an optimization to the initialization sequence that can 9561improve 9562boot time. During ACPI device initialization, the _STA method is now run 9563if 9564and only if the _INI method exists. The _STA method is used to determine 9565if 9566the device is present; An _INI can only be run if _STA returns present, 9567but 9568it is a waste of time to run the _STA method if the _INI does not exist. 9569(Prototype and assistance from Dong Wei) 9570 9571Implemented use of the C99 uintptr_t for the pointer casting macros if it 9572is 9573available in the current compiler. Otherwise, the default (void *) cast 9574is 9575used as before. 9576 9577Fixed some possible memory leaks found within the execution path of the 9578Break, Continue, If, and CreateField operators. (Valery Podrezov) 9579 9580Fixed a problem introduced in the 20051202 release where an exception is 9581generated during method execution if a control method attempts to declare 9582another method. 9583 9584Moved resource descriptor string constants that are used by both the AML 9585disassembler and AML debugger to the common utilities directory so that 9586these components are independent. 9587 9588Implemented support in the AcpiExec utility (-e switch) to globally 9589ignore 9590exceptions during control method execution (method is not aborted.) 9591 9592Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 9593generation. 9594 9595Code and Data Size: The current and previous library sizes for the core 9596subsystem are shown below. These are the code and data sizes for the 9597acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9598These 9599values do not include any ACPI driver or OSPM code. The debug version of 9600the 9601code includes the debug output trace mechanism and has a much larger code 9602and data size. Note that these values will vary depending on the 9603efficiency 9604of the compiler and the compiler options used during generation. 9605 9606 Previous Release: 9607 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9608 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9609 Current Release: 9610 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9611 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9612 9613 96142) iASL Compiler/Disassembler: 9615 9616Fixed a problem where a CPU stack overflow fault could occur if a 9617recursive 9618method call was made from within a Return statement. 9619 9620---------------------------------------- 962102 December 2005. Summary of changes for version 20051202: 9622 96231) ACPI CA Core Subsystem: 9624 9625Modified the parsing of control methods to no longer create namespace 9626objects during the first pass of the parse. Objects are now created only 9627during the execute phase, at the moment the namespace creation operator 9628is 9629encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 9630This 9631should eliminate ALREADY_EXISTS exceptions seen on some machines where 9632reentrant control methods are protected by an AML mutex. The mutex will 9633now 9634correctly block multiple threads from attempting to create the same 9635object 9636more than once. 9637 9638Increased the number of available Owner Ids for namespace object tracking 9639from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 9640on 9641some machines with a large number of ACPI tables (either static or 9642dynamic). 9643 9644Fixed a problem with the AcpiExec utility where a fault could occur when 9645the 9646-b switch (batch mode) is used. 9647 9648Enhanced the namespace dump routine to output the owner ID for each 9649namespace object. 9650 9651Code and Data Size: The current and previous library sizes for the core 9652subsystem are shown below. These are the code and data sizes for the 9653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9654These 9655values do not include any ACPI driver or OSPM code. The debug version of 9656the 9657code includes the debug output trace mechanism and has a much larger code 9658and data size. Note that these values will vary depending on the 9659efficiency 9660of the compiler and the compiler options used during generation. 9661 9662 Previous Release: 9663 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9664 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9665 Current Release: 9666 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9667 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9668 9669 96702) iASL Compiler/Disassembler: 9671 9672Fixed a parse error during compilation of certain Switch/Case constructs. 9673To 9674simplify the parse, the grammar now allows for multiple Default 9675statements 9676and this error is now detected and flagged during the analysis phase. 9677 9678Disassembler: The disassembly now includes the contents of the original 9679table header within a comment at the start of the file. This includes the 9680name and version of the original ASL compiler. 9681 9682---------------------------------------- 968317 November 2005. Summary of changes for version 20051117: 9684 96851) ACPI CA Core Subsystem: 9686 9687Fixed a problem in the AML parser where the method thread count could be 9688decremented below zero if any errors occurred during the method parse 9689phase. 9690This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 9691machines. 9692This also fixed a related regression with the mechanism that detects and 9693corrects methods that cannot properly handle reentrancy (related to the 9694deployment of the new OwnerId mechanism.) 9695 9696Eliminated the pre-parsing of control methods (to detect errors) during 9697table load. Related to the problem above, this was causing unwind issues 9698if 9699any errors occurred during the parse, and it seemed to be overkill. A 9700table 9701load should not be aborted if there are problems with any single control 9702method, thus rendering this feature rather pointless. 9703 9704Fixed a problem with the new table-driven resource manager where an 9705internal 9706buffer overflow could occur for small resource templates. 9707 9708Implemented a new external interface, AcpiGetVendorResource. This 9709interface 9710will find and return a vendor-defined resource descriptor within a _CRS 9711or 9712_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 9713Helgaas. 9714 9715Removed the length limit (200) on string objects as per the upcoming ACPI 97163.0A specification. This affects the following areas of the interpreter: 97171) 9718any implicit conversion of a Buffer to a String, 2) a String object 9719result 9720of the ASL Concatentate operator, 3) the String object result of the ASL 9721ToString operator. 9722 9723Fixed a problem in the Windows OS interface layer (OSL) where a 9724WAIT_FOREVER 9725on a semaphore object would incorrectly timeout. This allows the 9726multithreading features of the AcpiExec utility to work properly under 9727Windows. 9728 9729Updated the Linux makefiles for the iASL compiler and AcpiExec to include 9730the recently added file named "utresrc.c". 9731 9732Code and Data Size: The current and previous library sizes for the core 9733subsystem are shown below. These are the code and data sizes for the 9734acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9735These 9736values do not include any ACPI driver or OSPM code. The debug version of 9737the 9738code includes the debug output trace mechanism and has a much larger code 9739and data size. Note that these values will vary depending on the 9740efficiency 9741of the compiler and the compiler options used during generation. 9742 9743 Previous Release: 9744 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9745 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9746 Current Release: 9747 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9748 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9749 9750 97512) iASL Compiler/Disassembler: 9752 9753Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 9754specification. For the iASL compiler, this means that string literals 9755within 9756the source ASL can be of any length. 9757 9758Enhanced the listing output to dump the AML code for resource descriptors 9759immediately after the ASL code for each descriptor, instead of in a block 9760at 9761the end of the entire resource template. 9762 9763Enhanced the compiler debug output to dump the entire original parse tree 9764constructed during the parse phase, before any transforms are applied to 9765the 9766tree. The transformed tree is dumped also. 9767 9768---------------------------------------- 976902 November 2005. Summary of changes for version 20051102: 9770 97711) ACPI CA Core Subsystem: 9772 9773Modified the subsystem initialization sequence to improve GPE support. 9774The 9775GPE initialization has been split into two parts in order to defer 9776execution 9777of the _PRW methods (Power Resources for Wake) until after the hardware 9778is 9779fully initialized and the SCI handler is installed. This allows the _PRW 9780methods to access fields protected by the Global Lock. This will fix 9781systems 9782where a NO_GLOBAL_LOCK exception has been seen during initialization. 9783 9784Converted the ACPI internal object disassemble and display code within 9785the 9786AML debugger to fully table-driven operation, reducing code size and 9787increasing maintainability. 9788 9789Fixed a regression with the ConcatenateResTemplate() ASL operator 9790introduced 9791in the 20051021 release. 9792 9793Implemented support for "local" internal ACPI object types within the 9794debugger "Object" command and the AcpiWalkNamespace external interfaces. 9795These local types include RegionFields, BankFields, IndexFields, Alias, 9796and 9797reference objects. 9798 9799Moved common AML resource handling code into a new file, "utresrc.c". 9800This 9801code is shared by both the Resource Manager and the AML Debugger. 9802 9803Code and Data Size: The current and previous library sizes for the core 9804subsystem are shown below. These are the code and data sizes for the 9805acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9806These 9807values do not include any ACPI driver or OSPM code. The debug version of 9808the 9809code includes the debug output trace mechanism and has a much larger code 9810and data size. Note that these values will vary depending on the 9811efficiency 9812of the compiler and the compiler options used during generation. 9813 9814 Previous Release: 9815 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9816 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9817 Current Release: 9818 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9819 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9820 9821 98222) iASL Compiler/Disassembler: 9823 9824Fixed a problem with very large initializer lists (more than 4000 9825elements) 9826for both Buffer and Package objects where the parse stack could overflow. 9827 9828Enhanced the pre-compile source code scan for non-ASCII characters to 9829ignore 9830characters within comment fields. The scan is now always performed and is 9831no 9832longer optional, detecting invalid characters within a source file 9833immediately rather than during the parse phase or later. 9834 9835Enhanced the ASL grammar definition to force early reductions on all 9836list- 9837style grammar elements so that the overall parse stack usage is greatly 9838reduced. This should improve performance and reduce the possibility of 9839parse 9840stack overflow. 9841 9842Eliminated all reduce/reduce conflicts in the iASL parser generation. 9843Also, 9844with the addition of a %expected statement, the compiler generates from 9845source with no warnings. 9846 9847Fixed a possible segment fault in the disassembler if the input filename 9848does not contain a "dot" extension (Thomas Renninger). 9849 9850---------------------------------------- 985121 October 2005. Summary of changes for version 20051021: 9852 98531) ACPI CA Core Subsystem: 9854 9855Implemented support for the EM64T and other x86-64 processors. This 9856essentially entails recognizing that these processors support non-aligned 9857memory transfers. Previously, all 64-bit processors were assumed to lack 9858hardware support for non-aligned transfers. 9859 9860Completed conversion of the Resource Manager to nearly full table-driven 9861operation. Specifically, the resource conversion code (convert AML to 9862internal format and the reverse) and the debug code to dump internal 9863resource descriptors are fully table-driven, reducing code and data size 9864and 9865improving maintainability. 9866 9867The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 9868word 9869on 64-bit processors instead of a fixed 32-bit word. (With assistance 9870from 9871Alexey Starikovskiy) 9872 9873Implemented support within the resource conversion code for the Type- 9874Specific byte within the various ACPI 3.0 *WordSpace macros. 9875 9876Fixed some issues within the resource conversion code for the type- 9877specific 9878flags for both Memory and I/O address resource descriptors. For Memory, 9879implemented support for the MTP and TTP flags. For I/O, split the TRS and 9880TTP flags into two separate fields. 9881 9882Code and Data Size: The current and previous library sizes for the core 9883subsystem are shown below. These are the code and data sizes for the 9884acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9885These 9886values do not include any ACPI driver or OSPM code. The debug version of 9887the 9888code includes the debug output trace mechanism and has a much larger code 9889and data size. Note that these values will vary depending on the 9890efficiency 9891of the compiler and the compiler options used during generation. 9892 9893 Previous Release: 9894 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9895 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9896 Current Release: 9897 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9898 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9899 9900 9901 99022) iASL Compiler/Disassembler: 9903 9904Relaxed a compiler restriction that disallowed a ResourceIndex byte if 9905the 9906corresponding ResourceSource string was not also present in a resource 9907descriptor declaration. This restriction caused problems with existing 9908AML/ASL code that includes the Index byte without the string. When such 9909AML 9910was disassembled, it could not be compiled without modification. Further, 9911the modified code created a resource template with a different size than 9912the 9913original, breaking code that used fixed offsets into the resource 9914template 9915buffer. 9916 9917Removed a recent feature of the disassembler to ignore a lone 9918ResourceIndex 9919byte. This byte is now emitted if present so that the exact AML can be 9920reproduced when the disassembled code is recompiled. 9921 9922Improved comments and text alignment for the resource descriptor code 9923emitted by the disassembler. 9924 9925Implemented disassembler support for the ACPI 3.0 AccessSize field within 9926a 9927Register() resource descriptor. 9928 9929---------------------------------------- 993030 September 2005. Summary of changes for version 20050930: 9931 99321) ACPI CA Core Subsystem: 9933 9934Completed a major overhaul of the Resource Manager code - specifically, 9935optimizations in the area of the AML/internal resource conversion code. 9936The 9937code has been optimized to simplify and eliminate duplicated code, CPU 9938stack 9939use has been decreased by optimizing function parameters and local 9940variables, and naming conventions across the manager have been 9941standardized 9942for clarity and ease of maintenance (this includes function, parameter, 9943variable, and struct/typedef names.) The update may force changes in some 9944driver code, depending on how resources are handled by the host OS. 9945 9946All Resource Manager dispatch and information tables have been moved to a 9947single location for clarity and ease of maintenance. One new file was 9948created, named "rsinfo.c". 9949 9950The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9951guarantee that the argument is not evaluated twice, making them less 9952prone 9953to macro side-effects. However, since there exists the possibility of 9954additional stack use if a particular compiler cannot optimize them (such 9955as 9956in the debug generation case), the original macros are optionally 9957available. 9958Note that some invocations of the return_VALUE macro may now cause size 9959mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9960to 9961eliminate these. (From Randy Dunlap) 9962 9963Implemented a new mechanism to enable debug tracing for individual 9964control 9965methods. A new external interface, AcpiDebugTrace, is provided to enable 9966this mechanism. The intent is to allow the host OS to easily enable and 9967disable tracing for problematic control methods. This interface can be 9968easily exposed to a user or debugger interface if desired. See the file 9969psxface.c for details. 9970 9971AcpiUtCallocate will now return a valid pointer if a length of zero is 9972specified - a length of one is used and a warning is issued. This matches 9973the behavior of AcpiUtAllocate. 9974 9975Code and Data Size: The current and previous library sizes for the core 9976subsystem are shown below. These are the code and data sizes for the 9977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9978These 9979values do not include any ACPI driver or OSPM code. The debug version of 9980the 9981code includes the debug output trace mechanism and has a much larger code 9982and data size. Note that these values will vary depending on the 9983efficiency 9984of the compiler and the compiler options used during generation. 9985 9986 Previous Release: 9987 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9988 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9989 Current Release: 9990 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9991 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9992 9993 99942) iASL Compiler/Disassembler: 9995 9996A remark is issued if the effective compile-time length of a package or 9997buffer is zero. Previously, this was a warning. 9998 9999---------------------------------------- 1000016 September 2005. Summary of changes for version 20050916: 10001 100021) ACPI CA Core Subsystem: 10003 10004Fixed a problem within the Resource Manager where support for the Generic 10005Register descriptor was not fully implemented. This descriptor is now 10006fully 10007recognized, parsed, disassembled, and displayed. 10008 10009Completely restructured the Resource Manager code to utilize table-driven 10010dispatch and lookup, eliminating many of the large switch() statements. 10011This 10012reduces overall subsystem code size and code complexity. Affects the 10013resource parsing and construction, disassembly, and debug dump output. 10014 10015Cleaned up and restructured the debug dump output for all resource 10016descriptors. Improved readability of the output and reduced code size. 10017 10018Fixed a problem where changes to internal data structures caused the 10019optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10020 10021Code and Data Size: The current and previous library sizes for the core 10022subsystem are shown below. These are the code and data sizes for the 10023acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10024These 10025values do not include any ACPI driver or OSPM code. The debug version of 10026the 10027code includes the debug output trace mechanism and has a much larger code 10028and data size. Note that these values will vary depending on the 10029efficiency 10030of the compiler and the compiler options used during generation. 10031 10032 Previous Release: 10033 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10034 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10035 Current Release: 10036 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10037 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10038 10039 100402) iASL Compiler/Disassembler: 10041 10042Updated the disassembler to automatically insert an EndDependentFn() 10043macro 10044into the ASL stream if this macro is missing in the original AML code, 10045simplifying compilation of the resulting ASL module. 10046 10047Fixed a problem in the disassembler where a disassembled ResourceSource 10048string (within a large resource descriptor) was not surrounded by quotes 10049and 10050not followed by a comma, causing errors when the resulting ASL module was 10051compiled. Also, escape sequences within a ResourceSource string are now 10052handled correctly (especially "\\") 10053 10054---------------------------------------- 1005502 September 2005. Summary of changes for version 20050902: 10056 100571) ACPI CA Core Subsystem: 10058 10059Fixed a problem with the internal Owner ID allocation and deallocation 10060mechanisms for control method execution and recursive method invocation. 10061This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10062messages seen on some systems. Recursive method invocation depth is 10063currently limited to 255. (Alexey Starikovskiy) 10064 10065Completely eliminated all vestiges of support for the "module-level 10066executable code" until this support is fully implemented and debugged. 10067This 10068should eliminate the NO_RETURN_VALUE exceptions seen during table load on 10069some systems that invoke this support. 10070 10071Fixed a problem within the resource manager code where the transaction 10072flags 10073for a 64-bit address descriptor were handled incorrectly in the type- 10074specific flag byte. 10075 10076Consolidated duplicate code within the address descriptor resource 10077manager 10078code, reducing overall subsystem code size. 10079 10080Fixed a fault when using the AML debugger "disassemble" command to 10081disassemble individual control methods. 10082 10083Removed references to the "release_current" directory within the Unix 10084release package. 10085 10086Code and Data Size: The current and previous core subsystem library sizes 10087are shown below. These are the code and data sizes for the acpica.lib 10088produced by the Microsoft Visual C++ 6.0 compiler. These values do not 10089include any ACPI driver or OSPM code. The debug version of the code 10090includes 10091the debug output trace mechanism and has a much larger code and data 10092size. 10093Note that these values will vary depending on the efficiency of the 10094compiler 10095and the compiler options used during generation. 10096 10097 Previous Release: 10098 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10099 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10100 Current Release: 10101 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10102 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10103 10104 101052) iASL Compiler/Disassembler: 10106 10107Implemented an error check for illegal duplicate values in the interrupt 10108and 10109dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10110Interrupt(). 10111 10112Implemented error checking for the Irq() and IrqNoFlags() macros to 10113detect 10114too many values in the interrupt list (16 max) and invalid values in the 10115list (range 0 - 15) 10116 10117The maximum length string literal within an ASL file is now restricted to 10118200 characters as per the ACPI specification. 10119 10120Fixed a fault when using the -ln option (generate namespace listing). 10121 10122Implemented an error check to determine if a DescriptorName within a 10123resource descriptor has already been used within the current scope. 10124 10125---------------------------------------- 1012615 August 2005. Summary of changes for version 20050815: 10127 101281) ACPI CA Core Subsystem: 10129 10130Implemented a full bytewise compare to determine if a table load request 10131is 10132attempting to load a duplicate table. The compare is performed if the 10133table 10134signatures and table lengths match. This will allow different tables with 10135the same OEM Table ID and revision to be loaded - probably against the 10136ACPI 10137specification, but discovered in the field nonetheless. 10138 10139Added the changes.txt logfile to each of the zipped release packages. 10140 10141Code and Data Size: Current and previous core subsystem library sizes are 10142shown below. These are the code and data sizes for the acpica.lib 10143produced 10144by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10145any ACPI driver or OSPM code. The debug version of the code includes the 10146debug output trace mechanism and has a much larger code and data size. 10147Note 10148that these values will vary depending on the efficiency of the compiler 10149and 10150the compiler options used during generation. 10151 10152 Previous Release: 10153 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10154 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10155 Current Release: 10156 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10157 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10158 10159 101602) iASL Compiler/Disassembler: 10161 10162Fixed a problem where incorrect AML code could be generated for Package 10163objects if optimization is disabled (via the -oa switch). 10164 10165Fixed a problem with where incorrect AML code is generated for variable- 10166length packages when the package length is not specified and the number 10167of 10168initializer values is greater than 255. 10169 10170 10171---------------------------------------- 1017229 July 2005. Summary of changes for version 20050729: 10173 101741) ACPI CA Core Subsystem: 10175 10176Implemented support to ignore an attempt to install/load a particular 10177ACPI 10178table more than once. Apparently there exists BIOS code that repeatedly 10179attempts to load the same SSDT upon certain events. With assistance from 10180Venkatesh Pallipadi. 10181 10182Restructured the main interface to the AML parser in order to correctly 10183handle all exceptional conditions. This will prevent leakage of the 10184OwnerId 10185resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10186some 10187machines. With assistance from Alexey Starikovskiy. 10188 10189Support for "module level code" has been disabled in this version due to 10190a 10191number of issues that have appeared on various machines. The support can 10192be 10193enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10194compilation. When the issues are fully resolved, the code will be enabled 10195by 10196default again. 10197 10198Modified the internal functions for debug print support to define the 10199FunctionName parameter as a (const char *) for compatibility with 10200compiler 10201built-in macros such as __FUNCTION__, etc. 10202 10203Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10204 10205Implemented support to display an object count summary for the AML 10206Debugger 10207commands Object and Methods. 10208 10209Code and Data Size: Current and previous core subsystem library sizes are 10210shown below. These are the code and data sizes for the acpica.lib 10211produced 10212by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10213any ACPI driver or OSPM code. The debug version of the code includes the 10214debug output trace mechanism and has a much larger code and data size. 10215Note 10216that these values will vary depending on the efficiency of the compiler 10217and 10218the compiler options used during generation. 10219 10220 Previous Release: 10221 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10222 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10223 Current Release: 10224 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10225 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10226 10227 102282) iASL Compiler/Disassembler: 10229 10230Fixed a regression that appeared in the 20050708 version of the compiler 10231where an error message was inadvertently emitted for invocations of the 10232_OSI 10233reserved control method. 10234 10235---------------------------------------- 1023608 July 2005. Summary of changes for version 20050708: 10237 102381) ACPI CA Core Subsystem: 10239 10240The use of the CPU stack in the debug version of the subsystem has been 10241considerably reduced. Previously, a debug structure was declared in every 10242function that used the debug macros. This structure has been removed in 10243favor of declaring the individual elements as parameters to the debug 10244functions. This reduces the cumulative stack use during nested execution 10245of 10246ACPI function calls at the cost of a small increase in the code size of 10247the 10248debug version of the subsystem. With assistance from Alexey Starikovskiy 10249and 10250Len Brown. 10251 10252Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10253headers to define a macro that will return the current function name at 10254runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10255by 10256the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10257compiler-dependent header, the function name is saved on the CPU stack 10258(one 10259pointer per function.) This mechanism is used because apparently there 10260exists no standard ANSI-C defined macro that that returns the function 10261name. 10262 10263Redesigned and reimplemented the "Owner ID" mechanism used to track 10264namespace objects created/deleted by ACPI tables and control method 10265execution. A bitmap is now used to allocate and free the IDs, thus 10266solving 10267the wraparound problem present in the previous implementation. The size 10268of 10269the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10270Starikovskiy). 10271 10272Removed the UINT32_BIT and UINT16_BIT types that were used for the 10273bitfield 10274flag definitions within the headers for the predefined ACPI tables. These 10275have been replaced by UINT8_BIT in order to increase the code portability 10276of 10277the subsystem. If the use of UINT8 remains a problem, we may be forced to 10278eliminate bitfields entirely because of a lack of portability. 10279 10280Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10281This 10282is a frequently used function and this improvement increases the 10283performance 10284of the entire subsystem (Alexey Starikovskiy). 10285 10286Fixed several possible memory leaks and the inverse - premature object 10287deletion (Alexey Starikovskiy). 10288 10289Code and Data Size: Current and previous core subsystem library sizes are 10290shown below. These are the code and data sizes for the acpica.lib 10291produced 10292by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10293any ACPI driver or OSPM code. The debug version of the code includes the 10294debug output trace mechanism and has a much larger code and data size. 10295Note 10296that these values will vary depending on the efficiency of the compiler 10297and 10298the compiler options used during generation. 10299 10300 Previous Release: 10301 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10302 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10303 Current Release: 10304 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10305 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10306 10307---------------------------------------- 1030824 June 2005. Summary of changes for version 20050624: 10309 103101) ACPI CA Core Subsystem: 10311 10312Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10313the host-defined cache object. This allows the OSL implementation to 10314define 10315and type this object in any manner desired, simplifying the OSL 10316implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10317Linux, and should be defined in the OS-specific header file for other 10318operating systems as required. 10319 10320Changed the interface to AcpiOsAcquireObject to directly return the 10321requested object as the function return (instead of ACPI_STATUS.) This 10322change was made for performance reasons, since this is the purpose of the 10323interface in the first place. AcpiOsAcquireObject is now similar to the 10324AcpiOsAllocate interface. 10325 10326Implemented a new AML debugger command named Businfo. This command 10327displays 10328information about all devices that have an associate _PRT object. The 10329_ADR, 10330_HID, _UID, and _CID are displayed for these devices. 10331 10332Modified the initialization sequence in AcpiInitializeSubsystem to call 10333the 10334OSL interface AcpiOslInitialize first, before any local initialization. 10335This 10336change was required because the global initialization now calls OSL 10337interfaces. 10338 10339Enhanced the Dump command to display the entire contents of Package 10340objects 10341(including all sub-objects and their values.) 10342 10343Restructured the code base to split some files because of size and/or 10344because the code logically belonged in a separate file. New files are 10345listed 10346below. All makefiles and project files included in the ACPI CA release 10347have 10348been updated. 10349 utilities/utcache.c /* Local cache interfaces */ 10350 utilities/utmutex.c /* Local mutex support */ 10351 utilities/utstate.c /* State object support */ 10352 interpreter/parser/psloop.c /* Main AML parse loop */ 10353 10354Code and Data Size: Current and previous core subsystem library sizes are 10355shown below. These are the code and data sizes for the acpica.lib 10356produced 10357by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10358any ACPI driver or OSPM code. The debug version of the code includes the 10359debug output trace mechanism and has a much larger code and data size. 10360Note 10361that these values will vary depending on the efficiency of the compiler 10362and 10363the compiler options used during generation. 10364 10365 Previous Release: 10366 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10367 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10368 Current Release: 10369 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10370 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10371 10372 103732) iASL Compiler/Disassembler: 10374 10375Fixed a regression introduced in version 20050513 where the use of a 10376Package 10377object within a Case() statement caused a compile time exception. The 10378original behavior has been restored (a Match() operator is emitted.) 10379 10380---------------------------------------- 1038117 June 2005. Summary of changes for version 20050617: 10382 103831) ACPI CA Core Subsystem: 10384 10385Moved the object cache operations into the OS interface layer (OSL) to 10386allow 10387the host OS to handle these operations if desired (for example, the Linux 10388OSL will invoke the slab allocator). This support is optional; the 10389compile 10390time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10391cache 10392code in the ACPI CA core. The new OSL interfaces are shown below. See 10393utalloc.c for an example implementation, and acpiosxf.h for the exact 10394interface definitions. With assistance from Alexey Starikovskiy. 10395 AcpiOsCreateCache 10396 AcpiOsDeleteCache 10397 AcpiOsPurgeCache 10398 AcpiOsAcquireObject 10399 AcpiOsReleaseObject 10400 10401Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10402return 10403and restore a flags parameter. This fits better with many OS lock models. 10404Note: the current execution state (interrupt handler or not) is no longer 10405passed to these interfaces. If necessary, the OSL must determine this 10406state 10407by itself, a simple and fast operation. With assistance from Alexey 10408Starikovskiy. 10409 10410Fixed a problem in the ACPI table handling where a valid XSDT was assumed 10411present if the revision of the RSDP was 2 or greater. According to the 10412ACPI 10413specification, the XSDT is optional in all cases, and the table manager 10414therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10415Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10416contain 10417only the RSDT. 10418 10419Fixed an interpreter problem with the Mid() operator in the case of an 10420input 10421string where the resulting output string is of zero length. It now 10422correctly 10423returns a valid, null terminated string object instead of a string object 10424with a null pointer. 10425 10426Fixed a problem with the control method argument handling to allow a 10427store 10428to an Arg object that already contains an object of type Device. The 10429Device 10430object is now correctly overwritten. Previously, an error was returned. 10431 10432 10433Enhanced the debugger Find command to emit object values in addition to 10434the 10435found object pathnames. The output format is the same as the dump 10436namespace 10437command. 10438 10439Enhanced the debugger Set command. It now has the ability to set the 10440value 10441of any Named integer object in the namespace (Previously, only method 10442locals 10443and args could be set.) 10444 10445Code and Data Size: Current and previous core subsystem library sizes are 10446shown below. These are the code and data sizes for the acpica.lib 10447produced 10448by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10449any ACPI driver or OSPM code. The debug version of the code includes the 10450debug output trace mechanism and has a much larger code and data size. 10451Note 10452that these values will vary depending on the efficiency of the compiler 10453and 10454the compiler options used during generation. 10455 10456 Previous Release: 10457 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10458 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10459 Current Release: 10460 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10461 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10462 10463 104642) iASL Compiler/Disassembler: 10465 10466Fixed a regression in the disassembler where if/else/while constructs 10467were 10468output incorrectly. This problem was introduced in the previous release 10469(20050526). This problem also affected the single-step disassembly in the 10470debugger. 10471 10472Fixed a problem where compiling the reserved _OSI method would randomly 10473(but 10474rarely) produce compile errors. 10475 10476Enhanced the disassembler to emit compilable code in the face of 10477incorrect 10478AML resource descriptors. If the optional ResourceSourceIndex is present, 10479but the ResourceSource is not, do not emit the ResourceSourceIndex in the 10480disassembly. Otherwise, the resulting code cannot be compiled without 10481errors. 10482 10483---------------------------------------- 1048426 May 2005. Summary of changes for version 20050526: 10485 104861) ACPI CA Core Subsystem: 10487 10488Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 10489the module level (not within a control method.) These opcodes are 10490executed 10491exactly once at the time the table is loaded. This type of code was legal 10492up 10493until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 10494in 10495order to provide backwards compatibility with earlier BIOS 10496implementations. 10497This eliminates the "Encountered executable code at module level" warning 10498that was previously generated upon detection of such code. 10499 10500Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 10501inadvertently be generated during the lookup of namespace objects in the 10502second pass parse of ACPI tables and control methods. It appears that 10503this 10504problem could occur during the resolution of forward references to 10505namespace 10506objects. 10507 10508Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 10509corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 10510allows the deadlock detection debug code to be compiled out in the normal 10511case, improving mutex performance (and overall subsystem performance) 10512considerably. 10513 10514Implemented a handful of miscellaneous fixes for possible memory leaks on 10515error conditions and error handling control paths. These fixes were 10516suggested by FreeBSD and the Coverity Prevent source code analysis tool. 10517 10518Added a check for a null RSDT pointer in AcpiGetFirmwareTable 10519(tbxfroot.c) 10520to prevent a fault in this error case. 10521 10522Code and Data Size: Current and previous core subsystem library sizes are 10523shown below. These are the code and data sizes for the acpica.lib 10524produced 10525by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10526any ACPI driver or OSPM code. The debug version of the code includes the 10527debug output trace mechanism and has a much larger code and data size. 10528Note 10529that these values will vary depending on the efficiency of the compiler 10530and 10531the compiler options used during generation. 10532 10533 Previous Release: 10534 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10535 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10536 Current Release: 10537 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10538 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10539 10540 105412) iASL Compiler/Disassembler: 10542 10543Implemented support to allow Type 1 and Type 2 ASL operators to appear at 10544the module level (not within a control method.) These operators will be 10545executed once at the time the table is loaded. This type of code was 10546legal 10547up until the release of ACPI 2.0B (2002) and is now supported by the iASL 10548compiler in order to provide backwards compatibility with earlier BIOS 10549ASL 10550code. 10551 10552The ACPI integer width (specified via the table revision ID or the -r 10553override, 32 or 64 bits) is now used internally during compile-time 10554constant 10555folding to ensure that constants are truncated to 32 bits if necessary. 10556Previously, the revision ID value was only emitted in the AML table 10557header. 10558 10559An error message is now generated for the Mutex and Method operators if 10560the 10561SyncLevel parameter is outside the legal range of 0 through 15. 10562 10563Fixed a problem with the Method operator ParameterTypes list handling 10564(ACPI 105653.0). Previously, more than 2 types or 2 arguments generated a syntax 10566error. 10567The actual underlying implementation of method argument typechecking is 10568still under development, however. 10569 10570---------------------------------------- 1057113 May 2005. Summary of changes for version 20050513: 10572 105731) ACPI CA Core Subsystem: 10574 10575Implemented support for PCI Express root bridges -- added support for 10576device 10577PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 10578 10579The interpreter now automatically truncates incoming 64-bit constants to 1058032 10581bits if currently executing out of a 32-bit ACPI table (Revision < 2). 10582This 10583also affects the iASL compiler constant folding. (Note: as per below, the 10584iASL compiler no longer allows 64-bit constants within 32-bit tables.) 10585 10586Fixed a problem where string and buffer objects with "static" pointers 10587(pointers to initialization data within an ACPI table) were not handled 10588consistently. The internal object copy operation now always copies the 10589data 10590to a newly allocated buffer, regardless of whether the source object is 10591static or not. 10592 10593Fixed a problem with the FromBCD operator where an implicit result 10594conversion was improperly performed while storing the result to the 10595target 10596operand. Since this is an "explicit conversion" operator, the implicit 10597conversion should never be performed on the output. 10598 10599Fixed a problem with the CopyObject operator where a copy to an existing 10600named object did not always completely overwrite the existing object 10601stored 10602at name. Specifically, a buffer-to-buffer copy did not delete the 10603existing 10604buffer. 10605 10606Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 10607and 10608structs for consistency. 10609 10610Code and Data Size: Current and previous core subsystem library sizes are 10611shown below. These are the code and data sizes for the acpica.lib 10612produced 10613by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10614any ACPI driver or OSPM code. The debug version of the code includes the 10615debug output trace mechanism and has a much larger code and data size. 10616Note 10617that these values will vary depending on the efficiency of the compiler 10618and 10619the compiler options used during generation. 10620 10621 Previous Release: 10622 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10623 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10624 Current Release: (Same sizes) 10625 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10626 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10627 10628 106292) iASL Compiler/Disassembler: 10630 10631The compiler now emits a warning if an attempt is made to generate a 64- 10632bit 10633integer constant from within a 32-bit ACPI table (Revision < 2). The 10634integer 10635is truncated to 32 bits. 10636 10637Fixed a problem with large package objects: if the static length of the 10638package is greater than 255, the "variable length package" opcode is 10639emitted. Previously, this caused an error. This requires an update to the 10640ACPI spec, since it currently (incorrectly) states that packages larger 10641than 10642255 elements are not allowed. 10643 10644The disassembler now correctly handles variable length packages and 10645packages 10646larger than 255 elements. 10647 10648---------------------------------------- 1064908 April 2005. Summary of changes for version 20050408: 10650 106511) ACPI CA Core Subsystem: 10652 10653Fixed three cases in the interpreter where an "index" argument to an ASL 10654function was still (internally) 32 bits instead of the required 64 bits. 10655This was the Index argument to the Index, Mid, and Match operators. 10656 10657The "strupr" function is now permanently local (AcpiUtStrupr), since this 10658is 10659not a POSIX-defined function and not present in most kernel-level C 10660libraries. All references to the C library strupr function have been 10661removed 10662from the headers. 10663 10664Completed the deployment of static functions/prototypes. All prototypes 10665with 10666the static attribute have been moved from the headers to the owning C 10667file. 10668 10669Implemented an extract option (-e) for the AcpiBin utility (AML binary 10670utility). This option allows the utility to extract individual ACPI 10671tables 10672from the output of AcpiDmp. It provides the same functionality of the 10673acpixtract.pl perl script without the worry of setting the correct perl 10674options. AcpiBin runs on Windows and has not yet been generated/validated 10675in 10676the Linux/Unix environment (but should be soon). 10677 10678Updated and fixed the table dump option for AcpiBin (-d). This option 10679converts a single ACPI table to a hex/ascii file, similar to the output 10680of 10681AcpiDmp. 10682 10683Code and Data Size: Current and previous core subsystem library sizes are 10684shown below. These are the code and data sizes for the acpica.lib 10685produced 10686by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10687any ACPI driver or OSPM code. The debug version of the code includes the 10688debug output trace mechanism and has a much larger code and data size. 10689Note 10690that these values will vary depending on the efficiency of the compiler 10691and 10692the compiler options used during generation. 10693 10694 Previous Release: 10695 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10696 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10697 Current Release: 10698 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10699 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10700 10701 107022) iASL Compiler/Disassembler: 10703 10704Disassembler fix: Added a check to ensure that the table length found in 10705the 10706ACPI table header within the input file is not longer than the actual 10707input 10708file size. This indicates some kind of file or table corruption. 10709 10710---------------------------------------- 1071129 March 2005. Summary of changes for version 20050329: 10712 107131) ACPI CA Core Subsystem: 10714 10715An error is now generated if an attempt is made to create a Buffer Field 10716of 10717length zero (A CreateField with a length operand of zero.) 10718 10719The interpreter now issues a warning whenever executable code at the 10720module 10721level is detected during ACPI table load. This will give some idea of the 10722prevalence of this type of code. 10723 10724Implemented support for references to named objects (other than control 10725methods) within package objects. 10726 10727Enhanced package object output for the debug object. Package objects are 10728now 10729completely dumped, showing all elements. 10730 10731Enhanced miscellaneous object output for the debug object. Any object can 10732now be written to the debug object (for example, a device object can be 10733written, and the type of the object will be displayed.) 10734 10735The "static" qualifier has been added to all local functions across both 10736the 10737core subsystem and the iASL compiler. 10738 10739The number of "long" lines (> 80 chars) within the source has been 10740significantly reduced, by about 1/3. 10741 10742Cleaned up all header files to ensure that all CA/iASL functions are 10743prototyped (even static functions) and the formatting is consistent. 10744 10745Two new header files have been added, acopcode.h and acnames.h. 10746 10747Removed several obsolete functions that were no longer used. 10748 10749Code and Data Size: Current and previous core subsystem library sizes are 10750shown below. These are the code and data sizes for the acpica.lib 10751produced 10752by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10753any ACPI driver or OSPM code. The debug version of the code includes the 10754debug output trace mechanism and has a much larger code and data size. 10755Note 10756that these values will vary depending on the efficiency of the compiler 10757and 10758the compiler options used during generation. 10759 10760 Previous Release: 10761 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10762 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10763 Current Release: 10764 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10765 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10766 10767 10768 107692) iASL Compiler/Disassembler: 10770 10771Fixed a problem with the resource descriptor generation/support. For the 10772ResourceSourceIndex and the ResourceSource fields, both must be present, 10773or 10774both must be not present - can't have one without the other. 10775 10776The compiler now returns non-zero from the main procedure if any errors 10777have 10778occurred during the compilation. 10779 10780 10781---------------------------------------- 1078209 March 2005. Summary of changes for version 20050309: 10783 107841) ACPI CA Core Subsystem: 10785 10786The string-to-buffer implicit conversion code has been modified again 10787after 10788a change to the ACPI specification. In order to match the behavior of 10789the 10790other major ACPI implementation, the target buffer is no longer truncated 10791if 10792the source string is smaller than an existing target buffer. This change 10793requires an update to the ACPI spec, and should eliminate the recent 10794AE_AML_BUFFER_LIMIT issues. 10795 10796The "implicit return" support was rewritten to a new algorithm that 10797solves 10798the general case. Rather than attempt to determine when a method is about 10799to 10800exit, the result of every ASL operator is saved momentarily until the 10801very 10802next ASL operator is executed. Therefore, no matter how the method exits, 10803there will always be a saved implicit return value. This feature is only 10804enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 10805eliminate 10806AE_AML_NO_RETURN_VALUE errors when enabled. 10807 10808Implemented implicit conversion support for the predicate (operand) of 10809the 10810If, Else, and While operators. String and Buffer arguments are 10811automatically 10812converted to Integers. 10813 10814Changed the string-to-integer conversion behavior to match the new ACPI 10815errata: "If no integer object exists, a new integer is created. The ASCII 10816string is interpreted as a hexadecimal constant. Each string character is 10817interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 10818with the first character as the most significant digit, and ending with 10819the 10820first non-hexadecimal character or end-of-string." This means that the 10821first 10822non-hex character terminates the conversion and this is the code that was 10823changed. 10824 10825Fixed a problem where the ObjectType operator would fail (fault) when 10826used 10827on an Index of a Package which pointed to a null package element. The 10828operator now properly returns zero (Uninitialized) in this case. 10829 10830Fixed a problem where the While operator used excessive memory by not 10831properly popping the result stack during execution. There was no memory 10832leak 10833after execution, however. (Code provided by Valery Podrezov.) 10834 10835Fixed a problem where references to control methods within Package 10836objects 10837caused the method to be invoked, instead of producing a reference object 10838pointing to the method. 10839 10840Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 10841to 10842improve performance and reduce code size. (Code provided by Alexey 10843Starikovskiy.) 10844 10845Code and Data Size: Current and previous core subsystem library sizes are 10846shown below. These are the code and data sizes for the acpica.lib 10847produced 10848by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10849any ACPI driver or OSPM code. The debug version of the code includes the 10850debug output trace mechanism and has a much larger code and data size. 10851Note 10852that these values will vary depending on the efficiency of the compiler 10853and 10854the compiler options used during generation. 10855 10856 Previous Release: 10857 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10858 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10859 Current Release: 10860 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10861 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10862 10863 108642) iASL Compiler/Disassembler: 10865 10866Fixed a problem with the Return operator with no arguments. Since the AML 10867grammar for the byte encoding requires an operand for the Return opcode, 10868the 10869compiler now emits a Return(Zero) for this case. An ACPI specification 10870update has been written for this case. 10871 10872For tables other than the DSDT, namepath optimization is automatically 10873disabled. This is because SSDTs can be loaded anywhere in the namespace, 10874the 10875compiler has no knowledge of where, and thus cannot optimize namepaths. 10876 10877Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 10878inadvertently omitted from the ACPI specification, and will require an 10879update to the spec. 10880 10881The source file scan for ASCII characters is now optional (-a). This 10882change 10883was made because some vendors place non-ascii characters within comments. 10884However, the scan is simply a brute-force byte compare to ensure all 10885characters in the file are in the range 0x00 to 0x7F. 10886 10887Fixed a problem with the CondRefOf operator where the compiler was 10888inappropriately checking for the existence of the target. Since the point 10889of 10890the operator is to check for the existence of the target at run-time, the 10891compiler no longer checks for the target existence. 10892 10893Fixed a problem where errors generated from the internal AML interpreter 10894during constant folding were not handled properly, causing a fault. 10895 10896Fixed a problem with overly aggressive range checking for the Stall 10897operator. The valid range (max 255) is now only checked if the operand is 10898of 10899type Integer. All other operand types cannot be statically checked. 10900 10901Fixed a problem where control method references within the RefOf, 10902DeRefOf, 10903and ObjectType operators were not treated properly. They are now treated 10904as 10905actual references, not method invocations. 10906 10907Fixed and enhanced the "list namespace" option (-ln). This option was 10908broken 10909a number of releases ago. 10910 10911Improved error handling for the Field, IndexField, and BankField 10912operators. 10913The compiler now cleanly reports and recovers from errors in the field 10914component (FieldUnit) list. 10915 10916Fixed a disassembler problem where the optional ResourceDescriptor fields 10917TRS and TTP were not always handled correctly. 10918 10919Disassembler - Comments in output now use "//" instead of "/*" 10920 10921---------------------------------------- 1092228 February 2005. Summary of changes for version 20050228: 10923 109241) ACPI CA Core Subsystem: 10925 10926Fixed a problem where the result of an Index() operator (an object 10927reference) must increment the reference count on the target object for 10928the 10929life of the object reference. 10930 10931Implemented AML Interpreter and Debugger support for the new ACPI 3.0 10932Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 10933WordSpace 10934resource descriptors. 10935 10936Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 10937Space Descriptor" string, indicating interpreter support for the 10938descriptors 10939above. 10940 10941Implemented header support for the new ACPI 3.0 FADT flag bits. 10942 10943Implemented header support for the new ACPI 3.0 PCI Express bits for the 10944PM1 10945status/enable registers. 10946 10947Updated header support for the MADT processor local Apic struct and MADT 10948platform interrupt source struct for new ACPI 3.0 fields. 10949 10950Implemented header support for the SRAT and SLIT ACPI tables. 10951 10952Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10953flag 10954at runtime. 10955 10956Code and Data Size: Current and previous core subsystem library sizes are 10957shown below. These are the code and data sizes for the acpica.lib 10958produced 10959by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10960any ACPI driver or OSPM code. The debug version of the code includes the 10961debug output trace mechanism and has a much larger code and data size. 10962Note 10963that these values will vary depending on the efficiency of the compiler 10964and 10965the compiler options used during generation. 10966 10967 Previous Release: 10968 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10969 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10970 Current Release: 10971 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10972 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10973 10974 109752) iASL Compiler/Disassembler: 10976 10977Fixed a problem with the internal 64-bit String-to-integer conversion 10978with 10979strings less than two characters long. 10980 10981Fixed a problem with constant folding where the result of the Index() 10982operator can not be considered a constant. This means that Index() cannot 10983be 10984a type3 opcode and this will require an update to the ACPI specification. 10985 10986Disassembler: Implemented support for the TTP, MTP, and TRS resource 10987descriptor fields. These fields were inadvertently ignored and not output 10988in 10989the disassembly of the resource descriptor. 10990 10991 10992 ---------------------------------------- 1099311 February 2005. Summary of changes for version 20050211: 10994 109951) ACPI CA Core Subsystem: 10996 10997Implemented ACPI 3.0 support for implicit conversion within the Match() 10998operator. MatchObjects can now be of type integer, buffer, or string 10999instead 11000of just type integer. Package elements are implicitly converted to the 11001type 11002of the MatchObject. This change aligns the behavior of Match() with the 11003behavior of the other logical operators (LLess(), etc.) It also requires 11004an 11005errata change to the ACPI specification as this support was intended for 11006ACPI 3.0, but was inadvertently omitted. 11007 11008Fixed a problem with the internal implicit "to buffer" conversion. 11009Strings 11010that are converted to buffers will cause buffer truncation if the string 11011is 11012smaller than the target buffer. Integers that are converted to buffers 11013will 11014not cause buffer truncation, only zero extension (both as per the ACPI 11015spec.) The problem was introduced when code was added to truncate the 11016buffer, but this should not be performed in all cases, only the string 11017case. 11018 11019Fixed a problem with the Buffer and Package operators where the 11020interpreter 11021would get confused if two such operators were used as operands to an ASL 11022operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11023stack was not being popped after the execution of these operators, 11024resulting 11025in an AE_NO_RETURN_VALUE exception. 11026 11027Fixed a problem with constructs of the form Store(Index(...),...). The 11028reference object returned from Index was inadvertently resolved to an 11029actual 11030value. This problem was introduced in version 20050114 when the behavior 11031of 11032Store() was modified to restrict the object types that can be used as the 11033source operand (to match the ACPI specification.) 11034 11035Reduced excessive stack use within the AcpiGetObjectInfo procedure. 11036 11037Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 11038 11039Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11040 11041Code and Data Size: Current and previous core subsystem library sizes are 11042shown below. These are the code and data sizes for the acpica.lib 11043produced 11044by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11045any ACPI driver or OSPM code. The debug version of the code includes the 11046debug output trace mechanism and has a much larger code and data size. 11047Note 11048that these values will vary depending on the efficiency of the compiler 11049and 11050the compiler options used during generation. 11051 11052 Previous Release: 11053 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11054 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11055 Current Release: 11056 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11057 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11058 11059 110602) iASL Compiler/Disassembler: 11061 11062Fixed a code generation problem in the constant folding optimization code 11063where incorrect code was generated if a constant was reduced to a buffer 11064object (i.e., a reduced type 5 opcode.) 11065 11066Fixed a typechecking problem for the ToBuffer operator. Caused by an 11067incorrect return type in the internal opcode information table. 11068 11069---------------------------------------- 1107025 January 2005. Summary of changes for version 20050125: 11071 110721) ACPI CA Core Subsystem: 11073 11074Fixed a recently introduced problem with the Global Lock where the 11075underlying semaphore was not created. This problem was introduced in 11076version 20050114, and caused an AE_AML_NO_OPERAND exception during an 11077Acquire() operation on _GL. 11078 11079The local object cache is now optional, and is disabled by default. Both 11080AcpiExec and the iASL compiler enable the cache because they run in user 11081mode and this enhances their performance. #define 11082ACPI_ENABLE_OBJECT_CACHE 11083to enable the local cache. 11084 11085Fixed an issue in the internal function AcpiUtEvaluateObject concerning 11086the 11087optional "implicit return" support where an error was returned if no 11088return 11089object was expected, but one was implicitly returned. AE_OK is now 11090returned 11091in this case and the implicitly returned object is deleted. 11092AcpiUtEvaluateObject is only occasionally used, and only to execute 11093reserved 11094methods such as _STA and _INI where the return type is known up front. 11095 11096Fixed a few issues with the internal convert-to-integer code. It now 11097returns 11098an error if an attempt is made to convert a null string, a string of only 11099blanks/tabs, or a zero-length buffer. This affects both implicit 11100conversion 11101and explicit conversion via the ToInteger() operator. 11102 11103The internal debug code in AcpiUtAcquireMutex has been commented out. It 11104is 11105not needed for normal operation and should increase the performance of 11106the 11107entire subsystem. The code remains in case it is needed for debug 11108purposes 11109again. 11110 11111The AcpiExec source and makefile are included in the Unix/Linux package 11112for 11113the first time. 11114 11115Code and Data Size: Current and previous core subsystem library sizes are 11116shown below. These are the code and data sizes for the acpica.lib 11117produced 11118by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11119any ACPI driver or OSPM code. The debug version of the code includes the 11120debug output trace mechanism and has a much larger code and data size. 11121Note 11122that these values will vary depending on the efficiency of the compiler 11123and 11124the compiler options used during generation. 11125 11126 Previous Release: 11127 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11128 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11129 Current Release: 11130 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11131 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11132 111332) iASL Compiler/Disassembler: 11134 11135Switch/Case support: A warning is now issued if the type of the Switch 11136value 11137cannot be determined at compile time. For example, Switch(Arg0) will 11138generate the warning, and the type is assumed to be an integer. As per 11139the 11140ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11141the 11142warning. 11143 11144Switch/Case support: Implemented support for buffer and string objects as 11145the switch value. This is an ACPI 3.0 feature, now that LEqual supports 11146buffers and strings. 11147 11148Switch/Case support: The emitted code for the LEqual() comparisons now 11149uses 11150the switch value as the first operand, not the second. The case value is 11151now 11152the second operand, and this allows the case value to be implicitly 11153converted to the type of the switch value, not the other way around. 11154 11155Switch/Case support: Temporary variables are now emitted immediately 11156within 11157the control method, not at the global level. This means that there are 11158now 1115936 temps available per-method, not 36 temps per-module as was the case 11160with 11161the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11162 11163---------------------------------------- 1116414 January 2005. Summary of changes for version 20050114: 11165 11166Added 2005 copyright to all module headers. This affects every module in 11167the core subsystem, iASL compiler, and the utilities. 11168 111691) ACPI CA Core Subsystem: 11170 11171Fixed an issue with the String-to-Buffer conversion code where the string 11172null terminator was not included in the buffer after conversion, but 11173there 11174is existing ASL that assumes the string null terminator is included. This 11175is 11176the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11177introduced in the previous version when the code was updated to correctly 11178set the converted buffer size as per the ACPI specification. The ACPI 11179spec 11180is ambiguous and will be updated to specify that the null terminator must 11181be 11182included in the converted buffer. This also affects the ToBuffer() ASL 11183operator. 11184 11185Fixed a problem with the Mid() ASL/AML operator where it did not work 11186correctly on Buffer objects. Newly created sub-buffers were not being 11187marked 11188as initialized. 11189 11190 11191Fixed a problem in AcpiTbFindTable where incorrect string compares were 11192performed on the OemId and OemTableId table header fields. These fields 11193are 11194not null terminated, so strncmp is now used instead of strcmp. 11195 11196Implemented a restriction on the Store() ASL/AML operator to align the 11197behavior with the ACPI specification. Previously, any object could be 11198used 11199as the source operand. Now, the only objects that may be used are 11200Integers, 11201Buffers, Strings, Packages, Object References, and DDB Handles. If 11202necessary, the original behavior can be restored by enabling the 11203EnableInterpreterSlack flag. 11204 11205Enhanced the optional "implicit return" support to allow an implicit 11206return 11207value from methods that are invoked externally via the AcpiEvaluateObject 11208interface. This enables implicit returns from the _STA and _INI methods, 11209for example. 11210 11211Changed the Revision() ASL/AML operator to return the current version of 11212the 11213AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11214returned 11215the supported ACPI version (This is the function of the _REV method). 11216 11217Updated the _REV predefined method to return the currently supported 11218version 11219of ACPI, now 3. 11220 11221Implemented batch mode option for the AcpiExec utility (-b). 11222 11223Code and Data Size: Current and previous core subsystem library sizes are 11224shown below. These are the code and data sizes for the acpica.lib 11225produced 11226by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11227any ACPI driver or OSPM code. The debug version of the code includes the 11228debug output trace mechanism and has a much larger code and data size. 11229Note 11230that these values will vary depending on the efficiency of the compiler 11231and 11232the compiler options used during generation. 11233 11234 Previous Release: 11235 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11236 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11237 Current Release: 11238 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11239 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11240 11241---------------------------------------- 1124210 December 2004. Summary of changes for version 20041210: 11243 11244ACPI 3.0 support is nearing completion in both the iASL compiler and the 11245ACPI CA core subsystem. 11246 112471) ACPI CA Core Subsystem: 11248 11249Fixed a problem in the ToDecimalString operator where the resulting 11250string 11251length was incorrectly calculated. The length is now calculated exactly, 11252eliminating incorrect AE_STRING_LIMIT exceptions. 11253 11254Fixed a problem in the ToHexString operator to allow a maximum 200 11255character 11256string to be produced. 11257 11258Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11259copy 11260routine where the length of the resulting buffer was not truncated to the 11261new size (if the target buffer already existed). 11262 11263Code and Data Size: Current and previous core subsystem library sizes are 11264shown below. These are the code and data sizes for the acpica.lib 11265produced 11266by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11267any ACPI driver or OSPM code. The debug version of the code includes the 11268debug output trace mechanism and has a much larger code and data size. 11269Note 11270that these values will vary depending on the efficiency of the compiler 11271and 11272the compiler options used during generation. 11273 11274 Previous Release: 11275 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11276 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11277 Current Release: 11278 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11279 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11280 11281 112822) iASL Compiler/Disassembler: 11283 11284Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11285ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11286Includes support in the disassembler. 11287 11288Implemented support for the new (ACPI 3.0) parameter to the Register 11289macro, 11290AccessSize. 11291 11292Fixed a problem where the _HE resource name for the Interrupt macro was 11293referencing bit 0 instead of bit 1. 11294 11295Implemented check for maximum 255 interrupts in the Interrupt macro. 11296 11297Fixed a problem with the predefined resource descriptor names where 11298incorrect AML code was generated if the offset within the resource buffer 11299was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11300but did not update the surrounding package lengths. 11301 11302Changes to the Dma macro: All channels within the channel list must be 11303in 11304the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11305optional (default is BusMaster). 11306 11307Implemented check for maximum 7 data bytes for the VendorShort macro. 11308 11309The ReadWrite parameter is now optional for the Memory32 and similar 11310macros. 11311 11312---------------------------------------- 1131303 December 2004. Summary of changes for version 20041203: 11314 113151) ACPI CA Core Subsystem: 11316 11317The low-level field insertion/extraction code (exfldio) has been 11318completely 11319rewritten to eliminate unnecessary complexity, bugs, and boundary 11320conditions. 11321 11322Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11323ToDecimalString 11324operators where the input operand could be inadvertently deleted if no 11325conversion was necessary (e.g., if the input to ToInteger was an Integer 11326object.) 11327 11328Fixed a problem with the ToDecimalString and ToHexString where an 11329incorrect 11330exception code was returned if the resulting string would be > 200 chars. 11331AE_STRING_LIMIT is now returned. 11332 11333Fixed a problem with the Concatenate operator where AE_OK was always 11334returned, even if the operation failed. 11335 11336Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11337semaphores to be allocated. 11338 11339Code and Data Size: Current and previous core subsystem library sizes are 11340shown below. These are the code and data sizes for the acpica.lib 11341produced 11342by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11343any ACPI driver or OSPM code. The debug version of the code includes the 11344debug output trace mechanism and has a much larger code and data size. 11345Note 11346that these values will vary depending on the efficiency of the compiler 11347and 11348the compiler options used during generation. 11349 11350 Previous Release: 11351 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11352 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11353 Current Release: 11354 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11355 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11356 11357 113582) iASL Compiler/Disassembler: 11359 11360Fixed typechecking for the ObjectType and SizeOf operators. Problem was 11361recently introduced in 20041119. 11362 11363Fixed a problem with the ToUUID macro where the upper nybble of each 11364buffer 11365byte was inadvertently set to zero. 11366 11367---------------------------------------- 1136819 November 2004. Summary of changes for version 20041119: 11369 113701) ACPI CA Core Subsystem: 11371 11372Fixed a problem in the internal ConvertToInteger routine where new 11373integers 11374were not truncated to 32 bits for 32-bit ACPI tables. This routine 11375converts 11376buffers and strings to integers. 11377 11378Implemented support to store a value to an Index() on a String object. 11379This 11380is an ACPI 2.0 feature that had not yet been implemented. 11381 11382Implemented new behavior for storing objects to individual package 11383elements 11384(via the Index() operator). The previous behavior was to invoke the 11385implicit 11386conversion rules if an object was already present at the index. The new 11387behavior is to simply delete any existing object and directly store the 11388new 11389object. Although the ACPI specification seems unclear on this subject, 11390other 11391ACPI implementations behave in this manner. (This is the root of the 11392AE_BAD_HEX_CONSTANT issue.) 11393 11394Modified the RSDP memory scan mechanism to support the extended checksum 11395for 11396ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11397RSDP signature is found with a valid checksum. 11398 11399Code and Data Size: Current and previous core subsystem library sizes are 11400shown below. These are the code and data sizes for the acpica.lib 11401produced 11402by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11403any ACPI driver or OSPM code. The debug version of the code includes the 11404debug output trace mechanism and has a much larger code and data size. 11405Note 11406that these values will vary depending on the efficiency of the compiler 11407and 11408the compiler options used during generation. 11409 11410 Previous Release: 11411 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11412 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11413 Current Release: 11414 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11415 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11416 11417 114182) iASL Compiler/Disassembler: 11419 11420Fixed a missing semicolon in the aslcompiler.y file. 11421 11422---------------------------------------- 1142305 November 2004. Summary of changes for version 20041105: 11424 114251) ACPI CA Core Subsystem: 11426 11427Implemented support for FADT revision 2. This was an interim table 11428(between 11429ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11430 11431Implemented optional support to allow uninitialized LocalX and ArgX 11432variables in a control method. The variables are initialized to an 11433Integer 11434object with a value of zero. This support is enabled by setting the 11435AcpiGbl_EnableInterpreterSlack flag to TRUE. 11436 11437Implemented support for Integer objects for the SizeOf operator. Either 114384 11439or 8 is returned, depending on the current integer size (32-bit or 64- 11440bit, 11441depending on the parent table revision). 11442 11443Fixed a problem in the implementation of the SizeOf and ObjectType 11444operators 11445where the operand was resolved to a value too early, causing incorrect 11446return values for some objects. 11447 11448Fixed some possible memory leaks during exceptional conditions. 11449 11450Code and Data Size: Current and previous core subsystem library sizes are 11451shown below. These are the code and data sizes for the acpica.lib 11452produced 11453by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11454any ACPI driver or OSPM code. The debug version of the code includes the 11455debug output trace mechanism and has a much larger code and data size. 11456Note 11457that these values will vary depending on the efficiency of the compiler 11458and 11459the compiler options used during generation. 11460 11461 Previous Release: 11462 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11463 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11464 Current Release: 11465 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11466 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11467 11468 114692) iASL Compiler/Disassembler: 11470 11471Implemented support for all ACPI 3.0 reserved names and methods. 11472 11473Implemented all ACPI 3.0 grammar elements in the front-end, including 11474support for semicolons. 11475 11476Implemented the ACPI 3.0 Function() and ToUUID() macros 11477 11478Fixed a problem in the disassembler where a Scope() operator would not be 11479emitted properly if the target of the scope was in another table. 11480 11481---------------------------------------- 1148215 October 2004. Summary of changes for version 20041015: 11483 11484Note: ACPI CA is currently undergoing an in-depth and complete formal 11485evaluation to test/verify the following areas. Other suggestions are 11486welcome. This will result in an increase in the frequency of releases and 11487the number of bug fixes in the next few months. 11488 - Functional tests for all ASL/AML operators 11489 - All implicit/explicit type conversions 11490 - Bit fields and operation regions 11491 - 64-bit math support and 32-bit-only "truncated" math support 11492 - Exceptional conditions, both compiler and interpreter 11493 - Dynamic object deletion and memory leaks 11494 - ACPI 3.0 support when implemented 11495 - External interfaces to the ACPI subsystem 11496 11497 114981) ACPI CA Core Subsystem: 11499 11500Fixed two alignment issues on 64-bit platforms - within debug statements 11501in 11502AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 11503Address 11504field within the non-aligned ACPI generic address structure. 11505 11506Fixed a problem in the Increment and Decrement operators where incorrect 11507operand resolution could result in the inadvertent modification of the 11508original integer when the integer is passed into another method as an 11509argument and the arg is then incremented/decremented. 11510 11511Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 11512bit 11513BCD number were truncated during conversion. 11514 11515Fixed a problem in the ToDecimal operator where the length of the 11516resulting 11517string could be set incorrectly too long if the input operand was a 11518Buffer 11519object. 11520 11521Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 11522(0) 11523within a buffer would prematurely terminate a compare between buffer 11524objects. 11525 11526Added a check for string overflow (>200 characters as per the ACPI 11527specification) during the Concatenate operator with two string operands. 11528 11529Code and Data Size: Current and previous core subsystem library sizes are 11530shown below. These are the code and data sizes for the acpica.lib 11531produced 11532by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11533any ACPI driver or OSPM code. The debug version of the code includes the 11534debug output trace mechanism and has a much larger code and data size. 11535Note 11536that these values will vary depending on the efficiency of the compiler 11537and 11538the compiler options used during generation. 11539 11540 Previous Release: 11541 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11542 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11543 Current Release: 11544 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11545 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11546 11547 11548 115492) iASL Compiler/Disassembler: 11550 11551Allow the use of the ObjectType operator on uninitialized Locals and Args 11552(returns 0 as per the ACPI specification). 11553 11554Fixed a problem where the compiler would fault if there was a syntax 11555error 11556in the FieldName of all of the various CreateXXXField operators. 11557 11558Disallow the use of lower case letters within the EISAID macro, as per 11559the 11560ACPI specification. All EISAID strings must be of the form "UUUNNNN" 11561Where 11562U is an uppercase letter and N is a hex digit. 11563 11564 11565---------------------------------------- 1156606 October 2004. Summary of changes for version 20041006: 11567 115681) ACPI CA Core Subsystem: 11569 11570Implemented support for the ACPI 3.0 Timer operator. This ASL function 11571implements a 64-bit timer with 100 nanosecond granularity. 11572 11573Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 11574implement the ACPI 3.0 Timer operator. This allows the host OS to 11575implement 11576the timer with the best clock available. Also, it keeps the core 11577subsystem 11578out of the clock handling business, since the host OS (usually) performs 11579this function. 11580 11581Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 11582functions use a 64-bit address which is part of the packed ACPI Generic 11583Address Structure. Since the structure is non-aligned, the alignment 11584macros 11585are now used to extract the address to a local variable before use. 11586 11587Fixed a problem where the ToInteger operator assumed all input strings 11588were 11589hexadecimal. The operator now handles both decimal strings and hex 11590strings 11591(prefixed with "0x"). 11592 11593Fixed a problem where the string length in the string object created as a 11594result of the internal ConvertToString procedure could be incorrect. This 11595potentially affected all implicit conversions and also the 11596ToDecimalString 11597and ToHexString operators. 11598 11599Fixed two problems in the ToString operator. If the length parameter was 11600zero, an incorrect string object was created and the value of the input 11601length parameter was inadvertently changed from zero to Ones. 11602 11603Fixed a problem where the optional ResourceSource string in the 11604ExtendedIRQ 11605resource macro was ignored. 11606 11607Simplified the interfaces to the internal division functions, reducing 11608code 11609size and complexity. 11610 11611Code and Data Size: Current and previous core subsystem library sizes are 11612shown below. These are the code and data sizes for the acpica.lib 11613produced 11614by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11615any ACPI driver or OSPM code. The debug version of the code includes the 11616debug output trace mechanism and has a much larger code and data size. 11617Note 11618that these values will vary depending on the efficiency of the compiler 11619and 11620the compiler options used during generation.