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. 11621 11622 Previous Release: 11623 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11624 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11625 Current Release: 11626 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11627 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11628 11629 116302) iASL Compiler/Disassembler: 11631 11632Implemented support for the ACPI 3.0 Timer operator. 11633 11634Fixed a problem where the Default() operator was inadvertently ignored in 11635a 11636Switch/Case block. This was a problem in the translation of the Switch 11637statement to If...Else pairs. 11638 11639Added support to allow a standalone Return operator, with no parentheses 11640(or 11641operands). 11642 11643Fixed a problem with code generation for the ElseIf operator where the 11644translated Else...If parse tree was improperly constructed leading to the 11645loss of some code. 11646 11647---------------------------------------- 1164822 September 2004. Summary of changes for version 20040922: 11649 116501) ACPI CA Core Subsystem: 11651 11652Fixed a problem with the implementation of the LNot() operator where 11653"Ones" 11654was not returned for the TRUE case. Changed the code to return Ones 11655instead 11656of (!Arg) which was usually 1. This change affects iASL constant folding 11657for 11658this operator also. 11659 11660Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 11661not 11662initialized properly -- Now zero the entire buffer in this case where the 11663buffer already exists. 11664 11665Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 11666Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 11667related code considerably. This will require changes/updates to all OS 11668interface layers (OSLs.) 11669 11670Implemented a new external interface, AcpiInstallExceptionHandler, to 11671allow 11672a system exception handler to be installed. This handler is invoked upon 11673any 11674run-time exception that occurs during control method execution. 11675 11676Added support for the DSDT in AcpiTbFindTable. This allows the 11677DataTableRegion() operator to access the local copy of the DSDT. 11678 11679Code and Data Size: Current and previous core subsystem library sizes are 11680shown below. These are the code and data sizes for the acpica.lib 11681produced 11682by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11683any ACPI driver or OSPM code. The debug version of the code includes the 11684debug output trace mechanism and has a much larger code and data size. 11685Note 11686that these values will vary depending on the efficiency of the compiler 11687and 11688the compiler options used during generation. 11689 11690 Previous Release: 11691 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11692 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11693 Current Release: 11694 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11695 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11696 11697 116982) iASL Compiler/Disassembler: 11699 11700Fixed a problem with constant folding and the LNot operator. LNot was 11701returning 1 in the TRUE case, not Ones as per the ACPI specification. 11702This 11703could result in the generation of an incorrect folded/reduced constant. 11704 11705End-Of-File is now allowed within a "//"-style comment. A parse error no 11706longer occurs if such a comment is at the very end of the input ASL 11707source 11708file. 11709 11710Implemented the "-r" option to override the Revision in the table header. 11711The initial use of this option will be to simplify the evaluation of the 11712AML 11713interpreter by allowing a single ASL source module to be compiled for 11714either 1171532-bit or 64-bit integers. 11716 11717 11718---------------------------------------- 1171927 August 2004. Summary of changes for version 20040827: 11720 117211) ACPI CA Core Subsystem: 11722 11723- Implemented support for implicit object conversion in the non-numeric 11724logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 11725and 11726LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 11727the second operand is implicitly converted on the fly to match the type 11728of 11729the first operand. For example: 11730 11731 LEqual (Source1, Source2) 11732 11733Source1 and Source2 must each evaluate to an integer, a string, or a 11734buffer. 11735The data type of Source1 dictates the required type of Source2. Source2 11736is 11737implicitly converted if necessary to match the type of Source1. 11738 11739- Updated and corrected the behavior of the string conversion support. 11740The 11741rules concerning conversion of buffers to strings (according to the ACPI 11742specification) are as follows: 11743 11744ToDecimalString - explicit byte-wise conversion of buffer to string of 11745decimal values (0-255) separated by commas. ToHexString - explicit byte- 11746wise 11747conversion of buffer to string of hex values (0-FF) separated by commas. 11748ToString - explicit byte-wise conversion of buffer to string. Byte-by- 11749byte 11750copy with no transform except NULL terminated. Any other implicit buffer- 11751to- 11752string conversion - byte-wise conversion of buffer to string of hex 11753values 11754(0-FF) separated by spaces. 11755 11756- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 11757 11758- Fixed a problem in AcpiNsGetPathnameLength where the returned length 11759was 11760one byte too short in the case of a node in the root scope. This could 11761cause a fault during debug output. 11762 11763- Code and Data Size: Current and previous core subsystem library sizes 11764are 11765shown below. These are the code and data sizes for the acpica.lib 11766produced 11767by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11768any ACPI driver or OSPM code. The debug version of the code includes the 11769debug output trace mechanism and has a much larger code and data size. 11770Note 11771that these values will vary depending on the efficiency of the compiler 11772and 11773the compiler options used during generation. 11774 11775 Previous Release: 11776 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11777 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11778 Current Release: 11779 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11780 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11781 11782 117832) iASL Compiler/Disassembler: 11784 11785- Fixed a Linux generation error. 11786 11787 11788---------------------------------------- 1178916 August 2004. Summary of changes for version 20040816: 11790 117911) ACPI CA Core Subsystem: 11792 11793Designed and implemented support within the AML interpreter for the so- 11794called "implicit return". This support returns the result of the last 11795ASL 11796operation within a control method, in the absence of an explicit Return() 11797operator. A few machines depend on this behavior, even though it is not 11798explicitly supported by the ASL language. It is optional support that 11799can 11800be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 11801 11802Removed support for the PCI_Config address space from the internal low 11803level 11804hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 11805support was not used internally, and would not work correctly anyway 11806because 11807the PCI bus number and segment number were not supported. There are 11808separate interfaces for PCI configuration space access because of the 11809unique 11810interface. 11811 11812Code and Data Size: Current and previous core subsystem library sizes are 11813shown below. These are the code and data sizes for the acpica.lib 11814produced 11815by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11816any ACPI driver or OSPM code. The debug version of the code includes the 11817debug output trace mechanism and has a much larger code and data size. 11818Note 11819that these values will vary depending on the efficiency of the compiler 11820and 11821the compiler options used during generation. 11822 11823 Previous Release: 11824 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11825 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11826 Current Release: 11827 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11828 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11829 11830 118312) iASL Compiler/Disassembler: 11832 11833Fixed a problem where constants in ASL expressions at the root level (not 11834within a control method) could be inadvertently truncated during code 11835generation. This problem was introduced in the 20040715 release. 11836 11837 11838---------------------------------------- 1183915 July 2004. Summary of changes for version 20040715: 11840 118411) ACPI CA Core Subsystem: 11842 11843Restructured the internal HW GPE interfaces to pass/track the current 11844state 11845of interrupts (enabled/disabled) in order to avoid possible deadlock and 11846increase flexibility of the interfaces. 11847 11848Implemented a "lexicographical compare" for String and Buffer objects 11849within 11850the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 11851- 11852as per further clarification to the ACPI specification. Behavior is 11853similar 11854to C library "strcmp". 11855 11856Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 11857external function. In the 32-bit non-debug case, the stack use has been 11858reduced from 168 bytes to 32 bytes. 11859 11860Deployed a new run-time configuration flag, 11861AcpiGbl_EnableInterpreterSlack, 11862whose purpose is to allow the AML interpreter to forgive certain bad AML 11863constructs. Default setting is FALSE. 11864 11865Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 11866IO 11867support code. If enabled, it allows field access to go beyond the end of 11868a 11869region definition if the field is within the region length rounded up to 11870the 11871next access width boundary (a common coding error.) 11872 11873Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 11874ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 11875these 11876symbols are lowercased by the latest version of the AcpiSrc tool. 11877 11878The prototypes for the PCI interfaces in acpiosxf.h have been updated to 11879rename "Register" to simply "Reg" to prevent certain compilers from 11880complaining. 11881 11882Code and Data Size: Current and previous core subsystem library sizes are 11883shown below. These are the code and data sizes for the acpica.lib 11884produced 11885by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11886any ACPI driver or OSPM code. The debug version of the code includes the 11887debug output trace mechanism and has a much larger code and data size. 11888Note 11889that these values will vary depending on the efficiency of the compiler 11890and 11891the compiler options used during generation. 11892 11893 Previous Release: 11894 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11895 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11896 Current Release: 11897 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11898 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11899 11900 119012) iASL Compiler/Disassembler: 11902 11903Implemented full support for Package objects within the Case() operator. 11904Note: The Break() operator is currently not supported within Case blocks 11905(TermLists) as there is some question about backward compatibility with 11906ACPI 119071.0 interpreters. 11908 11909 11910Fixed a problem where complex terms were not supported properly within 11911the 11912Switch() operator. 11913 11914Eliminated extraneous warning for compiler-emitted reserved names of the 11915form "_T_x". (Used in Switch/Case operators.) 11916 11917Eliminated optimization messages for "_T_x" objects and small constants 11918within the DefinitionBlock operator. 11919 11920 11921---------------------------------------- 1192215 June 2004. Summary of changes for version 20040615: 11923 119241) ACPI CA Core Subsystem: 11925 11926Implemented support for Buffer and String objects (as per ACPI 2.0) for 11927the 11928following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11929LLessEqual. 11930 11931All directory names in the entire source package are lower case, as they 11932were in earlier releases. 11933 11934Implemented "Disassemble" command in the AML debugger that will 11935disassemble 11936a single control method. 11937 11938Code and Data Size: Current and previous core subsystem library sizes are 11939shown below. These are the code and data sizes for the acpica.lib 11940produced 11941by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11942any ACPI driver or OSPM code. The debug version of the code includes the 11943debug output trace mechanism and has a much larger code and data size. 11944Note 11945that these values will vary depending on the efficiency of the compiler 11946and 11947the compiler options used during generation. 11948 11949 Previous Release: 11950 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11951 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11952 11953 Current Release: 11954 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11955 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11956 11957 119582) iASL Compiler/Disassembler: 11959 11960Implemented support for Buffer and String objects (as per ACPI 2.0) for 11961the 11962following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11963LLessEqual. 11964 11965All directory names in the entire source package are lower case, as they 11966were in earlier releases. 11967 11968Fixed a fault when using the -g or -d<nofilename> options if the FADT was 11969not found. 11970 11971Fixed an issue with the Windows version of the compiler where later 11972versions 11973of Windows place the FADT in the registry under the name "FADT" and not 11974"FACP" as earlier versions did. This applies when using the -g or - 11975d<nofilename> options. The compiler now looks for both strings as 11976necessary. 11977 11978Fixed a problem with compiler namepath optimization where a namepath 11979within 11980the Scope() operator could not be optimized if the namepath was a subpath 11981of 11982the current scope path. 11983 11984---------------------------------------- 1198527 May 2004. Summary of changes for version 20040527: 11986 119871) ACPI CA Core Subsystem: 11988 11989Completed a new design and implementation for EBDA (Extended BIOS Data 11990Area) 11991support in the RSDP scan code. The original code improperly scanned for 11992the 11993EBDA by simply scanning from memory location 0 to 0x400. The correct 11994method 11995is to first obtain the EBDA pointer from within the BIOS data area, then 11996scan 1K of memory starting at the EBDA pointer. There appear to be few 11997if 11998any machines that place the RSDP in the EBDA, however. 11999 12000Integrated a fix for a possible fault during evaluation of BufferField 12001arguments. Obsolete code that was causing the problem was removed. 12002 12003Found and fixed a problem in the Field Support Code where data could be 12004corrupted on a bit field read that starts on an aligned boundary but does 12005not end on an aligned boundary. Merged the read/write "datum length" 12006calculation code into a common procedure. 12007 12008Rolled in a couple of changes to the FreeBSD-specific header. 12009 12010 12011Code and Data Size: Current and previous core subsystem library sizes are 12012shown below. These are the code and data sizes for the acpica.lib 12013produced 12014by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12015any ACPI driver or OSPM code. The debug version of the code includes the 12016debug output trace mechanism and has a much larger code and data size. 12017Note 12018that these values will vary depending on the efficiency of the compiler 12019and 12020the compiler options used during generation. 12021 12022 Previous Release: 12023 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12024 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12025 Current Release: 12026 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12027 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12028 12029 120302) iASL Compiler/Disassembler: 12031 12032Fixed a generation warning produced by some overly-verbose compilers for 12033a 1203464-bit constant. 12035 12036---------------------------------------- 1203714 May 2004. Summary of changes for version 20040514: 12038 120391) ACPI CA Core Subsystem: 12040 12041Fixed a problem where hardware GPE enable bits sometimes not set properly 12042during and after GPE method execution. Result of 04/27 changes. 12043 12044Removed extra "clear all GPEs" when sleeping/waking. 12045 12046Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12047AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12048to 12049the new AcpiEv* calls as appropriate. 12050 12051ACPI_OS_NAME was removed from the OS-specific headers. The default name 12052is 12053now "Microsoft Windows NT" for maximum compatibility. However this can 12054be 12055changed by modifying the acconfig.h file. 12056 12057Allow a single invocation of AcpiInstallNotifyHandler for a handler that 12058traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12059 12060Run _INI methods on ThermalZone objects. This is against the ACPI 12061specification, but there is apparently ASL code in the field that has 12062these 12063_INI methods, and apparently "other" AML interpreters execute them. 12064 12065Performed a full 16/32/64 bit lint that resulted in some small changes. 12066 12067Added a sleep simulation command to the AML debugger to test sleep code. 12068 12069Code and Data Size: Current and previous core subsystem library sizes are 12070shown below. These are the code and data sizes for the acpica.lib 12071produced 12072by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12073any ACPI driver or OSPM code. The debug version of the code includes the 12074debug output trace mechanism and has a much larger code and data size. 12075Note 12076that these values will vary depending on the efficiency of the compiler 12077and 12078the compiler options used during generation. 12079 12080 Previous Release: 12081 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12082 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12083 Current Release: 12084 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12085 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12086 12087---------------------------------------- 1208827 April 2004. Summary of changes for version 20040427: 12089 120901) ACPI CA Core Subsystem: 12091 12092Completed a major overhaul of the GPE handling within ACPI CA. There are 12093now three types of GPEs: wake-only, runtime-only, and combination 12094wake/run. 12095The only GPEs allowed to be combination wake/run are for button-style 12096devices such as a control-method power button, control-method sleep 12097button, 12098or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12099not 12100referenced by any _PRW methods are marked for "runtime" and hardware 12101enabled. Any GPE that is referenced by a _PRW method is marked for 12102"wake" 12103(and disabled at runtime). However, at sleep time, only those GPEs that 12104have been specifically enabled for wake via the AcpiEnableGpe interface 12105will 12106actually be hardware enabled. 12107 12108A new external interface has been added, AcpiSetGpeType(), that is meant 12109to 12110be used by device drivers to force a GPE to a particular type. It will 12111be 12112especially useful for the drivers for the button devices mentioned above. 12113 12114Completed restructuring of the ACPI CA initialization sequence so that 12115default operation region handlers are installed before GPEs are 12116initialized 12117and the _PRW methods are executed. This will prevent errors when the 12118_PRW 12119methods attempt to access system memory or I/O space. 12120 12121GPE enable/disable no longer reads the GPE enable register. We now keep 12122the 12123enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12124thus no longer depend on the hardware to maintain these bits. 12125 12126Always clear the wake status and fixed/GPE status bits before sleep, even 12127for state S5. 12128 12129Improved the AML debugger output for displaying the GPE blocks and their 12130current status. 12131 12132Added new strings for the _OSI method, of the form "Windows 2001 SPx" 12133where 12134x = 0,1,2,3,4. 12135 12136Fixed a problem where the physical address was incorrectly calculated 12137when 12138the Load() operator was used to directly load from an Operation Region 12139(vs. 12140loading from a Field object.) Also added check for minimum table length 12141for 12142this case. 12143 12144Fix for multiple mutex acquisition. Restore original thread SyncLevel on 12145mutex release. 12146 12147Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12148consistency with the other fields returned. 12149 12150Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12151structure for each GPE in the system, so the size of this structure is 12152important. 12153 12154CPU stack requirement reduction: Cleaned up the method execution and 12155object 12156evaluation paths so that now a parameter structure is passed, instead of 12157copying the various method parameters over and over again. 12158 12159In evregion.c: Correctly exit and reenter the interpreter region if and 12160only if dispatching an operation region request to a user-installed 12161handler. 12162Do not exit/reenter when dispatching to a default handler (e.g., default 12163system memory or I/O handlers) 12164 12165 12166Notes for updating drivers for the new GPE support. The following 12167changes 12168must be made to ACPI-related device drivers that are attached to one or 12169more 12170GPEs: (This information will be added to the ACPI CA Programmer 12171Reference.) 12172 121731) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12174must 12175explicitly call AcpiEnableGpe. 121762) There is a new interface called AcpiSetGpeType. This should be called 12177before enabling the GPE. Also, this interface will automatically disable 12178the GPE if it is currently enabled. 121793) AcpiEnableGpe no longer supports a GPE type flag. 12180 12181Specific drivers that must be changed: 121821) EC driver: 12183 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12184AeGpeHandler, NULL); 12185 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12186 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12187 121882) Button Drivers (Power, Lid, Sleep): 12189Run _PRW method under parent device 12190If _PRW exists: /* This is a control-method button */ 12191 Extract GPE number and possibly GpeDevice 12192 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12193 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12194 12195For all other devices that have _PRWs, we automatically set the GPE type 12196to 12197ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12198This 12199must be done on a selective basis, usually requiring some kind of user 12200app 12201to allow the user to pick the wake devices. 12202 12203 12204Code and Data Size: Current and previous core subsystem library sizes are 12205shown below. These are the code and data sizes for the acpica.lib 12206produced 12207by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12208any ACPI driver or OSPM code. The debug version of the code includes the 12209debug output trace mechanism and has a much larger code and data size. 12210Note 12211that these values will vary depending on the efficiency of the compiler 12212and 12213the compiler options used during generation. 12214 12215 Previous Release: 12216 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12217 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12218 Current Release: 12219 12220 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12221 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12222 12223 12224 12225---------------------------------------- 1222602 April 2004. Summary of changes for version 20040402: 12227 122281) ACPI CA Core Subsystem: 12229 12230Fixed an interpreter problem where an indirect store through an ArgX 12231parameter was incorrectly applying the "implicit conversion rules" during 12232the store. From the ACPI specification: "If the target is a method local 12233or 12234argument (LocalX or ArgX), no conversion is performed and the result is 12235stored directly to the target". The new behavior is to disable implicit 12236conversion during ALL stores to an ArgX. 12237 12238Changed the behavior of the _PRW method scan to ignore any and all errors 12239returned by a given _PRW. This prevents the scan from aborting from the 12240failure of any single _PRW. 12241 12242Moved the runtime configuration parameters from the global init procedure 12243to 12244static variables in acglobal.h. This will allow the host to override the 12245default values easily. 12246 12247Code and Data Size: Current and previous core subsystem library sizes are 12248shown below. These are the code and data sizes for the acpica.lib 12249produced 12250by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12251any ACPI driver or OSPM code. The debug version of the code includes the 12252debug output trace mechanism and has a much larger code and data size. 12253Note 12254that these values will vary depending on the efficiency of the compiler 12255and 12256the compiler options used during generation. 12257 12258 Previous Release: 12259 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12260 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12261 Current Release: 12262 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12263 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12264 12265 122662) iASL Compiler/Disassembler: 12267 12268iASL now fully disassembles SSDTs. However, External() statements are 12269not 12270generated automatically for unresolved symbols at this time. This is a 12271planned feature for future implementation. 12272 12273Fixed a scoping problem in the disassembler that occurs when the type of 12274the 12275target of a Scope() operator is overridden. This problem caused an 12276incorrectly nested internal namespace to be constructed. 12277 12278Any warnings or errors that are emitted during disassembly are now 12279commented 12280out automatically so that the resulting file can be recompiled without 12281any 12282hand editing. 12283 12284---------------------------------------- 1228526 March 2004. Summary of changes for version 20040326: 12286 122871) ACPI CA Core Subsystem: 12288 12289Implemented support for "wake" GPEs via interaction between GPEs and the 12290_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12291identified as a WAKE GPE and by default will no longer be enabled at 12292runtime. Previously, we were blindly enabling all GPEs with a 12293corresponding 12294_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12295We 12296believe this has been the cause of thousands of "spurious" GPEs on some 12297systems. 12298 12299This new GPE behavior is can be reverted to the original behavior (enable 12300ALL GPEs at runtime) via a runtime flag. 12301 12302Fixed a problem where aliased control methods could not access objects 12303properly. The proper scope within the namespace was not initialized 12304(transferred to the target of the aliased method) before executing the 12305target method. 12306 12307Fixed a potential race condition on internal object deletion on the 12308return 12309object in AcpiEvaluateObject. 12310 12311Integrated a fix for resource descriptors where both _MEM and _MTP were 12312being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12313wide, 0x0F instead of 0x03.) 12314 12315Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12316preventing 12317a 12318fault in some cases. 12319 12320Updated Notify() values for debug statements in evmisc.c 12321 12322Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12323 12324Code and Data Size: Current and previous core subsystem library sizes are 12325shown below. These are the code and data sizes for the acpica.lib 12326produced 12327by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12328any ACPI driver or OSPM code. The debug version of the code includes the 12329debug output trace mechanism and has a much larger code and data size. 12330Note 12331that these values will vary depending on the efficiency of the compiler 12332and 12333the compiler options used during generation. 12334 12335 Previous Release: 12336 12337 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12338 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12339 Current Release: 12340 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12341 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12342 12343---------------------------------------- 1234411 March 2004. Summary of changes for version 20040311: 12345 123461) ACPI CA Core Subsystem: 12347 12348Fixed a problem where errors occurring during the parse phase of control 12349method execution did not abort cleanly. For example, objects created and 12350installed in the namespace were not deleted. This caused all subsequent 12351invocations of the method to return the AE_ALREADY_EXISTS exception. 12352 12353Implemented a mechanism to force a control method to "Serialized" 12354execution 12355if the method attempts to create namespace objects. (The root of the 12356AE_ALREADY_EXISTS problem.) 12357 12358Implemented support for the predefined _OSI "internal" control method. 12359Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 12360and 12361"Windows 2001.1", and can be easily upgraded for new strings as 12362necessary. 12363This feature will allow "other" operating systems to execute the fully 12364tested, "Windows" code path through the ASL code 12365 12366Global Lock Support: Now allows multiple acquires and releases with any 12367internal thread. Removed concept of "owning thread" for this special 12368mutex. 12369 12370Fixed two functions that were inappropriately declaring large objects on 12371the 12372CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12373during 12374method execution considerably. 12375 12376Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12377S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12378 12379Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12380defined on the machine. 12381 12382Implemented two runtime options: One to force all control method 12383execution 12384to "Serialized" to mimic Windows behavior, another to disable _OSI 12385support 12386if it causes problems on a given machine. 12387 12388Code and Data Size: Current and previous core subsystem library sizes are 12389shown below. These are the code and data sizes for the acpica.lib 12390produced 12391by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12392any ACPI driver or OSPM code. The debug version of the code includes the 12393debug output trace mechanism and has a much larger code and data size. 12394Note 12395that these values will vary depending on the efficiency of the compiler 12396and 12397the compiler options used during generation. 12398 12399 Previous Release: 12400 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12401 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12402 Current Release: 12403 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12404 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12405 124062) iASL Compiler/Disassembler: 12407 12408Fixed an array size problem for FreeBSD that would cause the compiler to 12409fault. 12410 12411---------------------------------------- 1241220 February 2004. Summary of changes for version 20040220: 12413 12414 124151) ACPI CA Core Subsystem: 12416 12417Implemented execution of _SxD methods for Device objects in the 12418GetObjectInfo interface. 12419 12420Fixed calls to _SST method to pass the correct arguments. 12421 12422Added a call to _SST on wake to restore to "working" state. 12423 12424Check for End-Of-Buffer failure case in the WalkResources interface. 12425 12426Integrated fix for 64-bit alignment issue in acglobal.h by moving two 12427structures to the beginning of the file. 12428 12429After wake, clear GPE status register(s) before enabling GPEs. 12430 12431After wake, clear/enable power button. (Perhaps we should clear/enable 12432all 12433fixed events upon wake.) 12434 12435Fixed a couple of possible memory leaks in the Namespace manager. 12436 12437Integrated latest acnetbsd.h file. 12438 12439---------------------------------------- 1244011 February 2004. Summary of changes for version 20040211: 12441 12442 124431) ACPI CA Core Subsystem: 12444 12445Completed investigation and implementation of the call-by-reference 12446mechanism for control method arguments. 12447 12448Fixed a problem where a store of an object into an indexed package could 12449fail if the store occurs within a different method than the method that 12450created the package. 12451 12452Fixed a problem where the ToDecimal operator could return incorrect 12453results. 12454 12455Fixed a problem where the CopyObject operator could fail on some of the 12456more 12457obscure objects (e.g., Reference objects.) 12458 12459Improved the output of the Debug object to display buffer, package, and 12460index objects. 12461 12462Fixed a problem where constructs of the form "RefOf (ArgX)" did not 12463return 12464the expected result. 12465 12466Added permanent ACPI_REPORT_ERROR macros for all instances of the 12467ACPI_AML_INTERNAL exception. 12468 12469Integrated latest version of acfreebsd.h 12470 12471---------------------------------------- 1247216 January 2004. Summary of changes for version 20040116: 12473 12474The purpose of this release is primarily to update the copyright years in 12475each module, thus causing a huge number of diffs. There are a few small 12476functional changes, however. 12477 124781) ACPI CA Core Subsystem: 12479 12480Improved error messages when there is a problem finding one or more of 12481the 12482required base ACPI tables 12483 12484Reintroduced the definition of APIC_HEADER in actbl.h 12485 12486Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 12487 12488Removed extraneous reference to NewObj in dsmthdat.c 12489 124902) iASL compiler 12491 12492Fixed a problem introduced in December that disabled the correct 12493disassembly 12494of Resource Templates 12495 12496 12497---------------------------------------- 1249803 December 2003. Summary of changes for version 20031203: 12499 125001) ACPI CA Core Subsystem: 12501 12502Changed the initialization of Operation Regions during subsystem 12503init to perform two entire walks of the ACPI namespace; The first 12504to initialize the regions themselves, the second to execute the 12505_REG methods. This fixed some interdependencies across _REG 12506methods found on some machines. 12507 12508Fixed a problem where a Store(Local0, Local1) could simply update 12509the object reference count, and not create a new copy of the 12510object if the Local1 is uninitialized. 12511 12512Implemented support for the _SST reserved method during sleep 12513transitions. 12514 12515Implemented support to clear the SLP_TYP and SLP_EN bits when 12516waking up, this is apparently required by some machines. 12517 12518When sleeping, clear the wake status only if SleepState is not S5. 12519 12520Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 12521pointer arithmetic advanced a string pointer too far. 12522 12523Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 12524could be returned if the requested table has not been loaded. 12525 12526Within the support for IRQ resources, restructured the handling of 12527the active and edge/level bits. 12528 12529Fixed a few problems in AcpiPsxExecute() where memory could be 12530leaked under certain error conditions. 12531 12532Improved error messages for the cases where the ACPI mode could 12533not be entered. 12534 12535Code and Data Size: Current and previous core subsystem library 12536sizes are shown below. These are the code and data sizes for the 12537acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12538these values do not include any ACPI driver or OSPM code. The 12539debug version of the code includes the debug output trace 12540mechanism and has a much larger code and data size. Note that 12541these values will vary depending on the efficiency of the compiler 12542and the compiler options used during generation. 12543 12544 Previous Release (20031029): 12545 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12546 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12547 Current Release: 12548 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12549 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12550 125512) iASL Compiler/Disassembler: 12552 12553Implemented a fix for the iASL disassembler where a bad index was 12554generated. This was most noticeable on 64-bit platforms 12555 12556 12557---------------------------------------- 1255829 October 2003. Summary of changes for version 20031029: 12559 125601) ACPI CA Core Subsystem: 12561 12562 12563Fixed a problem where a level-triggered GPE with an associated 12564_Lxx control method was incorrectly cleared twice. 12565 12566Fixed a problem with the Field support code where an access can 12567occur beyond the end-of-region if the field is non-aligned but 12568extends to the very end of the parent region (resulted in an 12569AE_AML_REGION_LIMIT exception.) 12570 12571Fixed a problem with ACPI Fixed Events where an RT Clock handler 12572would not get invoked on an RTC event. The RTC event bitmasks for 12573the PM1 registers were not being initialized properly. 12574 12575Implemented support for executing _STA and _INI methods for 12576Processor objects. Although this is currently not part of the 12577ACPI specification, there is existing ASL code that depends on the 12578init-time execution of these methods. 12579 12580Implemented and deployed a GetDescriptorName function to decode 12581the various types of internal descriptors. Guards against null 12582descriptors during debug output also. 12583 12584Implemented and deployed a GetNodeName function to extract the 4- 12585character namespace node name. This function simplifies the debug 12586and error output, as well as guarding against null pointers during 12587output. 12588 12589Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 12590simplify the debug and error output of 64-bit integers. This 12591macro replaces the HIDWORD and LODWORD macros for dumping these 12592integers. 12593 12594Updated the implementation of the Stall() operator to only call 12595AcpiOsStall(), and also return an error if the operand is larger 12596than 255. This preserves the required behavior of not 12597relinquishing the processor, as would happen if AcpiOsSleep() was 12598called for "long stalls". 12599 12600Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 12601initialized are now treated as NOOPs. 12602 12603Cleaned up a handful of warnings during 64-bit generation. 12604 12605Fixed a reported error where and incorrect GPE number was passed 12606to the GPE dispatch handler. This value is only used for error 12607output, however. Used this opportunity to clean up and streamline 12608the GPE dispatch code. 12609 12610Code and Data Size: Current and previous core subsystem library 12611sizes are shown below. These are the code and data sizes for the 12612acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12613these values do not include any ACPI driver or OSPM code. The 12614 12615debug version of the code includes the debug output trace 12616mechanism and has a much larger code and data size. Note that 12617these values will vary depending on the efficiency of the compiler 12618and the compiler options used during generation. 12619 12620 Previous Release (20031002): 12621 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12622 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12623 Current Release: 12624 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12625 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12626 12627 126282) iASL Compiler/Disassembler: 12629 12630Updated the iASL compiler to return an error if the operand to the 12631Stall() operator is larger than 255. 12632 12633 12634---------------------------------------- 1263502 October 2003. Summary of changes for version 20031002: 12636 12637 126381) ACPI CA Core Subsystem: 12639 12640Fixed a problem with Index Fields where the index was not 12641incremented for fields that require multiple writes to the 12642index/data registers (Fields that are wider than the data 12643register.) 12644 12645Fixed a problem with all Field objects where a write could go 12646beyond the end-of-field if the field was larger than the access 12647granularity and therefore required multiple writes to complete the 12648request. An extra write beyond the end of the field could happen 12649inadvertently. 12650 12651Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 12652would incorrectly be returned if the width of the Data Register 12653was larger than the specified field access width. 12654 12655Completed fixes for LoadTable() and Unload() and verified their 12656operation. Implemented full support for the "DdbHandle" object 12657throughout the ACPI CA subsystem. 12658 12659Implemented full support for the MADT and ECDT tables in the ACPI 12660CA header files. Even though these tables are not directly 12661consumed by ACPI CA, the header definitions are useful for ACPI 12662device drivers. 12663 12664Integrated resource descriptor fixes posted to the Linux ACPI 12665list. This included checks for minimum descriptor length, and 12666support for trailing NULL strings within descriptors that have 12667optional string elements. 12668 12669Code and Data Size: Current and previous core subsystem library 12670sizes are shown below. These are the code and data sizes for the 12671acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12672these values do not include any ACPI driver or OSPM code. The 12673debug version of the code includes the debug output trace 12674mechanism and has a much larger code and data size. Note that 12675these values will vary depending on the efficiency of the compiler 12676and the compiler options used during generation. 12677 12678 Previous Release (20030918): 12679 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12680 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12681 Current Release: 12682 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12683 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12684 12685 126862) iASL Compiler: 12687 12688Implemented detection of non-ASCII characters within the input 12689source ASL file. This catches attempts to compile binary (AML) 12690files early in the compile, with an informative error message. 12691 12692Fixed a problem where the disassembler would fault if the output 12693filename could not be generated or if the output file could not be 12694opened. 12695 12696---------------------------------------- 1269718 September 2003. Summary of changes for version 20030918: 12698 12699 127001) ACPI CA Core Subsystem: 12701 12702Found and fixed a longstanding problem with the late execution of 12703the various deferred AML opcodes (such as Operation Regions, 12704Buffer Fields, Buffers, and Packages). If the name string 12705specified for the name of the new object placed the object in a 12706scope other than the current scope, the initialization/execution 12707of the opcode failed. The solution to this problem was to 12708implement a mechanism where the late execution of such opcodes 12709does not attempt to lookup/create the name a second time in an 12710incorrect scope. This fixes the "region size computed 12711incorrectly" problem. 12712 12713Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 12714Global Lock AE_BAD_PARAMETER error. 12715 12716Fixed several 64-bit issues with prototypes, casting and data 12717types. 12718 12719Removed duplicate prototype from acdisasm.h 12720 12721Fixed an issue involving EC Operation Region Detach (Shaohua Li) 12722 12723Code and Data Size: Current and previous core subsystem library 12724sizes are shown below. These are the code and data sizes for the 12725acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12726these values do not include any ACPI driver or OSPM code. The 12727debug version of the code includes the debug output trace 12728mechanism and has a much larger code and data size. Note that 12729these values will vary depending on the efficiency of the compiler 12730and the compiler options used during generation. 12731 12732 Previous Release: 12733 12734 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12735 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12736 Current Release: 12737 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12738 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12739 12740 127412) Linux: 12742 12743Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 12744correct sleep time in seconds. 12745 12746---------------------------------------- 1274714 July 2003. Summary of changes for version 20030619: 12748 127491) ACPI CA Core Subsystem: 12750 12751Parse SSDTs in order discovered, as opposed to reverse order 12752(Hrvoje Habjanic) 12753 12754Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 12755Klausner, 12756 Nate Lawson) 12757 12758 127592) Linux: 12760 12761Dynamically allocate SDT list (suggested by Andi Kleen) 12762 12763proc function return value cleanups (Andi Kleen) 12764 12765Correctly handle NMI watchdog during long stalls (Andrew Morton) 12766 12767Make it so acpismp=force works (reported by Andrew Morton) 12768 12769 12770---------------------------------------- 1277119 June 2003. Summary of changes for version 20030619: 12772 127731) ACPI CA Core Subsystem: 12774 12775Fix To/FromBCD, eliminating the need for an arch-specific #define. 12776 12777Do not acquire a semaphore in the S5 shutdown path. 12778 12779Fix ex_digits_needed for 0. (Takayoshi Kochi) 12780 12781Fix sleep/stall code reversal. (Andi Kleen) 12782 12783Revert a change having to do with control method calling 12784semantics. 12785 127862) Linux: 12787 12788acpiphp update (Takayoshi Kochi) 12789 12790Export acpi_disabled for sonypi (Stelian Pop) 12791 12792Mention acpismp=force in config help 12793 12794Re-add acpitable.c and acpismp=force. This improves backwards 12795 12796compatibility and also cleans up the code to a significant degree. 12797 12798Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 12799 12800---------------------------------------- 1280122 May 2003. Summary of changes for version 20030522: 12802 128031) ACPI CA Core Subsystem: 12804 12805Found and fixed a reported problem where an AE_NOT_FOUND error 12806occurred occasionally during _BST evaluation. This turned out to 12807be an Owner ID allocation issue where a called method did not get 12808a new ID assigned to it. Eventually, (after 64k calls), the Owner 12809ID UINT16 would wraparound so that the ID would be the same as the 12810caller's and the called method would delete the caller's 12811namespace. 12812 12813Implemented extended error reporting for control methods that are 12814aborted due to a run-time exception. Output includes the exact 12815AML instruction that caused the method abort, a dump of the method 12816locals and arguments at the time of the abort, and a trace of all 12817nested control method calls. 12818 12819Modified the interpreter to allow the creation of buffers of zero 12820length from the AML code. Implemented new code to ensure that no 12821attempt is made to actually allocate a memory buffer (of length 12822zero) - instead, a simple buffer object with a NULL buffer pointer 12823and length zero is created. A warning is no longer issued when 12824the AML attempts to create a zero-length buffer. 12825 12826Implemented a workaround for the "leading asterisk issue" in 12827_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 12828asterisk is automatically removed if present in any HID, UID, or 12829CID strings. The iASL compiler will still flag this asterisk as 12830an error, however. 12831 12832Implemented full support for _CID methods that return a package of 12833multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 12834now additionally returns a device _CID list if present. This 12835required a change to the external interface in order to pass an 12836ACPI_BUFFER object as a parameter since the _CID list is of 12837variable length. 12838 12839Fixed a problem with the new AE_SAME_HANDLER exception where 12840handler initialization code did not know about this exception. 12841 12842Code and Data Size: Current and previous core subsystem library 12843sizes are shown below. These are the code and data sizes for the 12844acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12845these values do not include any ACPI driver or OSPM code. The 12846debug version of the code includes the debug output trace 12847mechanism and has a much larger code and data size. Note that 12848these values will vary depending on the efficiency of the compiler 12849and the compiler options used during generation. 12850 12851 Previous Release (20030509): 12852 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12853 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12854 Current Release: 12855 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12856 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12857 12858 128592) Linux: 12860 12861Fixed a bug in which we would reinitialize the ACPI interrupt 12862after it was already working, thus disabling all ACPI and the IRQs 12863for any other device sharing the interrupt. (Thanks to Stian 12864Jordet) 12865 12866Toshiba driver update (John Belmonte) 12867 12868Return only 0 or 1 for our interrupt handler status (Andrew 12869Morton) 12870 12871 128723) iASL Compiler: 12873 12874Fixed a reported problem where multiple (nested) ElseIf() 12875statements were not handled correctly by the compiler, resulting 12876in incorrect warnings and incorrect AML code. This was a problem 12877in both the ASL parser and the code generator. 12878 12879 128804) Documentation: 12881 12882Added changes to existing interfaces, new exception codes, and new 12883text concerning reference count object management versus garbage 12884collection. 12885 12886---------------------------------------- 1288709 May 2003. Summary of changes for version 20030509. 12888 12889 128901) ACPI CA Core Subsystem: 12891 12892Changed the subsystem initialization sequence to hold off 12893installation of address space handlers until the hardware has been 12894initialized and the system has entered ACPI mode. This is because 12895the installation of space handlers can cause _REG methods to be 12896run. Previously, the _REG methods could potentially be run before 12897ACPI mode was enabled. 12898 12899Fixed some memory leak issues related to address space handler and 12900notify handler installation. There were some problems with the 12901reference count mechanism caused by the fact that the handler 12902objects are shared across several namespace objects. 12903 12904Fixed a reported problem where reference counts within the 12905namespace were not properly updated when named objects created by 12906method execution were deleted. 12907 12908Fixed a reported problem where multiple SSDTs caused a deletion 12909issue during subsystem termination. Restructured the table data 12910structures to simplify the linked lists and the related code. 12911 12912Fixed a problem where the table ID associated with secondary 12913tables (SSDTs) was not being propagated into the namespace objects 12914created by those tables. This would only present a problem for 12915tables that are unloaded at run-time, however. 12916 12917Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 12918type as the length parameter (instead of UINT32). 12919 12920Solved a long-standing problem where an ALREADY_EXISTS error 12921appears on various systems. This problem could happen when there 12922are multiple PCI_Config operation regions under a single PCI root 12923bus. This doesn't happen very frequently, but there are some 12924systems that do this in the ASL. 12925 12926Fixed a reported problem where the internal DeleteNode function 12927was incorrectly handling the case where a namespace node was the 12928first in the parent's child list, and had additional peers (not 12929the only child, but first in the list of children.) 12930 12931Code and Data Size: Current core subsystem library sizes are shown 12932below. These are the code and data sizes for the acpica.lib 12933produced by the Microsoft Visual C++ 6.0 compiler, and these 12934values do not include any ACPI driver or OSPM code. The debug 12935version of the code includes the debug output trace mechanism and 12936has a much larger code and data size. Note that these values will 12937vary depending on the efficiency of the compiler and the compiler 12938options used during generation. 12939 12940 Previous Release 12941 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12942 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12943 Current Release: 12944 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12945 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12946 12947 129482) Linux: 12949 12950Allow ":" in OS override string (Ducrot Bruno) 12951 12952Kobject fix (Greg KH) 12953 12954 129553 iASL Compiler/Disassembler: 12956 12957Fixed a problem in the generation of the C source code files (AML 12958is emitted in C source statements for BIOS inclusion) where the 12959Ascii dump that appears within a C comment at the end of each line 12960could cause a compile time error if the AML sequence happens to 12961have an open comment or close comment sequence embedded. 12962 12963 12964---------------------------------------- 1296524 April 2003. Summary of changes for version 20030424. 12966 12967 129681) ACPI CA Core Subsystem: 12969 12970Support for big-endian systems has been implemented. Most of the 12971support has been invisibly added behind big-endian versions of the 12972ACPI_MOVE_* macros. 12973 12974Fixed a problem in AcpiHwDisableGpeBlock() and 12975AcpiHwClearGpeBlock() where an incorrect offset was passed to the 12976low level hardware write routine. The offset parameter was 12977actually eliminated from the low level read/write routines because 12978they had become obsolete. 12979 12980Fixed a problem where a handler object was deleted twice during 12981the removal of a fixed event handler. 12982 12983 129842) Linux: 12985 12986A fix for SMP systems with link devices was contributed by 12987 12988Compaq's Dan Zink. 12989 12990(2.5) Return whether we handled the interrupt in our IRQ handler. 12991(Linux ISRs no longer return void, so we can propagate the handler 12992return value from the ACPI CA core back to the OS.) 12993 12994 12995 129963) Documentation: 12997 12998The ACPI CA Programmer Reference has been updated to reflect new 12999interfaces and changes to existing interfaces. 13000 13001---------------------------------------- 1300228 March 2003. Summary of changes for version 20030328. 13003 130041) ACPI CA Core Subsystem: 13005 13006The GPE Block Device support has been completed. New interfaces 13007are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13008interfaces (enable, disable, clear, getstatus) have been split 13009into separate interfaces for Fixed Events and General Purpose 13010Events (GPEs) in order to support GPE Block Devices properly. 13011 13012Fixed a problem where the error message "Failed to acquire 13013semaphore" would appear during operations on the embedded 13014controller (EC). 13015 13016Code and Data Size: Current core subsystem library sizes are shown 13017below. These are the code and data sizes for the acpica.lib 13018produced by the Microsoft Visual C++ 6.0 compiler, and these 13019values do not include any ACPI driver or OSPM code. The debug 13020version of the code includes the debug output trace mechanism and 13021has a much larger code and data size. Note that these values will 13022vary depending on the efficiency of the compiler and the compiler 13023options used during generation. 13024 13025 Previous Release 13026 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13027 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13028 Current Release: 13029 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13030 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13031 13032 13033---------------------------------------- 1303428 February 2003. Summary of changes for version 20030228. 13035 13036 130371) ACPI CA Core Subsystem: 13038 13039The GPE handling and dispatch code has been completely overhauled 13040in preparation for support of GPE Block Devices (ID ACPI0006). 13041This affects internal data structures and code only; there should 13042be no differences visible externally. One new file has been 13043added, evgpeblk.c 13044 13045The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13046fields that are used to determine the GPE block lengths. The 13047REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13048structures are ignored. This is per the ACPI specification but it 13049isn't very clear. The full 256 Block 0/1 GPEs are now supported 13050(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13051 13052In the SCI interrupt handler, removed the read of the PM1_CONTROL 13053register to look at the SCI_EN bit. On some machines, this read 13054causes an SMI event and greatly slows down SCI events. (This may 13055in fact be the cause of slow battery status response on some 13056systems.) 13057 13058Fixed a problem where a store of a NULL string to a package object 13059could cause the premature deletion of the object. This was seen 13060during execution of the battery _BIF method on some systems, 13061resulting in no battery data being returned. 13062 13063Added AcpiWalkResources interface to simplify parsing of resource 13064lists. 13065 13066Code and Data Size: Current core subsystem library sizes are shown 13067below. These are the code and data sizes for the acpica.lib 13068produced by the Microsoft Visual C++ 6.0 compiler, and these 13069values do not include any ACPI driver or OSPM code. The debug 13070version of the code includes the debug output trace mechanism and 13071has a much larger code and data size. Note that these values will 13072vary depending on the efficiency of the compiler and the compiler 13073options used during generation. 13074 13075 Previous Release 13076 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13077 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13078 Current Release: 13079 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13080 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13081 13082 130832) Linux 13084 13085S3 fixes (Ole Rohne) 13086 13087Update ACPI PHP driver with to use new acpi_walk_resource API 13088(Bjorn Helgaas) 13089 13090Add S4BIOS support (Pavel Machek) 13091 13092Map in entire table before performing checksum (John Stultz) 13093 13094Expand the mem= cmdline to allow the specification of reserved and 13095ACPI DATA blocks (Pavel Machek) 13096 13097Never use ACPI on VISWS 13098 13099Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13100 13101Revert a change that allowed P_BLK lengths to be 4 or 5. This is 13102causing us to think that some systems support C2 when they really 13103don't. 13104 13105Do not count processor objects for non-present CPUs (Thanks to 13106Dominik Brodowski) 13107 13108 131093) iASL Compiler: 13110 13111Fixed a problem where ASL include files could not be found and 13112opened. 13113 13114Added support for the _PDC reserved name. 13115 13116 13117---------------------------------------- 1311822 January 2003. Summary of changes for version 20030122. 13119 13120 131211) ACPI CA Core Subsystem: 13122 13123Added a check for constructs of the form: Store (Local0, Local0) 13124where Local0 is not initialized. Apparently, some BIOS 13125programmers believe that this is a NOOP. Since this store doesn't 13126do anything anyway, the new prototype behavior will ignore this 13127error. This is a case where we can relax the strict checking in 13128the interpreter in the name of compatibility. 13129 13130 131312) Linux 13132 13133The AcpiSrc Source Conversion Utility has been released with the 13134Linux package for the first time. This is the utility that is 13135used to convert the ACPI CA base source code to the Linux version. 13136 13137(Both) Handle P_BLK lengths shorter than 6 more gracefully 13138 13139(Both) Move more headers to include/acpi, and delete an unused 13140header. 13141 13142(Both) Move drivers/acpi/include directory to include/acpi 13143 13144(Both) Boot functions don't use cmdline, so don't pass it around 13145 13146(Both) Remove include of unused header (Adrian Bunk) 13147 13148(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13149the 13150former now also includes the latter, acpiphp.h only needs the one, 13151now. 13152 13153(2.5) Make it possible to select method of bios restoring after S3 13154resume. [=> no more ugly ifdefs] (Pavel Machek) 13155 13156(2.5) Make proc write interfaces work (Pavel Machek) 13157 13158(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13159 13160(2.5) Break out ACPI Perf code into its own module, under cpufreq 13161(Dominik Brodowski) 13162 13163(2.4) S4BIOS support (Ducrot Bruno) 13164 13165(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13166Visinoni) 13167 13168 131693) iASL Compiler: 13170 13171Added support to disassemble SSDT and PSDTs. 13172 13173Implemented support to obtain SSDTs from the Windows registry if 13174available. 13175 13176 13177---------------------------------------- 1317809 January 2003. Summary of changes for version 20030109. 13179 131801) ACPI CA Core Subsystem: 13181 13182Changed the behavior of the internal Buffer-to-String conversion 13183function. The current ACPI specification states that the contents 13184of the buffer are "converted to a string of two-character 13185hexadecimal numbers, each separated by a space". Unfortunately, 13186this definition is not backwards compatible with existing ACPI 1.0 13187implementations (although the behavior was not defined in the ACPI 131881.0 specification). The new behavior simply copies data from the 13189buffer to the string until a null character is found or the end of 13190the buffer is reached. The new String object is always null 13191terminated. This problem was seen during the generation of _BIF 13192battery data where incorrect strings were returned for battery 13193type, etc. This will also require an errata to the ACPI 13194specification. 13195 13196Renamed all instances of NATIVE_UINT and NATIVE_INT to 13197ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13198 13199Copyright in all module headers (both Linux and non-Linux) has be 13200updated to 2003. 13201 13202Code and Data Size: Current core subsystem library sizes are shown 13203below. These are the code and data sizes for the acpica.lib 13204produced by the Microsoft Visual C++ 6.0 compiler, and these 13205values do not include any ACPI driver or OSPM code. The debug 13206version of the code includes the debug output trace mechanism and 13207has a much larger code and data size. Note that these values will 13208vary depending on the efficiency of the compiler and the compiler 13209options used during generation. 13210 13211 Previous Release 13212 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13213 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13214 Current Release: 13215 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13216 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13217 13218 132192) Linux 13220 13221Fixed an oops on module insertion/removal (Matthew Tippett) 13222 13223(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13224 13225(2.5) Replace pr_debug (Randy Dunlap) 13226 13227(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13228 13229(Both) Eliminate spawning of thread from timer callback, in favor 13230of schedule_work() 13231 13232(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13233 13234(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13235 13236(Both) Add missing statics to button.c (Pavel Machek) 13237 13238Several changes have been made to the source code translation 13239utility that generates the Linux Code in order to make the code 13240more "Linux-like": 13241 13242All typedefs on structs and unions have been removed in keeping 13243with the Linux coding style. 13244 13245Removed the non-Linux SourceSafe module revision number from each 13246module header. 13247 13248Completed major overhaul of symbols to be lowercased for linux. 13249Doubled the number of symbols that are lowercased. 13250 13251Fixed a problem where identifiers within procedure headers and 13252within quotes were not fully lower cased (they were left with a 13253starting capital.) 13254 13255Some C macros whose only purpose is to allow the generation of 16- 13256bit code are now completely removed in the Linux code, increasing 13257readability and maintainability. 13258 13259---------------------------------------- 13260 1326112 December 2002. Summary of changes for version 20021212. 13262 13263 132641) ACPI CA Core Subsystem: 13265 13266Fixed a problem where the creation of a zero-length AML Buffer 13267would cause a fault. 13268 13269Fixed a problem where a Buffer object that pointed to a static AML 13270buffer (in an ACPI table) could inadvertently be deleted, causing 13271memory corruption. 13272 13273Fixed a problem where a user buffer (passed in to the external 13274ACPI CA interfaces) could be overwritten if the buffer was too 13275small to complete the operation, causing memory corruption. 13276 13277Fixed a problem in the Buffer-to-String conversion code where a 13278string of length one was always returned, regardless of the size 13279of the input Buffer object. 13280 13281Removed the NATIVE_CHAR data type across the entire source due to 13282lack of need and lack of consistent use. 13283 13284Code and Data Size: Current core subsystem library sizes are shown 13285below. These are the code and data sizes for the acpica.lib 13286produced by the Microsoft Visual C++ 6.0 compiler, and these 13287values do not include any ACPI driver or OSPM code. The debug 13288version of the code includes the debug output trace mechanism and 13289has a much larger code and data size. Note that these values will 13290vary depending on the efficiency of the compiler and the compiler 13291options used during generation. 13292 13293 Previous Release 13294 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13295 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13296 Current Release: 13297 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13298 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13299 13300 13301---------------------------------------- 1330205 December 2002. Summary of changes for version 20021205. 13303 133041) ACPI CA Core Subsystem: 13305 13306Fixed a problem where a store to a String or Buffer object could 13307cause corruption of the DSDT if the object type being stored was 13308the same as the target object type and the length of the object 13309being stored was equal to or smaller than the original (existing) 13310target object. This was seen to cause corruption of battery _BIF 13311buffers if the _BIF method modified the buffer on the fly. 13312 13313Fixed a problem where an internal error was generated if a control 13314method invocation was used in an OperationRegion, Buffer, or 13315Package declaration. This was caused by the deferred parsing of 13316the control method and thus the deferred creation of the internal 13317method object. The solution to this problem was to create the 13318internal method object at the moment the method is encountered in 13319the first pass - so that subsequent references to the method will 13320able to obtain the required parameter count and thus properly 13321parse the method invocation. This problem presented itself as an 13322AE_AML_INTERNAL during the pass 1 parse phase during table load. 13323 13324Fixed a problem where the internal String object copy routine did 13325not always allocate sufficient memory for the target String object 13326and caused memory corruption. This problem was seen to cause 13327"Allocation already present in list!" errors as memory allocation 13328became corrupted. 13329 13330Implemented a new function for the evaluation of namespace objects 13331that allows the specification of the allowable return object 13332types. This simplifies a lot of code that checks for a return 13333object of one or more specific objects returned from the 13334evaluation (such as _STA, etc.) This may become and external 13335function if it would be useful to ACPI-related drivers. 13336 13337Completed another round of prefixing #defines with "ACPI_" for 13338clarity. 13339 13340Completed additional code restructuring to allow more modular 13341linking for iASL compiler and AcpiExec. Several files were split 13342creating new files. New files: nsparse.c dsinit.c evgpe.c 13343 13344Implemented an abort mechanism to terminate an executing control 13345method via the AML debugger. This feature is useful for debugging 13346control methods that depend (wait) for specific hardware 13347responses. 13348 13349Code and Data Size: Current core subsystem library sizes are shown 13350below. These are the code and data sizes for the acpica.lib 13351produced by the Microsoft Visual C++ 6.0 compiler, and these 13352values do not include any ACPI driver or OSPM code. The debug 13353version of the code includes the debug output trace mechanism and 13354has a much larger code and data size. Note that these values will 13355vary depending on the efficiency of the compiler and the compiler 13356options used during generation. 13357 13358 Previous Release 13359 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13360 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13361 Current Release: 13362 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13363 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13364 13365 133662) iASL Compiler/Disassembler 13367 13368Fixed a compiler code generation problem for "Interrupt" Resource 13369Descriptors. If specified in the ASL, the optional "Resource 13370Source Index" and "Resource Source" fields were not inserted into 13371the correct location within the AML resource descriptor, creating 13372an invalid descriptor. 13373 13374Fixed a disassembler problem for "Interrupt" resource descriptors. 13375The optional "Resource Source Index" and "Resource Source" fields 13376were ignored. 13377 13378 13379---------------------------------------- 1338022 November 2002. Summary of changes for version 20021122. 13381 13382 133831) ACPI CA Core Subsystem: 13384 13385Fixed a reported problem where an object stored to a Method Local 13386or Arg was not copied to a new object during the store - the 13387object pointer was simply copied to the Local/Arg. This caused 13388all subsequent operations on the Local/Arg to also affect the 13389original source of the store operation. 13390 13391Fixed a problem where a store operation to a Method Local or Arg 13392was not completed properly if the Local/Arg contained a reference 13393(from RefOf) to a named field. The general-purpose store-to- 13394namespace-node code is now used so that this case is handled 13395automatically. 13396 13397Fixed a problem where the internal object copy routine would cause 13398a protection fault if the object being copied was a Package and 13399contained either 1) a NULL package element or 2) a nested sub- 13400package. 13401 13402Fixed a problem with the GPE initialization that resulted from an 13403ambiguity in the ACPI specification. One section of the 13404specification states that both the address and length of the GPE 13405block must be zero if the block is not supported. Another section 13406implies that only the address need be zero if the block is not 13407supported. The code has been changed so that both the address and 13408the length must be non-zero to indicate a valid GPE block (i.e., 13409if either the address or the length is zero, the GPE block is 13410invalid.) 13411 13412Code and Data Size: Current core subsystem library sizes are shown 13413below. These are the code and data sizes for the acpica.lib 13414produced by the Microsoft Visual C++ 6.0 compiler, and these 13415values do not include any ACPI driver or OSPM code. The debug 13416version of the code includes the debug output trace mechanism and 13417has a much larger code and data size. Note that these values will 13418vary depending on the efficiency of the compiler and the compiler 13419options used during generation. 13420 13421 Previous Release 13422 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13423 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13424 Current Release: 13425 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13426 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13427 13428 134292) Linux 13430 13431Cleaned up EC driver. Exported an external EC read/write 13432interface. By going through this, other drivers (most notably 13433sonypi) will be able to serialize access to the EC. 13434 13435 134363) iASL Compiler/Disassembler 13437 13438Implemented support to optionally generate include files for both 13439ASM and C (the -i switch). This simplifies BIOS development by 13440automatically creating include files that contain external 13441declarations for the symbols that are created within the 13442 13443(optionally generated) ASM and C AML source files. 13444 13445 13446---------------------------------------- 1344715 November 2002. Summary of changes for version 20021115. 13448 134491) ACPI CA Core Subsystem: 13450 13451Fixed a memory leak problem where an error during resolution of 13452 13453method arguments during a method invocation from another method 13454failed to cleanup properly by deleting all successfully resolved 13455argument objects. 13456 13457Fixed a problem where the target of the Index() operator was not 13458correctly constructed if the source object was a package. This 13459problem has not been detected because the use of a target operand 13460with Index() is very rare. 13461 13462Fixed a problem with the Index() operator where an attempt was 13463made to delete the operand objects twice. 13464 13465Fixed a problem where an attempt was made to delete an operand 13466twice during execution of the CondRefOf() operator if the target 13467did not exist. 13468 13469Implemented the first of perhaps several internal create object 13470functions that create and initialize a specific object type. This 13471consolidates duplicated code wherever the object is created, thus 13472shrinking the size of the subsystem. 13473 13474Implemented improved debug/error messages for errors that occur 13475during nested method invocations. All executing method pathnames 13476are displayed (with the error) as the call stack is unwound - thus 13477simplifying debug. 13478 13479Fixed a problem introduced in the 10/02 release that caused 13480premature deletion of a buffer object if a buffer was used as an 13481ASL operand where an integer operand is required (Thus causing an 13482implicit object conversion from Buffer to Integer.) The change in 13483the 10/02 release was attempting to fix a memory leak (albeit 13484incorrectly.) 13485 13486Code and Data Size: Current core subsystem library sizes are shown 13487below. These are the code and data sizes for the acpica.lib 13488produced by the Microsoft Visual C++ 6.0 compiler, and these 13489values do not include any ACPI driver or OSPM code. The debug 13490version of the code includes the debug output trace mechanism and 13491has a much larger code and data size. Note that these values will 13492vary depending on the efficiency of the compiler and the compiler 13493options used during generation. 13494 13495 Previous Release 13496 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13497 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13498 Current Release: 13499 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13500 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13501 13502 135032) Linux 13504 13505Changed the implementation of the ACPI semaphores to use down() 13506instead of down_interruptable(). It is important that the 13507execution of ACPI control methods not be interrupted by signals. 13508Methods must run to completion, or the system may be left in an 13509unknown/unstable state. 13510 13511Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 13512(Shawn Starr) 13513 13514 135153) iASL Compiler/Disassembler 13516 13517 13518Changed the default location of output files. All output files 13519are now placed in the current directory by default instead of in 13520the directory of the source file. This change may affect some 13521existing makefiles, but it brings the behavior of the compiler in 13522line with other similar tools. The location of the output files 13523can be overridden with the -p command line switch. 13524 13525 13526---------------------------------------- 1352711 November 2002. Summary of changes for version 20021111. 13528 13529 135300) ACPI Specification 2.0B is released and is now available at: 13531http://www.acpi.info/index.html 13532 13533 135341) ACPI CA Core Subsystem: 13535 13536Implemented support for the ACPI 2.0 SMBus Operation Regions. 13537This includes the early detection and handoff of the request to 13538the SMBus region handler (avoiding all of the complex field 13539support code), and support for the bidirectional return packet 13540from an SMBus write operation. This paves the way for the 13541development of SMBus drivers in each host operating system. 13542 13543Fixed a problem where the semaphore WAIT_FOREVER constant was 13544defined as 32 bits, but must be 16 bits according to the ACPI 13545specification. This had the side effect of causing ASL 13546Mutex/Event timeouts even though the ASL code requested a wait 13547forever. Changed all internal references to the ACPI timeout 13548parameter to 16 bits to prevent future problems. Changed the name 13549of WAIT_FOREVER to ACPI_WAIT_FOREVER. 13550 13551Code and Data Size: Current core subsystem library sizes are shown 13552below. These are the code and data sizes for the acpica.lib 13553produced by the Microsoft Visual C++ 6.0 compiler, and these 13554values do not include any ACPI driver or OSPM code. The debug 13555version of the code includes the debug output trace mechanism and 13556has a much larger code and data size. Note that these values will 13557vary depending on the efficiency of the compiler and the compiler 13558options used during generation. 13559 13560 Previous Release 13561 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13562 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13563 Current Release: 13564 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13565 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13566 13567 135682) Linux 13569 13570Module loading/unloading fixes (John Cagle) 13571 13572 135733) iASL Compiler/Disassembler 13574 13575Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 13576 13577Implemented support for the disassembly of all SMBus protocol 13578keywords (SMBQuick, SMBWord, etc.) 13579 13580---------------------------------------- 1358101 November 2002. Summary of changes for version 20021101. 13582 13583 135841) ACPI CA Core Subsystem: 13585 13586Fixed a problem where platforms that have a GPE1 block but no GPE0 13587block were not handled correctly. This resulted in a "GPE 13588overlap" error message. GPE0 is no longer required. 13589 13590Removed code added in the previous release that inserted nodes 13591into the namespace in alphabetical order. This caused some side- 13592effects on various machines. The root cause of the problem is 13593still under investigation since in theory, the internal ordering 13594of the namespace nodes should not matter. 13595 13596 13597Enhanced error reporting for the case where a named object is not 13598found during control method execution. The full ACPI namepath 13599(name reference) of the object that was not found is displayed in 13600this case. 13601 13602Note: as a result of the overhaul of the namespace object types in 13603the previous release, the namespace nodes for the predefined 13604scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 13605instead of ACPI_TYPE_ANY. This simplifies the namespace 13606management code but may affect code that walks the namespace tree 13607looking for specific object types. 13608 13609Code and Data Size: Current core subsystem library sizes are shown 13610below. These are the code and data sizes for the acpica.lib 13611produced by the Microsoft Visual C++ 6.0 compiler, and these 13612values do not include any ACPI driver or OSPM code. The debug 13613version of the code includes the debug output trace mechanism and 13614has a much larger code and data size. Note that these values will 13615vary depending on the efficiency of the compiler and the compiler 13616options used during generation. 13617 13618 Previous Release 13619 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13620 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13621 Current Release: 13622 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13623 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13624 13625 136262) Linux 13627 13628Fixed a problem introduced in the previous release where the 13629Processor and Thermal objects were not recognized and installed in 13630/proc. This was related to the scope type change described above. 13631 13632 136333) iASL Compiler/Disassembler 13634 13635Implemented the -g option to get all of the required ACPI tables 13636from the registry and save them to files (Windows version of the 13637compiler only.) The required tables are the FADT, FACS, and DSDT. 13638 13639Added ACPI table checksum validation during table disassembly in 13640order to catch corrupted tables. 13641 13642 13643---------------------------------------- 1364422 October 2002. Summary of changes for version 20021022. 13645 136461) ACPI CA Core Subsystem: 13647 13648Implemented a restriction on the Scope operator that the target 13649must already exist in the namespace at the time the operator is 13650encountered (during table load or method execution). In other 13651words, forward references are not allowed and Scope() cannot 13652create a new object. This changes the previous behavior where the 13653interpreter would create the name if not found. This new behavior 13654correctly enables the search-to-root algorithm during namespace 13655lookup of the target name. Because of this upsearch, this fixes 13656the known Compaq _SB_.OKEC problem and makes both the AML 13657interpreter and iASL compiler compatible with other ACPI 13658implementations. 13659 13660Completed a major overhaul of the internal ACPI object types for 13661the ACPI Namespace and the associated operand objects. Many of 13662these types had become obsolete with the introduction of the two- 13663pass namespace load. This cleanup simplifies the code and makes 13664the entire namespace load mechanism much clearer and easier to 13665understand. 13666 13667Improved debug output for tracking scope opening/closing to help 13668diagnose scoping issues. The old scope name as well as the new 13669scope name are displayed. Also improved error messages for 13670problems with ASL Mutex objects and error messages for GPE 13671problems. 13672 13673Cleaned up the namespace dump code, removed obsolete code. 13674 13675All string output (for all namespace/object dumps) now uses the 13676common ACPI string output procedure which handles escapes properly 13677and does not emit non-printable characters. 13678 13679Fixed some issues with constants in the 64-bit version of the 13680local C library (utclib.c) 13681 13682 136832) Linux 13684 13685EC Driver: No longer attempts to acquire the Global Lock at 13686interrupt level. 13687 13688 136893) iASL Compiler/Disassembler 13690 13691Implemented ACPI 2.0B grammar change that disallows all Type 1 and 136922 opcodes outside of a control method. This means that the 13693"executable" operators (versus the "namespace" operators) cannot 13694be used at the table level; they can only be used within a control 13695method. 13696 13697Implemented the restriction on the Scope() operator where the 13698target must already exist in the namespace at the time the 13699operator is encountered (during ASL compilation). In other words, 13700forward references are not allowed and Scope() cannot create a new 13701object. This makes the iASL compiler compatible with other ACPI 13702implementations and makes the Scope() implementation adhere to the 13703ACPI specification. 13704 13705Fixed a problem where namepath optimization for the Alias operator 13706was optimizing the wrong path (of the two namepaths.) This caused 13707a "Missing alias link" error message. 13708 13709Fixed a problem where an "unknown reserved name" warning could be 13710incorrectly generated for names like "_SB" when the trailing 13711underscore is not used in the original ASL. 13712 13713Fixed a problem where the reserved name check did not handle 13714NamePaths with multiple NameSegs correctly. The first nameseg of 13715the NamePath was examined instead of the last NameSeg. 13716 13717 13718---------------------------------------- 13719 1372002 October 2002. Summary of changes for this release. 13721 13722 137231) ACPI CA Core Subsystem version 20021002: 13724 13725Fixed a problem where a store/copy of a string to an existing 13726string did not always set the string length properly in the String 13727object. 13728 13729Fixed a reported problem with the ToString operator where the 13730behavior was identical to the ToHexString operator instead of just 13731simply converting a raw buffer to a string data type. 13732 13733Fixed a problem where CopyObject and the other "explicit" 13734conversion operators were not updating the internal namespace node 13735type as part of the store operation. 13736 13737Fixed a memory leak during implicit source operand conversion 13738where the original object was not deleted if it was converted to a 13739new object of a different type. 13740 13741Enhanced error messages for all problems associated with namespace 13742lookups. Common procedure generates and prints the lookup name as 13743well as the formatted status. 13744 13745Completed implementation of a new design for the Alias support 13746within the namespace. The existing design did not handle the case 13747where a new object was assigned to one of the two names due to the 13748use of an explicit conversion operator, resulting in the two names 13749pointing to two different objects. The new design simply points 13750the Alias name to the original name node - not to the object. 13751This results in a level of indirection that must be handled in the 13752name resolution mechanism. 13753 13754Code and Data Size: Current core subsystem library sizes are shown 13755below. These are the code and data sizes for the acpica.lib 13756produced by the Microsoft Visual C++ 6.0 compiler, and these 13757values do not include any ACPI driver or OSPM code. The debug 13758version of the code includes the debug output trace mechanism and 13759has a larger code and data size. Note that these values will vary 13760depending on the efficiency of the compiler and the compiler 13761options used during generation. 13762 13763 Previous Release 13764 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13765 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13766 Current Release: 13767 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13768 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13769 13770 137712) Linux 13772 13773Initialize thermal driver's timer before it is used. (Knut 13774Neumann) 13775 13776Allow handling negative celsius values. (Kochi Takayoshi) 13777 13778Fix thermal management and make trip points. R/W (Pavel Machek) 13779 13780Fix /proc/acpi/sleep. (P. Christeas) 13781 13782IA64 fixes. (David Mosberger) 13783 13784Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 13785 13786Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 13787Brodowski) 13788 13789 137903) iASL Compiler/Disassembler 13791 13792Clarified some warning/error messages. 13793 13794 13795---------------------------------------- 1379618 September 2002. Summary of changes for this release. 13797 13798 137991) ACPI CA Core Subsystem version 20020918: 13800 13801Fixed a reported problem with reference chaining (via the Index() 13802and RefOf() operators) in the ObjectType() and SizeOf() operators. 13803The definition of these operators includes the dereferencing of 13804all chained references to return information on the base object. 13805 13806Fixed a problem with stores to indexed package elements - the 13807existing code would not complete the store if an "implicit 13808conversion" was not performed. In other words, if the existing 13809object (package element) was to be replaced completely, the code 13810didn't handle this case. 13811 13812Relaxed typechecking on the ASL "Scope" operator to allow the 13813target name to refer to an object of type Integer, String, or 13814Buffer, in addition to the scoping object types (Device, 13815predefined Scopes, Processor, PowerResource, and ThermalZone.) 13816This allows existing AML code that has workarounds for a bug in 13817Windows to function properly. A warning is issued, however. This 13818affects both the AML interpreter and the iASL compiler. Below is 13819an example of this type of ASL code: 13820 13821 Name(DEB,0x00) 13822 Scope(DEB) 13823 { 13824 13825Fixed some reported problems with 64-bit integer support in the 13826local implementation of C library functions (clib.c) 13827 13828 138292) Linux 13830 13831Use ACPI fix map region instead of IOAPIC region, since it is 13832undefined in non-SMP. 13833 13834Ensure that the SCI has the proper polarity and trigger, even on 13835systems that do not have an interrupt override entry in the MADT. 13836 138372.5 big driver reorganization (Pat Mochel) 13838 13839Use early table mapping code from acpitable.c (Andi Kleen) 13840 13841New blacklist entries (Andi Kleen) 13842 13843Blacklist improvements. Split blacklist code out into a separate 13844file. Move checking the blacklist to very early. Previously, we 13845would use ACPI tables, and then halfway through init, check the 13846blacklist -- too late. Now, it's early enough to completely fall- 13847back to non-ACPI. 13848 13849 138503) iASL Compiler/Disassembler version 20020918: 13851 13852Fixed a problem where the typechecking code didn't know that an 13853alias could point to a method. In other words, aliases were not 13854being dereferenced during typechecking. 13855 13856 13857---------------------------------------- 1385829 August 2002. Summary of changes for this release. 13859 138601) ACPI CA Core Subsystem Version 20020829: 13861 13862If the target of a Scope() operator already exists, it must be an 13863object type that actually opens a scope -- such as a Device, 13864Method, Scope, etc. This is a fatal runtime error. Similar error 13865check has been added to the iASL compiler also. 13866 13867Tightened up the namespace load to disallow multiple names in the 13868same scope. This previously was allowed if both objects were of 13869the same type. (i.e., a lookup was the same as entering a new 13870name). 13871 13872 138732) Linux 13874 13875Ensure that the ACPI interrupt has the proper trigger and 13876polarity. 13877 13878local_irq_disable is extraneous. (Matthew Wilcox) 13879 13880Make "acpi=off" actually do what it says, and not use the ACPI 13881interpreter *or* the tables. 13882 13883Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 13884Takayoshi) 13885 13886 138873) iASL Compiler/Disassembler Version 20020829: 13888 13889Implemented namepath optimization for name declarations. For 13890example, a declaration like "Method (\_SB_.ABCD)" would get 13891optimized to "Method (ABCD)" if the declaration is within the 13892\_SB_ scope. This optimization is in addition to the named 13893reference path optimization first released in the previous 13894version. This would seem to complete all possible optimizations 13895for namepaths within the ASL/AML. 13896 13897If the target of a Scope() operator already exists, it must be an 13898object type that actually opens a scope -- such as a Device, 13899Method, Scope, etc. 13900 13901Implemented a check and warning for unreachable code in the same 13902block below a Return() statement. 13903 13904Fixed a problem where the listing file was not generated if the 13905compiler aborted if the maximum error count was exceeded (200). 13906 13907Fixed a problem where the typechecking of method return values was 13908broken. This includes the check for a return value when the 13909method is invoked as a TermArg (a return value is expected.) 13910 13911Fixed a reported problem where EOF conditions during a quoted 13912string or comment caused a fault. 13913 13914 13915---------------------------------------- 1391615 August 2002. Summary of changes for this release. 13917 139181) ACPI CA Core Subsystem Version 20020815: 13919 13920Fixed a reported problem where a Store to a method argument that 13921contains a reference did not perform the indirect store correctly. 13922This problem was created during the conversion to the new 13923reference object model - the indirect store to a method argument 13924code was not updated to reflect the new model. 13925 13926Reworked the ACPI mode change code to better conform to ACPI 2.0, 13927handle corner cases, and improve code legibility (Kochi Takayoshi) 13928 13929Fixed a problem with the pathname parsing for the carat (^) 13930prefix. The heavy use of the carat operator by the new namepath 13931optimization in the iASL compiler uncovered a problem with the AML 13932interpreter handling of this prefix. In the case where one or 13933more carats precede a single nameseg, the nameseg was treated as 13934standalone and the search rule (to root) was inadvertently 13935applied. This could cause both the iASL compiler and the 13936interpreter to find the wrong object or to miss the error that 13937should occur if the object does not exist at that exact pathname. 13938 13939Found and fixed the problem where the HP Pavilion DSDT would not 13940load. This was a relatively minor tweak to the table loading code 13941(a problem caused by the unexpected encounter with a method 13942invocation not within a control method), but it does not solve the 13943overall issue of the execution of AML code at the table level. 13944This investigation is still ongoing. 13945 13946Code and Data Size: Current core subsystem library sizes are shown 13947below. These are the code and data sizes for the acpica.lib 13948produced by the Microsoft Visual C++ 6.0 compiler, and these 13949values do not include any ACPI driver or OSPM code. The debug 13950version of the code includes the debug output trace mechanism and 13951has a larger code and data size. Note that these values will vary 13952depending on the efficiency of the compiler and the compiler 13953options used during generation. 13954 13955 Previous Release 13956 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13957 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13958 Current Release: 13959 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13960 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13961 13962 139632) Linux 13964 13965Remove redundant slab.h include (Brad Hards) 13966 13967Fix several bugs in thermal.c (Herbert Nachtnebel) 13968 13969Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 13970 13971Change acpi_system_suspend to use updated irq functions (Pavel 13972Machek) 13973 13974Export acpi_get_firmware_table (Matthew Wilcox) 13975 13976Use proper root proc entry for ACPI (Kochi Takayoshi) 13977 13978Fix early-boot table parsing (Bjorn Helgaas) 13979 13980 139813) iASL Compiler/Disassembler 13982 13983Reworked the compiler options to make them more consistent and to 13984use two-letter options where appropriate. We were running out of 13985sensible letters. This may break some makefiles, so check the 13986current options list by invoking the compiler with no parameters. 13987 13988Completed the design and implementation of the ASL namepath 13989optimization option for the compiler. This option optimizes all 13990references to named objects to the shortest possible path. The 13991first attempt tries to utilize a single nameseg (4 characters) and 13992the "search-to-root" algorithm used by the interpreter. If that 13993cannot be used (because either the name is not in the search path 13994or there is a conflict with another object with the same name), 13995the pathname is optimized using the carat prefix (usually a 13996shorter string than specifying the entire path from the root.) 13997 13998Implemented support to obtain the DSDT from the Windows registry 13999(when the disassembly option is specified with no input file). 14000Added this code as the implementation for AcpiOsTableOverride in 14001the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14002utility) to scan memory for the DSDT to the AcpiOsTableOverride 14003function in the DOS OSL to make the disassembler truly OS 14004independent. 14005 14006Implemented a new option to disassemble and compile in one step. 14007When used without an input filename, this option will grab the 14008DSDT from the local machine, disassemble it, and compile it in one 14009step. 14010 14011Added a warning message for invalid escapes (a backslash followed 14012by any character other than the allowable escapes). This catches 14013the quoted string error "\_SB_" (which should be "\\_SB_" ). 14014 14015Also, there are numerous instances in the ACPI specification where 14016this error occurs. 14017 14018Added a compiler option to disable all optimizations. This is 14019basically the "compatibility mode" because by using this option, 14020the AML code will come out exactly the same as other ASL 14021compilers. 14022 14023Added error messages for incorrectly ordered dependent resource 14024functions. This includes: missing EndDependentFn macro at end of 14025dependent resource list, nested dependent function macros (both 14026start and end), and missing StartDependentFn macro. These are 14027common errors that should be caught at compile time. 14028 14029Implemented _OSI support for the disassembler and compiler. _OSI 14030must be included in the namespace for proper disassembly (because 14031the disassembler must know the number of arguments.) 14032 14033Added an "optimization" message type that is optional (off by 14034default). This message is used for all optimizations - including 14035constant folding, integer optimization, and namepath optimization. 14036 14037---------------------------------------- 1403825 July 2002. Summary of changes for this release. 14039 14040 140411) ACPI CA Core Subsystem Version 20020725: 14042 14043The AML Disassembler has been enhanced to produce compilable ASL 14044code and has been integrated into the iASL compiler (see below) as 14045well as the single-step disassembly for the AML debugger and the 14046disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14047resource templates and macros are fully supported. The 14048disassembler has been tested on over 30 different AML files, 14049producing identical AML when the resulting disassembled ASL file 14050is recompiled with the same ASL compiler. 14051 14052Modified the Resource Manager to allow zero interrupts and zero 14053dma channels during the GetCurrentResources call. This was 14054causing problems on some platforms. 14055 14056Added the AcpiOsRedirectOutput interface to the OSL to simplify 14057output redirection for the AcpiOsPrintf and AcpiOsVprintf 14058interfaces. 14059 14060Code and Data Size: Current core subsystem library sizes are shown 14061below. These are the code and data sizes for the acpica.lib 14062produced by the Microsoft Visual C++ 6.0 compiler, and these 14063values do not include any ACPI driver or OSPM code. The debug 14064version of the code includes the debug output trace mechanism and 14065has a larger code and data size. Note that these values will vary 14066depending on the efficiency of the compiler and the compiler 14067options used during generation. 14068 14069 Previous Release 14070 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14071 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14072 Current Release: 14073 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14074 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14075 14076 140772) Linux 14078 14079Fixed a panic in the EC driver (Dominik Brodowski) 14080 14081Implemented checksum of the R/XSDT itself during Linux table scan 14082(Richard Schaal) 14083 14084 140853) iASL compiler 14086 14087The AML disassembler is integrated into the compiler. The "-d" 14088option invokes the disassembler to completely disassemble an 14089input AML file, producing as output a text ASL file with the 14090extension ".dsl" (to avoid name collisions with existing .asl 14091source files.) A future enhancement will allow the disassembler 14092to obtain the BIOS DSDT from the registry under Windows. 14093 14094Fixed a problem with the VendorShort and VendorLong resource 14095descriptors where an invalid AML sequence was created. 14096 14097Implemented a fix for BufferData term in the ASL parser. It was 14098inadvertently defined twice, allowing invalid syntax to pass and 14099causing reduction conflicts. 14100 14101Fixed a problem where the Ones opcode could get converted to a 14102value of zero if "Ones" was used where a byte, word or dword value 14103was expected. The 64-bit value is now truncated to the correct 14104size with the correct value. 14105 14106 14107 14108---------------------------------------- 1410902 July 2002. Summary of changes for this release. 14110 14111 141121) ACPI CA Core Subsystem Version 20020702: 14113 14114The Table Manager code has been restructured to add several new 14115features. Tables that are not required by the core subsystem 14116(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14117validated in any way and are returned from AcpiGetFirmwareTable if 14118requested. The AcpiOsTableOverride interface is now called for 14119each table that is loaded by the subsystem in order to allow the 14120host to override any table it chooses. Previously, only the DSDT 14121could be overridden. Added one new files, tbrsdt.c and 14122tbgetall.c. 14123 14124Fixed a problem with the conversion of internal package objects to 14125external objects (when a package is returned from a control 14126method.) The return buffer length was set to zero instead of the 14127proper length of the package object. 14128 14129Fixed a reported problem with the use of the RefOf and DeRefOf 14130operators when passing reference arguments to control methods. A 14131new type of Reference object is used internally for references 14132produced by the RefOf operator. 14133 14134Added additional error messages in the Resource Manager to explain 14135AE_BAD_DATA errors when they occur during resource parsing. 14136 14137Split the AcpiEnableSubsystem into two primitives to enable a 14138finer granularity initialization sequence. These two calls should 14139be called in this order: AcpiEnableSubsystem (flags), 14140AcpiInitializeObjects (flags). The flags parameter remains the 14141same. 14142 14143 141442) Linux 14145 14146Updated the ACPI utilities module to understand the new style of 14147fully resolved package objects that are now returned from the core 14148subsystem. This eliminates errors of the form: 14149 14150 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14151 acpi_utils-0430 [145] acpi_evaluate_reference: 14152 Invalid element in package (not a device reference) 14153 14154The method evaluation utility uses the new buffer allocation 14155scheme instead of calling AcpiEvaluate Object twice. 14156 14157Added support for ECDT. This allows the use of the Embedded 14158 14159Controller before the namespace has been fully initialized, which 14160is necessary for ACPI 2.0 support, and for some laptops to 14161initialize properly. (Laptops using ECDT are still rare, so only 14162limited testing was performed of the added functionality.) 14163 14164Fixed memory leaks in the EC driver. 14165 14166Eliminated a brittle code structure in acpi_bus_init(). 14167 14168Eliminated the acpi_evaluate() helper function in utils.c. It is 14169no longer needed since acpi_evaluate_object can optionally 14170allocate memory for the return object. 14171 14172Implemented fix for keyboard hang when getting battery readings on 14173some systems (Stephen White) 14174 14175PCI IRQ routing update (Dominik Brodowski) 14176 14177Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14178support 14179 14180---------------------------------------- 1418111 June 2002. Summary of changes for this release. 14182 14183 141841) ACPI CA Core Subsystem Version 20020611: 14185 14186Fixed a reported problem where constants such as Zero and One 14187appearing within _PRT packages were not handled correctly within 14188the resource manager code. Originally reported against the ASL 14189compiler because the code generator now optimizes integers to 14190their minimal AML representation (i.e. AML constants if possible.) 14191The _PRT code now handles all AML constant opcodes correctly 14192(Zero, One, Ones, Revision). 14193 14194Fixed a problem with the Concatenate operator in the AML 14195interpreter where a buffer result object was incorrectly marked as 14196not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14197 14198All package sub-objects are now fully resolved before they are 14199returned from the external ACPI interfaces. This means that name 14200strings are resolved to object handles, and constant operators 14201(Zero, One, Ones, Revision) are resolved to Integers. 14202 14203Implemented immediate resolution of the AML Constant opcodes 14204(Zero, One, Ones, Revision) to Integer objects upon detection 14205within the AML stream. This has simplified and reduced the 14206generated code size of the subsystem by eliminating about 10 14207switch statements for these constants (which previously were 14208contained in Reference objects.) The complicating issues are that 14209the Zero opcode is used as a "placeholder" for unspecified 14210optional target operands and stores to constants are defined to be 14211no-ops. 14212 14213Code and Data Size: Current core subsystem library sizes are shown 14214below. These are the code and data sizes for the acpica.lib 14215produced by the Microsoft Visual C++ 6.0 compiler, and these 14216values do not include any ACPI driver or OSPM code. The debug 14217version of the code includes the debug output trace mechanism and 14218has a larger code and data size. Note that these values will vary 14219depending on the efficiency of the compiler and the compiler 14220options used during generation. 14221 14222 Previous Release 14223 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14224 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14225 Current Release: 14226 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14227 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14228 14229 142302) Linux 14231 14232 14233Added preliminary support for obtaining _TRA data for PCI root 14234bridges (Bjorn Helgaas). 14235 14236 142373) iASL Compiler Version X2046: 14238 14239Fixed a problem where the "_DDN" reserved name was defined to be a 14240control method with one argument. There are no arguments, and 14241_DDN does not have to be a control method. 14242 14243Fixed a problem with the Linux version of the compiler where the 14244source lines printed with error messages were the wrong lines. 14245This turned out to be the "LF versus CR/LF" difference between 14246Windows and Unix. This appears to be the longstanding issue 14247concerning listing output and error messages. 14248 14249Fixed a problem with the Linux version of compiler where opcode 14250names within error messages were wrong. This was caused by a 14251slight difference in the output of the Flex tool on Linux versus 14252Windows. 14253 14254Fixed a problem with the Linux compiler where the hex output files 14255contained some garbage data caused by an internal buffer overrun. 14256 14257 14258---------------------------------------- 1425917 May 2002. Summary of changes for this release. 14260 14261 142621) ACPI CA Core Subsystem Version 20020517: 14263 14264Implemented a workaround to an BIOS bug discovered on the HP 14265OmniBook where the FADT revision number and the table size are 14266inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14267behavior is to fallback to using only the ACPI 1.0 fields of the 14268FADT if the table is too small to be a ACPI 2.0 table as claimed 14269by the revision number. Although this is a BIOS bug, this is a 14270case where the workaround is simple enough and with no side 14271effects, so it seemed prudent to add it. A warning message is 14272issued, however. 14273 14274Implemented minimum size checks for the fixed-length ACPI tables - 14275- the FADT and FACS, as well as consistency checks between the 14276revision number and the table size. 14277 14278Fixed a reported problem in the table override support where the 14279new table pointer was incorrectly treated as a physical address 14280instead of a logical address. 14281 14282Eliminated the use of the AE_AML_ERROR exception and replaced it 14283with more descriptive codes. 14284 14285Fixed a problem where an exception would occur if an ASL Field was 14286defined with no named Field Units underneath it (used by some 14287index fields). 14288 14289Code and Data Size: Current core subsystem library sizes are shown 14290below. These are the code and data sizes for the acpica.lib 14291produced by the Microsoft Visual C++ 6.0 compiler, and these 14292values do not include any ACPI driver or OSPM code. The debug 14293version of the code includes the debug output trace mechanism and 14294has a larger code and data size. Note that these values will vary 14295depending on the efficiency of the compiler and the compiler 14296options used during generation. 14297 14298 Previous Release 14299 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14300 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14301 Current Release: 14302 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14303 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14304 14305 14306 143072) Linux 14308 14309Much work done on ACPI init (MADT and PCI IRQ routing support). 14310(Paul D. and Dominik Brodowski) 14311 14312Fix PCI IRQ-related panic on boot (Sam Revitch) 14313 14314Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14315 14316Fix "MHz" typo (Dominik Brodowski) 14317 14318Fix RTC year 2000 issue (Dominik Brodowski) 14319 14320Preclude multiple button proc entries (Eric Brunet) 14321 14322Moved arch-specific code out of include/platform/aclinux.h 14323 143243) iASL Compiler Version X2044: 14325 14326Implemented error checking for the string used in the EISAID macro 14327(Usually used in the definition of the _HID object.) The code now 14328strictly enforces the PnP format - exactly 7 characters, 3 14329uppercase letters and 4 hex digits. 14330 14331If a raw string is used in the definition of the _HID object 14332(instead of the EISAID macro), the string must contain all 14333alphanumeric characters (e.g., "*PNP0011" is not allowed because 14334of the asterisk.) 14335 14336Implemented checking for invalid use of ACPI reserved names for 14337most of the name creation operators (Name, Device, Event, Mutex, 14338OperationRegion, PowerResource, Processor, and ThermalZone.) 14339Previously, this check was only performed for control methods. 14340 14341Implemented an additional check on the Name operator to emit an 14342error if a reserved name that must be implemented in ASL as a 14343control method is used. We know that a reserved name must be a 14344method if it is defined with input arguments. 14345 14346The warning emitted when a namespace object reference is not found 14347during the cross reference phase has been changed into an error. 14348The "External" directive should be used for names defined in other 14349modules. 14350 14351 143524) Tools and Utilities 14353 14354The 16-bit tools (adump16 and aexec16) have been regenerated and 14355tested. 14356 14357Fixed a problem with the output of both acpidump and adump16 where 14358the indentation of closing parentheses and brackets was not 14359 14360aligned properly with the parent block. 14361 14362 14363---------------------------------------- 1436403 May 2002. Summary of changes for this release. 14365 14366 143671) ACPI CA Core Subsystem Version 20020503: 14368 14369Added support a new OSL interface that allows the host operating 14370 14371system software to override the DSDT found in the firmware - 14372AcpiOsTableOverride. With this interface, the OSL can examine the 14373version of the firmware DSDT and replace it with a different one 14374if desired. 14375 14376Added new external interfaces for accessing ACPI registers from 14377device drivers and other system software - AcpiGetRegister and 14378AcpiSetRegister. This was simply an externalization of the 14379existing AcpiHwBitRegister interfaces. 14380 14381Fixed a regression introduced in the previous build where the 14382ASL/AML CreateField operator always returned an error, 14383"destination must be a NS Node". 14384 14385Extended the maximum time (before failure) to successfully enable 14386ACPI mode to 3 seconds. 14387 14388Code and Data Size: Current core subsystem library sizes are shown 14389below. These are the code and data sizes for the acpica.lib 14390produced by the Microsoft Visual C++ 6.0 compiler, and these 14391values do not include any ACPI driver or OSPM code. The debug 14392version of the code includes the debug output trace mechanism and 14393has a larger code and data size. Note that these values will vary 14394depending on the efficiency of the compiler and the compiler 14395options used during generation. 14396 14397 Previous Release 14398 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14399 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14400 Current Release: 14401 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14402 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14403 14404 144052) Linux 14406 14407Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14408free. While 3 out of 4 of our in-house systems work fine, the last 14409one still hangs when testing the LAPIC timer. 14410 14411Renamed many files in 2.5 kernel release to omit "acpi_" from the 14412name. 14413 14414Added warning on boot for Presario 711FR. 14415 14416Sleep improvements (Pavel Machek) 14417 14418ACPI can now be built without CONFIG_PCI enabled. 14419 14420IA64: Fixed memory map functions (JI Lee) 14421 14422 144233) iASL Compiler Version X2043: 14424 14425Added support to allow the compiler to be integrated into the MS 14426VC++ development environment for one-button compilation of single 14427files or entire projects -- with error-to-source-line mapping. 14428 14429Implemented support for compile-time constant folding for the 14430Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14431specification. This allows the ASL writer to use expressions 14432instead of Integer/Buffer/String constants in terms that must 14433evaluate to constants at compile time and will also simplify the 14434emitted AML in any such sub-expressions that can be folded 14435(evaluated at compile-time.) This increases the size of the 14436compiler significantly because a portion of the ACPI CA AML 14437interpreter is included within the compiler in order to pre- 14438evaluate constant expressions. 14439 14440 14441Fixed a problem with the "Unicode" ASL macro that caused the 14442compiler to fault. (This macro is used in conjunction with the 14443_STR reserved name.) 14444 14445Implemented an AML opcode optimization to use the Zero, One, and 14446Ones opcodes where possible to further reduce the size of integer 14447constants and thus reduce the overall size of the generated AML 14448code. 14449 14450Implemented error checking for new reserved terms for ACPI version 144512.0A. 14452 14453Implemented the -qr option to display the current list of ACPI 14454reserved names known to the compiler. 14455 14456Implemented the -qc option to display the current list of ASL 14457operators that are allowed within constant expressions and can 14458therefore be folded at compile time if the operands are constants. 14459 14460 144614) Documentation 14462 14463Updated the Programmer's Reference for new interfaces, data types, 14464and memory allocation model options. 14465 14466Updated the iASL Compiler User Reference to apply new format and 14467add information about new features and options. 14468 14469---------------------------------------- 1447019 April 2002. Summary of changes for this release. 14471 144721) ACPI CA Core Subsystem Version 20020419: 14473 14474The source code base for the Core Subsystem has been completely 14475cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 14476versions. The Lint option files used are included in the 14477/acpi/generate/lint directory. 14478 14479Implemented enhanced status/error checking across the entire 14480Hardware manager subsystem. Any hardware errors (reported from 14481the OSL) are now bubbled up and will abort a running control 14482method. 14483 14484 14485Fixed a problem where the per-ACPI-table integer width (32 or 64) 14486was stored only with control method nodes, causing a fault when 14487non-control method code was executed during table loading. The 14488solution implemented uses a global variable to indicate table 14489width across the entire ACPI subsystem. Therefore, ACPI CA does 14490not support mixed integer widths across different ACPI tables 14491(DSDT, SSDT). 14492 14493Fixed a problem where NULL extended fields (X fields) in an ACPI 144942.0 ACPI FADT caused the table load to fail. Although the 14495existing ACPI specification is a bit fuzzy on this topic, the new 14496behavior is to fall back on a ACPI 1.0 field if the corresponding 14497ACPI 2.0 X field is zero (even though the table revision indicates 14498a full ACPI 2.0 table.) The ACPI specification will be updated to 14499clarify this issue. 14500 14501Fixed a problem with the SystemMemory operation region handler 14502where memory was always accessed byte-wise even if the AML- 14503specified access width was larger than a byte. This caused 14504problems on systems with memory-mapped I/O. Memory is now 14505accessed with the width specified. On systems that do not support 14506non-aligned transfers, a check is made to guarantee proper address 14507alignment before proceeding in order to avoid an AML-caused 14508alignment fault within the kernel. 14509 14510 14511Fixed a problem with the ExtendedIrq resource where only one byte 14512of the 4-byte Irq field was extracted. 14513 14514Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 14515function was out of date and required a rewrite. 14516 14517Code and Data Size: Current core subsystem library sizes are shown 14518below. These are the code and data sizes for the acpica.lib 14519produced by the Microsoft Visual C++ 6.0 compiler, and these 14520values do not include any ACPI driver or OSPM code. The debug 14521version of the code includes the debug output trace mechanism and 14522has a larger code and data size. Note that these values will vary 14523depending on the efficiency of the compiler and the compiler 14524options used during generation. 14525 14526 Previous Release 14527 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14528 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14529 Current Release: 14530 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14531 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14532 14533 145342) Linux 14535 14536PCI IRQ routing fixes (Dominik Brodowski) 14537 14538 145393) iASL Compiler Version X2042: 14540 14541Implemented an additional compile-time error check for a field 14542unit whose size + minimum access width would cause a run-time 14543access beyond the end-of-region. Previously, only the field size 14544itself was checked. 14545 14546The Core subsystem and iASL compiler now share a common parse 14547object in preparation for compile-time evaluation of the type 145483/4/5 ASL operators. 14549 14550 14551---------------------------------------- 14552Summary of changes for this release: 03_29_02 14553 145541) ACPI CA Core Subsystem Version 20020329: 14555 14556Implemented support for late evaluation of TermArg operands to 14557Buffer and Package objects. This allows complex expressions to be 14558used in the declarations of these object types. 14559 14560Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 145611.0, if the field was larger than 32 bits, it was returned as a 14562buffer - otherwise it was returned as an integer. In ACPI 2.0, 14563the field is returned as a buffer only if the field is larger than 1456464 bits. The TableRevision is now considered when making this 14565conversion to avoid incompatibility with existing ASL code. 14566 14567Implemented logical addressing for AcpiOsGetRootPointer. This 14568allows an RSDP with either a logical or physical address. With 14569this support, the host OS can now override all ACPI tables with 14570one logical RSDP. Includes implementation of "typed" pointer 14571support to allow a common data type for both physical and logical 14572pointers internally. This required a change to the 14573AcpiOsGetRootPointer interface. 14574 14575Implemented the use of ACPI 2.0 Generic Address Structures for all 14576GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 14577mapped I/O for these ACPI features. 14578 14579Initialization now ignores not only non-required tables (All 14580tables other than the FADT, FACS, DSDT, and SSDTs), but also does 14581not validate the table headers of unrecognized tables. 14582 14583Fixed a problem where a notify handler could only be 14584installed/removed on an object of type Device. All "notify" 14585 14586objects are now supported -- Devices, Processor, Power, and 14587Thermal. 14588 14589Removed most verbosity from the ACPI_DB_INFO debug level. Only 14590critical information is returned when this debug level is enabled. 14591 14592Code and Data Size: Current core subsystem library sizes are shown 14593below. These are the code and data sizes for the acpica.lib 14594produced by the Microsoft Visual C++ 6.0 compiler, and these 14595values do not include any ACPI driver or OSPM code. The debug 14596version of the code includes the debug output trace mechanism and 14597has a larger code and data size. Note that these values will vary 14598depending on the efficiency of the compiler and the compiler 14599options used during generation. 14600 14601 Previous Release 14602 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14603 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14604 Current Release: 14605 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14606 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14607 14608 146092) Linux: 14610 14611The processor driver (acpi_processor.c) now fully supports ACPI 146122.0-based processor performance control (e.g. Intel(R) 14613SpeedStep(TM) technology) Note that older laptops that only have 14614the Intel "applet" interface are not supported through this. The 14615'limit' and 'performance' interface (/proc) are fully functional. 14616[Note that basic policy for controlling performance state 14617transitions will be included in the next version of ospmd.] The 14618idle handler was modified to more aggressively use C2, and PIIX4 14619errata handling underwent a complete overhaul (big thanks to 14620Dominik Brodowski). 14621 14622Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 14623based devices in the ACPI namespace are now dynamically bound 14624(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 14625This allows, among other things, ACPI to resolve bus numbers for 14626subordinate PCI bridges. 14627 14628Enhanced PCI IRQ routing to get the proper bus number for _PRT 14629entries defined underneath PCI bridges. 14630 14631Added IBM 600E to bad bios list due to invalid _ADR value for 14632PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 14633 14634In the process of adding full MADT support (e.g. IOAPIC) for IA32 14635(acpi.c, mpparse.c) -- stay tuned. 14636 14637Added back visual differentiation between fixed-feature and 14638control-method buttons in dmesg. Buttons are also subtyped (e.g. 14639button/power/PWRF) to simplify button identification. 14640 14641We no longer use -Wno-unused when compiling debug. Please ignore 14642any "_THIS_MODULE defined but not used" messages. 14643 14644Can now shut down the system using "magic sysrq" key. 14645 14646 146473) iASL Compiler version 2041: 14648 14649Fixed a problem where conversion errors for hex/octal/decimal 14650constants were not reported. 14651 14652Implemented a fix for the General Register template Address field. 14653This field was 8 bits when it should be 64. 14654 14655Fixed a problem where errors/warnings were no longer being emitted 14656within the listing output file. 14657 14658Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 14659exactly 4 characters, alphanumeric only. 14660 14661 14662 14663 14664---------------------------------------- 14665Summary of changes for this release: 03_08_02 14666 14667 146681) ACPI CA Core Subsystem Version 20020308: 14669 14670Fixed a problem with AML Fields where the use of the "AccessAny" 14671keyword could cause an interpreter error due to attempting to read 14672or write beyond the end of the parent Operation Region. 14673 14674Fixed a problem in the SystemMemory Operation Region handler where 14675an attempt was made to map memory beyond the end of the region. 14676This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 14677errors on some Linux systems. 14678 14679Fixed a problem where the interpreter/namespace "search to root" 14680algorithm was not functioning for some object types. Relaxed the 14681internal restriction on the search to allow upsearches for all 14682external object types as well as most internal types. 14683 14684 146852) Linux: 14686 14687We now use safe_halt() macro versus individual calls to sti | hlt. 14688 14689Writing to the processor limit interface should now work. "echo 1" 14690will increase the limit, 2 will decrease, and 0 will reset to the 14691 14692default. 14693 14694 146953) ASL compiler: 14696 14697Fixed segfault on Linux version. 14698 14699 14700---------------------------------------- 14701Summary of changes for this release: 02_25_02 14702 147031) ACPI CA Core Subsystem: 14704 14705 14706Fixed a problem where the GPE bit masks were not initialized 14707properly, causing erratic GPE behavior. 14708 14709Implemented limited support for multiple calling conventions. The 14710code can be generated with either the VPL (variable parameter 14711list, or "C") convention, or the FPL (fixed parameter list, or 14712"Pascal") convention. The core subsystem is about 3.4% smaller 14713when generated with FPL. 14714 14715 147162) Linux 14717 14718Re-add some /proc/acpi/event functionality that was lost during 14719the rewrite 14720 14721Resolved issue with /proc events for fixed-feature buttons showing 14722up as the system device. 14723 14724Fixed checks on C2/C3 latencies to be inclusive of maximum values. 14725 14726Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 14727 14728Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 14729 14730Fixed limit interface & usage to fix bugs with passive cooling 14731hysterisis. 14732 14733Restructured PRT support. 14734 14735 14736---------------------------------------- 14737Summary of changes for this label: 02_14_02 14738 14739 147401) ACPI CA Core Subsystem: 14741 14742Implemented support in AcpiLoadTable to allow loading of FACS and 14743FADT tables. 14744 14745Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 14746been removed. All 64-bit platforms should be migrated to the ACPI 147472.0 tables. The actbl71.h header has been removed from the source 14748tree. 14749 14750All C macros defined within the subsystem have been prefixed with 14751"ACPI_" to avoid collision with other system include files. 14752 14753Removed the return value for the two AcpiOsPrint interfaces, since 14754it is never used and causes lint warnings for ignoring the return 14755value. 14756 14757Added error checking to all internal mutex acquire and release 14758calls. Although a failure from one of these interfaces is 14759probably a fatal system error, these checks will cause the 14760immediate abort of the currently executing method or interface. 14761 14762Fixed a problem where the AcpiSetCurrentResources interface could 14763fault. This was a side effect of the deployment of the new memory 14764allocation model. 14765 14766Fixed a couple of problems with the Global Lock support introduced 14767in the last major build. The "common" (1.0/2.0) internal FACS was 14768being overwritten with the FACS signature and clobbering the 14769Global Lock pointer. Also, the actual firmware FACS was being 14770unmapped after construction of the "common" FACS, preventing 14771access to the actual Global Lock field within it. The "common" 14772internal FACS is no longer installed as an actual ACPI table; it 14773is used simply as a global. 14774 14775Code and Data Size: Current core subsystem library sizes are shown 14776below. These are the code and data sizes for the acpica.lib 14777produced by the Microsoft Visual C++ 6.0 compiler, and these 14778values do not include any ACPI driver or OSPM code. The debug 14779version of the code includes the debug output trace mechanism and 14780has a larger code and data size. Note that these values will vary 14781depending on the efficiency of the compiler and the compiler 14782options used during generation. 14783 14784 Previous Release (02_07_01) 14785 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14786 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14787 Current Release: 14788 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14789 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14790 14791 147922) Linux 14793 14794Updated Linux-specific code for core macro and OSL interface 14795changes described above. 14796 14797Improved /proc/acpi/event. It now can be opened only once and has 14798proper poll functionality. 14799 14800Fixed and restructured power management (acpi_bus). 14801 14802Only create /proc "view by type" when devices of that class exist. 14803 14804Fixed "charging/discharging" bug (and others) in acpi_battery. 14805 14806Improved thermal zone code. 14807 14808 148093) ASL Compiler, version X2039: 14810 14811 14812Implemented the new compiler restriction on ASL String hex/octal 14813escapes to non-null, ASCII values. An error results if an invalid 14814value is used. (This will require an ACPI 2.0 specification 14815change.) 14816 14817AML object labels that are output to the optional C and ASM source 14818are now prefixed with both the ACPI table signature and table ID 14819to help guarantee uniqueness within a large BIOS project. 14820 14821 14822---------------------------------------- 14823Summary of changes for this label: 02_01_02 14824 148251) ACPI CA Core Subsystem: 14826 14827ACPI 2.0 support is complete in the entire Core Subsystem and the 14828ASL compiler. All new ACPI 2.0 operators are implemented and all 14829other changes for ACPI 2.0 support are complete. With 14830simultaneous code and data optimizations throughout the subsystem, 14831ACPI 2.0 support has been implemented with almost no additional 14832cost in terms of code and data size. 14833 14834Implemented a new mechanism for allocation of return buffers. If 14835the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 14836be allocated on behalf of the caller. Consolidated all return 14837buffer validation and allocation to a common procedure. Return 14838buffers will be allocated via the primary OSL allocation interface 14839since it appears that a separate pool is not needed by most users. 14840If a separate pool is required for these buffers, the caller can 14841still use the original mechanism and pre-allocate the buffer(s). 14842 14843Implemented support for string operands within the DerefOf 14844operator. 14845 14846Restructured the Hardware and Event managers to be table driven, 14847simplifying the source code and reducing the amount of generated 14848code. 14849 14850Split the common read/write low-level ACPI register bitfield 14851procedure into a separate read and write, simplifying the code 14852considerably. 14853 14854Obsoleted the AcpiOsCallocate OSL interface. This interface was 14855used only a handful of times and didn't have enough critical mass 14856for a separate interface. Replaced with a common calloc procedure 14857in the core. 14858 14859Fixed a reported problem with the GPE number mapping mechanism 14860that allows GPE1 numbers to be non-contiguous with GPE0. 14861Reorganized the GPE information and shrunk a large array that was 14862originally large enough to hold info for all possible GPEs (256) 14863to simply large enough to hold all GPEs up to the largest GPE 14864number on the machine. 14865 14866Fixed a reported problem with resource structure alignment on 64- 14867bit platforms. 14868 14869Changed the AcpiEnableEvent and AcpiDisableEvent external 14870interfaces to not require any flags for the common case of 14871enabling/disabling a GPE. 14872 14873Implemented support to allow a "Notify" on a Processor object. 14874 14875Most TBDs in comments within the source code have been resolved 14876and eliminated. 14877 14878 14879Fixed a problem in the interpreter where a standalone parent 14880prefix (^) was not handled correctly in the interpreter and 14881debugger. 14882 14883Removed obsolete and unnecessary GPE save/restore code. 14884 14885Implemented Field support in the ASL Load operator. This allows a 14886table to be loaded from a named field, in addition to loading a 14887table directly from an Operation Region. 14888 14889Implemented timeout and handle support in the external Global Lock 14890interfaces. 14891 14892Fixed a problem in the AcpiDump utility where pathnames were no 14893longer being generated correctly during the dump of named objects. 14894 14895Modified the AML debugger to give a full display of if/while 14896predicates instead of just one AML opcode at a time. (The 14897predicate can have several nested ASL statements.) The old method 14898was confusing during single stepping. 14899 14900Code and Data Size: Current core subsystem library sizes are shown 14901below. These are the code and data sizes for the acpica.lib 14902produced by the Microsoft Visual C++ 6.0 compiler, and these 14903values do not include any ACPI driver or OSPM code. The debug 14904version of the code includes the debug output trace mechanism and 14905has a larger code and data size. Note that these values will vary 14906depending on the efficiency of the compiler and the compiler 14907options used during generation. 14908 14909 Previous Release (12_18_01) 14910 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14911 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14912 Current Release: 14913 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14914 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14915 149162) Linux 14917 14918 Implemented fix for PIIX reverse throttling errata (Processor 14919driver) 14920 14921Added new Limit interface (Processor and Thermal drivers) 14922 14923New thermal policy (Thermal driver) 14924 14925Many updates to /proc 14926 14927Battery "low" event support (Battery driver) 14928 14929Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 14930 14931IA32 - IA64 initialization unification, no longer experimental 14932 14933Menuconfig options redesigned 14934 149353) ASL Compiler, version X2037: 14936 14937Implemented several new output features to simplify integration of 14938AML code into firmware: 1) Output the AML in C source code with 14939labels for each named ASL object. The original ASL source code 14940is interleaved as C comments. 2) Output the AML in ASM source code 14941with labels and interleaved ASL source. 3) Output the AML in 14942raw hex table form, in either C or ASM. 14943 14944Implemented support for optional string parameters to the 14945LoadTable operator. 14946 14947Completed support for embedded escape sequences within string 14948literals. The compiler now supports all single character escapes 14949as well as the Octal and Hex escapes. Note: the insertion of a 14950null byte into a string literal (via the hex/octal escape) causes 14951the string to be immediately terminated. A warning is issued. 14952 14953Fixed a problem where incorrect AML was generated for the case 14954where an ASL namepath consists of a single parent prefix ( 14955 14956) with no trailing name segments. 14957 14958The compiler has been successfully generated with a 64-bit C 14959compiler. 14960 14961 14962 14963 14964---------------------------------------- 14965Summary of changes for this label: 12_18_01 14966 149671) Linux 14968 14969Enhanced blacklist with reason and severity fields. Any table's 14970signature may now be used to identify a blacklisted system. 14971 14972Call _PIC control method to inform the firmware which interrupt 14973model the OS is using. Turn on any disabled link devices. 14974 14975Cleaned up busmgr /proc error handling (Andreas Dilger) 14976 14977 2) ACPI CA Core Subsystem: 14978 14979Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 14980while loop) 14981 14982Completed implementation of the ACPI 2.0 "Continue", 14983"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14984operators. All new ACPI 2.0 operators are now implemented in both 14985the ASL compiler and the AML interpreter. The only remaining ACPI 149862.0 task is support for the String data type in the DerefOf 14987operator. Fixed a problem with AcquireMutex where the status code 14988was lost if the caller had to actually wait for the mutex. 14989 14990Increased the maximum ASL Field size from 64K bits to 4G bits. 14991 14992Completed implementation of the external Global Lock interfaces -- 14993AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14994Handler parameters were added. 14995 14996Completed another pass at removing warnings and issues when 14997compiling with 64-bit compilers. The code now compiles cleanly 14998with the Intel 64-bit C/C++ compiler. Most notably, the pointer 14999add and subtract (diff) macros have changed considerably. 15000 15001 15002Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1500364-bit platforms, 32-bits on all others. This type is used 15004wherever memory allocation and/or the C sizeof() operator is used, 15005and affects the OSL memory allocation interfaces AcpiOsAllocate 15006and AcpiOsCallocate. 15007 15008Implemented sticky user breakpoints in the AML debugger. 15009 15010Code and Data Size: Current core subsystem library sizes are shown 15011below. These are the code and data sizes for the acpica.lib 15012produced by the Microsoft Visual C++ 6.0 compiler, and these 15013values do not include any ACPI driver or OSPM code. The debug 15014version of the code includes the debug output trace mechanism and 15015has a larger code and data size. Note that these values will vary 15016depending on the efficiency of the compiler and the compiler 15017options used during generation. 15018 15019 Previous Release (12_05_01) 15020 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15021 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15022 Current Release: 15023 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15024 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15025 15026 3) ASL Compiler, version X2034: 15027 15028Now checks for (and generates an error if detected) the use of a 15029Break or Continue statement without an enclosing While statement. 15030 15031 15032Successfully generated the compiler with the Intel 64-bit C 15033compiler. 15034 15035 ---------------------------------------- 15036Summary of changes for this label: 12_05_01 15037 15038 1) ACPI CA Core Subsystem: 15039 15040The ACPI 2.0 CopyObject operator is fully implemented. This 15041operator creates a new copy of an object (and is also used to 15042bypass the "implicit conversion" mechanism of the Store operator.) 15043 15044The ACPI 2.0 semantics for the SizeOf operator are fully 15045implemented. The change is that performing a SizeOf on a 15046reference object causes an automatic dereference of the object to 15047tha actual value before the size is evaluated. This behavior was 15048undefined in ACPI 1.0. 15049 15050The ACPI 2.0 semantics for the Extended IRQ resource descriptor 15051have been implemented. The interrupt polarity and mode are now 15052independently set. 15053 15054Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 15055appearing in Package objects were not properly converted to 15056integers when the internal Package was converted to an external 15057object (via the AcpiEvaluateObject interface.) 15058 15059Fixed a problem with the namespace object deletion mechanism for 15060objects created by control methods. There were two parts to this 15061problem: 1) Objects created during the initialization phase method 15062parse were not being deleted, and 2) The object owner ID mechanism 15063to track objects was broken. 15064 15065Fixed a problem where the use of the ASL Scope operator within a 15066control method would result in an invalid opcode exception. 15067 15068Fixed a problem introduced in the previous label where the buffer 15069length required for the _PRT structure was not being returned 15070correctly. 15071 15072Code and Data Size: Current core subsystem library sizes are shown 15073below. These are the code and data sizes for the acpica.lib 15074produced by the Microsoft Visual C++ 6.0 compiler, and these 15075values do not include any ACPI driver or OSPM code. The debug 15076version of the code includes the debug output trace mechanism and 15077has a larger code and data size. Note that these values will vary 15078depending on the efficiency of the compiler and the compiler 15079options used during generation. 15080 15081 Previous Release (11_20_01) 15082 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15083 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15084 15085 Current Release: 15086 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15087 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15088 15089 2) Linux: 15090 15091Updated all files to apply cleanly against 2.4.16. 15092 15093Added basic PCI Interrupt Routing Table (PRT) support for IA32 15094(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15095version supports both static and dyanmic PRT entries, but dynamic 15096entries are treated as if they were static (not yet 15097reconfigurable). Architecture- specific code to use this data is 15098absent on IA32 but should be available shortly. 15099 15100Changed the initialization sequence to start the ACPI interpreter 15101(acpi_init) prior to initialization of the PCI driver (pci_init) 15102in init/main.c. This ordering is required to support PRT and 15103facilitate other (future) enhancement. A side effect is that the 15104ACPI bus driver and certain device drivers can no longer be loaded 15105as modules. 15106 15107Modified the 'make menuconfig' options to allow PCI Interrupt 15108Routing support to be included without the ACPI Bus and other 15109device drivers. 15110 15111 3) ASL Compiler, version X2033: 15112 15113Fixed some issues with the use of the new CopyObject and 15114DataTableRegion operators. Both are fully functional. 15115 15116 ---------------------------------------- 15117Summary of changes for this label: 11_20_01 15118 15119 20 November 2001. Summary of changes for this release. 15120 15121 1) ACPI CA Core Subsystem: 15122 15123Updated Index support to match ACPI 2.0 semantics. Storing a 15124Integer, String, or Buffer to an Index of a Buffer will store only 15125the least-significant byte of the source to the Indexed buffer 15126byte. Multiple writes are not performed. 15127 15128Fixed a problem where the access type used in an AccessAs ASL 15129operator was not recorded correctly into the field object. 15130 15131Fixed a problem where ASL Event objects were created in a 15132signalled state. Events are now created in an unsignalled state. 15133 15134The internal object cache is now purged after table loading and 15135initialization to reduce the use of dynamic kernel memory -- on 15136the assumption that object use is greatest during the parse phase 15137of the entire table (versus the run-time use of individual control 15138methods.) 15139 15140ACPI 2.0 variable-length packages are now fully operational. 15141 15142Code and Data Size: Code and Data optimizations have permitted new 15143feature development with an actual reduction in the library size. 15144Current core subsystem library sizes are shown below. These are 15145the code and data sizes for the acpica.lib produced by the 15146Microsoft Visual C++ 6.0 compiler, and these values do not include 15147any ACPI driver or OSPM code. The debug version of the code 15148includes the debug output trace mechanism and has a larger code 15149and data size. Note that these values will vary depending on the 15150efficiency of the compiler and the compiler options used during 15151generation. 15152 15153 Previous Release (11_09_01): 15154 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15155 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15156 15157 Current Release: 15158 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15159 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15160 15161 2) Linux: 15162 15163Enhanced the ACPI boot-time initialization code to allow the use 15164of Local APIC tables for processor enumeration on IA-32, and to 15165pave the way for a fully MPS-free boot (on SMP systems) in the 15166near future. This functionality replaces 15167arch/i386/kernel/acpitables.c, which was introduced in an earlier 151682.4.15-preX release. To enable this feature you must add 15169"acpi_boot=on" to the kernel command line -- see the help entry 15170for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15171the works... 15172 15173Restructured the configuration options to allow boot-time table 15174parsing support without inclusion of the ACPI Interpreter (and 15175other) code. 15176 15177NOTE: This release does not include fixes for the reported events, 15178power-down, and thermal passive cooling issues (coming soon). 15179 15180 3) ASL Compiler: 15181 15182Added additional typechecking for Fields within restricted access 15183Operation Regions. All fields within EC and CMOS regions must be 15184declared with ByteAcc. All fields withing SMBus regions must be 15185declared with the BufferAcc access type. 15186 15187Fixed a problem where the listing file output of control methods 15188no longer interleaved the actual AML code with the ASL source 15189code. 15190 15191 15192 15193 15194---------------------------------------- 15195Summary of changes for this label: 11_09_01 15196 151971) ACPI CA Core Subsystem: 15198 15199Implemented ACPI 2.0-defined support for writes to fields with a 15200Buffer, String, or Integer source operand that is smaller than the 15201target field. In these cases, the source operand is zero-extended 15202to fill the target field. 15203 15204Fixed a problem where a Field starting bit offset (within the 15205parent operation region) was calculated incorrectly if the 15206 15207alignment of the field differed from the access width. This 15208affected CreateWordField, CreateDwordField, CreateQwordField, and 15209possibly other fields that use the "AccessAny" keyword. 15210 15211Fixed a problem introduced in the 11_02_01 release where indirect 15212stores through method arguments did not operate correctly. 15213 152142) Linux: 15215 15216Implemented boot-time ACPI table parsing support 15217(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15218facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15219legacy BIOS interfaces (e.g. MPS) for the configuration of system 15220processors, memory, and interrupts during setup_arch(). Note that 15221this patch does not include the required architecture-specific 15222changes required to apply this information -- subsequent patches 15223will be posted for both IA32 and IA64 to achieve this. 15224 15225Added low-level sleep support for IA32 platforms, courtesy of Pat 15226Mochel. This allows IA32 systems to transition to/from various 15227sleeping states (e.g. S1, S3), although the lack of a centralized 15228driver model and power-manageable drivers will prevent its 15229(successful) use on most systems. 15230 15231Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15232submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15233tables" option, etc. 15234 15235Increased the default timeout for the EC driver from 1ms to 10ms 15236(1000 cycles of 10us) to try to address AE_TIME errors during EC 15237transactions. 15238 15239 ---------------------------------------- 15240Summary of changes for this label: 11_02_01 15241 152421) ACPI CA Core Subsystem: 15243 15244ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15245(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15246implemented. 15247 15248OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15249changes to support ACPI 2.0 Qword field access. Read/Write 15250PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15251accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15252the value parameter for the address space handler interface is now 15253an ACPI_INTEGER. OSL implementations of these interfaces must now 15254handle the case where the Width parameter is 64. 15255 15256Index Fields: Fixed a problem where unaligned bit assembly and 15257disassembly for IndexFields was not supported correctly. 15258 15259Index and Bank Fields: Nested Index and Bank Fields are now 15260supported. During field access, a check is performed to ensure 15261that the value written to an Index or Bank register is not out of 15262the range of the register. The Index (or Bank) register is 15263written before each access to the field data. Future support will 15264include allowing individual IndexFields to be wider than the 15265DataRegister width. 15266 15267Fields: Fixed a problem where the AML interpreter was incorrectly 15268attempting to write beyond the end of a Field/OpRegion. This was 15269a boundary case that occurred when a DWORD field was written to a 15270BYTE access OpRegion, forcing multiple writes and causing the 15271interpreter to write one datum too many. 15272 15273Fields: Fixed a problem with Field/OpRegion access where the 15274starting bit address of a field was incorrectly calculated if the 15275current access type was wider than a byte (WordAcc, DwordAcc, or 15276QwordAcc). 15277 15278Fields: Fixed a problem where forward references to individual 15279FieldUnits (individual Field names within a Field definition) were 15280not resolved during the AML table load. 15281 15282Fields: Fixed a problem where forward references from a Field 15283definition to the parent Operation Region definition were not 15284resolved during the AML table load. 15285 15286Fields: Duplicate FieldUnit names within a scope are now detected 15287during AML table load. 15288 15289Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15290returned an incorrect name for the root node. 15291 15292Code and Data Size: Code and Data optimizations have permitted new 15293feature development with an actual reduction in the library size. 15294Current core subsystem library sizes are shown below. These are 15295the code and data sizes for the acpica.lib produced by the 15296Microsoft Visual C++ 6.0 compiler, and these values do not include 15297any ACPI driver or OSPM code. The debug version of the code 15298includes the debug output trace mechanism and has a larger code 15299and data size. Note that these values will vary depending on the 15300efficiency of the compiler and the compiler options used during 15301generation. 15302 15303 Previous Release (10_18_01): 15304 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15305 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15306 15307 Current Release: 15308 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15309 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15310 15311 2) Linux: 15312 15313Improved /proc processor output (Pavel Machek) Re-added 15314MODULE_LICENSE("GPL") to all modules. 15315 15316 3) ASL Compiler version X2030: 15317 15318Duplicate FieldUnit names within a scope are now detected and 15319flagged as errors. 15320 15321 4) Documentation: 15322 15323Programmer Reference updated to reflect OSL and address space 15324handler interface changes described above. 15325 15326---------------------------------------- 15327Summary of changes for this label: 10_18_01 15328 15329ACPI CA Core Subsystem: 15330 15331Fixed a problem with the internal object reference count mechanism 15332that occasionally caused premature object deletion. This resolves 15333all of the outstanding problem reports where an object is deleted 15334in the middle of an interpreter evaluation. Although this problem 15335only showed up in rather obscure cases, the solution to the 15336problem involved an adjustment of all reference counts involving 15337objects attached to namespace nodes. 15338 15339Fixed a problem with Field support in the interpreter where 15340writing to an aligned field whose length is an exact multiple (2 15341or greater) of the field access granularity would cause an attempt 15342to write beyond the end of the field. 15343 15344The top level AML opcode execution functions within the 15345interpreter have been renamed with a more meaningful and 15346consistent naming convention. The modules exmonad.c and 15347exdyadic.c were eliminated. New modules are exoparg1.c, 15348exoparg2.c, exoparg3.c, and exoparg6.c. 15349 15350Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 15351 15352Fixed a problem where the AML debugger was causing some internal 15353objects to not be deleted during subsystem termination. 15354 15355Fixed a problem with the external AcpiEvaluateObject interface 15356where the subsystem would fault if the named object to be 15357evaluated refered to a constant such as Zero, Ones, etc. 15358 15359Fixed a problem with IndexFields and BankFields where the 15360subsystem would fault if the index, data, or bank registers were 15361not defined in the same scope as the field itself. 15362 15363Added printf format string checking for compilers that support 15364this feature. Corrected more than 50 instances of issues with 15365format specifiers within invocations of ACPI_DEBUG_PRINT 15366throughout the core subsystem code. 15367 15368The ASL "Revision" operator now returns the ACPI support level 15369implemented in the core - the value "2" since the ACPI 2.0 support 15370is more than 50% implemented. 15371 15372Enhanced the output of the AML debugger "dump namespace" command 15373to output in a more human-readable form. 15374 15375Current core subsystem library code sizes are shown below. These 15376 15377are the code and data sizes for the acpica.lib produced by the 15378Microsoft Visual C++ 6.0 compiler, and these values do not include 15379any ACPI driver or OSPM code. The debug version of the code 15380includes the full debug trace mechanism -- leading to a much 15381 15382larger code and data size. Note that these values will vary 15383depending on the efficiency of the compiler and the compiler 15384options used during generation. 15385 15386 Previous Label (09_20_01): 15387 Non-Debug Version: 65K Code, 5K Data, 70K Total 15388 Debug Version: 138K Code, 58K Data, 196K Total 15389 15390 This Label: 15391 15392 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15393 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15394 15395Linux: 15396 15397Implemented a "Bad BIOS Blacklist" to track machines that have 15398known ASL/AML problems. 15399 15400Enhanced the /proc interface for the thermal zone driver and added 15401support for _HOT (the critical suspend trip point). The 'info' 15402file now includes threshold/policy information, and allows setting 15403of _SCP (cooling preference) and _TZP (polling frequency) values 15404to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15405frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15406preference to the passive/quiet mode (if supported by the ASL). 15407 15408Implemented a workaround for a gcc bug that resuted in an OOPs 15409when loading the control method battery driver. 15410 15411 ---------------------------------------- 15412Summary of changes for this label: 09_20_01 15413 15414 ACPI CA Core Subsystem: 15415 15416The AcpiEnableEvent and AcpiDisableEvent interfaces have been 15417modified to allow individual GPE levels to be flagged as wake- 15418enabled (i.e., these GPEs are to remain enabled when the platform 15419sleeps.) 15420 15421The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15422support wake-enabled GPEs. This means that upon entering the 15423sleep state, all GPEs that are not wake-enabled are disabled. 15424When leaving the sleep state, these GPEs are reenabled. 15425 15426A local double-precision divide/modulo module has been added to 15427enhance portability to OS kernels where a 64-bit math library is 15428not available. The new module is "utmath.c". 15429 15430Several optimizations have been made to reduce the use of CPU 15431stack. Originally over 2K, the maximum stack usage is now below 154322K at 1860 bytes (1.82k) 15433 15434Fixed a problem with the AcpiGetFirmwareTable interface where the 15435root table pointer was not mapped into a logical address properly. 15436 15437Fixed a problem where a NULL pointer was being dereferenced in the 15438interpreter code for the ASL Notify operator. 15439 15440Fixed a problem where the use of the ASL Revision operator 15441returned an error. This operator now returns the current version 15442of the ACPI CA core subsystem. 15443 15444Fixed a problem where objects passed as control method parameters 15445to AcpiEvaluateObject were always deleted at method termination. 15446However, these objects may end up being stored into the namespace 15447by the called method. The object reference count mechanism was 15448applied to these objects instead of a force delete. 15449 15450Fixed a problem where static strings or buffers (contained in the 15451AML code) that are declared as package elements within the ASL 15452code could cause a fault because the interpreter would attempt to 15453delete them. These objects are now marked with the "static 15454object" flag to prevent any attempt to delete them. 15455 15456Implemented an interpreter optimization to use operands directly 15457from the state object instead of extracting the operands to local 15458variables. This reduces stack use and code size, and improves 15459performance. 15460 15461The module exxface.c was eliminated as it was an unnecessary extra 15462layer of code. 15463 15464Current core subsystem library code sizes are shown below. These 15465are the code and data sizes for the acpica.lib produced by the 15466Microsoft Visual C++ 6.0 compiler, and these values do not include 15467any ACPI driver or OSPM code. The debug version of the code 15468includes the full debug trace mechanism -- leading to a much 15469larger code and data size. Note that these values will vary 15470depending on the efficiency of the compiler and the compiler 15471options used during generation. 15472 15473 Non-Debug Version: 65K Code, 5K Data, 70K Total 15474(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 15475Total (Previously 195K) 15476 15477Linux: 15478 15479Support for ACPI 2.0 64-bit integers has been added. All ACPI 15480Integer objects are now 64 bits wide 15481 15482All Acpi data types and structures are now in lower case. Only 15483Acpi macros are upper case for differentiation. 15484 15485 Documentation: 15486 15487Changes to the external interfaces as described above. 15488 15489 ---------------------------------------- 15490Summary of changes for this label: 08_31_01 15491 15492 ACPI CA Core Subsystem: 15493 15494A bug with interpreter implementation of the ASL Divide operator 15495was found and fixed. The implicit function return value (not the 15496explicit store operands) was returning the remainder instead of 15497the quotient. This was a longstanding bug and it fixes several 15498known outstanding issues on various platforms. 15499 15500The ACPI_DEBUG_PRINT and function trace entry/exit macros have 15501been further optimized for size. There are 700 invocations of the 15502DEBUG_PRINT macro alone, so each optimization reduces the size of 15503the debug version of the subsystem significantly. 15504 15505A stack trace mechanism has been implemented. The maximum stack 15506usage is about 2K on 32-bit platforms. The debugger command "stat 15507stack" will display the current maximum stack usage. 15508 15509All public symbols and global variables within the subsystem are 15510now prefixed with the string "Acpi". This keeps all of the 15511symbols grouped together in a kernel map, and avoids conflicts 15512with other kernel subsystems. 15513 15514Most of the internal fixed lookup tables have been moved into the 15515code segment via the const operator. 15516 15517Several enhancements have been made to the interpreter to both 15518reduce the code size and improve performance. 15519 15520Current core subsystem library code sizes are shown below. These 15521are the code and data sizes for the acpica.lib produced by the 15522Microsoft Visual C++ 6.0 compiler, and these values do not include 15523any ACPI driver or OSPM code. The debug version of the code 15524includes the full debug trace mechanism which contains over 700 15525invocations of the DEBUG_PRINT macro, 500 function entry macro 15526invocations, and over 900 function exit macro invocations -- 15527leading to a much larger code and data size. Note that these 15528values will vary depending on the efficiency of the compiler and 15529the compiler options used during generation. 15530 15531 Non-Debug Version: 64K Code, 5K Data, 69K Total 15532Debug Version: 137K Code, 58K Data, 195K Total 15533 15534 Linux: 15535 15536Implemented wbinvd() macro, pending a kernel-wide definition. 15537 15538Fixed /proc/acpi/event to handle poll() and short reads. 15539 15540 ASL Compiler, version X2026: 15541 15542Fixed a problem introduced in the previous label where the AML 15543 15544code emitted for package objects produced packages with zero 15545length. 15546 15547 ---------------------------------------- 15548Summary of changes for this label: 08_16_01 15549 15550ACPI CA Core Subsystem: 15551 15552The following ACPI 2.0 ASL operators have been implemented in the 15553AML interpreter (These are already supported by the Intel ASL 15554compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 15555ToBuffer. Support for 64-bit AML constants is implemented in the 15556AML parser, debugger, and disassembler. 15557 15558The internal memory tracking mechanism (leak detection code) has 15559been upgraded to reduce the memory overhead (a separate tracking 15560block is no longer allocated for each memory allocation), and now 15561supports all of the internal object caches. 15562 15563The data structures and code for the internal object caches have 15564been coelesced and optimized so that there is a single cache and 15565memory list data structure and a single group of functions that 15566implement generic cache management. This has reduced the code 15567size in both the debug and release versions of the subsystem. 15568 15569The DEBUG_PRINT macro(s) have been optimized for size and replaced 15570by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 15571different, because it generates a single call to an internal 15572function. This results in a savings of about 90 bytes per 15573invocation, resulting in an overall code and data savings of about 1557416% in the debug version of the subsystem. 15575 15576 Linux: 15577 15578Fixed C3 disk corruption problems and re-enabled C3 on supporting 15579machines. 15580 15581Integrated low-level sleep code by Patrick Mochel. 15582 15583Further tweaked source code Linuxization. 15584 15585Other minor fixes. 15586 15587 ASL Compiler: 15588 15589Support for ACPI 2.0 variable length packages is fixed/completed. 15590 15591Fixed a problem where the optional length parameter for the ACPI 155922.0 ToString operator. 15593 15594Fixed multiple extraneous error messages when a syntax error is 15595detected within the declaration line of a control method. 15596 15597 ---------------------------------------- 15598Summary of changes for this label: 07_17_01 15599 15600ACPI CA Core Subsystem: 15601 15602Added a new interface named AcpiGetFirmwareTable to obtain any 15603ACPI table via the ACPI signature. The interface can be called at 15604any time during kernel initialization, even before the kernel 15605virtual memory manager is initialized and paging is enabled. This 15606allows kernel subsystems to obtain ACPI tables very early, even 15607before the ACPI CA subsystem is initialized. 15608 15609Fixed a problem where Fields defined with the AnyAcc attribute 15610could be resolved to the incorrect address under the following 15611conditions: 1) the field width is larger than 8 bits and 2) the 15612parent operation region is not defined on a DWORD boundary. 15613 15614Fixed a problem where the interpreter is not being locked during 15615namespace initialization (during execution of the _INI control 15616methods), causing an error when an attempt is made to release it 15617later. 15618 15619ACPI 2.0 support in the AML Interpreter has begun and will be 15620ongoing throughout the rest of this year. In this label, The Mod 15621operator is implemented. 15622 15623Added a new data type to contain full PCI addresses named 15624ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 15625and Function values. 15626 15627 Linux: 15628 15629Enhanced the Linux version of the source code to change most 15630capitalized ACPI type names to lowercase. For example, all 15631instances of ACPI_STATUS are changed to acpi_status. This will 15632result in a large diff, but the change is strictly cosmetic and 15633aligns the CA code closer to the Linux coding standard. 15634 15635OSL Interfaces: 15636 15637The interfaces to the PCI configuration space have been changed to 15638add the PCI Segment number and to split the single 32-bit combined 15639DeviceFunction field into two 16-bit fields. This was 15640accomplished by moving the four values that define an address in 15641PCI configuration space (segment, bus, device, and function) to 15642the new ACPI_PCI_ID structure. 15643 15644The changes to the PCI configuration space interfaces led to a 15645reexamination of the complete set of address space access 15646interfaces for PCI, I/O, and Memory. The previously existing 18 15647interfaces have proven difficult to maintain (any small change 15648must be propagated across at least 6 interfaces) and do not easily 15649allow for future expansion to 64 bits if necessary. Also, on some 15650systems, it would not be appropriate to demultiplex the access 15651width (8, 16, 32,or 64) before calling the OSL if the 15652corresponding native OS interfaces contain a similar access width 15653parameter. For these reasons, the 18 address space interfaces 15654have been replaced by these 6 new ones: 15655 15656AcpiOsReadPciConfiguration 15657AcpiOsWritePciConfiguration 15658AcpiOsReadMemory 15659AcpiOsWriteMemory 15660AcpiOsReadPort 15661AcpiOsWritePort 15662 15663Added a new interface named AcpiOsGetRootPointer to allow the OSL 15664to perform the platform and/or OS-specific actions necessary to 15665obtain the ACPI RSDP table pointer. On IA-32 platforms, this 15666interface will simply call down to the CA core to perform the low- 15667memory search for the table. On IA-64, the RSDP is obtained from 15668EFI. Migrating this interface to the OSL allows the CA core to 15669 15670remain OS and platform independent. 15671 15672Added a new interface named AcpiOsSignal to provide a generic 15673"function code and pointer" interface for various miscellaneous 15674signals and notifications that must be made to the host OS. The 15675first such signals are intended to support the ASL Fatal and 15676Breakpoint operators. In the latter case, the AcpiOsBreakpoint 15677interface has been obsoleted. 15678 15679The definition of the AcpiFormatException interface has been 15680changed to simplify its use. The caller no longer must supply a 15681buffer to the call; A pointer to a const string is now returned 15682directly. This allows the call to be easily used in printf 15683statements, etc. since the caller does not have to manage a local 15684buffer. 15685 15686 15687 ASL Compiler, Version X2025: 15688 15689The ACPI 2.0 Switch/Case/Default operators have been implemented 15690and are fully functional. They will work with all ACPI 1.0 15691interpreters, since the operators are simply translated to If/Else 15692pairs. 15693 15694The ACPI 2.0 ElseIf operator is implemented and will also work 15695with 1.0 interpreters, for the same reason. 15696 15697Implemented support for ACPI 2.0 variable-length packages. These 15698packages have a separate opcode, and their size is determined by 15699the interpreter at run-time. 15700 15701Documentation The ACPI CA Programmer Reference has been updated to 15702reflect the new interfaces and changes to existing interfaces. 15703 15704 ------------------------------------------ 15705Summary of changes for this label: 06_15_01 15706 15707 ACPI CA Core Subsystem: 15708 15709Fixed a problem where a DWORD-accessed field within a Buffer 15710object would get its byte address inadvertently rounded down to 15711the nearest DWORD. Buffers are always Byte-accessible. 15712 15713 ASL Compiler, version X2024: 15714 15715Fixed a problem where the Switch() operator would either fault or 15716hang the compiler. Note however, that the AML code for this ACPI 157172.0 operator is not yet implemented. 15718 15719Compiler uses the new AcpiOsGetTimer interface to obtain compile 15720timings. 15721 15722Implementation of the CreateField operator automatically converts 15723a reference to a named field within a resource descriptor from a 15724byte offset to a bit offset if required. 15725 15726Added some missing named fields from the resource descriptor 15727support. These are the names that are automatically created by the 15728compiler to reference fields within a descriptor. They are only 15729valid at compile time and are not passed through to the AML 15730interpreter. 15731 15732Resource descriptor named fields are now typed as Integers and 15733subject to compile-time typechecking when used in expressions. 15734 15735 ------------------------------------------ 15736Summary of changes for this label: 05_18_01 15737 15738 ACPI CA Core Subsystem: 15739 15740Fixed a couple of problems in the Field support code where bits 15741from adjacent fields could be returned along with the proper field 15742bits. Restructured the field support code to improve performance, 15743readability and maintainability. 15744 15745New DEBUG_PRINTP macro automatically inserts the procedure name 15746into the output, saving hundreds of copies of procedure name 15747strings within the source, shrinking the memory footprint of the 15748debug version of the core subsystem. 15749 15750 Source Code Structure: 15751 15752The source code directory tree was restructured to reflect the 15753current organization of the component architecture. Some files 15754and directories have been moved and/or renamed. 15755 15756 Linux: 15757 15758Fixed leaking kacpidpc processes. 15759 15760Fixed queueing event data even when /proc/acpi/event is not 15761opened. 15762 15763 ASL Compiler, version X2020: 15764 15765Memory allocation performance enhancement - over 24X compile time 15766improvement on large ASL files. Parse nodes and namestring 15767buffers are now allocated from a large internal compiler buffer. 15768 15769The temporary .SRC file is deleted unless the "-s" option is 15770specified 15771 15772The "-d" debug output option now sends all output to the .DBG file 15773instead of the console. 15774 15775"External" second parameter is now optional 15776 15777"ElseIf" syntax now properly allows the predicate 15778 15779Last operand to "Load" now recognized as a Target operand 15780 15781Debug object can now be used anywhere as a normal object. 15782 15783ResourceTemplate now returns an object of type BUFFER 15784 15785EISAID now returns an object of type INTEGER 15786 15787"Index" now works with a STRING operand 15788 15789"LoadTable" now accepts optional parameters 15790 15791"ToString" length parameter is now optional 15792 15793"Interrupt (ResourceType," parse error fixed. 15794 15795"Register" with a user-defined region space parse error fixed 15796 15797Escaped backslash at the end of a string ("\\") scan/parse error 15798fixed 15799 15800"Revision" is now an object of type INTEGER. 15801 15802 15803 15804------------------------------------------ 15805Summary of changes for this label: 05_02_01 15806 15807Linux: 15808 15809/proc/acpi/event now blocks properly. 15810 15811Removed /proc/sys/acpi. You can still dump your DSDT from 15812/proc/acpi/dsdt. 15813 15814 ACPI CA Core Subsystem: 15815 15816Fixed a problem introduced in the previous label where some of the 15817"small" resource descriptor types were not recognized. 15818 15819Improved error messages for the case where an ASL Field is outside 15820the range of the parent operation region. 15821 15822 ASL Compiler, version X2018: 15823 15824 15825Added error detection for ASL Fields that extend beyond the length 15826of the parent operation region (only if the length of the region 15827is known at compile time.) This includes fields that have a 15828minimum access width that is smaller than the parent region, and 15829individual field units that are partially or entirely beyond the 15830extent of the parent. 15831 15832 15833 15834------------------------------------------ 15835Summary of changes for this label: 04_27_01 15836 15837 ACPI CA Core Subsystem: 15838 15839Fixed a problem where the namespace mutex could be released at the 15840wrong time during execution of AcpiRemoveAddressSpaceHandler. 15841 15842Added optional thread ID output for debug traces, to simplify 15843debugging of multiple threads. Added context switch notification 15844when the debug code realizes that a different thread is now 15845executing ACPI code. 15846 15847Some additional external data types have been prefixed with the 15848string "ACPI_" for consistency. This may effect existing code. 15849The data types affected are the external callback typedefs - e.g., 15850 15851WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 15852 15853 Linux: 15854 15855Fixed an issue with the OSL semaphore implementation where a 15856thread was waking up with an error from receiving a SIGCHLD 15857signal. 15858 15859Linux version of ACPI CA now uses the system C library for string 15860manipulation routines instead of a local implementation. 15861 15862Cleaned up comments and removed TBDs. 15863 15864 ASL Compiler, version X2017: 15865 15866Enhanced error detection and reporting for all file I/O 15867operations. 15868 15869 Documentation: 15870 15871Programmer Reference updated to version 1.06. 15872 15873 15874 15875------------------------------------------ 15876Summary of changes for this label: 04_13_01 15877 15878 ACPI CA Core Subsystem: 15879 15880Restructured support for BufferFields and RegionFields. 15881BankFields support is now fully operational. All known 32-bit 15882limitations on field sizes have been removed. Both BufferFields 15883and (Operation) RegionFields are now supported by the same field 15884management code. 15885 15886Resource support now supports QWORD address and IO resources. The 1588716/32/64 bit address structures and the Extended IRQ structure 15888have been changed to properly handle Source Resource strings. 15889 15890A ThreadId of -1 is now used to indicate a "mutex not acquired" 15891condition internally and must never be returned by AcpiOsThreadId. 15892This reserved value was changed from 0 since Unix systems allow a 15893thread ID of 0. 15894 15895Linux: 15896 15897Driver code reorganized to enhance portability 15898 15899Added a kernel configuration option to control ACPI_DEBUG 15900 15901Fixed the EC driver to honor _GLK. 15902 15903ASL Compiler, version X2016: 15904 15905Fixed support for the "FixedHw" keyword. Previously, the FixedHw 15906address space was set to 0, not 0x7f as it should be. 15907 15908 ------------------------------------------ 15909Summary of changes for this label: 03_13_01 15910 15911 ACPI CA Core Subsystem: 15912 15913During ACPI initialization, the _SB_._INI method is now run if 15914present. 15915 15916Notify handler fix - notifies are deferred until the parent method 15917completes execution. This fixes the "mutex already acquired" 15918issue seen occasionally. 15919 15920Part of the "implicit conversion" rules in ACPI 2.0 have been 15921found to cause compatibility problems with existing ASL/AML. The 15922convert "result-to-target-type" implementation has been removed 15923for stores to method Args and Locals. Source operand conversion 15924is still fully implemented. Possible changes to ACPI 2.0 15925specification pending. 15926 15927Fix to AcpiRsCalculatePciRoutingTableLength to return correct 15928length. 15929 15930Fix for compiler warnings for 64-bit compiles. 15931 15932 Linux: 15933 15934/proc output aligned for easier parsing. 15935 15936Release-version compile problem fixed. 15937 15938New kernel configuration options documented in Configure.help. 15939 15940IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15941context" message. 15942 15943 OSPM: 15944 15945Power resource driver integrated with bus manager. 15946 15947Fixed kernel fault during active cooling for thermal zones. 15948 15949Source Code: 15950 15951The source code tree has been restructured. 15952 15953 15954 15955------------------------------------------ 15956Summary of changes for this label: 03_02_01 15957 15958 Linux OS Services Layer (OSL): 15959 15960Major revision of all Linux-specific code. 15961 15962Modularized all ACPI-specific drivers. 15963 15964Added new thermal zone and power resource drivers. 15965 15966Revamped /proc interface (new functionality is under /proc/acpi). 15967 15968New kernel configuration options. 15969 15970 Linux known issues: 15971 15972New kernel configuration options not documented in Configure.help 15973yet. 15974 15975 15976Module dependencies not currently implemented. If used, they 15977should be loaded in this order: busmgr, power, ec, system, 15978processor, battery, ac_adapter, button, thermal. 15979 15980Modules will not load if CONFIG_MODVERSION is set. 15981 15982IBM 600E - entering S5 may reboot instead of shutting down. 15983 15984IBM 600E - Sleep button may generate "Invalid <NULL> context" 15985message. 15986 15987Some systems may fail with "execution mutex already acquired" 15988message. 15989 15990 ACPI CA Core Subsystem: 15991 15992Added a new OSL Interface, AcpiOsGetThreadId. This was required 15993for the deadlock detection code. Defined to return a non-zero, 32- 15994bit thread ID for the currently executing thread. May be a non- 15995zero constant integer on single-thread systems. 15996 15997Implemented deadlock detection for internal subsystem mutexes. We 15998may add conditional compilation for this code (debug only) later. 15999 16000ASL/AML Mutex object semantics are now fully supported. This 16001includes multiple acquires/releases by owner and support for the 16002 16003Mutex SyncLevel parameter. 16004 16005A new "Force Release" mechanism automatically frees all ASL 16006Mutexes that have been acquired but not released when a thread 16007exits the interpreter. This forces conformance to the ACPI spec 16008("All mutexes must be released when an invocation exits") and 16009prevents deadlocked ASL threads. This mechanism can be expanded 16010(later) to monitor other resource acquisitions if OEM ASL code 16011continues to misbehave (which it will). 16012 16013Several new ACPI exception codes have been added for the Mutex 16014support. 16015 16016Recursive method calls are now allowed and supported (the ACPI 16017spec does in fact allow recursive method calls.) The number of 16018recursive calls is subject to the restrictions imposed by the 16019SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16020parameter. 16021 16022Implemented support for the SyncLevel parameter for control 16023methods (ACPI 2.0 feature) 16024 16025Fixed a deadlock problem when multiple threads attempted to use 16026the interpreter. 16027 16028Fixed a problem where the string length of a String package 16029element was not always set in a package returned from 16030AcpiEvaluateObject. 16031 16032Fixed a problem where the length of a String package element was 16033not always included in the length of the overall package returned 16034from AcpiEvaluateObject. 16035 16036Added external interfaces (Acpi*) to the ACPI debug memory 16037manager. This manager keeps a list of all outstanding 16038allocations, and can therefore detect memory leaks and attempts to 16039free memory blocks more than once. Useful for code such as the 16040power manager, etc. May not be appropriate for device drivers. 16041Performance with the debug code enabled is slow. 16042 16043The ACPI Global Lock is now an optional hardware element. 16044 16045 ASL Compiler Version X2015: 16046 16047Integrated changes to allow the compiler to be generated on 16048multiple platforms. 16049 16050Linux makefile added to generate the compiler on Linux 16051 16052 Source Code: 16053 16054All platform-specific headers have been moved to their own 16055subdirectory, Include/Platform. 16056 16057New source file added, Interpreter/ammutex.c 16058 16059New header file, Include/acstruct.h 16060 16061 Documentation: 16062 16063The programmer reference has been updated for the following new 16064interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16065 16066 ------------------------------------------ 16067Summary of changes for this label: 02_08_01 16068 16069Core ACPI CA Subsystem: Fixed a problem where an error was 16070incorrectly returned if the return resource buffer was larger than 16071the actual data (in the resource interfaces). 16072 16073References to named objects within packages are resolved to the 16074 16075full pathname string before packages are returned directly (via 16076the AcpiEvaluateObject interface) or indirectly via the resource 16077interfaces. 16078 16079Linux OS Services Layer (OSL): 16080 16081Improved /proc battery interface. 16082 16083 16084Added C-state debugging output and other miscellaneous fixes. 16085 16086ASL Compiler Version X2014: 16087 16088All defined method arguments can now be used as local variables, 16089including the ones that are not actually passed in as parameters. 16090The compiler tracks initialization of the arguments and issues an 16091exception if they are used without prior assignment (just like 16092locals). 16093 16094The -o option now specifies a filename prefix that is used for all 16095output files, including the AML output file. Otherwise, the 16096default behavior is as follows: 1) the AML goes to the file 16097specified in the DSDT. 2) all other output files use the input 16098source filename as the base. 16099 16100 ------------------------------------------ 16101Summary of changes for this label: 01_25_01 16102 16103Core ACPI CA Subsystem: Restructured the implementation of object 16104store support within the interpreter. This includes support for 16105the Store operator as well as any ASL operators that include a 16106target operand. 16107 16108Partially implemented support for Implicit Result-to-Target 16109conversion. This is when a result object is converted on the fly 16110to the type of an existing target object. Completion of this 16111support is pending further analysis of the ACPI specification 16112concerning this matter. 16113 16114CPU-specific code has been removed from the subsystem (hardware 16115directory). 16116 16117New Power Management Timer functions added 16118 16119Linux OS Services Layer (OSL): Moved system state transition code 16120to the core, fixed it, and modified Linux OSL accordingly. 16121 16122Fixed C2 and C3 latency calculations. 16123 16124 16125We no longer use the compilation date for the version message on 16126initialization, but retrieve the version from AcpiGetSystemInfo(). 16127 16128Incorporated for fix Sony VAIO machines. 16129 16130Documentation: The Programmer Reference has been updated and 16131reformatted. 16132 16133 16134ASL Compiler: Version X2013: Fixed a problem where the line 16135numbering and error reporting could get out of sync in the 16136presence of multiple include files. 16137 16138 ------------------------------------------ 16139Summary of changes for this label: 01_15_01 16140 16141Core ACPI CA Subsystem: 16142 16143Implemented support for type conversions in the execution of the 16144ASL Concatenate operator (The second operand is converted to 16145match the type of the first operand before concatenation.) 16146 16147Support for implicit source operand conversion is partially 16148implemented. The ASL source operand types Integer, Buffer, and 16149String are freely interchangeable for most ASL operators and are 16150converted by the interpreter on the fly as required. Implicit 16151Target operand conversion (where the result is converted to the 16152target type before storing) is not yet implemented. 16153 16154Support for 32-bit and 64-bit BCD integers is implemented. 16155 16156Problem fixed where a field read on an aligned field could cause a 16157read past the end of the field. 16158 16159New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16160does not return a value, but the caller expects one. (The ASL 16161compiler flags this as a warning.) 16162 16163ASL Compiler: 16164 16165Version X2011: 161661. Static typechecking of all operands is implemented. This 16167prevents the use of invalid objects (such as using a Package where 16168an Integer is required) at compile time instead of at interpreter 16169run-time. 161702. The ASL source line is printed with ALL errors and warnings. 161713. Bug fix for source EOF without final linefeed. 161724. Debug option is split into a parse trace and a namespace trace. 161735. Namespace output option (-n) includes initial values for 16174integers and strings. 161756. Parse-only option added for quick syntax checking. 161767. Compiler checks for duplicate ACPI name declarations 16177 16178Version X2012: 161791. Relaxed typechecking to allow interchangeability between 16180strings, integers, and buffers. These types are now converted by 16181the interpreter at runtime. 161822. Compiler reports time taken by each internal subsystem in the 16183debug output file. 16184 16185 16186 ------------------------------------------ 16187Summary of changes for this label: 12_14_00 16188 16189ASL Compiler: 16190 16191This is the first official release of the compiler. Since the 16192compiler requires elements of the Core Subsystem, this label 16193synchronizes everything. 16194 16195------------------------------------------ 16196Summary of changes for this label: 12_08_00 16197 16198 16199Fixed a problem where named references within the ASL definition 16200of both OperationRegions and CreateXXXFields did not work 16201properly. The symptom was an AE_AML_OPERAND_TYPE during 16202initialization of the region/field. This is similar (but not 16203related internally) to the problem that was fixed in the last 16204label. 16205 16206Implemented both 32-bit and 64-bit support for the BCD ASL 16207functions ToBCD and FromBCD. 16208 16209Updated all legal headers to include "2000" in the copyright 16210years. 16211 16212 ------------------------------------------ 16213Summary of changes for this label: 12_01_00 16214 16215Fixed a problem where method invocations within the ASL definition 16216of both OperationRegions and CreateXXXFields did not work 16217properly. The symptom was an AE_AML_OPERAND_TYPE during 16218initialization of the region/field: 16219 16220 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16221[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16222(0x3005) 16223 16224Fixed a problem where operators with more than one nested 16225subexpression would fail. The symptoms were varied, by mostly 16226AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16227problem that has gone unnoticed until now. 16228 16229 Subtract (Add (1,2), Multiply (3,4)) 16230 16231Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16232previous build (The prefix part of a relative path was handled 16233incorrectly). 16234 16235Fixed a problem where Operation Region initialization failed if 16236the operation region name was a "namepath" instead of a simple 16237"nameseg". Symptom was an AE_NO_OPERAND error. 16238 16239Fixed a problem where an assignment to a local variable via the 16240indirect RefOf mechanism only worked for the first such 16241assignment. Subsequent assignments were ignored. 16242 16243 ------------------------------------------ 16244Summary of changes for this label: 11_15_00 16245 16246ACPI 2.0 table support with backwards support for ACPI 1.0 and the 162470.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16248the AML interpreter does NOT have support for the new 2.0 ASL 16249grammar terms at this time. 16250 16251All ACPI hardware access is via the GAS structures in the ACPI 2.0 16252FADT. 16253 16254All physical memory addresses across all platforms are now 64 bits 16255wide. Logical address width remains dependent on the platform 16256(i.e., "void *"). 16257 16258AcpiOsMapMemory interface changed to a 64-bit physical address. 16259 16260The AML interpreter integer size is now 64 bits, as per the ACPI 162612.0 specification. 16262 16263For backwards compatibility with ACPI 1.0, ACPI tables with a 16264revision number less than 2 use 32-bit integers only. 16265 16266Fixed a problem where the evaluation of OpRegion operands did not 16267always resolve them to numbers properly. 16268 16269------------------------------------------ 16270Summary of changes for this label: 10_20_00 16271 16272Fix for CBN_._STA issue. This fix will allow correct access to 16273CBN_ OpRegions when the _STA returns 0x8. 16274 16275Support to convert ACPI constants (Ones, Zeros, One) to actual 16276values before a package object is returned 16277 16278Fix for method call as predicate to if/while construct causing 16279incorrect if/while behavior 16280 16281Fix for Else block package lengths sometimes calculated wrong (if 16282block > 63 bytes) 16283 16284Fix for Processor object length field, was always zero 16285 16286Table load abort if FACP sanity check fails 16287 16288Fix for problem with Scope(name) if name already exists 16289 16290Warning emitted if a named object referenced cannot be found 16291(resolved) during method execution. 16292 16293 16294 16295 16296 16297------------------------------------------ 16298Summary of changes for this label: 9_29_00 16299 16300New table initialization interfaces: AcpiInitializeSubsystem no 16301longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16302necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16303>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16304AcpiLoadTables 16305 16306Note: These interface changes require changes to all existing OSDs 16307 16308The PCI_Config default address space handler is always installed 16309at the root namespace object. 16310 16311------------------------------------------- 16312Summary of changes for this label: 09_15_00 16313 16314The new initialization architecture is implemented. New 16315interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16316AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16317 16318(Namespace is automatically loaded when a table is loaded) 16319 16320The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1632152 bytes to 32 bytes. There is usually one of these for every 16322namespace object, so the memory savings is significant. 16323 16324Implemented just-in-time evaluation of the CreateField operators. 16325 16326Bug fixes for IA-64 support have been integrated. 16327 16328Additional code review comments have been implemented 16329 16330The so-called "third pass parse" has been replaced by a final walk 16331through the namespace to initialize all operation regions (address 16332spaces) and fields that have not yet been initialized during the 16333execution of the various _INI and REG methods. 16334 16335New file - namespace/nsinit.c 16336 16337------------------------------------------- 16338Summary of changes for this label: 09_01_00 16339 16340Namespace manager data structures have been reworked to change the 16341primary object from a table to a single object. This has 16342resulted in dynamic memory savings of 3X within the namespace and 163432X overall in the ACPI CA subsystem. 16344 16345Fixed problem where the call to AcpiEvFindPciRootBuses was 16346inadvertently left commented out. 16347 16348Reduced the warning count when generating the source with the GCC 16349compiler. 16350 16351Revision numbers added to each module header showing the 16352SourceSafe version of the file. Please refer to this version 16353number when giving us feedback or comments on individual modules. 16354 16355The main object types within the subsystem have been renamed to 16356clarify their purpose: 16357 16358ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16359ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16360ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16361 16362NOTE: no changes to the initialization sequence are included in 16363this label. 16364 16365------------------------------------------- 16366Summary of changes for this label: 08_23_00 16367 16368Fixed problem where TerminateControlMethod was being called 16369multiple times per method 16370 16371Fixed debugger problem where single stepping caused a semaphore to 16372be oversignalled 16373 16374Improved performance through additional parse object caching - 16375added ACPI_EXTENDED_OP type 16376 16377------------------------------------------- 16378Summary of changes for this label: 08_10_00 16379 16380Parser/Interpreter integration: Eliminated the creation of 16381complete parse trees for ACPI tables and control methods. 16382Instead, parse subtrees are created and then deleted as soon as 16383they are processed (Either entered into the namespace or executed 16384by the interpreter). This reduces the use of dynamic kernel 16385memory significantly. (about 10X) 16386 16387Exception codes broken into classes and renumbered. Be sure to 16388recompile all code that includes acexcep.h. Hopefully we won't 16389have to renumber the codes again now that they are split into 16390classes (environment, programmer, AML code, ACPI table, and 16391internal). 16392 16393Fixed some additional alignment issues in the Resource Manager 16394subcomponent 16395 16396Implemented semaphore tracking in the AcpiExec utility, and fixed 16397several places where mutexes/semaphores were being unlocked 16398without a corresponding lock operation. There are no known 16399semaphore or mutex "leaks" at this time. 16400 16401Fixed the case where an ASL Return operator is used to return an 16402unnamed package. 16403 16404------------------------------------------- 16405Summary of changes for this label: 07_28_00 16406 16407Fixed a problem with the way addresses were calculated in 16408AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16409manifested itself when a Field was created with WordAccess or 16410DwordAccess, but the field unit defined within the Field was less 16411 16412than a Word or Dword. 16413 16414Fixed a problem in AmlDumpOperands() module's loop to pull 16415operands off of the operand stack to display information. The 16416problem manifested itself as a TLB error on 64-bit systems when 16417accessing an operand stack with two or more operands. 16418 16419Fixed a problem with the PCI configuration space handlers where 16420context was getting confused between accesses. This required a 16421change to the generic address space handler and address space 16422setup definitions. Handlers now get both a global handler context 16423(this is the one passed in by the user when executing 16424AcpiInstallAddressSpaceHandler() and a specific region context 16425that is unique to each region (For example, the _ADR, _SEG and 16426_BBN values associated with a specific region). The generic 16427function definitions have changed to the following: 16428 16429typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16430UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16431*HandlerContext, // This used to be void *Context void 16432*RegionContext); // This is an additional parameter 16433 16434typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16435RegionHandle, UINT32 Function, void *HandlerContext, void 16436**RegionContext); // This used to be **ReturnContext 16437 16438------------------------------------------- 16439Summary of changes for this label: 07_21_00 16440 16441Major file consolidation and rename. All files within the 16442interpreter have been renamed as well as most header files. This 16443was done to prevent collisions with existing files in the host 16444OSs -- filenames such as "config.h" and "global.h" seem to be 16445quite common. The VC project files have been updated. All 16446makefiles will require modification. 16447 16448The parser/interpreter integration continues in Phase 5 with the 16449implementation of a complete 2-pass parse (the AML is parsed 16450twice) for each table; This avoids the construction of a huge 16451parse tree and therefore reduces the amount of dynamic memory 16452required by the subsystem. Greater use of the parse object cache 16453means that performance is unaffected. 16454 16455Many comments from the two code reviews have been rolled in. 16456 16457The 64-bit alignment support is complete. 16458 16459------------------------------------------- 16460Summary of changes for this label: 06_30_00 16461 16462With a nod and a tip of the hat to the technology of yesteryear, 16463we've added support in the source code for 80 column output 16464devices. The code is now mostly constrained to 80 columns or 16465less to support environments and editors that 1) cannot display 16466or print more than 80 characters on a single line, and 2) cannot 16467disable line wrapping. 16468 16469A major restructuring of the namespace data structure has been 16470completed. The result is 1) cleaner and more 16471understandable/maintainable code, and 2) a significant reduction 16472in the dynamic memory requirement for each named ACPI object 16473(almost half). 16474 16475------------------------------------------- 16476Summary of changes for this label: 06_23_00 16477 16478Linux support has been added. In order to obtain approval to get 16479the ACPI CA subsystem into the Linux kernel, we've had to make 16480quite a few changes to the base subsystem that will affect all 16481users (all the changes are generic and OS- independent). The 16482effects of these global changes have been somewhat far reaching. 16483Files have been merged and/or renamed and interfaces have been 16484renamed. The major changes are described below. 16485 16486Osd* interfaces renamed to AcpiOs* to eliminate namespace 16487pollution/confusion within our target kernels. All OSD 16488interfaces must be modified to match the new naming convention. 16489 16490Files merged across the subsystem. A number of the smaller source 16491and header files have been merged to reduce the file count and 16492increase the density of the existing files. There are too many 16493to list here. In general, makefiles that call out individual 16494files will require rebuilding. 16495 16496Interpreter files renamed. All interpreter files now have the 16497prefix am* instead of ie* and is*. 16498 16499Header files renamed: The acapi.h file is now acpixf.h. The 16500acpiosd.h file is now acpiosxf.h. We are removing references to 16501the acronym "API" since it is somewhat windowsy. The new name is 16502"external interface" or xface or xf in the filenames.j 16503 16504 16505All manifest constants have been forced to upper case (some were 16506mixed case.) Also, the string "ACPI_" has been prepended to many 16507(not all) of the constants, typedefs, and structs. 16508 16509The globals "DebugLevel" and "DebugLayer" have been renamed 16510"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 16511 16512All other globals within the subsystem are now prefixed with 16513"AcpiGbl_" Internal procedures within the subsystem are now 16514prefixed with "Acpi" (with only a few exceptions). The original 16515two-letter abbreviation for the subcomponent remains after "Acpi" 16516- for example, CmCallocate became AcpiCmCallocate. 16517 16518Added a source code translation/conversion utility. Used to 16519generate the Linux source code, it can be modified to generate 16520other types of source as well. Can also be used to cleanup 16521existing source by removing extraneous spaces and blank lines. 16522Found in tools/acpisrc/* 16523 16524OsdUnMapMemory was renamed to OsdUnmapMemory and then 16525AcpiOsUnmapMemory. (UnMap became Unmap). 16526 16527A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 16528When set to one, this indicates that the caller wants to use the 16529 16530semaphore as a mutex, not a counting semaphore. ACPI CA uses 16531both types. However, implementers of this call may want to use 16532different OS primitives depending on the type of semaphore 16533requested. For example, some operating systems provide separate 16534 16535"mutex" and "semaphore" interfaces - where the mutex interface is 16536much faster because it doesn't have all the overhead of a full 16537semaphore implementation. 16538 16539Fixed a deadlock problem where a method that accesses the PCI 16540address space can block forever if it is the first access to the 16541space. 16542 16543------------------------------------------- 16544Summary of changes for this label: 06_02_00 16545 16546Support for environments that cannot handle unaligned data 16547accesses (e.g. firmware and OS environments devoid of alignment 16548handler technology namely SAL/EFI and the IA-64 Linux kernel) has 16549been added (via configurable macros) in these three areas: - 16550Transfer of data from the raw AML byte stream is done via byte 16551moves instead of word/dword/qword moves. - External objects are 16552aligned within the user buffer, including package elements (sub- 16553objects). - Conversion of name strings to UINT32 Acpi Names is now 16554done byte-wise. 16555 16556The Store operator was modified to mimic Microsoft's 16557implementation when storing to a Buffer Field. 16558 16559Added a check of the BM_STS bit before entering C3. 16560 16561The methods subdirectory has been obsoleted and removed. A new 16562file, cmeval.c subsumes the functionality. 16563 16564A 16-bit (DOS) version of AcpiExec has been developed. The 16565makefile is under the acpiexec directory. 16566