changes.txt revision 285830
1---------------------------------------- 208 April 2015. Summary of changes for version 20150515: 3 4This release implements most of ACPI 6.0 as described below. 5 61) ACPICA kernel-resident subsystem: 7 8Implemented runtime argument checking and return value checking for all 9new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 10_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 11 12Example Code and Data Size: These are the sizes for the OS-independent 13acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 14debug version of the code includes the debug output trace mechanism and 15has a much larger code and data size. 16 17 Current Release: 18 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 19 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 20 Previous Release: 21 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 22 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 23 24 252) iASL Compiler/Disassembler and Tools: 26 27iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 28names (argument count validation and return value typechecking.) 29 30iASL disassembler and table compiler: implemented support for all new 31ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 32 33iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 34tables: FADT, MADT. 35 36iASL preprocessor: Added a new directive to enable inclusion of binary 37blobs into ASL code. The new directive is #includebinary. It takes a 38binary file as input and emits a named ascii buffer object into the ASL 39code. 40 41AcpiHelp: Added support for all new ACPI 6.0 predefined names. 42 43AcpiHelp: Added a new option, -d, to display all iASL preprocessor 44directives. 45 46AcpiHelp: Added a new option, -t, to display all known/supported ACPI 47tables. 48 49---------------------------------------- 5010 April 2015. Summary of changes for version 20150410: 51 52Reverted a change introduced in version 20150408 that caused 53a regression in the disassembler where incorrect operator 54symbols could be emitted. 55 56---------------------------------------- 5708 April 2015. Summary of changes for version 20150408: 58 59 601) ACPICA kernel-resident subsystem: 61 62Permanently set the return value for the _REV predefined name. It now 63returns 2 (was 5). This matches other ACPI implementations. _REV will be 64deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 65for ACPI 2.0 and later. It should never be used to differentiate or 66identify operating systems. 67 68Added the "Windows 2015" string to the _OSI support. ACPICA will now 69return TRUE to a query with this string. 70 71Fixed several issues with the local version of the printf function. 72 73Added the C99 compiler option (-std=c99) to the Unix makefiles. 74 75 Current Release: 76 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 77 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 78 Previous Release: 79 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 80 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 81 82 832) iASL Compiler/Disassembler and Tools: 84 85iASL: Implemented an enhancement to the constant folding feature to 86transform the parse tree to a simple Store operation whenever possible: 87 Add (2, 3, X) ==> is converted to: Store (5, X) 88 X = 2 + 3 ==> is converted to: Store (5, X) 89 90Updated support for the SLIC table (Software Licensing Description Table) 91in both the Data Table compiler and the disassembler. The SLIC table 92support now conforms to "Microsoft Software Licensing Tables (SLIC and 93MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 94following the ACPI header is now defined to be "Proprietary Data", and as 95such, can only be entered or displayed as a hex data block. 96 97Implemented full support for the MSDM table as described in the document 98above. Note: The format of MSDM is similar to SLIC. Any MSDM data 99following the ACPI header is defined to be "Proprietary Data", and can 100only be entered or displayed as a hex data block. 101 102Implemented the -Pn option for the iASL Table Compiler (was only 103implemented for the ASL compiler). This option disables the iASL 104preprocessor. 105 106Disassembler: For disassembly of Data Tables, added a comment field 107around the Ascii equivalent data that is emitted as part of the "Raw 108Table Data" block. This prevents the iASL Preprocessor from possible 109confusion if/when the table is compiled. 110 111Disassembler: Added an option (-df) to force the disassembler to assume 112that the table being disassembled contains valid AML. This feature is 113useful for disassembling AML files that contain ACPI signatures other 114than DSDT or SSDT (such as OEMx or other signatures). 115 116Changes for the EFI version of the tools: 1171) Fixed a build error/issue 1182) Fixed a cast warning 119 120iASL: Fixed a path issue with the __FILE__ operator by making the 121directory prefix optional within the internal SplitInputFilename 122function. 123 124Debugger: Removed some unused global variables. 125 126Tests: Updated the makefile for proper generation of the AAPITS suite. 127 128---------------------------------------- 12904 February 2015. Summary of changes for version 20150204: 130 131ACPICA kernel-resident subsystem: 132 133Updated all ACPICA copyrights and signons to 2014. Added the 2014 134copyright to all module headers and signons, including the standard Linux 135header. This affects virtually every file in the ACPICA core subsystem, 136iASL compiler, all ACPICA utilities, and the test suites. 137 138Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 139A raw gpe handling mechanism was created to allow better handling of GPE 140storms that aren't easily managed by the normal handler. The raw handler 141allows disabling/renabling of the the GPE so that interrupt storms can be 142avoided in cases where events cannot be timely serviced. In this 143scenario, handlers should use the AcpiSetGpe() API to disable/enable the 144GPE. This API will leave the reference counts undisturbed, thereby 145preventing unintentional clearing of the GPE when the intent in only to 146temporarily disable it. Raw handlers allow enabling and disabling of a 147GPE by removing GPE register locking. As such, raw handlers much provide 148their own locks while using GPE API's to protect access to GPE data 149structures. 150Lv Zheng 151 152Events: Always modify GPE registers under the GPE lock. 153Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 154values. Reported as bug by joe.liu@apple.com. 155 156Unix makefiles: Separate option to disable optimizations and 157_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 158NOOPT disable option and creates a separate flag (NOFORTIFY) for this 159purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 160errors when building ACPICA. This allows disabling the option without 161also having to disable optimazations. 162David Box 163 164 Current Release: 165 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 166 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 167 168---------------------------------------- 16907 November 2014. Summary of changes for version 20141107: 170 171This release is available at https://acpica.org/downloads 172 173This release introduces and implements language extensions to ASL that 174provide support for symbolic ("C-style") operators and expressions. These 175language extensions are known collectively as ASL+. 176 177 1781) iASL Compiler/Disassembler and Tools: 179 180Disassembler: Fixed a problem with disassembly of the UartSerialBus 181macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 182Box. 183 184Disassembler: Fixed the Unicode macro support to add escape sequences. 185All non-printable ASCII values are emitted as escape sequences, as well 186as the standard escapes for quote and backslash. Ensures that the 187disassembled macro can be correctly recompiled. 188 189iASL: Added Printf/Fprintf macros for formatted output. These macros are 190translated to existing AML Concatenate and Store operations. Printf 191writes to the ASL Debug object. Fprintf allows the specification of an 192ASL name as the target. Only a single format specifier is required, %o, 193since the AML interpreter dynamically converts objects to the required 194type. David E. Box. 195 196 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 197 (Concatenate (Concatenate (Concatenate ("", Arg0), 198 ": Unexpected value for "), Arg1), ", "), Arg2), 199 " at line "), Arg3), Debug) 200 201 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 202 Arg0, Arg1, Arg2, Arg3) 203 204 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 205 ("", Arg1), ": "), Arg0), " Successful"), STR1) 206 207 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 208 209iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 210ASL parse tree before the AML code is generated. This allows blocks of 211ASL code to be removed in order to help locate and identify problem 212devices and/or code. David E. Box. 213 214AcpiExec: Added support (-fi) for an optional namespace object 215initialization file. This file specifies initial values for namespace 216objects as necessary for debugging and testing different ASL code paths 217that may be taken as a result of BIOS options. 218 219 2202) Overview of symbolic operator support for ASL (ASL+) 221------------------------------------------------------- 222 223As an extension to the ASL language, iASL implements support for symbolic 224(C-style) operators for math and logical expressions. This can greatly 225simplify ASL code as well as improve both readability and 226maintainability. These language extensions can exist concurrently with 227all legacy ASL code and expressions. 228 229The symbolic extensions are 100% compatible with existing AML 230interpreters, since no new AML opcodes are created. To implement the 231extensions, the iASL compiler transforms the symbolic expressions into 232the legacy ASL/AML equivalents at compile time. 233 234Full symbolic expressions are supported, along with the standard C 235precedence and associativity rules. 236 237Full disassembler support for the symbolic expressions is provided, and 238creates an automatic migration path for existing ASL code to ASL+ code 239via the disassembly process. By default, the disassembler now emits ASL+ 240code with symbolic expressions. An option (-dl) is provided to force the 241disassembler to emit legacy ASL code if desired. 242 243Below is the complete list of the currently supported symbolic operators 244with examples. See the iASL User Guide for additional information. 245 246 247ASL+ Syntax Legacy ASL Equivalent 248----------- --------------------- 249 250 // Math operators 251 252Z = X + Y Add (X, Y, Z) 253Z = X - Y Subtract (X, Y, Z) 254Z = X * Y Multiply (X, Y, Z) 255Z = X / Y Divide (X, Y, , Z) 256Z = X % Y Mod (X, Y, Z) 257Z = X << Y ShiftLeft (X, Y, Z) 258Z = X >> Y ShiftRight (X, Y, Z) 259Z = X & Y And (X, Y, Z) 260Z = X | Y Or (X, Y, Z) 261Z = X ^ Y Xor (X, Y, Z) 262Z = ~X Not (X, Z) 263X++ Increment (X) 264X-- Decrement (X) 265 266 // Logical operators 267 268(X == Y) LEqual (X, Y) 269(X != Y) LNotEqual (X, Y) 270(X < Y) LLess (X, Y) 271(X > Y) LGreater (X, Y) 272(X <= Y) LLessEqual (X, Y) 273(X >= Y) LGreaterEqual (X, Y) 274(X && Y) LAnd (X, Y) 275(X || Y) LOr (X, Y) 276(!X) LNot (X) 277 278 // Assignment and compound assignment operations 279 280X = Y Store (Y, X) 281X += Y Add (X, Y, X) 282X -= Y Subtract (X, Y, X) 283X *= Y Multiply (X, Y, X) 284X /= Y Divide (X, Y, , X) 285X %= Y Mod (X, Y, X) 286X <<= Y ShiftLeft (X, Y, X) 287X >>= Y ShiftRight (X, Y, X) 288X &= Y And (X, Y, X) 289X |= Y Or (X, Y, X) 290X ^= Y Xor (X, Y, X) 291 292 2933) ASL+ Examples: 294----------------- 295 296Legacy ASL: 297 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 298 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 2990x03FB), 300 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 301 { 302 And (MEMB, 0xFFFFFFF0, SRMB) 303 Store (MEMB, Local2) 304 Store (PDBM, Local1) 305 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 306 Store (SRMB, MEMB) 307 Or (PDBM, 0x02, PDBM) 308 } 309 310ASL+ version: 311 If (((R510 & 0x03FB) == 0x02E0) || 312 ((R520 & 0x03FB) == 0x02E0) || 313 ((R530 & 0x03FB) == 0x02E0) || 314 ((R540 & 0x03FB) == 0x02E0)) 315 { 316 SRMB = (MEMB & 0xFFFFFFF0) 317 Local2 = MEMB 318 Local1 = PDBM 319 PDBM &= 0xFFFFFFFFFFFFFFF9 320 MEMB = SRMB 321 PDBM |= 0x02 322 } 323 324Legacy ASL: 325 Store (0x1234, Local1) 326 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 327 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 328 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 329 Store (Index (PKG1, 0x03), Local6) 330 Store (Add (Local3, Local2), Debug) 331 Add (Local1, 0x0F, Local2) 332 Add (Local1, Multiply (Local2, Local3), Local2) 333 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 334 335ASL+ version: 336 Local1 = 0x1234 337 Local3 = (((Local1 + TEST) + 0x20) * Local2) 338 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 339 Local3 = (Local1 + (TEST + (0x20 * Local2))) 340 Local6 = Index (PKG1, 0x03) 341 Debug = (Local3 + Local2) 342 Local2 = (Local1 + 0x0F) 343 Local2 = (Local1 + (Local2 * Local3)) 344 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 345 346 347---------------------------------------- 34826 September 2014. Summary of changes for version 20140926: 349 3501) ACPICA kernel-resident subsystem: 351 352Updated the GPIO operation region handler interface (GeneralPurposeIo). 353In order to support GPIO Connection objects with multiple pins, along 354with the related Field objects, the following changes to the interface 355have been made: The Address is now defined to be the offset in bits of 356the field unit from the previous invocation of a Connection. It can be 357viewed as a "Pin Number Index" into the connection resource descriptor. 358The BitWidth is the exact bit width of the field. It is usually one bit, 359but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 360additional information and examples. 361 362GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 363corresponding _Lxx/_Exx methods are disabled (they may have been enabled 364by the firmware), so that they cannot fire until they are enabled via 365AcpiUpdateAllGpes. Rafael J. Wysocki. 366 367Added a new return flag for the Event/GPE status interfaces -- 368AcpiGetEventStatus and AcpiGetGpeStatus. The new 369ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 370GPE currently has a handler associated with it, and can thus actually 371affect the system. Lv Zheng. 372 373Example Code and Data Size: These are the sizes for the OS-independent 374acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 375debug version of the code includes the debug output trace mechanism and 376has a much larger code and data size. 377 378 Current Release: 379 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 380 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 381 Previous Release: 382 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 383 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 384 3852) iASL Compiler/Disassembler and Tools: 386 387iASL: Fixed a memory allocation/free regression introduced in 20140828 388that could cause the compiler to crash. This was introduced inadvertently 389during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 3901113. 391 392iASL: Removed two error messages that have been found to create false 393positives, until they can be fixed and fully validated (ACPICA BZ 1112): 3941) Illegal forward reference within a method 3952) Illegal reference across two methods 396 397iASL: Implemented a new option (-lm) to create a hardware mapping file 398that summarizes all GPIO, I2C, SPI, and UART connections. This option 399works for both the compiler and disassembler. See the iASL compiler user 400guide for additional information and examples (section 6.4.6). 401 402AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 403version 2. This corrects the AE_BAD_HEADER exception seen on systems with 404a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 405 406AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 407unless STDIN is actually a terminal. Assists with batch-mode processing. 408ACPICA BZ 1114. 409 410Disassembler/AcpiHelp: Added another large group of recognized _HID 411values. 412 413 414---------------------------------------- 41528 August 2014. Summary of changes for version 20140828: 416 4171) ACPICA kernel-resident subsystem: 418 419Fixed a problem related to the internal use of the Timer() operator where 420a 64-bit divide could cause an attempted link to a double-precision math 421library. This divide is not actually necessary, so the code was 422restructured to eliminate it. Lv Zheng. 423 424ACPI 5.1: Added support for the runtime validation of the _DSD package 425(similar to the iASL support). 426 427ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 428SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 429 430Example Code and Data Size: These are the sizes for the OS-independent 431acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 432debug version of the code includes the debug output trace mechanism and 433has a much larger code and data size. 434 435 Current Release: 436 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 437 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 438 Previous Release: 439 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 440 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 441 4422) iASL Compiler/Disassembler and Tools: 443 444AcpiExec: Fixed a problem on unix systems where the original terminal 445state was not always properly restored upon exit. Seen when using the -v 446option. ACPICA BZ 1104. 447 448iASL: Fixed a problem with the validation of the ranges/length within the 449Memory24 resource descriptor. There was a boundary condition when the 450range was equal to the (length -1) caused by the fact that these values 451are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 452 453Disassembler: Fixed a problem with the GpioInt descriptor interrupt 454polarity 455flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 456is 457now supported properly. 458 459ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 460in the disassembler, data table compiler, and table template generator. 461 462iASL: Added a requirement for Device() objects that one of either a _HID 463or _ADR must exist within the scope of a Device, as per the ACPI 464specification. Remove a similar requirement that was incorrectly in place 465for the _DSD object. 466 467iASL: Added error detection for illegal named references within control 468methods that would cause runtime failures. Now trapped as errors are: 1) 469References to objects within a non-parent control method. 2) Forward 470references (within a method) -- for control methods, AML interpreters use 471a one-pass parse of control methods. ACPICA BZ 1008. 472 473iASL: Added error checking for dependencies related to the _PSx power 474methods. ACPICA BZ 1029. 4751) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 476_PS3. 4772) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 478scope. 479 480iASL and table compiler: Cleanup miscellaneous memory leaks by fully 481deploying the existing object and string caches and adding new caches for 482the table compiler. 483 484iASL: Split the huge parser source file into multiple subfiles to improve 485manageability. Generation now requires the M4 macro preprocessor, which 486is part of the Bison distribution on both unix and windows platforms. 487 488AcpiSrc: Fixed and removed all extraneous warnings generated during 489entire ACPICA source code scan and/or conversion. 490 491 492---------------------------------------- 493 49424 July 2014. Summary of changes for version 20140724: 495 496The ACPI 5.1 specification has been released and is available at: 497http://uefi.org/specs/access 498 499 5000) ACPI 5.1 support in ACPICA: 501 502ACPI 5.1 is fully supported in ACPICA as of this release. 503 504New predefined names. Support includes iASL and runtime ACPICA 505validation. 506 _CCA (Cache Coherency Attribute). 507 _DSD (Device-Specific Data). David Box. 508 509Modifications to existing ACPI tables. Support includes headers, iASL 510Data Table compiler, disassembler, and the template generator. 511 FADT - New fields and flags. Graeme Gregory. 512 GTDT - One new subtable and new fields. Tomasz Nowicki. 513 MADT - Two new subtables. Tomasz Nowicki. 514 PCCT - One new subtable. 515 516Miscellaneous. 517 New notification type for System Resource Affinity change events. 518 519 5201) ACPICA kernel-resident subsystem: 521 522Fixed a regression introduced in 20140627 where a fault can happen during 523the deletion of Alias AML namespace objects. The problem affected both 524the core ACPICA and the ACPICA tools including iASL and AcpiExec. 525 526Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 527simple mechanism to enable wake GPEs that have no associated handler or 528control method. Rafael Wysocki. 529 530Updated the AcpiEnableGpe interface to disallow the enable if there is no 531handler or control method associated with the particular GPE. This will 532help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 533 534Updated GPE handling and dispatch by disabling the GPE before clearing 535the status bit for edge-triggered GPEs. Lv Zheng. 536 537Added Timer() support to the AML Debug object. The current timer value is 538now displayed with each invocation of (Store to) the debug object to 539enable simple generation of execution times for AML code (method 540execution for example.) ACPICA BZ 1093. 541 542Example Code and Data Size: These are the sizes for the OS-independent 543acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 544debug version of the code includes the debug output trace mechanism and 545has a much larger code and data size. 546 547 Current Release: 548 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 549 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 550 Previous Release: 551 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 552 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 553 554 5552) iASL Compiler/Disassembler and Tools: 556 557Fixed an issue with the recently added local printf implementation, 558concerning width/precision specifiers that could cause incorrect output. 559Lv Zheng. ACPICA BZ 1094. 560 561Disassembler: Added support to detect buffers that contain UUIDs and 562disassemble them to an invocation of the ToUUID operator. Also emit 563commented descriptions of known ACPI-related UUIDs. 564 565AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 566-u. Adds three new files. 567 568iASL: Update table compiler and disassembler for DMAR table changes that 569were introduced in September 2013. With assistance by David Woodhouse. 570 571---------------------------------------- 57227 June 2014. Summary of changes for version 20140627: 573 5741) ACPICA kernel-resident subsystem: 575 576Formatted Output: Implemented local versions of standard formatted output 577utilities such as printf, etc. Over time, it has been discovered that 578there are in fact many portability issues with printf, and the addition 579of this feature will fix/prevent these issues once and for all. Some 580known issues are summarized below: 581 5821) Output of 64-bit values is not portable. For example, UINT64 is %ull 583for the Linux kernel and is %uI64 for some MSVC versions. 5842) Invoking printf consistently in a manner that is portable across both 58532-bit and 64-bit platforms is difficult at best in many situations. 5863) The output format for pointers varies from system to system (leading 587zeros especially), and leads to inconsistent output from ACPICA across 588platforms. 5894) Certain platform-specific printf formats may conflict with ACPICA use. 5905) If there is no local C library available, ACPICA now has local support 591for printf. 592 593-- To address these printf issues in a complete manner, ACPICA now 594directly implements a small subset of printf format specifiers, only 595those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 596 597Implemented support for ACPICA generation within the EFI environment. 598Initially, the AcpiDump utility is supported in the UEFI shell 599environment. Lv Zheng. 600 601Added a new external interface, AcpiLogError, to improve ACPICA 602portability. This allows the host to redirect error messages from the 603ACPICA utilities. Lv Zheng. 604 605Added and deployed new OSL file I/O interfaces to improve ACPICA 606portability: 607 AcpiOsOpenFile 608 AcpiOsCloseFile 609 AcpiOsReadFile 610 AcpiOsWriteFile 611 AcpiOsGetFileOffset 612 AcpiOsSetFileOffset 613There are C library implementations of these functions in the new file 614service_layers/oslibcfs.c -- however, the functions can be implemented by 615the local host in any way necessary. Lv Zheng. 616 617Implemented a mechanism to disable/enable ACPI table checksum validation 618at runtime. This can be useful when loading tables very early during OS 619initialization when it may not be possible to map the entire table in 620order to compute the checksum. Lv Zheng. 621 622Fixed a buffer allocation issue for the Generic Serial Bus support. 623Originally, a fixed buffer length was used. This change allows for 624variable-length buffers based upon the protocol indicated by the field 625access attributes. Reported by Lan Tianyu. Lv Zheng. 626 627Fixed a problem where an object detached from a namespace node was not 628properly terminated/cleared and could cause a circular list problem if 629reattached. ACPICA BZ 1063. David Box. 630 631Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 632 633Fixed a possible memory leak in an error return path within the function 634AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 635 636Example Code and Data Size: These are the sizes for the OS-independent 637acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 638debug version of the code includes the debug output trace mechanism and 639has a much larger code and data size. 640 641 Current Release: 642 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 643 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 644 Previous Release: 645 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 646 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 647 648 6492) iASL Compiler/Disassembler and Tools: 650 651Disassembler: Add dump of ASCII equivalent text within a comment at the 652end of each line of the output for the Buffer() ASL operator. 653 654AcpiDump: Miscellaneous changes: 655 Fixed repetitive table dump in -n mode. 656 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 657the ACPI 2.0 GUID fails. 658 659iASL: Fixed a problem where the compiler could fault if incorrectly given 660an acpidump output file as input. ACPICA BZ 1088. David Box. 661 662AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 663they are invoked without any arguments. 664 665Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 6661086. Colin Ian King. 667 668Disassembler: Cleaned up a block of code that extracts a parent Op 669object. Added a comment that explains that the parent is guaranteed to be 670valid in this case. ACPICA BZ 1069. 671 672---------------------------------------- 67324 April 2014. Summary of changes for version 20140424: 674 6751) ACPICA kernel-resident subsystem: 676 677Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 678Some of these tables are known to contain a trailing NULL entry. Lv 679Zheng. 680 681Removed an extraneous error message for the case where there are a large 682number of system GPEs (> 124). This was the "32-bit FADT register is too 683long to convert to GAS struct" message, which is irrelevant for GPEs 684since the GPEx_BLK_LEN fields of the FADT are always used instead of the 685(limited capacity) GAS bit length. Also, several changes to ensure proper 686support for GPE numbers > 255, where some "GPE number" fields were 8-bits 687internally. 688 689Implemented and deployed additional configuration support for the public 690ACPICA external interfaces. Entire classes of interfaces can now be 691easily modified or configured out, replaced by stubbed inline functions 692by default. Lv Zheng. 693 694Moved all public ACPICA runtime configuration globals to the public 695ACPICA external interface file for convenience. Also, removed some 696obsolete/unused globals. See the file acpixf.h. Lv Zheng. 697 698Documentation: Added a new section to the ACPICA reference describing the 699maximum number of GPEs that can be supported by the FADT-defined GPEs in 700block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 701reference. 702 703Example Code and Data Size: These are the sizes for the OS-independent 704acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 705debug version of the code includes the debug output trace mechanism and 706has a much larger code and data size. 707 708 Current Release: 709 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 710 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 711 Previous Release: 712 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 713 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 714 715 7162) iASL Compiler/Disassembler and Tools: 717 718iASL and disassembler: Add full support for the LPIT table (Low Power 719Idle Table). Includes support in the disassembler, data table compiler, 720and template generator. 721 722AcpiDump utility: 7231) Add option to force the use of the RSDT (over the XSDT). 7242) Improve validation of the RSDP signature (use 8 chars instead of 4). 725 726iASL: Add check for predefined packages that are too large. For 727predefined names that contain subpackages, check if each subpackage is 728too large. (Check for too small already exists.) 729 730Debugger: Updated the GPE command (which simulates a GPE by executing the 731GPE code paths in ACPICA). The GPE device is now optional, and defaults 732to the GPE 0/1 FADT-defined blocks. 733 734Unix application OSL: Update line-editing support. Add additional error 735checking and take care not to reset terminal attributes on exit if they 736were never set. This should help guarantee that the terminal is always 737left in the previous state on program exit. 738 739---------------------------------------- 74025 March 2014. Summary of changes for version 20140325: 741 7421) ACPICA kernel-resident subsystem: 743 744Updated the auto-serialize feature for control methods. This feature 745automatically serializes all methods that create named objects in order 746to prevent runtime errors. The update adds support to ignore the 747currently executing AML SyncLevel when invoking such a method, in order 748to prevent disruption of any existing SyncLevel priorities that may exist 749in the AML code. Although the use of SyncLevels is relatively rare, this 750change fixes a regression where an AE_AML_MUTEX_ORDER exception can 751appear on some machines starting with the 20140214 release. 752 753Added a new external interface to allow the host to install ACPI tables 754very early, before the namespace is even created. AcpiInstallTable gives 755the host additional flexibility for ACPI table management. Tables can be 756installed directly by the host as if they had originally appeared in the 757XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 758(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 759with additional internal restructuring and cleanup. See the ACPICA 760Reference for interface details. Lv Zheng. 761 762Added validation of the checksum for all incoming dynamically loaded 763tables (via external interfaces or via AML Load/LoadTable operators). Lv 764Zheng. 765 766Updated the use of the AcpiOsWaitEventsComplete interface during Notify 767and GPE handler removal. Restructured calls to eliminate possible race 768conditions. Lv Zheng. 769 770Added a warning for the use/execution of the ASL/AML Unload (table) 771operator. This will help detect and identify machines that use this 772operator if and when it is ever used. This operator has never been seen 773in the field and the usage model and possible side-effects of the drastic 774runtime action of a full table removal are unknown. 775 776Reverted the use of #pragma push/pop which was introduced in the 20140214 777release. It appears that push and pop are not implemented by enough 778compilers to make the use of this feature feasible for ACPICA at this 779time. However, these operators may be deployed in a future ACPICA 780release. 781 782Added the missing EXPORT_SYMBOL macros for the install and remove SCI 783handler interfaces. 784 785Source code generation: 7861) Disabled the use of the "strchr" macro for the gcc-specific 787generation. For some versions of gcc, this macro can periodically expose 788a compiler bug which in turn causes compile-time error(s). 7892) Added support for PPC64 compilation. Colin Ian King. 790 791Example Code and Data Size: These are the sizes for the OS-independent 792acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 793debug version of the code includes the debug output trace mechanism and 794has a much larger code and data size. 795 796 Current Release: 797 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 798 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 799 Previous Release: 800 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 801 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 802 803 8042) iASL Compiler/Disassembler and Tools: 805 806Disassembler: Added several new features to improve the readability of 807the resulting ASL code. Extra information is emitted within comment 808fields in the ASL code: 8091) Known _HID/_CID values are decoded to descriptive text. 8102) Standard values for the Notify() operator are decoded to descriptive 811text. 8123) Target operands are expanded to full pathnames (in a comment) when 813possible. 814 815Disassembler: Miscellaneous updates for extern() handling: 8161) Abort compiler if file specified by -fe option does not exist. 8172) Silence unnecessary warnings about argument count mismatches. 8183) Update warning messages concerning unresolved method externals. 8194) Emit "UnknownObj" keyword for externals whose type cannot be 820determined. 821 822AcpiHelp utility: 8231) Added the -a option to display both the ASL syntax and the AML 824encoding for an input ASL operator. This effectively displays all known 825information about an ASL operator with one AcpiHelp invocation. 8262) Added substring match support (similar to a wildcard) for the -i 827(_HID/PNP IDs) option. 828 829iASL/Disassembler: Since this tool does not yet support execution on big- 830endian machines, added detection of endianness and an error message if 831execution is attempted on big-endian. Support for big-endian within iASL 832is a feature that is on the ACPICA to-be-done list. 833 834AcpiBin utility: 8351) Remove option to extract binary files from an acpidump; this function 836is made obsolete by the AcpiXtract utility. 8372) General cleanup of open files and allocated buffers. 838 839---------------------------------------- 84014 February 2014. Summary of changes for version 20140214: 841 8421) ACPICA kernel-resident subsystem: 843 844Implemented a new mechanism to proactively prevent problems with ill- 845behaved reentrant control methods that create named ACPI objects. This 846behavior is illegal as per the ACPI specification, but is nonetheless 847frequently seen in the field. Previously, this could lead to an 848AE_ALREADY_EXISTS exception if the method was actually entered by more 849than one thread. This new mechanism detects such methods at table load 850time and marks them "serialized" to prevent reentrancy. A new global 851option, AcpiGbl_AutoSerializeMethods, has been added to disable this 852feature if desired. This mechanism and global option obsoletes and 853supersedes the previous AcpiGbl_SerializeAllMethods option. 854 855Added the "Windows 2013" string to the _OSI support. ACPICA will now 856respond TRUE to _OSI queries with this string. It is the stated policy of 857ACPICA to add new strings to the _OSI support as soon as possible after 858they are defined. See the full ACPICA _OSI policy which has been added to 859the utilities/utosi.c file. 860 861Hardened/updated the _PRT return value auto-repair code: 8621) Do not abort the repair on a single subpackage failure, continue to 863check all subpackages. 8642) Add check for the minimum subpackage length (4). 8653) Properly handle extraneous NULL package elements. 866 867Added support to avoid the possibility of infinite loops when traversing 868object linked lists. Never allow an infinite loop, even in the face of 869corrupted object lists. 870 871ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 872pack(pop) directives to ensure that the ACPICA headers are independent of 873compiler settings or other host headers. 874 875Example Code and Data Size: These are the sizes for the OS-independent 876acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 877debug version of the code includes the debug output trace mechanism and 878has a much larger code and data size. 879 880 Current Release: 881 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 882 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 883 Previous Release: 884 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 885 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 886 887 8882) iASL Compiler/Disassembler and Tools: 889 890iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 891first reserved field was incorrectly forced to have a value of zero. This 892change correctly forces the field to have a value of one. ACPICA BZ 1081. 893 894Debugger: Added missing support for the "Extra" and "Data" subobjects 895when displaying object data. 896 897Debugger: Added support to display entire object linked lists when 898displaying object data. 899 900iASL: Removed the obsolete -g option to obtain ACPI tables from the 901Windows registry. This feature has been superseded by the acpidump 902utility. 903 904---------------------------------------- 90514 January 2014. Summary of changes for version 20140114: 906 9071) ACPICA kernel-resident subsystem: 908 909Updated all ACPICA copyrights and signons to 2014. Added the 2014 910copyright to all module headers and signons, including the standard Linux 911header. This affects virtually every file in the ACPICA core subsystem, 912iASL compiler, all ACPICA utilities, and the test suites. 913 914Improved parameter validation for AcpiInstallGpeBlock. Added the 915following checks: 9161) The incoming device handle refers to type ACPI_TYPE_DEVICE. 9172) There is not already a GPE block attached to the device. 918Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 919device. 920 921Correctly support "references" in the ACPI_OBJECT. This change fixes the 922support to allow references (namespace nodes) to be passed as arguments 923to control methods via the evaluate object interface. This is probably 924most useful for testing purposes, however. 925 926Improved support for 32/64 bit physical addresses in printf()-like 927output. This change improves the support for physical addresses in printf 928debug statements and other output on both 32-bit and 64-bit hosts. It 929consistently outputs the appropriate number of bytes for each host. The 930%p specifier is unsatisfactory since it does not emit uniform output on 931all hosts/clib implementations (on some, leading zeros are not supported, 932leading to difficult-to-read output). 933 934Example Code and Data Size: These are the sizes for the OS-independent 935acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 936debug version of the code includes the debug output trace mechanism and 937has a much larger code and data size. 938 939 Current Release: 940 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 941 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 942 Previous Release: 943 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 944 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 945 946 9472) iASL Compiler/Disassembler and Tools: 948 949iASL: Fix a possible fault when using the Connection() operator. Fixes a 950problem if the parent Field definition for the Connection operator refers 951to an operation region that does not exist. ACPICA BZ 1064. 952 953AcpiExec: Load of local test tables is now optional. The utility has the 954capability to load some various tables to test features of ACPICA. 955However, there are enough of them that the output of the utility became 956confusing. With this change, only the required local tables are displayed 957(RSDP, XSDT, etc.) along with the actual tables loaded via the command 958line specification. This makes the default output simler and easier to 959understand. The -el command line option restores the original behavior 960for testing purposes. 961 962AcpiExec: Added support for overlapping operation regions. This change 963expands the simulation of operation regions by supporting regions that 964overlap within the given address space. Supports SystemMemory and 965SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 966 967AcpiExec: Added region handler support for PCI_Config and EC spaces. This 968allows AcpiExec to simulate these address spaces, similar to the current 969support for SystemMemory and SystemIO. 970 971Debugger: Added new command to read/write/compare all namespace objects. 972The command "test objects" will exercise the entire namespace by writing 973new values to each data object, and ensuring that the write was 974successful. The original value is then restored and verified. 975 976Debugger: Added the "test predefined" command. This change makes this 977test public and puts it under the new "test" command. The test executes 978each and every predefined name within the current namespace. 979 980---------------------------------------- 98118 December 2013. Summary of changes for version 20131218: 982 983Global note: The ACPI 5.0A specification was released this month. There 984are no changes needed for ACPICA since this release of ACPI is an 985errata/clarification release. The specification is available at 986acpi.info. 987 988 9891) ACPICA kernel-resident subsystem: 990 991Added validation of the XSDT root table if it is present. Some older 992platforms contain an XSDT that is ill-formed or otherwise invalid (such 993as containing some or all entries that are NULL pointers). This change 994adds a new function to validate the XSDT before actually using it. If the 995XSDT is found to be invalid, ACPICA will now automatically fall back to 996using the RSDT instead. Original implementation by Zhao Yakui. Ported to 997ACPICA and enhanced by Lv Zheng and Bob Moore. 998 999Added a runtime option to ignore the XSDT and force the use of the RSDT. 1000This change adds a runtime option that will force ACPICA to use the RSDT 1001instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1002requires that an XSDT be used instead of the RSDT, the XSDT has been 1003found to be corrupt or ill-formed on some machines. Lv Zheng. 1004 1005Added a runtime option to favor 32-bit FADT register addresses over the 100664-bit addresses. This change adds an option to favor 32-bit FADT 1007addresses when there is a conflict between the 32-bit and 64-bit versions 1008of the same register. The default behavior is to use the 64-bit version 1009in accordance with the ACPI specification. This can now be overridden via 1010the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1011 1012During the change above, the internal "Convert FADT" and "Verify FADT" 1013functions have been merged to simplify the code, making it easier to 1014understand and maintain. ACPICA BZ 933. 1015 1016Improve exception reporting and handling for GPE block installation. 1017Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1018status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1019 1020Added helper macros to extract bus/segment numbers from the HEST table. 1021This change adds two macros to extract the encoded bus and segment 1022numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1023Betty Dall <betty.dall@hp.com> 1024 1025Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1026by ACPICA. It is not a public macro, so it should have no effect on 1027existing OSV code. Lv Zheng. 1028 1029Example Code and Data Size: These are the sizes for the OS-independent 1030acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1031debug version of the code includes the debug output trace mechanism and 1032has a much larger code and data size. 1033 1034 Current Release: 1035 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1036 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1037 Previous Release: 1038 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1039 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1040 1041 10422) iASL Compiler/Disassembler and Tools: 1043 1044Disassembler: Improved pathname support for emitted External() 1045statements. This change adds full pathname support for external names 1046that have been resolved internally by the inclusion of additional ACPI 1047tables (via the iASL -e option). Without this change, the disassembler 1048can emit multiple externals for the same object, or it become confused 1049when the Scope() operator is used on an external object. Overall, greatly 1050improves the ability to actually recompile the emitted ASL code when 1051objects a referenced across multiple ACPI tables. Reported by Michael 1052Tsirkin (mst@redhat.com). 1053 1054Tests/ASLTS: Updated functional control suite to execute with no errors. 1055David Box. Fixed several errors related to the testing of the interpreter 1056slack mode. Lv Zheng. 1057 1058iASL: Added support to detect names that are declared within a control 1059method, but are unused (these are temporary names that are only valid 1060during the time the method is executing). A remark is issued for these 1061cases. ACPICA BZ 1022. 1062 1063iASL: Added full support for the DBG2 table. Adds full disassembler, 1064table compiler, and template generator support for the DBG2 table (Debug 1065Port 2 table). 1066 1067iASL: Added full support for the PCCT table, update the table definition. 1068Updates the PCCT table definition in the actbl3.h header and adds table 1069compiler and template generator support. 1070 1071iASL: Added an option to emit only error messages (no warnings/remarks). 1072The -ve option will enable only error messages, warnings and remarks are 1073suppressed. This can simplify debugging when only the errors are 1074important, such as when an ACPI table is disassembled and there are many 1075warnings and remarks -- but only the actual errors are of real interest. 1076 1077Example ACPICA code (source/tools/examples): Updated the example code so 1078that it builds to an actual working program, not just example code. Added 1079ACPI tables and execution of an example control method in the DSDT. Added 1080makefile support for Unix generation. 1081 1082---------------------------------------- 108315 November 2013. Summary of changes for version 20131115: 1084 1085This release is available at https://acpica.org/downloads 1086 1087 10881) ACPICA kernel-resident subsystem: 1089 1090Resource Manager: Fixed loop termination for the "get AML length" 1091function. The loop previously had an error termination on a NULL resource 1092pointer, which can never happen since the loop simply increments a valid 1093resource pointer. This fix changes the loop to terminate with an error on 1094an invalid end-of-buffer condition. The problem can be seen as an 1095infinite loop by callers to AcpiSetCurrentResources with an invalid or 1096corrupted resource descriptor, or a resource descriptor that is missing 1097an END_TAG descriptor. Reported by Dan Carpenter 1098<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 1099 1100Table unload and ACPICA termination: Delete all attached data objects 1101during namespace node deletion. This fix updates namespace node deletion 1102to delete the entire list of attached objects (attached via 1103AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 11041024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 1105 1106ACPICA termination: Added support to delete all objects attached to the 1107root namespace node. This fix deletes any and all objects that have been 1108attached to the root node via AcpiAttachData. Previously, none of these 1109objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 1110 1111Debug output: Do not emit the function nesting level for the in-kernel 1112build. The nesting level is really only useful during a single-thread 1113execution. Therefore, only enable this output for the AcpiExec utility. 1114Also, only emit the thread ID when executing under AcpiExec (Context 1115switches are still always detected and a message is emitted). ACPICA BZ 1116972. 1117 1118Example Code and Data Size: These are the sizes for the OS-independent 1119acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1120debug version of the code includes the debug output trace mechanism and 1121has a much larger code and data size. 1122 1123 Current Release: 1124 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1125 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1126 Previous Release: 1127 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1128 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1129 1130 11312) iASL Compiler/Disassembler and Tools: 1132 1133AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 1134correct portable POSIX header for terminal control functions. 1135 1136Disassembler: Fixed control method invocation issues related to the use 1137of the CondRefOf() operator. The problem is seen in the disassembly where 1138control method invocations may not be disassembled properly if the 1139control method name has been used previously as an argument to CondRefOf. 1140The solution is to not attempt to emit an external declaration for the 1141CondRefOf target (it is not necessary in the first place). This prevents 1142disassembler object type confusion. ACPICA BZ 988. 1143 1144Unix Makefiles: Added an option to disable compiler optimizations and the 1145_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 1146with optimizations (reportedly, gcc 4.4 for example). This change adds a 1147command line option for make (NOOPT) that disables all compiler 1148optimizations and the _FORTIFY_SOURCE compiler flag. The default 1149optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 11501034. Lv Zheng, Bob Moore. 1151 1152Tests/ASLTS: Added options to specify individual test cases and modes. 1153This allows testers running aslts.sh to optionally specify individual 1154test modes and test cases. Also added an option to disable the forced 1155generation of the ACPICA tools from source if desired. Lv Zheng. 1156 1157---------------------------------------- 115827 September 2013. Summary of changes for version 20130927: 1159 1160This release is available at https://acpica.org/downloads 1161 1162 11631) ACPICA kernel-resident subsystem: 1164 1165Fixed a problem with store operations to reference objects. This change 1166fixes a problem where a Store operation to an ArgX object that contained 1167a 1168reference to a field object did not complete the automatic dereference 1169and 1170then write to the actual field object. Instead, the object type of the 1171field object was inadvertently changed to match the type of the source 1172operand. The new behavior will actually write to the field object (buffer 1173field or field unit), thus matching the correct ACPI-defined behavior. 1174 1175Implemented support to allow the host to redefine individual OSL 1176prototypes. This change enables the host to redefine OSL prototypes found 1177in the acpiosxf.h file. This allows the host to implement OSL interfaces 1178with a macro or inlined function. Further, it allows the host to add any 1179additional required modifiers such as __iomem, __init, __exit, etc., as 1180necessary on a per-interface basis. Enables maximum flexibility for the 1181OSL interfaces. Lv Zheng. 1182 1183Hardcoded the access width for the FADT-defined reset register. The ACPI 1184specification requires the reset register width to be 8 bits. ACPICA now 1185hardcodes the width to 8 and ignores the FADT width value. This provides 1186compatibility with other ACPI implementations that have allowed BIOS code 1187with bad register width values to go unnoticed. Matthew Garett, Bob 1188Moore, 1189Lv Zheng. 1190 1191Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 1192used 1193in the OSL header (acpiosxf). The change modifies the position of this 1194macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 1195build issues if the OSL defines the implementation of the interface to be 1196an inline stub function. Lv Zheng. 1197 1198Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 1199initialization interfaces. This change adds a new macro for the main init 1200and terminate external interfaces in order to support hosts that require 1201additional or different processing for these functions. Changed from 1202ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 1203Zheng, Bob Moore. 1204 1205Cleaned up the memory allocation macros for configurability. In the 1206common 1207case, the ACPI_ALLOCATE and related macros now resolve directly to their 1208respective AcpiOs* OSL interfaces. Two options: 12091) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 1210default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 12112) For AcpiExec (and for debugging), the macros can optionally be 1212resolved 1213to the local ACPICA interfaces that track each allocation (local tracking 1214is used to immediately detect memory leaks). 1215Lv Zheng. 1216 1217Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 1218to predefine this macro to either TRUE or FALSE during the system build. 1219 1220Replaced __FUNCTION_ with __func__ in the gcc-specific header. 1221 1222Example Code and Data Size: These are the sizes for the OS-independent 1223acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1224debug version of the code includes the debug output trace mechanism and 1225has a much larger code and data size. 1226 1227 Current Release: 1228 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1229 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1230 Previous Release: 1231 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1232 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1233 1234 12352) iASL Compiler/Disassembler and Tools: 1236 1237iASL: Implemented wildcard support for the -e option. This simplifies use 1238when there are many SSDTs that must be included to resolve external 1239method 1240declarations. ACPICA BZ 1041. Example: 1241 iasl -e ssdt*.dat -d dsdt.dat 1242 1243AcpiExec: Add history/line-editing for Unix/Linux systems. This change 1244adds a portable module that implements full history and limited line 1245editing for Unix and Linux systems. It does not use readline() due to 1246portability issues. Instead it uses the POSIX termio interface to put the 1247terminal in raw input mode so that the various special keys can be 1248trapped 1249(such as up/down-arrow for history support and left/right-arrow for line 1250editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 1251 1252AcpiXtract: Add support to handle (ignore) "empty" lines containing only 1253one or more spaces. This provides compatible with early or different 1254versions of the AcpiDump utility. ACPICA BZ 1044. 1255 1256AcpiDump: Do not ignore tables that contain only an ACPI table header. 1257Apparently, some BIOSs create SSDTs that contain an ACPI table header but 1258no other data. This change adds support to dump these tables. Any tables 1259shorter than the length of an ACPI table header remain in error (an error 1260message is emitted). Reported by Yi Li. 1261 1262Debugger: Echo actual command along with the "unknown command" message. 1263 1264---------------------------------------- 126523 August 2013. Summary of changes for version 20130823: 1266 12671) ACPICA kernel-resident subsystem: 1268 1269Implemented support for host-installed System Control Interrupt (SCI) 1270handlers. Certain ACPI functionality requires the host to handle raw 1271SCIs. For example, the "SCI Doorbell" that is defined for memory power 1272state support requires the host device driver to handle SCIs to examine 1273if the doorbell has been activated. Multiple SCI handlers can be 1274installed to allow for future expansion. New external interfaces are 1275AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 1276details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 1277 1278Operation region support: Never locally free the handler "context" 1279pointer. This change removes some dangerous code that attempts to free 1280the handler context pointer in some (rare) circumstances. The owner of 1281the handler owns this pointer and the ACPICA code should never touch it. 1282Although not seen to be an issue in any kernel, it did show up as a 1283problem (fault) under AcpiExec. Also, set the internal storage field for 1284the context pointer to zero when the region is deactivated, simply for 1285sanity. David Box. ACPICA BZ 1039. 1286 1287AcpiRead: On error, do not modify the return value target location. If an 1288error happens in the middle of a split 32/32 64-bit I/O operation, do not 1289modify the target of the return value pointer. Makes the code consistent 1290with the rest of ACPICA. Bjorn Helgaas. 1291 1292Example Code and Data Size: These are the sizes for the OS-independent 1293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1294debug version of the code includes the debug output trace mechanism and 1295has a much larger code and data size. 1296 1297 Current Release: 1298 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1299 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1300 Previous Release: 1301 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1302 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 1303 1304 13052) iASL Compiler/Disassembler and Tools: 1306 1307AcpiDump: Implemented several new features and fixed some problems: 13081) Added support to dump the RSDP, RSDT, and XSDT tables. 13092) Added support for multiple table instances (SSDT, UEFI). 13103) Added option to dump "customized" (overridden) tables (-c). 13114) Fixed a problem where some table filenames were improperly 1312constructed. 13135) Improved some error messages, removed some unnecessary messages. 1314 1315iASL: Implemented additional support for disassembly of ACPI tables that 1316contain invocations of external control methods. The -fe<file> option 1317allows the import of a file that specifies the external methods along 1318with the required number of arguments for each -- allowing for the 1319correct disassembly of the table. This is a workaround for a limitation 1320of AML code where the disassembler often cannot determine the number of 1321arguments required for an external control method and generates incorrect 1322ASL code. See the iASL reference for details. ACPICA BZ 1030. 1323 1324Debugger: Implemented a new command (paths) that displays the full 1325pathnames (namepaths) and object types of all objects in the namespace. 1326This is an alternative to the namespace command. 1327 1328Debugger: Implemented a new command (sci) that invokes the SCI dispatch 1329mechanism and any installed handlers. 1330 1331iASL: Fixed a possible segfault for "too many parent prefixes" condition. 1332This can occur if there are too many parent prefixes in a namepath (for 1333example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 1334 1335Application OSLs: Set the return value for the PCI read functions. These 1336functions simply return AE_OK, but should set the return value to zero 1337also. This change implements this. ACPICA BZ 1038. 1338 1339Debugger: Prevent possible command line buffer overflow. Increase the 1340size of a couple of the debugger line buffers, and ensure that overflow 1341cannot happen. ACPICA BZ 1037. 1342 1343iASL: Changed to abort immediately on serious errors during the parsing 1344phase. Due to the nature of ASL, there is no point in attempting to 1345compile these types of errors, and they typically end up causing a 1346cascade of hundreds of errors which obscure the original problem. 1347 1348---------------------------------------- 134925 July 2013. Summary of changes for version 20130725: 1350 13511) ACPICA kernel-resident subsystem: 1352 1353Fixed a problem with the DerefOf operator where references to FieldUnits 1354and BufferFields incorrectly returned the parent object, not the actual 1355value of the object. After this change, a dereference of a FieldUnit 1356reference results in a read operation on the field to get the value, and 1357likewise, the appropriate BufferField value is extracted from the target 1358buffer. 1359 1360Fixed a problem where the _WAK method could cause a fault under these 1361circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 1362method returned no value. The problem is rarely seen because most kernels 1363run ACPICA in slack mode. 1364 1365For the DerefOf operator, a fatal error now results if an attempt is made 1366to dereference a reference (created by the Index operator) to a NULL 1367package element. Provides compatibility with other ACPI implementations, 1368and this behavior will be added to a future version of the ACPI 1369specification. 1370 1371The ACPI Power Management Timer (defined in the FADT) is now optional. 1372This provides compatibility with other ACPI implementations and will 1373appear in the next version of the ACPI specification. If there is no PM 1374Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 1375zero in the FADT indicates no PM timer. 1376 1377Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 1378allows the host to globally enable/disable all vendor strings, all 1379feature strings, or both. Intended to be primarily used for debugging 1380purposes only. Lv Zheng. 1381 1382Expose the collected _OSI data to the host via a global variable. This 1383data tracks the highest level vendor ID that has been invoked by the BIOS 1384so that the host (and potentially ACPICA itself) can change behaviors 1385based upon the age of the BIOS. 1386 1387Example Code and Data Size: These are the sizes for the OS-independent 1388acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1389debug version of the code includes the debug output trace mechanism and 1390has a much larger code and data size. 1391 1392 Current Release: 1393 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1394 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1395 Previous Release: 1396 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1397 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1398 1399 14002) iASL Compiler/Disassembler and Tools: 1401 1402iASL: Created the following enhancements for the -so option (create 1403offset table): 14041)Add offsets for the last nameseg in each namepath for every supported 1405object type 14062)Add support for Processor, Device, Thermal Zone, and Scope objects 14073)Add the actual AML opcode for the parent object of every supported 1408object type 14094)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 1410 1411Disassembler: Emit all unresolved external symbols in a single block. 1412These are external references to control methods that could not be 1413resolved, and thus, the disassembler had to make a guess at the number of 1414arguments to parse. 1415 1416iASL: The argument to the -T option (create table template) is now 1417optional. If not specified, the default table is a DSDT, typically the 1418most common case. 1419 1420---------------------------------------- 142126 June 2013. Summary of changes for version 20130626: 1422 14231) ACPICA kernel-resident subsystem: 1424 1425Fixed an issue with runtime repair of the _CST object. Null or invalid 1426elements were not always removed properly. Lv Zheng. 1427 1428Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 1429FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 1430the maximum number of GPEs is 1016. Use of multiple GPE block devices 1431makes the system-wide number of GPEs essentially unlimited. 1432 1433Example Code and Data Size: These are the sizes for the OS-independent 1434acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1435debug version of the code includes the debug output trace mechanism and 1436has a much larger code and data size. 1437 1438 Current Release: 1439 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1440 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1441 Previous Release: 1442 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1443 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1444 1445 14462) iASL Compiler/Disassembler and Tools: 1447 1448Portable AcpiDump: Implemented full support for the Linux and FreeBSD 1449hosts. Now supports Linux, FreeBSD, and Windows. 1450 1451Disassembler: Added some missing types for the HEST and EINJ tables: "Set 1452Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 1453 1454iASL/Preprocessor: Implemented full support for nested 1455#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 1456 1457Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 1458max. The original purpose of this constraint was to limit the amount of 1459debug output. However, the string function in question (UtPrintString) is 1460now used for the disassembler also, where 256 bytes is insufficient. 1461Reported by RehabMan@GitHub. 1462 1463iASL/DataTables: Fixed some problems and issues with compilation of DMAR 1464tables. ACPICA BZ 999. Lv Zheng. 1465 1466iASL: Fixed a couple of error exit issues that could result in a "Could 1467not delete <file>" message during ASL compilation. 1468 1469AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 1470the actual signatures for these tables are "FACP" and "APIC", 1471respectively. 1472 1473AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 1474tables are allowed to have multiple instances. 1475 1476---------------------------------------- 147717 May 2013. Summary of changes for version 20130517: 1478 14791) ACPICA kernel-resident subsystem: 1480 1481Fixed a regression introduced in version 20130328 for _INI methods. This 1482change fixes a problem introduced in 20130328 where _INI methods are no 1483longer executed properly because of a memory block that was not 1484initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 1485<tomasz.nowicki@linaro.org>. 1486 1487Fixed a possible problem with the new extended sleep registers in the 1488ACPI 14895.0 FADT. Do not use these registers (even if populated) unless the HW- 1490reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 14911020. Lv Zheng. 1492 1493Implemented return value repair code for _CST predefined objects: Sort 1494the 1495list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 1496 1497Implemented a debug-only option to disable loading of SSDTs from the 1498RSDT/XSDT during ACPICA initialization. This can be useful for debugging 1499ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 1500acglobal.h - ACPICA BZ 1005. Lv Zheng. 1501 1502Fixed some issues in the ACPICA initialization and termination code: 1503Tomasz Nowicki <tomasz.nowicki@linaro.org> 15041) Clear events initialized flag upon event component termination. ACPICA 1505BZ 1013. 15062) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 15073) Delete global lock pending lock during termination. ACPICA BZ 1012. 15084) Clear debug buffer global on termination to prevent possible multiple 1509delete. ACPICA BZ 1010. 1510 1511Standardized all switch() blocks across the entire source base. After 1512many 1513years, different formatting for switch() had crept in. This change makes 1514the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 1515 1516Split some files to enhance ACPICA modularity and configurability: 15171) Split buffer dump routines into utilities/utbuffer.c 15182) Split internal error message routines into utilities/uterror.c 15193) Split table print utilities into tables/tbprint.c 15204) Split iASL command-line option processing into asloptions.c 1521 1522Makefile enhancements: 15231) Support for all new files above. 15242) Abort make on errors from any subcomponent. Chao Guan. 15253) Add build support for Apple Mac OS X. Liang Qi. 1526 1527Example Code and Data Size: These are the sizes for the OS-independent 1528acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1529debug version of the code includes the debug output trace mechanism and 1530has a much larger code and data size. 1531 1532 Current Release: 1533 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1534 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1535 Previous Release: 1536 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1537 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1538 1539 15402) iASL Compiler/Disassembler and Tools: 1541 1542New utility: Implemented an easily portable version of the acpidump 1543utility to extract ACPI tables from the system (or a file) in an ASCII 1544hex 1545dump format. The top-level code implements the various command line 1546options, file I/O, and table dump routines. To port to a new host, only 1547three functions need to be implemented to get tables -- since this 1548functionality is OS-dependent. See the tools/acpidump/apmain.c module and 1549the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 15501) The Windows version obtains the ACPI tables from the Registry. 15512) The Linux version is under development. 15523) Other hosts - If an OS-dependent module is submitted, it will be 1553distributed with ACPICA. 1554 1555iASL: Fixed a regression for -D preprocessor option (define symbol). A 1556restructuring/change to the initialization sequence caused this option to 1557no longer work properly. 1558 1559iASL: Implemented a mechanism to disable specific warnings and remarks. 1560Adds a new command line option, "-vw <messageid> as well as "#pragma 1561disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 1562 1563iASL: Fix for too-strict package object validation. The package object 1564validation for return values from the predefined names is a bit too 1565strict, it does not allow names references within the package (which will 1566be resolved at runtime.) These types of references cannot be validated at 1567compile time. This change ignores named references within package objects 1568for names that return or define static packages. 1569 1570Debugger: Fixed the 80-character command line limitation for the History 1571command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 1572 1573iASL: Added control method and package support for the -so option 1574(generates AML offset table for BIOS support.) 1575 1576iASL: issue a remark if a non-serialized method creates named objects. If 1577a thread blocks within the method for any reason, and another thread 1578enters the method, the method will fail because an attempt will be made 1579to 1580create the same (named) object twice. In this case, issue a remark that 1581the method should be marked serialized. NOTE: may become a warning later. 1582ACPICA BZ 909. 1583 1584---------------------------------------- 158518 April 2013. Summary of changes for version 20130418: 1586 15871) ACPICA kernel-resident subsystem: 1588 1589Fixed a possible buffer overrun during some rare but specific field unit 1590read operations. This overrun can only happen if the DSDT version is 1 -- 1591meaning that all AML integers are 32 bits -- and the field length is 1592between 33 and 55 bits long. During the read, an internal buffer object 1593is 1594created for the field unit because the field is larger than an integer 1595(32 1596bits). However, in this case, the buffer will be incorrectly written 1597beyond the end because the buffer length is less than the internal 1598minimum 1599of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 1600long, but a full 8 bytes will be written. 1601 1602Updated the Embedded Controller "orphan" _REG method support. This refers 1603to _REG methods under the EC device that have no corresponding operation 1604region. This is allowed by the ACPI specification. This update removes a 1605dependency on the existence an ECDT table. It will execute an orphan _REG 1606method as long as the operation region handler for the EC is installed at 1607the EC device node and not the namespace root. Rui Zhang (original 1608update), Bob Moore (update/integrate). 1609 1610Implemented run-time argument typechecking for all predefined ACPI names 1611(_STA, _BIF, etc.) This change performs object typechecking on all 1612incoming arguments for all predefined names executed via 1613AcpiEvaluateObject. This ensures that ACPI-related device drivers are 1614passing correct object types as well as the correct number of arguments 1615(therefore identifying any issues immediately). Also, the ASL/namespace 1616definition of the predefined name is checked against the ACPI 1617specification for the proper argument count. Adds one new file, 1618nsarguments.c 1619 1620Changed an exception code for the ASL UnLoad() operator. Changed the 1621exception code for the case where the input DdbHandle is invalid, from 1622AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 1623 1624Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 1625global makefile. The use of this flag causes compiler errors on earlier 1626versions of GCC, so it has been removed for compatibility. 1627 1628Miscellaneous cleanup: 16291) Removed some unused/obsolete macros 16302) Fixed a possible memory leak in the _OSI support 16313) Removed an unused variable in the predefined name support 16324) Windows OSL: remove obsolete reference to a memory list field 1633 1634Example Code and Data Size: These are the sizes for the OS-independent 1635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1636debug version of the code includes the debug output trace mechanism and 1637has a much larger code and data size. 1638 1639 Current Release: 1640 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1641 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1642 Previous Release: 1643 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1644 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1645 1646 16472) iASL Compiler/Disassembler and Tools: 1648 1649AcpiExec: Added installation of a handler for the SystemCMOS address 1650space. This prevents control method abort if a method accesses this 1651space. 1652 1653AcpiExec: Added support for multiple EC devices, and now install EC 1654operation region handler(s) at the actual EC device instead of the 1655namespace root. This reflects the typical behavior of host operating 1656systems. 1657 1658AcpiExec: Updated to ensure that all operation region handlers are 1659installed before the _REG methods are executed. This prevents a _REG 1660method from aborting if it accesses an address space has no handler. 1661AcpiExec installs a handler for every possible address space. 1662 1663Debugger: Enhanced the "handlers" command to display non-root handlers. 1664This change enhances the handlers command to display handlers associated 1665with individual devices throughout the namespace, in addition to the 1666currently supported display of handlers associated with the root 1667namespace 1668node. 1669 1670ASL Test Suite: Several test suite errors have been identified and 1671resolved, reducing the total error count during execution. Chao Guan. 1672 1673---------------------------------------- 167428 March 2013. Summary of changes for version 20130328: 1675 16761) ACPICA kernel-resident subsystem: 1677 1678Fixed several possible race conditions with the internal object reference 1679counting mechanism. Some of the external ACPICA interfaces update object 1680reference counts without holding the interpreter or namespace lock. This 1681change adds a spinlock to protect reference count updates on the internal 1682ACPICA objects. Reported by and with assistance from Andriy Gapon 1683(avg@FreeBSD.org). 1684 1685FADT support: Removed an extraneous warning for very large GPE register 1686sets. This change removes a size mismatch warning if the legacy length 1687field for a GPE register set is larger than the 64-bit GAS structure can 1688accommodate. GPE register sets can be larger than the 255-bit width 1689limitation of the GAS structure. Linn Crosetto (linn@hp.com). 1690 1691_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 1692return from this interface. Handles a possible timeout case if 1693ACPI_WAIT_FOREVER is modified by the host to be a value less than 1694"forever". Jung-uk Kim. 1695 1696Predefined name support: Add allowed/required argument type information 1697to 1698the master predefined info table. This change adds the infrastructure to 1699enable typechecking on incoming arguments for all predefined 1700methods/objects. It does not actually contain the code that will fully 1701utilize this information, this is still under development. Also condenses 1702some duplicate code for the predefined names into a new module, 1703utilities/utpredef.c 1704 1705Example Code and Data Size: These are the sizes for the OS-independent 1706acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1707debug version of the code includes the debug output trace mechanism and 1708has a much larger code and data size. 1709 1710 Previous Release: 1711 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1712 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1713 Current Release: 1714 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1715 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1716 1717 17182) iASL Compiler/Disassembler and Tools: 1719 1720iASL: Implemented a new option to simplify the development of ACPI- 1721related 1722BIOS code. Adds support for a new "offset table" output file. The -so 1723option will create a C table containing the AML table offsets of various 1724named objects in the namespace so that BIOS code can modify them easily 1725at 1726boot time. This can simplify BIOS runtime code by eliminating expensive 1727searches for "magic values", enhancing boot times and adding greater 1728reliability. With assistance from Lee Hamel. 1729 1730iASL: Allow additional predefined names to return zero-length packages. 1731Now, all predefined names that are defined by the ACPI specification to 1732return a "variable-length package of packages" are allowed to return a 1733zero length top-level package. This allows the BIOS to tell the host that 1734the requested feature is not supported, and supports existing BIOS/ASL 1735code and practices. 1736 1737iASL: Changed the "result not used" warning to an error. This is the case 1738where an ASL operator is effectively a NOOP because the result of the 1739operation is not stored anywhere. For example: 1740 Add (4, Local0) 1741There is no target (missing 3rd argument), nor is the function return 1742value used. This is potentially a very serious problem -- since the code 1743was probably intended to do something, but for whatever reason, the value 1744was not stored. Therefore, this issue has been upgraded from a warning to 1745an error. 1746 1747AcpiHelp: Added allowable/required argument types to the predefined names 1748info display. This feature utilizes the recent update to the predefined 1749names table (above). 1750 1751---------------------------------------- 175214 February 2013. Summary of changes for version 20130214: 1753 17541) ACPICA Kernel-resident Subsystem: 1755 1756Fixed a possible regression on some hosts: Reinstated the safe return 1757macros (return_ACPI_STATUS, etc.) that ensure that the argument is 1758evaluated only once. Although these macros are not needed for the ACPICA 1759code itself, they are often used by ACPI-related host device drivers 1760where 1761the safe feature may be necessary. 1762 1763Fixed several issues related to the ACPI 5.0 reduced hardware support 1764(SOC): Now ensure that if the platform declares itself as hardware- 1765reduced 1766via the FADT, the following functions become NOOPs (and always return 1767AE_OK) because ACPI is always enabled by definition on these machines: 1768 AcpiEnable 1769 AcpiDisable 1770 AcpiHwGetMode 1771 AcpiHwSetMode 1772 1773Dynamic Object Repair: Implemented additional runtime repairs for 1774predefined name return values. Both of these repairs can simplify code in 1775the related device drivers that invoke these methods: 17761) For the _STR and _MLS names, automatically repair/convert an ASCII 1777string to a Unicode buffer. 17782) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 1779a 1780lone end tag descriptor in the following cases: A Return(0) was executed, 1781a null buffer was returned, or no object at all was returned (non-slack 1782mode only). Adds a new file, nsconvert.c 1783ACPICA BZ 998. Bob Moore, Lv Zheng. 1784 1785Resource Manager: Added additional code to prevent possible infinite 1786loops 1787while traversing corrupted or ill-formed resource template buffers. Check 1788for zero-length resource descriptors in all code that loops through 1789resource templates (the length field is used to index through the 1790template). This change also hardens the external AcpiWalkResources and 1791AcpiWalkResourceBuffer interfaces. 1792 1793Local Cache Manager: Enhanced the main data structure to eliminate an 1794unnecessary mechanism to access the next object in the list. Actually 1795provides a small performance enhancement for hosts that use the local 1796ACPICA cache manager. Jung-uk Kim. 1797 1798Example Code and Data Size: These are the sizes for the OS-independent 1799acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1800debug version of the code includes the debug output trace mechanism and 1801has a much larger code and data size. 1802 1803 Previous Release: 1804 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1805 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1806 Current Release: 1807 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1808 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1809 1810 18112) iASL Compiler/Disassembler and Tools: 1812 1813iASL/Disassembler: Fixed several issues with the definition of the ACPI 18145.0 RASF table (RAS Feature Table). This change incorporates late changes 1815that were made to the ACPI 5.0 specification. 1816 1817iASL/Disassembler: Added full support for the following new ACPI tables: 1818 1) The MTMR table (MID Timer Table) 1819 2) The VRTC table (Virtual Real Time Clock Table). 1820Includes header file, disassembler, table compiler, and template support 1821for both tables. 1822 1823iASL: Implemented compile-time validation of package objects returned by 1824predefined names. This new feature validates static package objects 1825returned by the various predefined names defined to return packages. Both 1826object types and package lengths are validated, for both parent packages 1827and sub-packages, if any. The code is similar in structure and behavior 1828to 1829the runtime repair mechanism within the AML interpreter and uses the 1830existing predefined name information table. Adds a new file, aslprepkg.c. 1831ACPICA BZ 938. 1832 1833iASL: Implemented auto-detection of binary ACPI tables for disassembly. 1834This feature detects a binary file with a valid ACPI table header and 1835invokes the disassembler automatically. Eliminates the need to 1836specifically invoke the disassembler with the -d option. ACPICA BZ 862. 1837 1838iASL/Disassembler: Added several warnings for the case where there are 1839unresolved control methods during the disassembly. This can potentially 1840cause errors when the output file is compiled, because the disassembler 1841assumes zero method arguments in these cases (it cannot determine the 1842actual number of arguments without resolution/definition of the method). 1843 1844Debugger: Added support to display all resources with a single command. 1845Invocation of the resources command with no arguments will now display 1846all 1847resources within the current namespace. 1848 1849AcpiHelp: Added descriptive text for each ACPICA exception code displayed 1850via the -e option. 1851 1852---------------------------------------- 185317 January 2013. Summary of changes for version 20130117: 1854 18551) ACPICA Kernel-resident Subsystem: 1856 1857Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 1858return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 1859objects to return a package containing one integer, most BIOS code 1860returns 1861two integers and the previous code reflects that. However, we also need 1862to 1863support BIOS code that actually implements to the ACPI spec, and this 1864change reflects this. 1865 1866Fixed two issues with the ACPI_DEBUG_PRINT macros: 18671) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 1868C compilers that require this support. 18692) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 1870ACPI_DEBUG is already used by many of the various hosts. 1871 1872Updated all ACPICA copyrights and signons to 2013. Added the 2013 1873copyright to all module headers and signons, including the standard Linux 1874header. This affects virtually every file in the ACPICA core subsystem, 1875iASL compiler, all ACPICA utilities, and the test suites. 1876 1877Example Code and Data Size: These are the sizes for the OS-independent 1878acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1879debug version of the code includes the debug output trace mechanism and 1880has a much larger code and data size. 1881 1882 Previous Release: 1883 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1884 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1885 Current Release: 1886 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1887 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1888 1889 18902) iASL Compiler/Disassembler and Tools: 1891 1892Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 1893prevent a possible fault on some hosts. Some C libraries modify the arg 1894pointer parameter to vfprintf making it difficult to call it twice in the 1895AcpiOsVprintf function. Use a local buffer to workaround this issue. This 1896does not affect the Windows OSL since the Win C library does not modify 1897the arg pointer. Chao Guan, Bob Moore. 1898 1899iASL: Fixed a possible infinite loop when the maximum error count is 1900reached. If an output file other than the .AML file is specified (such as 1901a listing file), and the maximum number of errors is reached, do not 1902attempt to flush data to the output file(s) as the compiler is aborting. 1903This can cause an infinite loop as the max error count code essentially 1904keeps calling itself. 1905 1906iASL/Disassembler: Added an option (-in) to ignore NOOP 1907opcodes/operators. 1908Implemented for both the compiler and the disassembler. Often, the NOOP 1909opcode is used as padding for packages that are changed dynamically by 1910the 1911BIOS. When disassembled and recompiled, these NOOPs will cause syntax 1912errors. This option causes the disassembler to ignore all NOOP opcodes 1913(0xA3), and it also causes the compiler to ignore all ASL source code 1914NOOP 1915statements as well. 1916 1917Debugger: Enhanced the Sleep command to execute all sleep states. This 1918change allows Sleep to be invoked with no arguments and causes the 1919debugger to execute all of the sleep states, 0-5, automatically. 1920 1921---------------------------------------- 192220 December 2012. Summary of changes for version 20121220: 1923 19241) ACPICA Kernel-resident Subsystem: 1925 1926Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 1927alternate entry point for AcpiWalkResources and improves the usability of 1928the resource manager by accepting as input a buffer containing the output 1929of either a _CRS, _PRS, or _AEI method. The key functionality is that the 1930input buffer is not deleted by this interface so that it can be used by 1931the host later. See the ACPICA reference for details. 1932 1933Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 1934(DSDT version < 2). The constant will be truncated and this warning 1935reflects that behavior. 1936 1937Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 1938ExtendedInterrupt, and GpioInt descriptors. This change adds support to 1939both get and set the new wake bit in these descriptors, separately from 1940the existing share bit. Reported by Aaron Lu. 1941 1942Interpreter: Fix Store() when an implicit conversion is not possible. For 1943example, in the cases such as a store of a string to an existing package 1944object, implement the store as a CopyObject(). This is a small departure 1945from the ACPI specification which states that the control method should 1946be 1947aborted in this case. However, the ASLTS suite depends on this behavior. 1948 1949Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 1950macros: check if debug output is currently enabled as soon as possible to 1951minimize performance impact if debug is in fact not enabled. 1952 1953Source code restructuring: Cleanup to improve modularity. The following 1954new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 1955psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 1956Associated makefiles and project files have been updated. 1957 1958Changed an exception code for LoadTable operator. For the case where one 1959of the input strings is too long, change the returned exception code from 1960AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 1961 1962Fixed a possible memory leak in dispatcher error path. On error, delete 1963the mutex object created during method mutex creation. Reported by 1964tim.gardner@canonical.com. 1965 1966Example Code and Data Size: These are the sizes for the OS-independent 1967acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1968debug version of the code includes the debug output trace mechanism and 1969has a much larger code and data size. 1970 1971 Previous Release: 1972 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1973 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1974 Current Release: 1975 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1976 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1977 1978 19792) iASL Compiler/Disassembler and Tools: 1980 1981iASL: Disallow a method call as argument to the ObjectType ASL operator. 1982This change tracks an errata to the ACPI 5.0 document. The AML grammar 1983will not allow the interpreter to differentiate between a method and a 1984method invocation when these are used as an argument to the ObjectType 1985operator. The ACPI specification change is to disallow a method 1986invocation 1987(UserTerm) for the ObjectType operator. 1988 1989Finish support for the TPM2 and CSRT tables in the headers, table 1990compiler, and disassembler. 1991 1992Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 1993always expires immediately if the semaphore is not available. The 1994original 1995code was using a relative-time timeout, but sem_timedwait requires the 1996use 1997of an absolute time. 1998 1999iASL: Added a remark if the Timer() operator is used within a 32-bit 2000table. This operator returns a 64-bit time value that will be truncated 2001within a 32-bit table. 2002 2003iASL Source code restructuring: Cleanup to improve modularity. The 2004following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2005aslmethod.c, and aslfileio.c. Associated makefiles and project files have 2006been updated. 2007 2008 2009---------------------------------------- 201014 November 2012. Summary of changes for version 20121114: 2011 20121) ACPICA Kernel-resident Subsystem: 2013 2014Implemented a performance enhancement for ACPI/AML Package objects. This 2015change greatly increases the performance of Package objects within the 2016interpreter. It changes the processing of reference counts for packages 2017by 2018optimizing for the most common case where the package sub-objects are 2019either Integers, Strings, or Buffers. Increases the overall performance 2020of 2021the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 20222X.) 2023Chao Guan. ACPICA BZ 943. 2024 2025Implemented and deployed common macros to extract flag bits from resource 2026descriptors. Improves readability and maintainability of the code. Fixes 2027a 2028problem with the UART serial bus descriptor for the number of data bits 2029flags (was incorrectly 2 bits, should be 3). 2030 2031Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2032of the macros and changed the SETx macros to the style of (destination, 2033source). Also added ACPI_CASTx companion macros. Lv Zheng. 2034 2035Example Code and Data Size: These are the sizes for the OS-independent 2036acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2037debug version of the code includes the debug output trace mechanism and 2038has a much larger code and data size. 2039 2040 Previous Release: 2041 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2042 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2043 Current Release: 2044 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2045 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2046 2047 20482) iASL Compiler/Disassembler and Tools: 2049 2050Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2051adds the ShareAndWake and ExclusiveAndWake flags which were added to the 2052Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2053 2054Disassembler: Fixed a problem with external declaration generation. Fixes 2055a problem where an incorrect pathname could be generated for an external 2056declaration if the original reference to the object includes leading 2057carats (^). ACPICA BZ 984. 2058 2059Debugger: Completed a major update for the Disassemble<method> command. 2060This command was out-of-date and did not properly disassemble control 2061methods that had any reasonable complexity. This fix brings the command 2062up 2063to the same level as the rest of the disassembler. Adds one new file, 2064dmdeferred.c, which is existing code that is now common with the main 2065disassembler and the debugger disassemble command. ACPICA MZ 978. 2066 2067iASL: Moved the parser entry prototype to avoid a duplicate declaration. 2068Newer versions of Bison emit this prototype, so moved the prototype out 2069of 2070the iASL header to where it is actually used in order to avoid a 2071duplicate 2072declaration. 2073 2074iASL/Tools: Standardized use of the stream I/O functions: 2075 1) Ensure check for I/O error after every fopen/fread/fwrite 2076 2) Ensure proper order of size/count arguments for fread/fwrite 2077 3) Use test of (Actual != Requested) after all fwrite, and most fread 2078 4) Standardize I/O error messages 2079Improves reliability and maintainability of the code. Bob Moore, Lv 2080Zheng. 2081ACPICA BZ 981. 2082 2083Disassembler: Prevent duplicate External() statements. During generation 2084of external statements, detect similar pathnames that are actually 2085duplicates such as these: 2086 External (\ABCD) 2087 External (ABCD) 2088Remove all leading '\' characters from pathnames during the external 2089statement generation so that duplicates will be detected and tossed. 2090ACPICA BZ 985. 2091 2092Tools: Replace low-level I/O with stream I/O functions. Replace 2093open/read/write/close with the stream I/O equivalents 2094fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 2095Moore. 2096 2097AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 2098name header so that AcpiXtract recognizes the output file/table. 2099 2100iASL: Remove obsolete -2 option flag. Originally intended to force the 2101compiler/disassembler into an ACPI 2.0 mode, this was never implemented 2102and the entire concept is now obsolete. 2103 2104---------------------------------------- 210518 October 2012. Summary of changes for version 20121018: 2106 2107 21081) ACPICA Kernel-resident Subsystem: 2109 2110Updated support for the ACPI 5.0 MPST table. Fixes some problems 2111introduced by late changes to the table as it was added to the ACPI 5.0 2112specification. Includes header, disassembler, and data table compiler 2113support as well as a new version of the MPST template. 2114 2115AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 21165.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 2117methods: _HID, _CID, and _UID. 2118 2119Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 2120ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 2121name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 2122names for their various drivers. Affects the AcpiGetObjectInfo external 2123interface, and other internal interfaces as well. 2124 2125Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 2126This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 2127on machines that support non-aligned transfers. Optimizes for this case 2128rather than using a strncpy. With assistance from Zheng Lv. 2129 2130Resource Manager: Small fix for buffer size calculation. Fixed a one byte 2131error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 2132 2133Added a new debug print message for AML mutex objects that are force- 2134released. At control method termination, any currently acquired mutex 2135objects are force-released. Adds a new debug-only message for each one 2136that is released. 2137 2138Audited/updated all ACPICA return macros and the function debug depth 2139counter: 1) Ensure that all functions that use the various TRACE macros 2140also use the appropriate ACPICA return macros. 2) Ensure that all normal 2141return statements surround the return expression (value) with parens to 2142ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 2143Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 2144 2145Global source code changes/maintenance: All extra lines at the start and 2146end of each source file have been removed for consistency. Also, within 2147comments, all new sentences start with a single space instead of a double 2148space, again for consistency across the code base. 2149 2150Example Code and Data Size: These are the sizes for the OS-independent 2151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2152debug version of the code includes the debug output trace mechanism and 2153has a much larger code and data size. 2154 2155 Previous Release: 2156 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2157 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2158 Current Release: 2159 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2160 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2161 2162 21632) iASL Compiler/Disassembler and Tools: 2164 2165AcpiExec: Improved the algorithm used for memory leak/corruption 2166detection. Added some intelligence to the code that maintains the global 2167list of allocated memory. The list is now ordered by allocated memory 2168address, significantly improving performance. When running AcpiExec on 2169the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 2170on the platform and/or the environment. Note, this performance 2171enhancement affects the AcpiExec utility only, not the kernel-resident 2172ACPICA code. 2173 2174Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 2175the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 2176incorrect table offset reported for invalid opcodes. Report the original 217732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 2178 2179Disassembler: Enhanced the -vt option to emit the binary table data in 2180hex format to assist with debugging. 2181 2182Fixed a potential filename buffer overflow in osunixdir.c. Increased the 2183size of file structure. Colin Ian King. 2184 2185---------------------------------------- 218613 September 2012. Summary of changes for version 20120913: 2187 2188 21891) ACPICA Kernel-resident Subsystem: 2190 2191ACPI 5.0: Added two new notify types for the Hardware Error Notification 2192Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 2193and 2194MCE(6). 2195 2196Table Manager: Merged/removed duplicate code in the root table resize 2197functions. One function is external, the other is internal. Lv Zheng, 2198ACPICA 2199BZ 846. 2200 2201Makefiles: Completely removed the obsolete "Linux" makefiles under 2202acpica/generate/linux. These makefiles are obsolete and have been 2203replaced 2204by 2205the generic unix makefiles under acpica/generate/unix. 2206 2207Makefiles: Ensure that binary files always copied properly. Minor rule 2208change 2209to ensure that the final binary output files are always copied up to the 2210appropriate binary directory (bin32 or bin64.) 2211 2212Example Code and Data Size: These are the sizes for the OS-independent 2213acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2214debug 2215version of the code includes the debug output trace mechanism and has a 2216much 2217larger code and data size. 2218 2219 Previous Release: 2220 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2221 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2222 Current Release: 2223 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2224 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2225 2226 22272) iASL Compiler/Disassembler and Tools: 2228 2229Disassembler: Fixed a possible fault during the disassembly of resource 2230descriptors when a second parse is required because of the invocation of 2231external control methods within the table. With assistance from 2232adq@lidskialf.net. ACPICA BZ 976. 2233 2234iASL: Fixed a namepath optimization problem. An error can occur if the 2235parse 2236node that contains the namepath to be optimized does not have a parent 2237node 2238that is a named object. This change fixes the problem. 2239 2240iASL: Fixed a regression where the AML file is not deleted on errors. The 2241AML 2242output file should be deleted if there are any errors during the 2243compiler. 2244The 2245only exception is if the -f (force output) option is used. ACPICA BZ 974. 2246 2247iASL: Added a feature to automatically increase internal line buffer 2248sizes. 2249Via realloc(), automatically increase the internal line buffer sizes as 2250necessary to support very long source code lines. The current version of 2251the 2252preprocessor requires a buffer long enough to contain full source code 2253lines. 2254This change increases the line buffer(s) if the input lines go beyond the 2255current buffer size. This eliminates errors that occurred when a source 2256code 2257line was longer than the buffer. 2258 2259iASL: Fixed a problem with constant folding in method declarations. The 2260SyncLevel term is a ByteConstExpr, and incorrect code would be generated 2261if a 2262Type3 opcode was used. 2263 2264Debugger: Improved command help support. For incorrect argument count, 2265display 2266full help for the command. For help command itself, allow an argument to 2267specify a command. 2268 2269Test Suites: Several bug fixes for the ASLTS suite reduces the number of 2270errors during execution of the suite. Guan Chao. 2271 2272---------------------------------------- 227316 August 2012. Summary of changes for version 20120816: 2274 2275 22761) ACPICA Kernel-resident Subsystem: 2277 2278Removed all use of the deprecated _GTS and _BFS predefined methods. The 2279_GTS 2280(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 2281deprecated and will probably be removed from the ACPI specification. 2282Windows 2283does not invoke them, and reportedly never will. The final nail in the 2284coffin 2285is that the ACPI specification states that these methods must be run with 2286interrupts off, which is not going to happen in a kernel interpreter. 2287Note: 2288Linux has removed all use of the methods also. It was discovered that 2289invoking these functions caused failures on some machines, probably 2290because 2291they were never tested since Windows does not call them. Affects two 2292external 2293interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 2294ACPICA BZ 969. 2295 2296Implemented support for complex bit-packed buffers returned from the _PLD 2297(Physical Location of Device) predefined method. Adds a new external 2298interface, AcpiDecodePldBuffer that parses the buffer into a more usable 2299C 2300structure. Note: C Bitfields cannot be used for this type of predefined 2301structure since the memory layout of individual bitfields is not defined 2302by 2303the C language. In addition, there are endian concerns where a compiler 2304will 2305change the bitfield ordering based on the machine type. The new ACPICA 2306interface eliminates these issues, and should be called after _PLD is 2307executed. ACPICA BZ 954. 2308 2309Implemented a change to allow a scope change to root (via "Scope (\)") 2310during 2311execution of module-level ASL code (code that is executed at table load 2312time.) Lin Ming. 2313 2314Added the Windows8/Server2012 string for the _OSI method. This change 2315adds 2316a 2317new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 23182012. 2319 2320Added header support for the new ACPI tables DBG2 (Debug Port Table Type 23212) 2322and CSRT (Core System Resource Table). 2323 2324Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 2325names. This simplifies access to the buffers returned by these predefined 2326names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 2327 2328GPE support: Removed an extraneous parameter from the various low-level 2329internal GPE functions. Tang Feng. 2330 2331Removed the linux makefiles from the unix packages. The generate/linux 2332makefiles are obsolete and have been removed from the unix tarball 2333release 2334packages. The replacement makefiles are under generate/unix, and there is 2335a 2336top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 2337 2338Updates for Unix makefiles: 23391) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 23402) Update linker flags (move to end of command line) for AcpiExec 2341utility. 2342Guan Chao. 2343 2344Split ACPICA initialization functions to new file, utxfinit.c. Split from 2345utxface.c to improve modularity and reduce file size. 2346 2347Example Code and Data Size: These are the sizes for the OS-independent 2348acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2349debug version of the code includes the debug output trace mechanism and 2350has a 2351much larger code and data size. 2352 2353 Previous Release: 2354 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2355 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2356 Current Release: 2357 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2358 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2359 2360 23612) iASL Compiler/Disassembler and Tools: 2362 2363iASL: Fixed a problem with constant folding for fixed-length constant 2364expressions. The constant-folding code was not being invoked for constant 2365expressions that allow the use of type 3/4/5 opcodes to generate 2366constants 2367for expressions such as ByteConstExpr, WordConstExpr, etc. This could 2368result 2369in the generation of invalid AML bytecode. ACPICA BZ 970. 2370 2371iASL: Fixed a generation issue on newer versions of Bison. Newer versions 2372apparently automatically emit some of the necessary externals. This 2373change 2374handles these versions in order to eliminate generation warnings. 2375 2376Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 2377 2378Disassembler: Add support to decode _PLD buffers. The decoded buffer 2379appears 2380within comments in the output file. 2381 2382Debugger: Fixed a regression with the "Threads" command where 2383AE_BAD_PARAMETER was always returned. 2384 2385---------------------------------------- 238611 July 2012. Summary of changes for version 20120711: 2387 23881) ACPICA Kernel-resident Subsystem: 2389 2390Fixed a possible fault in the return package object repair code. Fixes a 2391problem that can occur when a lone package object is wrapped with an 2392outer 2393package object in order to force conformance to the ACPI specification. 2394Can 2395affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 2396_DLM, 2397_CSD, _PSD, _TSD. 2398 2399Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 2400PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 2401ARB_DIS bit must be implemented in the host-dependent C3 processor power 2402state 2403support. Note, ARB_DIS is obsolete and only applies to older chipsets, 2404both 2405Intel and other vendors. (for Intel: ICH4-M and earlier) 2406 2407This change removes the code to disable/enable bus master arbitration 2408during 2409suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 2410causes 2411resume problems on some machines. The change has been in use for over 2412seven 2413years within Linux. 2414 2415Implemented two new external interfaces to support host-directed dynamic 2416ACPI 2417table load and unload. They are intended to simplify the host 2418implementation 2419of hot-plug support: 2420 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 2421 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 2422table. 2423See the ACPICA reference for additional details. Adds one new file, 2424components/tables/tbxfload.c 2425 2426Implemented and deployed two new interfaces for errors and warnings that 2427are 2428known to be caused by BIOS/firmware issues: 2429 AcpiBiosError: Prints "ACPI Firmware Error" message. 2430 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 2431Deployed these new interfaces in the ACPICA Table Manager code for ACPI 2432table 2433and FADT errors. Additional deployment to be completed as appropriate in 2434the 2435future. The associated conditional macros are ACPI_BIOS_ERROR and 2436ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 2437ACPICA 2438BZ 2439843. 2440 2441Implicit notify support: ensure that no memory allocation occurs within a 2442critical region. This fix moves a memory allocation outside of the time 2443that a 2444spinlock is held. Fixes issues on systems that do not allow this 2445behavior. 2446Jung-uk Kim. 2447 2448Split exception code utilities and tables into a new file, 2449utilities/utexcep.c 2450 2451Example Code and Data Size: These are the sizes for the OS-independent 2452acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2453debug 2454version of the code includes the debug output trace mechanism and has a 2455much 2456larger code and data size. 2457 2458 Previous Release: 2459 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2460 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2461 Current Release: 2462 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2463 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2464 2465 24662) iASL Compiler/Disassembler and Tools: 2467 2468iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 2469of 24700. Jung-uk Kim. 2471 2472Debugger: Enhanced the "tables" command to emit additional information 2473about 2474the current set of ACPI tables, including the owner ID and flags decode. 2475 2476Debugger: Reimplemented the "unload" command to use the new 2477AcpiUnloadParentTable external interface. This command was disable 2478previously 2479due to need for an unload interface. 2480 2481AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 2482option 2483will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 2484 2485---------------------------------------- 248620 June 2012. Summary of changes for version 20120620: 2487 2488 24891) ACPICA Kernel-resident Subsystem: 2490 2491Implemented support to expand the "implicit notify" feature to allow 2492multiple 2493devices to be notified by a single GPE. This feature automatically 2494generates a 2495runtime device notification in the absence of a BIOS-provided GPE control 2496method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 2497notify is 2498provided by ACPICA for Windows compatibility, and is a workaround for 2499BIOS 2500AML 2501code errors. See the description of the AcpiSetupGpeForWake interface in 2502the 2503APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 2504 2505Changed some comments and internal function names to simplify and ensure 2506correctness of the Linux code translation. No functional changes. 2507 2508Example Code and Data Size: These are the sizes for the OS-independent 2509acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2510debug 2511version of the code includes the debug output trace mechanism and has a 2512much 2513larger code and data size. 2514 2515 Previous Release: 2516 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2517 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2518 Current Release: 2519 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2520 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2521 2522 25232) iASL Compiler/Disassembler and Tools: 2524 2525Disassembler: Added support to emit short, commented descriptions for the 2526ACPI 2527predefined names in order to improve the readability of the disassembled 2528output. ACPICA BZ 959. Changes include: 2529 1) Emit descriptions for all standard predefined names (_INI, _STA, 2530_PRW, 2531etc.) 2532 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 2533 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 2534etc.) 2535 2536AcpiSrc: Fixed several long-standing Linux code translation issues. 2537Argument 2538descriptions in function headers are now translated properly to lower 2539case 2540and 2541underscores. ACPICA BZ 961. Also fixes translation problems such as 2542these: 2543(old -> new) 2544 i_aSL -> iASL 2545 00-7_f -> 00-7F 2546 16_k -> 16K 2547 local_fADT -> local_FADT 2548 execute_oSI -> execute_OSI 2549 2550iASL: Fixed a problem where null bytes were inadvertently emitted into 2551some 2552listing files. 2553 2554iASL: Added the existing debug options to the standard help screen. There 2555are 2556no longer two different help screens. ACPICA BZ 957. 2557 2558AcpiHelp: Fixed some typos in the various predefined name descriptions. 2559Also 2560expand some of the descriptions where appropriate. 2561 2562iASL: Fixed the -ot option (display compile times/statistics). Was not 2563working 2564properly for standard output; only worked for the debug file case. 2565 2566---------------------------------------- 256718 May 2012. Summary of changes for version 20120518: 2568 2569 25701) ACPICA Core Subsystem: 2571 2572Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 2573defined 2574to block until asynchronous events such as notifies and GPEs have 2575completed. 2576Within ACPICA, it is only called before a notify or GPE handler is 2577removed/uninstalled. It also may be useful for the host OS within related 2578drivers such as the Embedded Controller driver. See the ACPICA reference 2579for 2580additional information. ACPICA BZ 868. 2581 2582ACPI Tables: Added a new error message for a possible overflow failure 2583during 2584the conversion of FADT 32-bit legacy register addresses to internal 2585common 258664- 2587bit GAS structure representation. The GAS has a one-byte "bit length" 2588field, 2589thus limiting the register length to 255 bits. ACPICA BZ 953. 2590 2591Example Code and Data Size: These are the sizes for the OS-independent 2592acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2593debug 2594version of the code includes the debug output trace mechanism and has a 2595much 2596larger code and data size. 2597 2598 Previous Release: 2599 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2600 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2601 Current Release: 2602 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2603 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2604 2605 26062) iASL Compiler/Disassembler and Tools: 2607 2608iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 2609macro. 2610This keyword was added late in the ACPI 5.0 release cycle and was not 2611implemented until now. 2612 2613Disassembler: Added support for Operation Region externals. Adds missing 2614support for operation regions that are defined in another table, and 2615referenced locally via a Field or BankField ASL operator. Now generates 2616the 2617correct External statement. 2618 2619Disassembler: Several additional fixes for the External() statement 2620generation 2621related to some ASL operators. Also, order the External() statements 2622alphabetically in the disassembler output. Fixes the External() 2623generation 2624for 2625the Create* field, Alias, and Scope operators: 2626 1) Create* buffer field operators - fix type mismatch warning on 2627disassembly 2628 2) Alias - implement missing External support 2629 3) Scope - fix to make sure all necessary externals are emitted. 2630 2631iASL: Improved pathname support. For include files, merge the prefix 2632pathname 2633with the file pathname and eliminate unnecessary components. Convert 2634backslashes in all pathnames to forward slashes, for readability. Include 2635file 2636pathname changes affect both #include and Include() type operators. 2637 2638iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 2639end 2640of a valid line by inserting a newline and then returning the EOF during 2641the 2642next call to GetNextLine. Prevents the line from being ignored due to EOF 2643condition. 2644 2645iASL: Implemented some changes to enhance the IDE support (-vi option.) 2646Error 2647and Warning messages are now correctly recognized for both the source 2648code 2649browser and the global error and warning counts. 2650 2651---------------------------------------- 265220 April 2012. Summary of changes for version 20120420: 2653 2654 26551) ACPICA Core Subsystem: 2656 2657Implemented support for multiple notify handlers. This change adds 2658support 2659to 2660allow multiple system and device notify handlers on Device, Thermal Zone, 2661and 2662Processor objects. This can simplify the host OS notification 2663implementation. 2664Also re-worked and restructured the entire notify support code to 2665simplify 2666handler installation, handler removal, notify event queuing, and notify 2667dispatch to handler(s). Note: there can still only be two global notify 2668handlers - one for system notifies and one for device notifies. There are 2669no 2670changes to the existing handler install/remove interfaces. Lin Ming, Bob 2671Moore, Rafael Wysocki. 2672 2673Fixed a regression in the package repair code where the object reference 2674count was calculated incorrectly. Regression was introduced in the commit 2675"Support to add Package wrappers". 2676 2677Fixed a couple possible memory leaks in the AML parser, in the error 2678recovery 2679path. Jesper Juhl, Lin Ming. 2680 2681Example Code and Data Size: These are the sizes for the OS-independent 2682acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2683debug version of the code includes the debug output trace mechanism and 2684has a 2685much larger code and data size. 2686 2687 Previous Release: 2688 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2689 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2690 Current Release: 2691 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2692 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2693 2694 26952) iASL Compiler/Disassembler and Tools: 2696 2697iASL: Fixed a problem with the resource descriptor support where the 2698length 2699of the StartDependentFn and StartDependentFnNoPrio descriptors were not 2700included in cumulative descriptor offset, resulting in incorrect values 2701for 2702resource tags within resource descriptors appearing after a 2703StartDependent* 2704descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 2705 2706iASL and Preprocessor: Implemented full support for the #line directive 2707to 2708correctly track original source file line numbers through the .i 2709preprocessor 2710output file - for error and warning messages. 2711 2712iASL: Expand the allowable byte constants for address space IDs. 2713Previously, 2714the allowable range was 0x80-0xFF (user-defined spaces), now the range is 27150x0A-0xFF to allow for custom and new IDs without changing the compiler. 2716 2717iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 2718 2719iASL: Add option to completely disable the preprocessor (-Pn). 2720 2721iASL: Now emit all error/warning messages to standard error (stderr) by 2722default (instead of the previous stdout). 2723 2724ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 2725Update 2726for resource descriptor offset fix above. Update/cleanup error output 2727routines. Enable and send iASL errors/warnings to an error logfile 2728(error.txt). Send all other iASL output to a logfile (compiler.txt). 2729Fixed 2730several extraneous "unrecognized operator" messages. 2731 2732---------------------------------------- 273320 March 2012. Summary of changes for version 20120320: 2734 2735 27361) ACPICA Core Subsystem: 2737 2738Enhanced the sleep/wake interfaces to optionally execute the _GTS method 2739(Going To Sleep) and the _BFS method (Back From Sleep). Windows 2740apparently 2741does not execute these methods, and therefore these methods are often 2742untested. It has been seen on some systems where the execution of these 2743methods causes errors and also prevents the machine from entering S5. It 2744is 2745therefore suggested that host operating systems do not execute these 2746methods 2747by default. In the future, perhaps these methods can be optionally 2748executed 2749based on the age of the system and/or what is the newest version of 2750Windows 2751that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 2752and 2753AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 2754Ming. 2755 2756Fixed a problem where the length of the local/common FADT was set too 2757early. 2758The local FADT table length cannot be set to the common length until the 2759original length has been examined. There is code that checks the table 2760length 2761and sets various fields appropriately. This can affect older machines 2762with 2763early FADT versions. For example, this can cause inadvertent writes to 2764the 2765CST_CNT register. Julian Anastasov. 2766 2767Fixed a mapping issue related to a physical table override. Use the 2768deferred 2769mapping mechanism for tables loaded via the physical override OSL 2770interface. 2771This allows for early mapping before the virtual memory manager is 2772available. 2773Thomas Renninger, Bob Moore. 2774 2775Enhanced the automatic return-object repair code: Repair a common problem 2776with 2777predefined methods that are defined to return a variable-length Package 2778of 2779sub-objects. If there is only one sub-object, some BIOS ASL code 2780mistakenly 2781simply returns the single object instead of a Package with one sub- 2782object. 2783This new support will repair this error by wrapping a Package object 2784around 2785the original object, creating the correct and expected Package with one 2786sub- 2787object. Names that can be repaired in this manner include: _ALR, _CSD, 2788_HPX, 2789_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 2790939. 2791 2792Changed the exception code returned for invalid ACPI paths passed as 2793parameters to external interfaces such as AcpiEvaluateObject. Was 2794AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 2795 2796Example Code and Data Size: These are the sizes for the OS-independent 2797acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2798debug 2799version of the code includes the debug output trace mechanism and has a 2800much 2801larger code and data size. 2802 2803 Previous Release: 2804 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2805 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2806 Current Release: 2807 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2808 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2809 2810 28112) iASL Compiler/Disassembler and Tools: 2812 2813iASL: Added the infrastructure and initial implementation of a integrated 2814C- 2815like preprocessor. This will simplify BIOS development process by 2816eliminating 2817the need for a separate preprocessing step during builds. On Windows, it 2818also 2819eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 2820features including full #define() macro support are still under 2821development. 2822These preprocessor directives are supported: 2823 #define 2824 #elif 2825 #else 2826 #endif 2827 #error 2828 #if 2829 #ifdef 2830 #ifndef 2831 #include 2832 #pragma message 2833 #undef 2834 #warning 2835In addition, these new command line options are supported: 2836 -D <symbol> Define symbol for preprocessor use 2837 -li Create preprocessed output file (*.i) 2838 -P Preprocess only and create preprocessor output file (*.i) 2839 2840Table Compiler: Fixed a problem where the equals operator within an 2841expression 2842did not work properly. 2843 2844Updated iASL to use the current versions of Bison/Flex. Updated the 2845Windows 2846project file to invoke these tools from the standard location. ACPICA BZ 2847904. 2848Versions supported: 2849 Flex for Windows: V2.5.4 2850 Bison for Windows: V2.4.1 2851 2852---------------------------------------- 285315 February 2012. Summary of changes for version 20120215: 2854 2855 28561) ACPICA Core Subsystem: 2857 2858There have been some major changes to the sleep/wake support code, as 2859described below (a - e). 2860 2861a) The AcpiLeaveSleepState has been split into two interfaces, similar to 2862AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 2863AcpiLeaveSleepStatePrep. This allows the host to perform actions between 2864the 2865time the _BFS method is called and the _WAK method is called. NOTE: all 2866hosts 2867must update their wake/resume code or else sleep/wake will not work 2868properly. 2869Rafael Wysocki. 2870 2871b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 2872_WAK 2873method. Some machines require that the GPEs are enabled before the _WAK 2874method 2875is executed. Thomas Renninger. 2876 2877c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 2878bit. 2879Some BIOS code assumes that WAK_STS will be cleared on resume and use it 2880to 2881determine whether the system is rebooting or resuming. Matthew Garrett. 2882 2883d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 2884Sleep) to 2885match the ACPI specification requirement. Rafael Wysocki. 2886 2887e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 2888registers within the V5 FADT. This support adds two new files: 2889hardware/hwesleep.c implements the support for the new registers. Moved 2890all 2891sleep/wake external interfaces to hardware/hwxfsleep.c. 2892 2893 2894Added a new OSL interface for ACPI table overrides, 2895AcpiOsPhysicalTableOverride. This interface allows the host to override a 2896table via a physical address, instead of the logical address required by 2897AcpiOsTableOverride. This simplifies the host implementation. Initial 2898implementation by Thomas Renninger. The ACPICA implementation creates a 2899single 2900shared function for table overrides that attempts both a logical and a 2901physical override. 2902 2903Expanded the OSL memory read/write interfaces to 64-bit data 2904(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 2905transfer support for GAS register structures passed to AcpiRead and 2906AcpiWrite. 2907 2908Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 2909custom 2910build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 2911model. 2912See the ACPICA reference for details. ACPICA BZ 942. This option removes 2913about 291410% of the code and 5% of the static data, and the following hardware 2915ACPI 2916features become unavailable: 2917 PM Event and Control registers 2918 SCI interrupt (and handler) 2919 Fixed Events 2920 General Purpose Events (GPEs) 2921 Global Lock 2922 ACPI PM timer 2923 FACS table (Waking vectors and Global Lock) 2924 2925Updated the unix tarball directory structure to match the ACPICA git 2926source 2927tree. This ensures that the generic unix makefiles work properly (in 2928generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 2929867. 2930 2931Updated the return value of the _REV predefined method to integer value 5 2932to 2933reflect ACPI 5.0 support. 2934 2935Moved the external ACPI PM timer interface prototypes to the public 2936acpixf.h 2937file where they belong. 2938 2939Example Code and Data Size: These are the sizes for the OS-independent 2940acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2941debug 2942version of the code includes the debug output trace mechanism and has a 2943much 2944larger code and data size. 2945 2946 Previous Release: 2947 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2948 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2949 Current Release: 2950 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2951 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2952 2953 29542) iASL Compiler/Disassembler and Tools: 2955 2956Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 2957descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 2958incorrectly displayed. 2959 2960AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 2961specification. 2962 2963---------------------------------------- 296411 January 2012. Summary of changes for version 20120111: 2965 2966 29671) ACPICA Core Subsystem: 2968 2969Implemented a new mechanism to allow host device drivers to check for 2970address 2971range conflicts with ACPI Operation Regions. Both SystemMemory and 2972SystemIO 2973address spaces are supported. A new external interface, 2974AcpiCheckAddressRange, 2975allows drivers to check an address range against the ACPI namespace. See 2976the 2977ACPICA reference for additional details. Adds one new file, 2978utilities/utaddress.c. Lin Ming, Bob Moore. 2979 2980Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 2981Control 2982and 2983Status registers, update the ACPI 5.0 flags, and update internal data 2984structures to handle an FADT larger than 256 bytes. The size of the ACPI 29855.0 2986FADT is 268 bytes. 2987 2988Updated all ACPICA copyrights and signons to 2012. Added the 2012 2989copyright to 2990all module headers and signons, including the standard Linux header. This 2991affects virtually every file in the ACPICA core subsystem, iASL compiler, 2992and 2993all ACPICA utilities. 2994 2995Example Code and Data Size: These are the sizes for the OS-independent 2996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2997debug 2998version of the code includes the debug output trace mechanism and has a 2999much 3000larger code and data size. 3001 3002 Previous Release: 3003 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3004 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3005 Current Release: 3006 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3007 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3008 3009 30102) iASL Compiler/Disassembler and Tools: 3011 3012Disassembler: fixed a problem with the automatic resource tag generation 3013support. Fixes a problem where the resource tags are inadvertently not 3014constructed if the table being disassembled contains external references 3015to 3016control methods. Moved the actual construction of the tags to after the 3017final 3018namespace is constructed (after 2nd parse is invoked due to external 3019control 3020method references.) ACPICA BZ 941. 3021 3022Table Compiler: Make all "generic" operators caseless. These are the 3023operators 3024like UINT8, String, etc. Making these caseless improves ease-of-use. 3025ACPICA BZ 3026934. 3027 3028---------------------------------------- 302923 November 2011. Summary of changes for version 20111123: 3030 30310) ACPI 5.0 Support: 3032 3033This release contains full support for the ACPI 5.0 specification, as 3034summarized below. 3035 3036Reduced Hardware Support: 3037------------------------- 3038 3039This support allows for ACPI systems without the usual ACPI hardware. 3040This 3041support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3042will 3043not attempt to initialize or use any of the usual ACPI hardware. Note, 3044when 3045this flag is set, all of the following ACPI hardware is assumed to be not 3046present and is not initialized or accessed: 3047 3048 General Purpose Events (GPEs) 3049 Fixed Events (PM1a/PM1b and PM Control) 3050 Power Management Timer and Console Buttons (power/sleep) 3051 Real-time Clock Alarm 3052 Global Lock 3053 System Control Interrupt (SCI) 3054 The FACS is assumed to be non-existent 3055 3056ACPI Tables: 3057------------ 3058 3059All new tables and updates to existing tables are fully supported in the 3060ACPICA headers (for use by device drivers), the disassembler, and the 3061iASL 3062Data Table Compiler. ACPI 5.0 defines these new tables: 3063 3064 BGRT /* Boot Graphics Resource Table */ 3065 DRTM /* Dynamic Root of Trust for Measurement table */ 3066 FPDT /* Firmware Performance Data Table */ 3067 GTDT /* Generic Timer Description Table */ 3068 MPST /* Memory Power State Table */ 3069 PCCT /* Platform Communications Channel Table */ 3070 PMTT /* Platform Memory Topology Table */ 3071 RASF /* RAS Feature table */ 3072 3073Operation Regions/SpaceIDs: 3074--------------------------- 3075 3076All new operation regions are fully supported by the iASL compiler, the 3077disassembler, and the ACPICA runtime code (for dispatch to region 3078handlers.) 3079The new operation region Space IDs are: 3080 3081 GeneralPurposeIo 3082 GenericSerialBus 3083 3084Resource Descriptors: 3085--------------------- 3086 3087All new ASL resource descriptors are fully supported by the iASL 3088compiler, 3089the 3090ASL/AML disassembler, and the ACPICA runtime Resource Manager code 3091(including 3092all new predefined resource tags). New descriptors are: 3093 3094 FixedDma 3095 GpioIo 3096 GpioInt 3097 I2cSerialBus 3098 SpiSerialBus 3099 UartSerialBus 3100 3101ASL/AML Operators, New and Modified: 3102------------------------------------ 3103 3104One new operator is added, the Connection operator, which is used to 3105associate 3106a GeneralPurposeIo or GenericSerialBus resource descriptor with 3107individual 3108field objects within an operation region. Several new protocols are 3109associated 3110with the AccessAs operator. All are fully supported by the iASL compiler, 3111disassembler, and runtime ACPICA AML interpreter: 3112 3113 Connection // Declare Field Connection 3114attributes 3115 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 3116 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 3117Protocol 3118 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 3119 RawDataBuffer // Data type for Vendor Data 3120fields 3121 3122Predefined ASL/AML Objects: 3123--------------------------- 3124 3125All new predefined objects/control-methods are supported by the iASL 3126compiler 3127and the ACPICA runtime validation/repair (arguments and return values.) 3128New 3129predefined names include the following: 3130 3131Standard Predefined Names (Objects or Control Methods): 3132 _AEI, _CLS, _CPC, _CWS, _DEP, 3133 _DLM, _EVT, _GCP, _CRT, _GWS, 3134 _HRV, _PRE, _PSE, _SRT, _SUB. 3135 3136Resource Tags (Names used to access individual fields within resource 3137descriptors): 3138 _DBT, _DPL, _DRS, _END, _FLC, 3139 _IOR, _LIN, _MOD, _PAR, _PHA, 3140 _PIN, _PPI, _POL, _RXL, _SLV, 3141 _SPE, _STB, _TXL, _VEN. 3142 3143ACPICA External Interfaces: 3144--------------------------- 3145 3146Several new interfaces have been defined for use by ACPI-related device 3147drivers and other host OS services: 3148 3149AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 3150to 3151acquire and release AML mutexes that are defined in the DSDT/SSDT tables 3152provided by the BIOS. They are intended to be used in conjunction with 3153the 3154ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 3155mutual exclusion with the AML code/interpreter. 3156 3157AcpiGetEventResources: Returns the (formatted) resource descriptors as 3158defined 3159by the ACPI 5.0 _AEI object (ACPI Event Information). This object 3160provides 3161resource descriptors associated with hardware-reduced platform events, 3162similar 3163to the AcpiGetCurrentResources interface. 3164 3165Operation Region Handlers: For General Purpose IO and Generic Serial Bus 3166operation regions, information about the Connection() object and any 3167optional 3168length information is passed to the region handler within the Context 3169parameter. 3170 3171AcpiBufferToResource: This interface converts a raw AML buffer containing 3172a 3173resource template or resource descriptor to the ACPI_RESOURCE internal 3174format 3175suitable for use by device drivers. Can be used by an operation region 3176handler 3177to convert the Connection() buffer object into a ACPI_RESOURCE. 3178 3179Miscellaneous/Tools/TestSuites: 3180------------------------------- 3181 3182Support for extended _HID names (Four alpha characters instead of three). 3183Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 3184Support for ACPI 5.0 features in the ASLTS test suite. 3185Fully updated documentation (ACPICA and iASL reference documents.) 3186 3187ACPI Table Definition Language: 3188------------------------------- 3189 3190Support for this language was implemented and released as a subsystem of 3191the 3192iASL compiler in 2010. (See the iASL compiler User Guide.) 3193 3194 3195Non-ACPI 5.0 changes for this release: 3196-------------------------------------- 3197 31981) ACPICA Core Subsystem: 3199 3200Fix a problem with operation region declarations where a failure can 3201occur 3202if 3203the region name and an argument that evaluates to an object (such as the 3204region address) are in different namespace scopes. Lin Ming, ACPICA BZ 3205937. 3206 3207Do not abort an ACPI table load if an invalid space ID is found within. 3208This 3209will be caught later if the offending method is executed. ACPICA BZ 925. 3210 3211Fixed an issue with the FFixedHW space ID where the ID was not always 3212recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 3213 3214Fixed a problem with the 32-bit generation of the unix-specific OSL 3215(osunixxf.c). Lin Ming, ACPICA BZ 936. 3216 3217Several changes made to enable generation with the GCC 4.6 compiler. 3218ACPICA BZ 3219935. 3220 3221New error messages: Unsupported I/O requests (not 8/16/32 bit), and 3222Index/Bank 3223field registers out-of-range. 3224 32252) iASL Compiler/Disassembler and Tools: 3226 3227iASL: Implemented the __PATH__ operator, which returns the full pathname 3228of 3229the current source file. 3230 3231AcpiHelp: Automatically display expanded keyword information for all ASL 3232operators. 3233 3234Debugger: Add "Template" command to disassemble/dump resource template 3235buffers. 3236 3237Added a new master script to generate and execute the ASLTS test suite. 3238Automatically handles 32- and 64-bit generation. See tests/aslts.sh 3239 3240iASL: Fix problem with listing generation during processing of the 3241Switch() 3242operator where AML listing was disabled until the entire Switch block was 3243completed. 3244 3245iASL: Improve support for semicolon statement terminators. Fix "invalid 3246character" message for some cases when the semicolon is used. Semicolons 3247are 3248now allowed after every <Term> grammar element. ACPICA BZ 927. 3249 3250iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 3251923. 3252 3253Disassembler: Fix problem with disassembly of the DataTableRegion 3254operator 3255where an inadvertent "Unhandled deferred opcode" message could be 3256generated. 3257 32583) Example Code and Data Size 3259 3260These are the sizes for the OS-independent acpica.lib produced by the 3261Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3262includes the debug output trace mechanism and has a much larger code and 3263data 3264size. 3265 3266 Previous Release: 3267 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3268 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3269 Current Release: 3270 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3271 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3272 3273---------------------------------------- 327422 September 2011. Summary of changes for version 20110922: 3275 32760) ACPI 5.0 News: 3277 3278Support for ACPI 5.0 in ACPICA has been underway for several months and 3279will 3280be released at the same time that ACPI 5.0 is officially released. 3281 3282The ACPI 5.0 specification is on track for release in the next few 3283months. 3284 32851) ACPICA Core Subsystem: 3286 3287Fixed a problem where the maximum sleep time for the Sleep() operator was 3288intended to be limited to two seconds, but was inadvertently limited to 328920 3290seconds instead. 3291 3292Linux and Unix makefiles: Added header file dependencies to ensure 3293correct 3294generation of ACPICA core code and utilities. Also simplified the 3295makefiles 3296considerably through the use of the vpath variable to specify search 3297paths. 3298ACPICA BZ 924. 3299 33002) iASL Compiler/Disassembler and Tools: 3301 3302iASL: Implemented support to check the access length for all fields 3303created to 3304access named Resource Descriptor fields. For example, if a resource field 3305is 3306defined to be two bits, a warning is issued if a CreateXxxxField() is 3307used 3308with an incorrect bit length. This is implemented for all current 3309resource 3310descriptor names. ACPICA BZ 930. 3311 3312Disassembler: Fixed a byte ordering problem with the output of 24-bit and 331356- 3314bit integers. 3315 3316iASL: Fixed a couple of issues associated with variable-length package 3317objects. 1) properly handle constants like One, Ones, Zero -- do not make 3318a 3319VAR_PACKAGE when these are used as a package length. 2) Allow the 3320VAR_PACKAGE 3321opcode (in addition to PACKAGE) when validating object types for 3322predefined 3323names. 3324 3325iASL: Emit statistics for all output files (instead of just the ASL input 3326and 3327AML output). Includes listings, hex files, etc. 3328 3329iASL: Added -G option to the table compiler to allow the compilation of 3330custom 3331ACPI tables. The only part of a table that is required is the standard 333236- 3333byte 3334ACPI header. 3335 3336AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 3337headers), 3338which also adds correct 64-bit support. Also, now all output filenames 3339are 3340completely lower case. 3341 3342AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 3343loading table files. A warning is issued for any such tables. The only 3344exception is an FADT. This also fixes a possible fault when attempting to 3345load 3346non-AML tables. ACPICA BZ 932. 3347 3348AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 3349a 3350missing table terminator could cause a fault when using the -p option. 3351 3352AcpiSrc: Fixed a possible divide-by-zero fault when generating file 3353statistics. 3354 33553) Example Code and Data Size 3356 3357These are the sizes for the OS-independent acpica.lib produced by the 3358Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3359includes the debug output trace mechanism and has a much larger code and 3360data 3361size. 3362 3363 Previous Release (VC 9.0): 3364 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3365 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3366 Current Release (VC 9.0): 3367 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3368 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3369 3370 3371---------------------------------------- 337223 June 2011. Summary of changes for version 20110623: 3373 33741) ACPI CA Core Subsystem: 3375 3376Updated the predefined name repair mechanism to not attempt repair of a 3377_TSS 3378return object if a _PSS object is present. We can only sort the _TSS 3379return 3380package if there is no _PSS within the same scope. This is because if 3381_PSS 3382is 3383present, the ACPI specification dictates that the _TSS Power Dissipation 3384field 3385is to be ignored, and therefore some BIOSs leave garbage values in the 3386_TSS 3387Power field(s). In this case, it is best to just return the _TSS package 3388as- 3389is. Reported by, and fixed with assistance from Fenghua Yu. 3390 3391Added an option to globally disable the control method return value 3392validation 3393and repair. This runtime option can be used to disable return value 3394repair 3395if 3396this is causing a problem on a particular machine. Also added an option 3397to 3398AcpiExec (-dr) to set this disable flag. 3399 3400All makefiles and project files: Major changes to improve generation of 3401ACPICA 3402tools. ACPICA BZ 912: 3403 Reduce default optimization levels to improve compatibility 3404 For Linux, add strict-aliasing=0 for gcc 4 3405 Cleanup and simplify use of command line defines 3406 Cleanup multithread library support 3407 Improve usage messages 3408 3409Linux-specific header: update handling of THREAD_ID and pthread. For the 341032- 3411bit case, improve casting to eliminate possible warnings, especially with 3412the 3413acpica tools. 3414 3415Example Code and Data Size: These are the sizes for the OS-independent 3416acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3417debug 3418version of the code includes the debug output trace mechanism and has a 3419much 3420larger code and data size. 3421 3422 Previous Release (VC 9.0): 3423 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3424 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3425 Current Release (VC 9.0): 3426 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3427 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3428 34292) iASL Compiler/Disassembler and Tools: 3430 3431With this release, a new utility named "acpihelp" has been added to the 3432ACPICA 3433package. This utility summarizes the ACPI specification chapters for the 3434ASL 3435and AML languages. It generates under Linux/Unix as well as Windows, and 3436provides the following functionality: 3437 Find/display ASL operator(s) -- with description and syntax. 3438 Find/display ASL keyword(s) -- with exact spelling and descriptions. 3439 Find/display ACPI predefined name(s) -- with description, number 3440 of arguments, and the return value data type. 3441 Find/display AML opcode name(s) -- with opcode, arguments, and 3442grammar. 3443 Decode/display AML opcode -- with opcode name, arguments, and 3444grammar. 3445 3446Service Layers: Make multi-thread support configurable. Conditionally 3447compile 3448the multi-thread support so that threading libraries will not be linked 3449if 3450not 3451necessary. The only tool that requires multi-thread support is AcpiExec. 3452 3453iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 3454of 3455Bison appear to want the interface to yyerror to be a const char * (or at 3456least this is a problem when generating iASL on some systems.) ACPICA BZ 3457923 3458Pierre Lejeune. 3459 3460Tools: Fix for systems where O_BINARY is not defined. Only used for 3461Windows 3462versions of the tools. 3463 3464---------------------------------------- 346527 May 2011. Summary of changes for version 20110527: 3466 34671) ACPI CA Core Subsystem: 3468 3469ASL Load() operator: Reinstate most restrictions on the incoming ACPI 3470table 3471signature. Now, only allow SSDT, OEMx, and a null signature. History: 3472 1) Originally, we checked the table signature for "SSDT" or "PSDT". 3473 (PSDT is now obsolete.) 3474 2) We added support for OEMx tables, signature "OEM" plus a fourth 3475 "don't care" character. 3476 3) Valid tables were encountered with a null signature, so we just 3477 gave up on validating the signature, (05/2008). 3478 4) We encountered non-AML tables such as the MADT, which caused 3479 interpreter errors and kernel faults. So now, we once again allow 3480 only SSDT, OEMx, and now, also a null signature. (05/2011). 3481 3482Added the missing _TDL predefined name to the global name list in order 3483to 3484enable validation. Affects both the core ACPICA code and the iASL 3485compiler. 3486 3487Example Code and Data Size: These are the sizes for the OS-independent 3488acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3489debug 3490version of the code includes the debug output trace mechanism and has a 3491much 3492larger code and data size. 3493 3494 Previous Release (VC 9.0): 3495 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3496 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3497 Current Release (VC 9.0): 3498 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3499 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3500 35012) iASL Compiler/Disassembler and Tools: 3502 3503Debugger/AcpiExec: Implemented support for "complex" method arguments on 3504the 3505debugger command line. This adds support beyond simple integers -- 3506including 3507Strings, Buffers, and Packages. Includes support for nested packages. 3508Increased the default command line buffer size to accommodate these 3509arguments. 3510See the ACPICA reference for details and syntax. ACPICA BZ 917. 3511 3512Debugger/AcpiExec: Implemented support for "default" method arguments for 3513the 3514Execute/Debug command. Now, the debugger will always invoke a control 3515method 3516with the required number of arguments -- even if the command line 3517specifies 3518none or insufficient arguments. It uses default integer values for any 3519missing 3520arguments. Also fixes a bug where only six method arguments maximum were 3521supported instead of the required seven. 3522 3523Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 3524and 3525also return status in order to prevent buffer overruns. See the ACPICA 3526reference for details and syntax. ACPICA BZ 921 3527 3528iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 3529makefiles to simplify support for the two different but similar parser 3530generators, bison and yacc. 3531 3532Updated the generic unix makefile for gcc 4. The default gcc version is 3533now 3534expected to be 4 or greater, since options specific to gcc 4 are used. 3535 3536---------------------------------------- 353713 April 2011. Summary of changes for version 20110413: 3538 35391) ACPI CA Core Subsystem: 3540 3541Implemented support to execute a so-called "orphan" _REG method under the 3542EC 3543device. This change will force the execution of a _REG method underneath 3544the 3545EC 3546device even if there is no corresponding operation region of type 3547EmbeddedControl. Fixes a problem seen on some machines and apparently is 3548compatible with Windows behavior. ACPICA BZ 875. 3549 3550Added more predefined methods that are eligible for automatic NULL 3551package 3552element removal. This change adds another group of predefined names to 3553the 3554list 3555of names that can be repaired by having NULL package elements dynamically 3556removed. This group are those methods that return a single variable- 3557length 3558package containing simple data types such as integers, buffers, strings. 3559This 3560includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 3561_PSL, 3562_Sx, 3563and _TZD. ACPICA BZ 914. 3564 3565Split and segregated all internal global lock functions to a new file, 3566evglock.c. 3567 3568Updated internal address SpaceID for DataTable regions. Moved this 3569internal 3570space 3571id in preparation for ACPI 5.0 changes that will include some new space 3572IDs. 3573This 3574change should not affect user/host code. 3575 3576Example Code and Data Size: These are the sizes for the OS-independent 3577acpica.lib 3578produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3579version of 3580the code includes the debug output trace mechanism and has a much larger 3581code 3582and 3583data size. 3584 3585 Previous Release (VC 9.0): 3586 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3587 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3588 Current Release (VC 9.0): 3589 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3590 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3591 35922) iASL Compiler/Disassembler and Tools: 3593 3594iASL/DTC: Major update for new grammar features. Allow generic data types 3595in 3596custom ACPI tables. Field names are now optional. Any line can be split 3597to 3598multiple lines using the continuation char (\). Large buffers now use 3599line- 3600continuation character(s) and no colon on the continuation lines. See the 3601grammar 3602update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 3603Moore. 3604 3605iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 3606statements. 3607Since the parser stuffs a "zero" as the return value for these statements 3608(due 3609to 3610the underlying AML grammar), they were seen as "return with value" by the 3611iASL 3612semantic checking. They are now seen correctly as "null" return 3613statements. 3614 3615iASL: Check if a_REG declaration has a corresponding Operation Region. 3616Adds a 3617check for each _REG to ensure that there is in fact a corresponding 3618operation 3619region declaration in the same scope. If not, the _REG method is not very 3620useful 3621since it probably won't be executed. ACPICA BZ 915. 3622 3623iASL/DTC: Finish support for expression evaluation. Added a new 3624expression 3625parser 3626that implements c-style operator precedence and parenthesization. ACPICA 3627bugzilla 3628908. 3629 3630Disassembler/DTC: Remove support for () and <> style comments in data 3631tables. 3632Now 3633that DTC has full expression support, we don't want to have comment 3634strings 3635that 3636start with a parentheses or a less-than symbol. Now, only the standard /* 3637and 3638// 3639comments are supported, as well as the bracket [] comments. 3640 3641AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 3642"unusual" 3643headers in the acpidump file. Update the header validation to support 3644these 3645tables. Problem introduced in previous AcpiXtract version in the change 3646to 3647support "wrong checksum" error messages emitted by acpidump utility. 3648 3649iASL: Add a * option to generate all template files (as a synonym for 3650ALL) 3651as 3652in 3653"iasl -T *" or "iasl -T ALL". 3654 3655iASL/DTC: Do not abort compiler on fatal errors. We do not want to 3656completely 3657abort the compiler on "fatal" errors, simply should abort the current 3658compile. 3659This allows multiple compiles with a single (possibly wildcard) compiler 3660invocation. 3661 3662---------------------------------------- 366316 March 2011. Summary of changes for version 20110316: 3664 36651) ACPI CA Core Subsystem: 3666 3667Fixed a problem caused by a _PRW method appearing at the namespace root 3668scope 3669during the setup of wake GPEs. A fault could occur if a _PRW directly 3670under 3671the 3672root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 3673 3674Implemented support for "spurious" Global Lock interrupts. On some 3675systems, a 3676global lock interrupt can occur without the pending flag being set. Upon 3677a 3678GL 3679interrupt, we now ensure that a thread is actually waiting for the lock 3680before 3681signaling GL availability. Rafael Wysocki, Bob Moore. 3682 3683Example Code and Data Size: These are the sizes for the OS-independent 3684acpica.lib 3685produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3686version of 3687the code includes the debug output trace mechanism and has a much larger 3688code 3689and 3690data size. 3691 3692 Previous Release (VC 9.0): 3693 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3694 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3695 Current Release (VC 9.0): 3696 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3697 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3698 36992) iASL Compiler/Disassembler and Tools: 3700 3701Implemented full support for the "SLIC" ACPI table. Includes support in 3702the 3703header files, disassembler, table compiler, and template generator. Bob 3704Moore, 3705Lin Ming. 3706 3707AcpiXtract: Correctly handle embedded comments and messages from 3708AcpiDump. 3709Apparently some or all versions of acpidump will occasionally emit a 3710comment 3711like 3712"Wrong checksum", etc., into the dump file. This was causing problems for 3713AcpiXtract. ACPICA BZ 905. 3714 3715iASL: Fix the Linux makefile by removing an inadvertent double file 3716inclusion. 3717ACPICA BZ 913. 3718 3719AcpiExec: Update installation of operation region handlers. Install one 3720handler 3721for a user-defined address space. This is used by the ASL test suite 3722(ASLTS). 3723 3724---------------------------------------- 372511 February 2011. Summary of changes for version 20110211: 3726 37271) ACPI CA Core Subsystem: 3728 3729Added a mechanism to defer _REG methods for some early-installed 3730handlers. 3731Most user handlers should be installed before call to 3732AcpiEnableSubsystem. 3733However, Event handlers and region handlers should be installed after 3734AcpiInitializeObjects. Override handlers for the "default" regions should 3735be 3736installed early, however. This change executes all _REG methods for the 3737default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 3738chicken/egg issues between them. ACPICA BZ 848. 3739 3740Implemented an optimization for GPE detection. This optimization will 3741simply 3742ignore GPE registers that contain no enabled GPEs -- there is no need to 3743read the register since this information is available internally. This 3744becomes more important on machines with a large GPE space. ACPICA 3745bugzilla 3746884. Lin Ming. Suggestion from Joe Liu. 3747 3748Removed all use of the highly unreliable FADT revision field. The 3749revision 3750number in the FADT has been found to be completely unreliable and cannot 3751be 3752trusted. Only the actual table length can be used to infer the version. 3753This 3754change updates the ACPICA core and the disassembler so that both no 3755longer 3756even look at the FADT version and instead depend solely upon the FADT 3757length. 3758 3759Fix an unresolved name issue for the no-debug and no-error-message source 3760generation cases. The _AcpiModuleName was left undefined in these cases, 3761but 3762it is actually needed as a parameter to some interfaces. Define 3763_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 3764 3765Split several large files (makefiles and project files updated) 3766 utglobal.c -> utdecode.c 3767 dbcomds.c -> dbmethod.c dbnames.c 3768 dsopcode.c -> dsargs.c dscontrol.c 3769 dsload.c -> dsload2.c 3770 aslanalyze.c -> aslbtypes.c aslwalks.c 3771 3772Example Code and Data Size: These are the sizes for the OS-independent 3773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3774debug version of the code includes the debug output trace mechanism and 3775has 3776a much larger code and data size. 3777 3778 Previous Release (VC 9.0): 3779 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3780 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3781 Current Release (VC 9.0): 3782 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3783 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3784 37852) iASL Compiler/Disassembler and Tools: 3786 3787iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 3788These are useful C-style macros with the standard definitions. ACPICA 3789bugzilla 898. 3790 3791iASL/DTC: Added support for integer expressions and labels. Support for 3792full 3793expressions for all integer fields in all ACPI tables. Support for labels 3794in 3795"generic" portions of tables such as UEFI. See the iASL reference manual. 3796 3797Debugger: Added a command to display the status of global handlers. The 3798"handlers" command will display op region, fixed event, and miscellaneous 3799global handlers. installation status -- and for op regions, whether 3800default 3801or user-installed handler will be used. 3802 3803iASL: Warn if reserved method incorrectly returns a value. Many 3804predefined 3805names are defined such that they do not return a value. If implemented as 3806a 3807method, issue a warning if such a name explicitly returns a value. ACPICA 3808Bugzilla 855. 3809 3810iASL: Added detection of GPE method name conflicts. Detects a conflict 3811where 3812there are two GPE methods of the form _Lxy and _Exy in the same scope. 3813(For 3814example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 3815 3816iASL/DTC: Fixed a couple input scanner issues with comments and line 3817numbers. Comment remover could get confused and miss a comment ending. 3818Fixed 3819a problem with line counter maintenance. 3820 3821iASL/DTC: Reduced the severity of some errors from fatal to error. There 3822is 3823no need to abort on simple errors within a field definition. 3824 3825Debugger: Simplified the output of the help command. All help output now 3826in 3827a single screen, instead of help subcommands. ACPICA Bugzilla 897. 3828 3829---------------------------------------- 383012 January 2011. Summary of changes for version 20110112: 3831 38321) ACPI CA Core Subsystem: 3833 3834Fixed a race condition between method execution and namespace walks that 3835can 3836possibly cause a fault. The problem was apparently introduced in version 383720100528 as a result of a performance optimization that reduces the 3838number 3839of 3840namespace walks upon method exit by using the delete_namespace_subtree 3841function instead of the delete_namespace_by_owner function used 3842previously. 3843Bug is a missing namespace lock in the delete_namespace_subtree function. 3844dana.myers@oracle.com 3845 3846Fixed several issues and a possible fault with the automatic "serialized" 3847method support. History: This support changes a method to "serialized" on 3848the 3849fly if the method generates an AE_ALREADY_EXISTS error, indicating the 3850possibility that it cannot handle reentrancy. This fix repairs a couple 3851of 3852issues seen in the field, especially on machines with many cores: 3853 3854 1) Delete method children only upon the exit of the last thread, 3855 so as to not delete objects out from under other running threads 3856 (and possibly causing a fault.) 3857 2) Set the "serialized" bit for the method only upon the exit of the 3858 Last thread, so as to not cause deadlock when running threads 3859 attempt to exit. 3860 3) Cleanup the use of the AML "MethodFlags" and internal method flags 3861 so that there is no longer any confusion between the two. 3862 3863 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 3864 3865Debugger: Now lock the namespace for duration of a namespace dump. 3866Prevents 3867issues if the namespace is changing dynamically underneath the debugger. 3868Especially affects temporary namespace nodes, since the debugger displays 3869these also. 3870 3871Updated the ordering of include files. The ACPICA headers should appear 3872before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 3873set 3874any necessary compiler-specific defines, etc. Affects the ACPI-related 3875tools 3876and utilities. 3877 3878Updated all ACPICA copyrights and signons to 2011. Added the 2011 3879copyright 3880to all module headers and signons, including the Linux header. This 3881affects 3882virtually every file in the ACPICA core subsystem, iASL compiler, and all 3883utilities. 3884 3885Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 3886project files for VC++ 6.0 are now obsolete. New project files can be 3887found 3888under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 3889details. 3890 3891Example Code and Data Size: These are the sizes for the OS-independent 3892acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3893debug version of the code includes the debug output trace mechanism and 3894has a 3895much larger code and data size. 3896 3897 Previous Release (VC 6.0): 3898 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3899 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3900 Current Release (VC 9.0): 3901 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3902 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3903 39042) iASL Compiler/Disassembler and Tools: 3905 3906iASL: Added generic data types to the Data Table compiler. Add "generic" 3907data 3908types such as UINT32, String, Unicode, etc., to simplify the generation 3909of 3910platform-defined tables such as UEFI. Lin Ming. 3911 3912iASL: Added listing support for the Data Table Compiler. Adds listing 3913support 3914(-l) to display actual binary output for each line of input code. 3915 3916---------------------------------------- 391709 December 2010. Summary of changes for version 20101209: 3918 39191) ACPI CA Core Subsystem: 3920 3921Completed the major overhaul of the GPE support code that was begun in 3922July 39232010. Major features include: removal of _PRW execution in ACPICA (host 3924executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 3925changes to existing interfaces, simplification of GPE handler operation, 3926and 3927a handful of new interfaces: 3928 3929 AcpiUpdateAllGpes 3930 AcpiFinishGpe 3931 AcpiSetupGpeForWake 3932 AcpiSetGpeWakeMask 3933 One new file, evxfgpe.c to consolidate all external GPE interfaces. 3934 3935See the ACPICA Programmer Reference for full details and programming 3936information. See the new section 4.4 "General Purpose Event (GPE) 3937Support" 3938for a full overview, and section 8.7 "ACPI General Purpose Event 3939Management" 3940for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 3941Ming, 3942Bob Moore, Rafael Wysocki. 3943 3944Implemented a new GPE feature for Windows compatibility, the "Implicit 3945Wake 3946GPE Notify". This feature will automatically issue a Notify(2) on a 3947device 3948when a Wake GPE is received if there is no corresponding GPE method or 3949handler. ACPICA BZ 870. 3950 3951Fixed a problem with the Scope() operator during table parse and load 3952phase. 3953During load phase (table load or method execution), the scope operator 3954should 3955not enter the target into the namespace. Instead, it should open a new 3956scope 3957at the target location. Linux BZ 19462, ACPICA BZ 882. 3958 3959Example Code and Data Size: These are the sizes for the OS-independent 3960acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3961debug version of the code includes the debug output trace mechanism and 3962has a 3963much larger code and data size. 3964 3965 Previous Release: 3966 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3967 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3968 Current Release: 3969 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3970 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3971 39722) iASL Compiler/Disassembler and Tools: 3973 3974iASL: Relax the alphanumeric restriction on _CID strings. These strings 3975are 3976"bus-specific" per the ACPI specification, and therefore any characters 3977are 3978acceptable. The only checks that can be performed are for a null string 3979and 3980perhaps for a leading asterisk. ACPICA BZ 886. 3981 3982iASL: Fixed a problem where a syntax error that caused a premature EOF 3983condition on the source file emitted a very confusing error message. The 3984premature EOF is now detected correctly. ACPICA BZ 891. 3985 3986Disassembler: Decode the AccessSize within a Generic Address Structure 3987(byte 3988access, word access, etc.) Note, this field does not allow arbitrary bit 3989access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 3990 3991New: AcpiNames utility - Example namespace dump utility. Shows an example 3992of 3993ACPICA configuration for a minimal namespace dump utility. Uses table and 3994namespace managers, but no AML interpreter. Does not add any 3995functionality 3996over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 3997partition and configure ACPICA. ACPICA BZ 883. 3998 3999AML Debugger: Increased the debugger buffer size for method return 4000objects. 4001Was 4K, increased to 16K. Also enhanced error messages for debugger 4002method 4003execution, including the buffer overflow case. 4004 4005---------------------------------------- 400613 October 2010. Summary of changes for version 20101013: 4007 40081) ACPI CA Core Subsystem: 4009 4010Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4011now 4012clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4013HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4014 4015Changed the type of the predefined namespace object _TZ from ThermalZone 4016to 4017Device. This was found to be confusing to the host software that 4018processes 4019the various thermal zones, since _TZ is not really a ThermalZone. 4020However, 4021a 4022Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4023Zhang. 4024 4025Added Windows Vista SP2 to the list of supported _OSI strings. The actual 4026string is "Windows 2006 SP2". 4027 4028Eliminated duplicate code in AcpiUtExecute* functions. Now that the 4029nsrepair 4030code automatically repairs _HID-related strings, this type of code is no 4031longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4032878. 4033 4034Example Code and Data Size: These are the sizes for the OS-independent 4035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4036debug version of the code includes the debug output trace mechanism and 4037has a 4038much larger code and data size. 4039 4040 Previous Release: 4041 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4042 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4043 Current Release: 4044 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4045 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4046 40472) iASL Compiler/Disassembler and Tools: 4048 4049iASL: Implemented additional compile-time validation for _HID strings. 4050The 4051non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4052length 4053of 4054the string must be exactly seven or eight characters. For both _HID and 4055_CID 4056strings, all characters must be alphanumeric. ACPICA BZ 874. 4057 4058iASL: Allow certain "null" resource descriptors. Some BIOS code creates 4059descriptors that are mostly or all zeros, with the expectation that they 4060will 4061be filled in at runtime. iASL now allows this as long as there is a 4062"resource 4063tag" (name) associated with the descriptor, which gives the ASL a handle 4064needed to modify the descriptor. ACPICA BZ 873. 4065 4066Added single-thread support to the generic Unix application OSL. 4067Primarily 4068for iASL support, this change removes the use of semaphores in the 4069single- 4070threaded ACPICA tools/applications - increasing performance. The 4071_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 4072option. ACPICA BZ 879. 4073 4074AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 4075support 4076for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 4077 4078iASL: Moved all compiler messages to a new file, aslmessages.h. 4079 4080---------------------------------------- 408115 September 2010. Summary of changes for version 20100915: 4082 40831) ACPI CA Core Subsystem: 4084 4085Removed the AcpiOsDerivePciId OSL interface. The various host 4086implementations 4087of this function were not OS-dependent and are now obsolete and can be 4088removed from all host OSLs. This function has been replaced by 4089AcpiHwDerivePciId, which is now part of the ACPICA core code. 4090AcpiHwDerivePciId has been implemented without recursion. Adds one new 4091module, hwpci.c. ACPICA BZ 857. 4092 4093Implemented a dynamic repair for _HID and _CID strings. The following 4094problems are now repaired at runtime: 1) Remove a leading asterisk in the 4095string, and 2) the entire string is uppercased. Both repairs are in 4096accordance with the ACPI specification and will simplify host driver 4097code. 4098ACPICA BZ 871. 4099 4100The ACPI_THREAD_ID type is no longer configurable, internally it is now 4101always UINT64. This simplifies the ACPICA code, especially any printf 4102output. 4103UINT64 is the only common data type for all thread_id types across all 4104operating systems. It is now up to the host OSL to cast the native 4105thread_id 4106type to UINT64 before returning the value to ACPICA (via 4107AcpiOsGetThreadId). 4108Lin Ming, Bob Moore. 4109 4110Added the ACPI_INLINE type to enhance the ACPICA configuration. The 4111"inline" 4112keyword is not standard across compilers, and this type allows inline to 4113be 4114configured on a per-compiler basis. Lin Ming. 4115 4116Made the system global AcpiGbl_SystemAwakeAndRunning publically 4117available. 4118Added an extern for this boolean in acpixf.h. Some hosts utilize this 4119value 4120during suspend/restore operations. ACPICA BZ 869. 4121 4122All code that implements error/warning messages with the "ACPI:" prefix 4123has 4124been moved to a new module, utxferror.c. 4125 4126The UINT64_OVERLAY was moved to utmath.c, which is the only module where 4127it 4128is used. ACPICA BZ 829. Lin Ming, Bob Moore. 4129 4130Example Code and Data Size: These are the sizes for the OS-independent 4131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4132debug version of the code includes the debug output trace mechanism and 4133has a 4134much larger code and data size. 4135 4136 Previous Release: 4137 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4138 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4139 Current Release: 4140 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4141 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4142 41432) iASL Compiler/Disassembler and Tools: 4144 4145iASL/Disassembler: Write ACPI errors to stderr instead of the output 4146file. 4147This keeps the output files free of random error messages that may 4148originate 4149from within the namespace/interpreter code. Used this opportunity to 4150merge 4151all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 4152866. Lin Ming, Bob Moore. 4153 4154Tools: update some printfs for ansi warnings on size_t. Handle width 4155change 4156of size_t on 32-bit versus 64-bit generations. Lin Ming. 4157 4158---------------------------------------- 415906 August 2010. Summary of changes for version 20100806: 4160 41611) ACPI CA Core Subsystem: 4162 4163Designed and implemented a new host interface to the _OSI support code. 4164This 4165will allow the host to dynamically add or remove multiple _OSI strings, 4166as 4167well as install an optional handler that is called for each _OSI 4168invocation. 4169Also added a new AML debugger command, 'osi' to display and modify the 4170global 4171_OSI string table, and test support in the AcpiExec utility. See the 4172ACPICA 4173reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 4174New Functions: 4175 AcpiInstallInterface - Add an _OSI string. 4176 AcpiRemoveInterface - Delete an _OSI string. 4177 AcpiInstallInterfaceHandler - Install optional _OSI handler. 4178Obsolete Functions: 4179 AcpiOsValidateInterface - no longer used. 4180New Files: 4181 source/components/utilities/utosi.c 4182 4183Re-introduced the support to enable multi-byte transfers for Embedded 4184Controller (EC) operation regions. A reported problem was found to be a 4185bug 4186in the host OS, not in the multi-byte support. Previously, the maximum 4187data 4188size passed to the EC operation region handler was a single byte. There 4189are 4190often EC Fields larger than one byte that need to be transferred, and it 4191is 4192useful for the EC driver to lock these as a single transaction. This 4193change 4194enables single transfers larger than 8 bits. This effectively changes the 4195access to the EC space from ByteAcc to AnyAcc, and will probably require 4196changes to the host OS Embedded Controller driver to enable 16/32/64/256- 4197bit 4198transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 4199 4200Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 4201prototype in acpiosxf.h had the output value pointer as a (void *). 4202It should be a (UINT64 *). This may affect some host OSL code. 4203 4204Fixed a couple problems with the recently modified Linux makefiles for 4205iASL 4206and AcpiExec. These new makefiles place the generated object files in the 4207local directory so that there can be no collisions between the files that 4208are 4209shared between them that are compiled with different options. 4210 4211Example Code and Data Size: These are the sizes for the OS-independent 4212acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4213debug version of the code includes the debug output trace mechanism and 4214has a 4215much larger code and data size. 4216 4217 Previous Release: 4218 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4219 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4220 Current Release: 4221 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4222 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4223 42242) iASL Compiler/Disassembler and Tools: 4225 4226iASL/Disassembler: Added a new option (-da, "disassemble all") to load 4227the 4228namespace from and disassemble an entire group of AML files. Useful for 4229loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 4230and 4231disassembling with one simple command. ACPICA BZ 865. Lin Ming. 4232 4233iASL: Allow multiple invocations of -e option. This change allows 4234multiple 4235uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 4236834. 4237Lin Ming. 4238 4239---------------------------------------- 424002 July 2010. Summary of changes for version 20100702: 4241 42421) ACPI CA Core Subsystem: 4243 4244Implemented several updates to the recently added GPE reference count 4245support. The model for "wake" GPEs is changing to give the host OS 4246complete 4247control of these GPEs. Eventually, the ACPICA core will not execute any 4248_PRW 4249methods, since the host already must execute them. Also, additional 4250changes 4251were made to help ensure that the reference counts are kept in proper 4252synchronization with reality. Rafael J. Wysocki. 4253 42541) Ensure that GPEs are not enabled twice during initialization. 42552) Ensure that GPE enable masks stay in sync with the reference count. 42563) Do not inadvertently enable GPEs when writing GPE registers. 42574) Remove the internal wake reference counter and add new AcpiGpeWakeup 4258interface. This interface will set or clear individual GPEs for wakeup. 42595) Remove GpeType argument from AcpiEnable and AcpiDisable. These 4260interfaces 4261are now used for "runtime" GPEs only. 4262 4263Changed the behavior of the GPE install/remove handler interfaces. The 4264GPE 4265is 4266no longer disabled during this process, as it was found to cause problems 4267on 4268some machines. Rafael J. Wysocki. 4269 4270Reverted a change introduced in version 20100528 to enable Embedded 4271Controller multi-byte transfers. This change was found to cause problems 4272with 4273Index Fields and possibly Bank Fields. It will be reintroduced when these 4274problems have been resolved. 4275 4276Fixed a problem with references to Alias objects within Package Objects. 4277A 4278reference to an Alias within the definition of a Package was not always 4279resolved properly. Aliases to objects like Processors, Thermal zones, 4280etc. 4281were resolved to the actual object instead of a reference to the object 4282as 4283it 4284should be. Package objects are only allowed to contain integer, string, 4285buffer, package, and reference objects. Redhat bugzilla 608648. 4286 4287Example Code and Data Size: These are the sizes for the OS-independent 4288acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4289debug version of the code includes the debug output trace mechanism and 4290has a 4291much larger code and data size. 4292 4293 Previous Release: 4294 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4295 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4296 Current Release: 4297 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4298 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4299 43002) iASL Compiler/Disassembler and Tools: 4301 4302iASL: Implemented a new compiler subsystem to allow definition and 4303compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 4304These 4305are called "ACPI Data Tables", and the new compiler is the "Data Table 4306Compiler". This compiler is intended to simplify the existing error-prone 4307process of creating these tables for the BIOS, as well as allowing the 4308disassembly, modification, recompilation, and override of existing ACPI 4309data 4310tables. See the iASL User Guide for detailed information. 4311 4312iASL: Implemented a new Template Generator option in support of the new 4313Data 4314Table Compiler. This option will create examples of all known ACPI tables 4315that can be used as the basis for table development. See the iASL 4316documentation and the -T option. 4317 4318Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 4319Descriptor Table). 4320 4321Updated the Linux makefiles for iASL and AcpiExec to place the generated 4322object files in the local directory so that there can be no collisions 4323between the shared files between them that are generated with different 4324options. 4325 4326Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 4327Use 4328the #define __APPLE__ to enable this support. 4329 4330---------------------------------------- 433128 May 2010. Summary of changes for version 20100528: 4332 4333Note: The ACPI 4.0a specification was released on April 5, 2010 and is 4334available at www.acpi.info. This is primarily an errata release. 4335 43361) ACPI CA Core Subsystem: 4337 4338Undefined ACPI tables: We are looking for the definitions for the 4339following 4340ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 4341 4342Implemented support to enable multi-byte transfers for Embedded 4343Controller 4344(EC) operation regions. Previously, the maximum data size passed to the 4345EC 4346operation region handler was a single byte. There are often EC Fields 4347larger 4348than one byte that need to be transferred, and it is useful for the EC 4349driver 4350to lock these as a single transaction. This change enables single 4351transfers 4352larger than 8 bits. This effectively changes the access to the EC space 4353from 4354ByteAcc to AnyAcc, and will probably require changes to the host OS 4355Embedded 4356Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 4357bit 4358transfers. Alexey Starikovskiy, Lin Ming 4359 4360Implemented a performance enhancement for namespace search and access. 4361This 4362change enhances the performance of namespace searches and walks by adding 4363a 4364backpointer to the parent in each namespace node. On large namespaces, 4365this 4366change can improve overall ACPI performance by up to 9X. Adding a pointer 4367to 4368each namespace node increases the overall size of the internal namespace 4369by 4370about 5%, since each namespace entry usually consists of both a namespace 4371node and an ACPI operand object. However, this is the first growth of the 4372namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 4373 4374Implemented a performance optimization that reduces the number of 4375namespace 4376walks. On control method exit, only walk the namespace if the method is 4377known 4378to have created namespace objects outside of its local scope. Previously, 4379the 4380entire namespace was traversed on each control method exit. This change 4381can 4382improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 4383Moore. 4384 4385Added support to truncate I/O addresses to 16 bits for Windows 4386compatibility. 4387Some ASL code has been seen in the field that inadvertently has bits set 4388above bit 15. This feature is optional and is enabled if the BIOS 4389requests 4390any Windows OSI strings. It can also be enabled by the host OS. Matthew 4391Garrett, Bob Moore. 4392 4393Added support to limit the maximum time for the ASL Sleep() operator. To 4394prevent accidental deep sleeps, limit the maximum time that Sleep() will 4395actually sleep. Configurable, the default maximum is two seconds. ACPICA 4396bugzilla 854. 4397 4398Added run-time validation support for the _WDG and_WED Microsoft 4399predefined 4400methods. These objects are defined by "Windows Instrumentation", and are 4401not 4402part of the ACPI spec. ACPICA BZ 860. 4403 4404Expanded all statistic counters used during namespace and device 4405initialization from 16 to 32 bits in order to support very large 4406namespaces. 4407 4408Replaced all instances of %d in printf format specifiers with %u since 4409nearly 4410all integers in ACPICA are unsigned. 4411 4412Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 4413returned 4414as AE_NO_HANDLER. 4415 4416Example Code and Data Size: These are the sizes for the OS-independent 4417acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4418debug version of the code includes the debug output trace mechanism and 4419has a 4420much larger code and data size. 4421 4422 Previous Release: 4423 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4424 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4425 Current Release: 4426 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4427 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4428 44292) iASL Compiler/Disassembler and Tools: 4430 4431iASL: Added compiler support for the _WDG and_WED Microsoft predefined 4432methods. These objects are defined by "Windows Instrumentation", and are 4433not 4434part of the ACPI spec. ACPICA BZ 860. 4435 4436AcpiExec: added option to disable the memory tracking mechanism. The -dt 4437option will disable the tracking mechanism, which improves performance 4438considerably. 4439 4440AcpiExec: Restructured the command line options into -d (disable) and -e 4441(enable) options. 4442 4443---------------------------------------- 444428 April 2010. Summary of changes for version 20100428: 4445 44461) ACPI CA Core Subsystem: 4447 4448Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 4449including FADT-based and GPE Block Devices, execute any _PRW methods in 4450the 4451new table, and process any _Lxx/_Exx GPE methods in the new table. Any 4452runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 4453immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 4454Devices. Provides compatibility with other ACPI implementations. Two new 4455files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 4456Moore. 4457 4458Fixed a regression introduced in version 20100331 within the table 4459manager 4460where initial table loading could fail. This was introduced in the fix 4461for 4462AcpiReallocateRootTable. Also, renamed some of fields in the table 4463manager 4464data structures to clarify their meaning and use. 4465 4466Fixed a possible allocation overrun during internal object copy in 4467AcpiUtCopySimpleObject. The original code did not correctly handle the 4468case 4469where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 4470847. 4471 4472Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 4473possible access beyond end-of-allocation. Also, now fully validate 4474descriptor 4475(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 4476 4477Example Code and Data Size: These are the sizes for the OS-independent 4478acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4479debug version of the code includes the debug output trace mechanism and 4480has a 4481much larger code and data size. 4482 4483 Previous Release: 4484 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4485 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4486 Current Release: 4487 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4488 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4489 44902) iASL Compiler/Disassembler and Tools: 4491 4492iASL: Implemented Min/Max/Len/Gran validation for address resource 4493descriptors. This change implements validation for the address fields 4494that 4495are common to all address-type resource descriptors. These checks are 4496implemented: Checks for valid Min/Max, length within the Min/Max window, 4497valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 4498per 4499table 6-40 in the ACPI 4.0a specification. Also split the large 4500aslrestype1.c 4501and aslrestype2.c files into five new files. ACPICA BZ 840. 4502 4503iASL: Added support for the _Wxx predefined names. This support was 4504missing 4505and these names were not recognized by the compiler as valid predefined 4506names. ACPICA BZ 851. 4507 4508iASL: Added an error for all predefined names that are defined to return 4509no 4510value and thus must be implemented as Control Methods. These include all 4511of 4512the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 4513names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 4514 4515iASL: Implemented the -ts option to emit hex AML data in ASL format, as 4516an 4517ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 4518be 4519dynamically loaded via the Load() operator. Also cleaned up output for 4520the 4521- 4522ta and -tc options. ACPICA BZ 853. 4523 4524Tests: Added a new file with examples of extended iASL error checking. 4525Demonstrates the advanced error checking ability of the iASL compiler. 4526Available at tests/misc/badcode.asl. 4527 4528---------------------------------------- 452931 March 2010. Summary of changes for version 20100331: 4530 45311) ACPI CA Core Subsystem: 4532 4533Completed a major update for the GPE support in order to improve support 4534for 4535shared GPEs and to simplify both host OS and ACPICA code. Added a 4536reference 4537count mechanism to support shared GPEs that require multiple device 4538drivers. 4539Several external interfaces have changed. One external interface has been 4540removed. One new external interface was added. Most of the GPE external 4541interfaces now use the GPE spinlock instead of the events mutex (and the 4542Flags parameter for many GPE interfaces has been removed.) See the 4543updated 4544ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 4545Rafael 4546Wysocki. ACPICA BZ 831. 4547 4548Changed: 4549 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 4550Removed: 4551 AcpiSetGpeType 4552New: 4553 AcpiSetGpe 4554 4555Implemented write support for DataTable operation regions. These regions 4556are 4557defined via the DataTableRegion() operator. Previously, only read support 4558was 4559implemented. The ACPI specification allows DataTableRegions to be 4560read/write, 4561however. 4562 4563Implemented a new subsystem option to force a copy of the DSDT to local 4564memory. Optionally copy the entire DSDT to local memory (instead of 4565simply 4566mapping it.) There are some (albeit very rare) BIOSs that corrupt or 4567replace 4568the original DSDT, creating the need for this option. Default is FALSE, 4569do 4570not copy the DSDT. 4571 4572Implemented detection of a corrupted or replaced DSDT. This change adds 4573support to detect a DSDT that has been corrupted and/or replaced from 4574outside 4575the OS (by firmware). This is typically catastrophic for the system, but 4576has 4577been seen on some machines. Once this problem has been detected, the DSDT 4578copy option can be enabled via system configuration. Lin Ming, Bob Moore. 4579 4580Fixed two problems with AcpiReallocateRootTable during the root table 4581copy. 4582When copying the root table to the new allocation, the length used was 4583incorrect. The new size was used instead of the current table size, 4584meaning 4585too much data was copied. Also, the count of available slots for ACPI 4586tables 4587was not set correctly. Alexey Starikovskiy, Bob Moore. 4588 4589Example Code and Data Size: These are the sizes for the OS-independent 4590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4591debug version of the code includes the debug output trace mechanism and 4592has a 4593much larger code and data size. 4594 4595 Previous Release: 4596 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4597 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4598 Current Release: 4599 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4600 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4601 46022) iASL Compiler/Disassembler and Tools: 4603 4604iASL: Implement limited typechecking for values returned from predefined 4605control methods. The type of any returned static (unnamed) object is now 4606validated. For example, Return(1). ACPICA BZ 786. 4607 4608iASL: Fixed a predefined name object verification regression. Fixes a 4609problem 4610introduced in version 20100304. An error is incorrectly generated if a 4611predefined name is declared as a static named object with a value defined 4612using the keywords "Zero", "One", or "Ones". Lin Ming. 4613 4614iASL: Added Windows 7 support for the -g option (get local ACPI tables) 4615by 4616reducing the requested registry access rights. ACPICA BZ 842. 4617 4618Disassembler: fixed a possible fault when generating External() 4619statements. 4620Introduced in commit ae7d6fd: Properly handle externals with parent- 4621prefix 4622(carat). Fixes a string length allocation calculation. Lin Ming. 4623 4624---------------------------------------- 462504 March 2010. Summary of changes for version 20100304: 4626 46271) ACPI CA Core Subsystem: 4628 4629Fixed a possible problem with the AML Mutex handling function 4630AcpiExReleaseMutex where the function could fault under the very rare 4631condition when the interpreter has blocked, the interpreter lock is 4632released, 4633the interpreter is then reentered via the same thread, and attempts to 4634acquire an AML mutex that was previously acquired. FreeBSD report 140979. 4635Lin 4636Ming. 4637 4638Implemented additional configuration support for the AML "Debug Object". 4639Output from the debug object can now be enabled via a global variable, 4640AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 4641debugging. 4642This debug output is now available in the release version of ACPICA 4643instead 4644of just the debug version. Also, the entire debug output module can now 4645be 4646configured out of the ACPICA build if desired. One new file added, 4647executer/exdebug.c. Lin Ming, Bob Moore. 4648 4649Added header support for the ACPI MCHI table (Management Controller Host 4650Interface Table). This table was added in ACPI 4.0, but the defining 4651document 4652has only recently become available. 4653 4654Standardized output of integer values for ACPICA warnings/errors. Always 4655use 46560x prefix for hex output, always use %u for unsigned integer decimal 4657output. 4658Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 4659400 4660invocations.) These invocations were converted from the original 4661ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 4662 4663Example Code and Data Size: These are the sizes for the OS-independent 4664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4665debug version of the code includes the debug output trace mechanism and 4666has a 4667much larger code and data size. 4668 4669 Previous Release: 4670 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4671 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4672 Current Release: 4673 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4674 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4675 46762) iASL Compiler/Disassembler and Tools: 4677 4678iASL: Implemented typechecking support for static (non-control method) 4679predefined named objects that are declared with the Name() operator. For 4680example, the type of this object is now validated to be of type Integer: 4681Name(_BBN, 1). This change migrates the compiler to using the core 4682predefined 4683name table instead of maintaining a local version. Added a new file, 4684aslpredef.c. ACPICA BZ 832. 4685 4686Disassembler: Added support for the ACPI 4.0 MCHI table. 4687 4688---------------------------------------- 468921 January 2010. Summary of changes for version 20100121: 4690 46911) ACPI CA Core Subsystem: 4692 4693Added the 2010 copyright to all module headers and signons. This affects 4694virtually every file in the ACPICA core subsystem, the iASL compiler, the 4695tools/utilities, and the test suites. 4696 4697Implemented a change to the AcpiGetDevices interface to eliminate 4698unnecessary 4699invocations of the _STA method. In the case where a specific _HID is 4700requested, do not run _STA until a _HID match is found. This eliminates 4701potentially dozens of _STA calls during a search for a particular 4702device/HID, 4703which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 4704 4705Implemented an additional repair for predefined method return values. 4706Attempt 4707to repair unexpected NULL elements within returned Package objects. 4708Create 4709an 4710Integer of value zero, a NULL String, or a zero-length Buffer as 4711appropriate. 4712ACPICA BZ 818. Lin Ming, Bob Moore. 4713 4714Removed the obsolete ACPI_INTEGER data type. This type was introduced as 4715the 4716code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 4717(with 471864-bit AML integers). It is now obsolete and this change removes it from 4719the 4720ACPICA code base, replaced by UINT64. The original typedef has been 4721retained 4722for now for compatibility with existing device driver code. ACPICA BZ 4723824. 4724 4725Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 4726in 4727the parse tree object. 4728 4729Added additional warning options for the gcc-4 generation. Updated the 4730source 4731accordingly. This includes some code restructuring to eliminate 4732unreachable 4733code, elimination of some gotos, elimination of unused return values, 4734some 4735additional casting, and removal of redundant declarations. 4736 4737Example Code and Data Size: These are the sizes for the OS-independent 4738acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4739debug version of the code includes the debug output trace mechanism and 4740has a 4741much larger code and data size. 4742 4743 Previous Release: 4744 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4745 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4746 Current Release: 4747 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4748 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4749 47502) iASL Compiler/Disassembler and Tools: 4751 4752No functional changes for this release. 4753 4754---------------------------------------- 475514 December 2009. Summary of changes for version 20091214: 4756 47571) ACPI CA Core Subsystem: 4758 4759Enhanced automatic data type conversions for predefined name repairs. 4760This 4761change expands the automatic repairs/conversions for predefined name 4762return 4763values to make Integers, Strings, and Buffers fully interchangeable. 4764Also, 4765a 4766Buffer can be converted to a Package of Integers if necessary. The 4767nsrepair.c 4768module was completely restructured. Lin Ming, Bob Moore. 4769 4770Implemented automatic removal of null package elements during predefined 4771name 4772repairs. This change will automatically remove embedded and trailing NULL 4773package elements from returned package objects that are defined to 4774contain 4775a 4776variable number of sub-packages. The driver is then presented with a 4777package 4778with no null elements to deal with. ACPICA BZ 819. 4779 4780Implemented a repair for the predefined _FDE and _GTM names. The expected 4781return value for both names is a Buffer of 5 DWORDs. This repair fixes 4782two 4783possible problems (both seen in the field), where a package of integers 4784is 4785returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 4786Kim. 4787 4788Implemented additional module-level code support. This change will 4789properly 4790execute module-level code that is not at the root of the namespace (under 4791a 4792Device object, etc.). Now executes the code within the current scope 4793instead 4794of the root. ACPICA BZ 762. Lin Ming. 4795 4796Fixed possible mutex acquisition errors when running _REG methods. Fixes 4797a 4798problem where mutex errors can occur when running a _REG method that is 4799in 4800the same scope as a method-defined operation region or an operation 4801region 4802under a module-level IF block. This type of code is rare, so the problem 4803has 4804not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 4805 4806Fixed a possible memory leak during module-level code execution. An 4807object 4808could be leaked for each block of executed module-level code if the 4809interpreter slack mode is enabled This change deletes any implicitly 4810returned 4811object from the module-level code block. Lin Ming. 4812 4813Removed messages for successful predefined repair(s). The repair 4814mechanism 4815was considered too wordy. Now, messages are only unconditionally emitted 4816if 4817the return object cannot be repaired. Existing messages for successful 4818repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 4819827. 4820 4821Example Code and Data Size: These are the sizes for the OS-independent 4822acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4823debug version of the code includes the debug output trace mechanism and 4824has a 4825much larger code and data size. 4826 4827 Previous Release: 4828 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4829 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4830 Current Release: 4831 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4832 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4833 48342) iASL Compiler/Disassembler and Tools: 4835 4836iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 4837files 4838were no longer automatically removed at the termination of the compile. 4839 4840acpiexec: Implemented the -f option to specify default region fill value. 4841This option specifies the value used to initialize buffers that simulate 4842operation regions. Default value is zero. Useful for debugging problems 4843that 4844depend on a specific initial value for a region or field. 4845 4846---------------------------------------- 484712 November 2009. Summary of changes for version 20091112: 4848 48491) ACPI CA Core Subsystem: 4850 4851Implemented a post-order callback to AcpiWalkNamespace. The existing 4852interface only has a pre-order callback. This change adds an additional 4853parameter for a post-order callback which will be more useful for bus 4854scans. 4855ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 4856 4857Modified the behavior of the operation region memory mapping cache for 4858SystemMemory. Ensure that the memory mappings created for operation 4859regions 4860do not cross 4K page boundaries. Crossing a page boundary while mapping 4861regions can cause kernel warnings on some hosts if the pages have 4862different 4863attributes. Such regions are probably BIOS bugs, and this is the 4864workaround. 4865Linux BZ 14445. Lin Ming. 4866 4867Implemented an automatic repair for predefined methods that must return 4868sorted lists. This change will repair (by sorting) packages returned by 4869_ALR, 4870_PSS, and _TSS. Drivers can now assume that the packages are correctly 4871sorted 4872and do not contain NULL package elements. Adds one new file, 4873namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 4874 4875Fixed a possible fault during predefined name validation if a return 4876Package 4877object contains NULL elements. Also adds a warning if a NULL element is 4878followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 4879may 4880include repair or removal of all such NULL elements where possible. 4881 4882Implemented additional module-level executable AML code support. This 4883change 4884will execute module-level code that is not at the root of the namespace 4885(under a Device object, etc.) at table load time. Module-level executable 4886AML 4887code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 4888 4889Implemented a new internal function to create Integer objects. This 4890function 4891simplifies miscellaneous object creation code. ACPICA BZ 823. 4892 4893Reduced the severity of predefined repair messages, Warning to Info. 4894Since 4895the object was successfully repaired, a warning is too severe. Reduced to 4896an 4897info message for now. These messages may eventually be changed to debug- 4898only. 4899ACPICA BZ 812. 4900 4901Example Code and Data Size: These are the sizes for the OS-independent 4902acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4903debug version of the code includes the debug output trace mechanism and 4904has a 4905much larger code and data size. 4906 4907 Previous Release: 4908 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4909 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4910 Current Release: 4911 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4912 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4913 49142) iASL Compiler/Disassembler and Tools: 4915 4916iASL: Implemented Switch() with While(1) so that Break works correctly. 4917This 4918change correctly implements the Switch operator with a surrounding 4919While(1) 4920so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 4921 4922iASL: Added a message if a package initializer list is shorter than 4923package 4924length. Adds a new remark for a Package() declaration if an initializer 4925list 4926exists, but is shorter than the declared length of the package. Although 4927technically legal, this is probably a coding error and it is seen in the 4928field. ACPICA BZ 815. Lin Ming, Bob Moore. 4929 4930iASL: Fixed a problem where the compiler could fault after the maximum 4931number 4932of errors was reached (200). 4933 4934acpixtract: Fixed a possible warning for pointer cast if the compiler 4935warning 4936level set very high. 4937 4938---------------------------------------- 493913 October 2009. Summary of changes for version 20091013: 4940 49411) ACPI CA Core Subsystem: 4942 4943Fixed a problem where an Operation Region _REG method could be executed 4944more 4945than once. If a custom address space handler is installed by the host 4946before 4947the "initialize operation regions" phase of the ACPICA initialization, 4948any 4949_REG methods for that address space could be executed twice. This change 4950fixes the problem. ACPICA BZ 427. Lin Ming. 4951 4952Fixed a possible memory leak for the Scope() ASL operator. When the exact 4953invocation of "Scope(\)" is executed (change scope to root), one internal 4954operand object was leaked. Lin Ming. 4955 4956Implemented a run-time repair for the _MAT predefined method. If the _MAT 4957return value is defined as a Field object in the AML, and the field 4958size is less than or equal to the default width of an integer (32 or 495964),_MAT 4960can incorrectly return an Integer instead of a Buffer. ACPICA now 4961automatically repairs this problem. ACPICA BZ 810. 4962 4963Implemented a run-time repair for the _BIF and _BIX predefined methods. 4964The 4965"OEM Information" field is often incorrectly returned as an Integer with 4966value zero if the field is not supported by the platform. This is due to 4967an 4968ambiguity in the ACPI specification. The field should always be a string. 4969ACPICA now automatically repairs this problem by returning a NULL string 4970within the returned Package. ACPICA BZ 807. 4971 4972Example Code and Data Size: These are the sizes for the OS-independent 4973acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4974debug version of the code includes the debug output trace mechanism and 4975has a 4976much larger code and data size. 4977 4978 Previous Release: 4979 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4980 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4981 Current Release: 4982 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4983 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4984 49852) iASL Compiler/Disassembler and Tools: 4986 4987Disassembler: Fixed a problem where references to external symbols that 4988contained one or more parent-prefixes (carats) were not handled 4989correctly, 4990possibly causing a fault. ACPICA BZ 806. Lin Ming. 4991 4992Disassembler: Restructured the code so that all functions that handle 4993external symbols are in a single module. One new file is added, 4994common/dmextern.c. 4995 4996AML Debugger: Added a max count argument for the Batch command (which 4997executes multiple predefined methods within the namespace.) 4998 4999iASL: Updated the compiler documentation (User Reference.) Available at 5000http://www.acpica.org/documentation/. ACPICA BZ 750. 5001 5002AcpiXtract: Updated for Lint and other formatting changes. Close all open 5003files. 5004 5005---------------------------------------- 500603 September 2009. Summary of changes for version 20090903: 5007 50081) ACPI CA Core Subsystem: 5009 5010For Windows Vista compatibility, added the automatic execution of an _INI 5011method located at the namespace root (\_INI). This method is executed at 5012table load time. This support is in addition to the automatic execution 5013of 5014\_SB._INI. Lin Ming. 5015 5016Fixed a possible memory leak in the interpreter for AML package objects 5017if 5018the package initializer list is longer than the defined size of the 5019package. 5020This apparently can only happen if the BIOS changes the package size on 5021the 5022fly (seen in a _PSS object), as ASL compilers do not allow this. The 5023interpreter will truncate the package to the defined size (and issue an 5024error 5025message), but previously could leave the extra objects undeleted if they 5026were 5027pre-created during the argument processing (such is the case if the 5028package 5029consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5030 5031Fixed a problem seen when a Buffer or String is stored to itself via ASL. 5032This has been reported in the field. Previously, ACPICA would zero out 5033the 5034buffer/string. Now, the operation is treated as a noop. Provides Windows 5035compatibility. ACPICA BZ 803. Lin Ming. 5036 5037Removed an extraneous error message for ASL constructs of the form 5038Store(LocalX,LocalX) when LocalX is uninitialized. These curious 5039statements 5040are seen in many BIOSs and are once again treated as NOOPs and no error 5041is 5042emitted when they are encountered. ACPICA BZ 785. 5043 5044Fixed an extraneous warning message if a _DSM reserved method returns a 5045Package object. _DSM can return any type of object, so validation on the 5046return type cannot be performed. ACPICA BZ 802. 5047 5048Example Code and Data Size: These are the sizes for the OS-independent 5049acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5050debug version of the code includes the debug output trace mechanism and 5051has a 5052much larger code and data size. 5053 5054 Previous Release: 5055 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5056 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5057 Current Release: 5058 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5059 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5060 50612) iASL Compiler/Disassembler and Tools: 5062 5063iASL: Fixed a problem with the use of the Alias operator and Resource 5064Templates. The correct alias is now constructed and no error is emitted. 5065ACPICA BZ 738. 5066 5067iASL: Implemented the -I option to specify additional search directories 5068for 5069include files. Allows multiple additional search paths for include files. 5070Directories are searched in the order specified on the command line 5071(after 5072the local directory is searched.) ACPICA BZ 800. 5073 5074iASL: Fixed a problem where the full pathname for include files was not 5075emitted for warnings/errors. This caused the IDE support to not work 5076properly. ACPICA BZ 765. 5077 5078iASL: Implemented the -@ option to specify a Windows-style response file 5079containing additional command line options. ACPICA BZ 801. 5080 5081AcpiExec: Added support to load multiple AML files simultaneously (such 5082as 5083a 5084DSDT and multiple SSDTs). Also added support for wildcards within the AML 5085pathname. These features allow all machine tables to be easily loaded and 5086debugged together. ACPICA BZ 804. 5087 5088Disassembler: Added missing support for disassembly of HEST table Error 5089Bank 5090subtables. 5091 5092---------------------------------------- 509330 July 2009. Summary of changes for version 20090730: 5094 5095The ACPI 4.0 implementation for ACPICA is complete with this release. 5096 50971) ACPI CA Core Subsystem: 5098 5099ACPI 4.0: Added header file support for all new and changed ACPI tables. 5100Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 5101new 5102for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 5103BERT, 5104EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 5105There 5106have been some ACPI 4.0 changes to other existing tables. Split the large 5107actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 5108 5109ACPI 4.0: Implemented predefined name validation for all new names. There 5110are 511131 new names in ACPI 4.0. The predefined validation module was split into 5112two 5113files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 5114 5115Implemented support for so-called "module-level executable code". This is 5116executable AML code that exists outside of any control method and is 5117intended 5118to be executed at table load time. Although illegal since ACPI 2.0, this 5119type 5120of code still exists and is apparently still being created. Blocks of 5121this 5122code are now detected and executed as intended. Currently, the code 5123blocks 5124must exist under either an If, Else, or While construct; these are the 5125typical cases seen in the field. ACPICA BZ 762. Lin Ming. 5126 5127Implemented an automatic dynamic repair for predefined names that return 5128nested Package objects. This applies to predefined names that are defined 5129to 5130return a variable-length Package of sub-packages. If the number of sub- 5131packages is one, BIOS code is occasionally seen that creates a simple 5132single 5133package with no sub-packages. This code attempts to fix the problem by 5134wrapping a new package object around the existing package. These methods 5135can 5136be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 5137BZ 5138790. 5139 5140Fixed a regression introduced in 20090625 for the AcpiGetDevices 5141interface. 5142The _HID/_CID matching was broken and no longer matched IDs correctly. 5143ACPICA 5144BZ 793. 5145 5146Fixed a problem with AcpiReset where the reset would silently fail if the 5147register was one of the protected I/O ports. AcpiReset now bypasses the 5148port 5149validation mechanism. This may eventually be driven into the 5150AcpiRead/Write 5151interfaces. 5152 5153Fixed a regression related to the recent update of the AcpiRead/Write 5154interfaces. A sleep/suspend could fail if the optional PM2 Control 5155register 5156does not exist during an attempt to write the Bus Master Arbitration bit. 5157(However, some hosts already delete the code that writes this bit, and 5158the 5159code may in fact be obsolete at this date.) ACPICA BZ 799. 5160 5161Fixed a problem where AcpiTerminate could fault if inadvertently called 5162twice 5163in succession. ACPICA BZ 795. 5164 5165Example Code and Data Size: These are the sizes for the OS-independent 5166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5167debug version of the code includes the debug output trace mechanism and 5168has a 5169much larger code and data size. 5170 5171 Previous Release: 5172 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5173 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5174 Current Release: 5175 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5176 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5177 51782) iASL Compiler/Disassembler and Tools: 5179 5180ACPI 4.0: Implemented disassembler support for all new ACPI tables and 5181changes to existing tables. ACPICA BZ 775. 5182 5183---------------------------------------- 518425 June 2009. Summary of changes for version 20090625: 5185 5186The ACPI 4.0 Specification was released on June 16 and is available at 5187www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 5188continue for the next few releases. 5189 51901) ACPI CA Core Subsystem: 5191 5192ACPI 4.0: Implemented interpreter support for the IPMI operation region 5193address space. Includes support for bi-directional data buffers and an 5194IPMI 5195address space handler (to be installed by an IPMI device driver.) ACPICA 5196BZ 5197773. Lin Ming. 5198 5199ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 5200Includes 5201support in both the header files and the disassembler. 5202 5203Completed a major update for the AcpiGetObjectInfo external interface. 5204Changes include: 5205 - Support for variable, unlimited length HID, UID, and CID strings. 5206 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 5207etc.) 5208 - Call the _SxW power methods on behalf of a device object. 5209 - Determine if a device is a PCI root bridge. 5210 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 5211These changes will require an update to all callers of this interface. 5212See 5213the updated ACPICA Programmer Reference for details. One new source file 5214has 5215been added - utilities/utids.c. ACPICA BZ 368, 780. 5216 5217Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 5218transfers. The Value parameter has been extended from 32 bits to 64 bits 5219in 5220order to support new ACPI 4.0 tables. These changes will require an 5221update 5222to 5223all callers of these interfaces. See the ACPICA Programmer Reference for 5224details. ACPICA BZ 768. 5225 5226Fixed several problems with AcpiAttachData. The handler was not invoked 5227when 5228the host node was deleted. The data sub-object was not automatically 5229deleted 5230when the host node was deleted. The interface to the handler had an 5231unused 5232parameter, this was removed. ACPICA BZ 778. 5233 5234Enhanced the function that dumps ACPI table headers. All non-printable 5235characters in the string fields are now replaced with '?' (Signature, 5236OemId, 5237OemTableId, and CompilerId.) ACPI tables with non-printable characters in 5238these fields are occasionally seen in the field. ACPICA BZ 788. 5239 5240Fixed a problem with predefined method repair code where the code that 5241attempts to repair/convert an object of incorrect type is only executed 5242on 5243the first time the predefined method is called. The mechanism that 5244disables 5245warnings on subsequent calls was interfering with the repair mechanism. 5246ACPICA BZ 781. 5247 5248Fixed a possible memory leak in the predefined validation/repair code 5249when 5250a 5251buffer is automatically converted to an expected string object. 5252 5253Removed obsolete 16-bit files from the distribution and from the current 5254git 5255tree head. ACPICA BZ 776. 5256 5257Example Code and Data Size: These are the sizes for the OS-independent 5258acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5259debug version of the code includes the debug output trace mechanism and 5260has a 5261much larger code and data size. 5262 5263 Previous Release: 5264 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5265 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5266 Current Release: 5267 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5268 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5269 52702) iASL Compiler/Disassembler and Tools: 5271 5272ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 5273operation region keyword. ACPICA BZ 771, 772. Lin Ming. 5274 5275ACPI 4.0: iASL - implemented compile-time validation support for all new 5276predefined names and control methods (31 total). ACPICA BZ 769. 5277 5278---------------------------------------- 527921 May 2009. Summary of changes for version 20090521: 5280 52811) ACPI CA Core Subsystem: 5282 5283Disabled the preservation of the SCI enable bit in the PM1 control 5284register. 5285The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 5286to 5287be 5288a "preserved" bit - "OSPM always preserves this bit position", section 52894.7.3.2.1. However, some machines fail if this bit is in fact preserved 5290because the bit needs to be explicitly set by the OS as a workaround. No 5291machines fail if the bit is not preserved. Therefore, ACPICA no longer 5292attempts to preserve this bit. 5293 5294Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 5295incorrectly formed _PRT package could cause a fault. Added validation to 5296ensure that each package element is actually a sub-package. 5297 5298Implemented a new interface to install or override a single control 5299method, 5300AcpiInstallMethod. This interface is useful when debugging in order to 5301repair 5302an existing method or to install a missing method without having to 5303override 5304the entire ACPI table. See the ACPICA Programmer Reference for use and 5305examples. Lin Ming, Bob Moore. 5306 5307Fixed several reference count issues with the DdbHandle object that is 5308created from a Load or LoadTable operator. Prevent premature deletion of 5309the 5310object. Also, mark the object as invalid once the table has been 5311unloaded. 5312This is needed because the handle itself may not be deleted after the 5313table 5314unload, depending on whether it has been stored in a named object by the 5315caller. Lin Ming. 5316 5317Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 5318mutexes of the same sync level are acquired but then not released in 5319strict 5320opposite order, the internally maintained Current Sync Level becomes 5321confused 5322and can cause subsequent execution errors. ACPICA BZ 471. 5323 5324Changed the allowable release order for ASL mutex objects. The ACPI 4.0 5325specification has been changed to make the SyncLevel for mutex objects 5326more 5327useful. When releasing a mutex, the SyncLevel of the mutex must now be 5328the 5329same as the current sync level. This makes more sense than the previous 5330rule 5331(SyncLevel less than or equal). This change updates the code to match the 5332specification. 5333 5334Fixed a problem with the local version of the AcpiOsPurgeCache function. 5335The 5336(local) cache must be locked during all cache object deletions. Andrew 5337Baumann. 5338 5339Updated the Load operator to use operation region interfaces. This 5340replaces 5341direct memory mapping with region access calls. Now, all region accesses 5342go 5343through the installed region handler as they should. 5344 5345Simplified and optimized the NsGetNextNode function. Reduced parameter 5346count 5347and reduced code for this frequently used function. 5348 5349Example Code and Data Size: These are the sizes for the OS-independent 5350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5351debug version of the code includes the debug output trace mechanism and 5352has a 5353much larger code and data size. 5354 5355 Previous Release: 5356 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5357 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5358 Current Release: 5359 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5360 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5361 53622) iASL Compiler/Disassembler and Tools: 5363 5364Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 5365problems 5366with sub-table disassembly and handling invalid sub-tables. Attempt 5367recovery 5368after an invalid sub-table ID. 5369 5370---------------------------------------- 537122 April 2009. Summary of changes for version 20090422: 5372 53731) ACPI CA Core Subsystem: 5374 5375Fixed a compatibility issue with the recently released I/O port 5376protection 5377mechanism. For windows compatibility, 1) On a port protection violation, 5378simply ignore the request and do not return an exception (allow the 5379control 5380method to continue execution.) 2) If only part of the request overlaps a 5381protected port, read/write the individual ports that are not protected. 5382Linux 5383BZ 13036. Lin Ming 5384 5385Enhanced the execution of the ASL/AML BreakPoint operator so that it 5386actually 5387breaks into the AML debugger if the debugger is present. This matches the 5388ACPI-defined behavior. 5389 5390Fixed several possible warnings related to the use of the configurable 5391ACPI_THREAD_ID. This type can now be configured as either an integer or a 5392pointer with no warnings. Also fixes several warnings in printf-like 5393statements for the 64-bit build when the type is configured as a pointer. 5394ACPICA BZ 766, 767. 5395 5396Fixed a number of possible warnings when compiling with gcc 4+ (depending 5397on 5398warning options.) Examples include printf formats, aliasing, unused 5399globals, 5400missing prototypes, missing switch default statements, use of non-ANSI 5401library functions, use of non-ANSI constructs. See generate/unix/Makefile 5402for 5403a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 5404 5405Example Code and Data Size: These are the sizes for the OS-independent 5406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5407debug version of the code includes the debug output trace mechanism and 5408has a 5409much larger code and data size. 5410 5411 Previous Release: 5412 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5413 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5414 Current Release: 5415 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5416 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5417 54182) iASL Compiler/Disassembler and Tools: 5419 5420iASL: Fixed a generation warning from Bison 2.3 and fixed several 5421warnings 5422on 5423the 64-bit build. 5424 5425iASL: Fixed a problem where the Unix/Linux versions of the compiler could 5426not 5427correctly digest Windows/DOS formatted files (with CR/LF). 5428 5429iASL: Added a new option for "quiet mode" (-va) that produces only the 5430compilation summary, not individual errors and warnings. Useful for large 5431batch compilations. 5432 5433AcpiExec: Implemented a new option (-z) to enable a forced 5434semaphore/mutex 5435timeout that can be used to detect hang conditions during execution of 5436AML 5437code (includes both internal semaphores and AML-defined mutexes and 5438events.) 5439 5440Added new makefiles for the generation of acpica in a generic unix-like 5441environment. These makefiles are intended to generate the acpica tools 5442and 5443utilities from the original acpica git source tree structure. 5444 5445Test Suites: Updated and cleaned up the documentation files. Updated the 5446copyrights to 2009, affecting all source files. Use the new version of 5447iASL 5448with quiet mode. Increased the number of available semaphores in the 5449Windows 5450OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 5451added 5452an alternate implementation of the semaphore timeout to allow aslts to 5453execute fully on Cygwin. 5454 5455---------------------------------------- 545620 March 2009. Summary of changes for version 20090320: 5457 54581) ACPI CA Core Subsystem: 5459 5460Fixed a possible race condition between AcpiWalkNamespace and dynamic 5461table 5462unloads. Added a reader/writer locking mechanism to allow multiple 5463concurrent 5464namespace walks (readers), but block a dynamic table unload until it can 5465gain 5466exclusive write access to the namespace. This fixes a problem where a 5467table 5468unload could (possibly catastrophically) delete the portion of the 5469namespace 5470that is currently being examined by a walk. Adds a new file, utlock.c, 5471that 5472implements the reader/writer lock mechanism. ACPICA BZ 749. 5473 5474Fixed a regression introduced in version 20090220 where a change to the 5475FADT 5476handling could cause the ACPICA subsystem to access non-existent I/O 5477ports. 5478 5479Modified the handling of FADT register and table (FACS/DSDT) addresses. 5480The 5481FADT can contain both 32-bit and 64-bit versions of these addresses. 5482Previously, the 64-bit versions were favored, meaning that if both 32 and 548364 5484versions were valid, but not equal, the 64-bit version was used. This was 5485found to cause some machines to fail. Now, in this case, the 32-bit 5486version 5487is used instead. This now matches the Windows behavior. 5488 5489Implemented a new mechanism to protect certain I/O ports. Provides 5490Microsoft 5491compatibility and protects the standard PC I/O ports from access via AML 5492code. Adds a new file, hwvalid.c 5493 5494Fixed a possible extraneous warning message from the FADT support. The 5495message warns of a 32/64 length mismatch between the legacy and GAS 5496definitions for a register. 5497 5498Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 5499is 5500made obsolete by the port protection mechanism above. It was previously 5501used 5502to validate the entire address range of an operation region, which could 5503be 5504incorrect if the range included illegal ports, but fields within the 5505operation region did not actually access those ports. Validation is now 5506performed on a per-field basis instead of the entire region. 5507 5508Modified the handling of the PM1 Status Register ignored bit (bit 11.) 5509Ignored bits must be "preserved" according to the ACPI spec. Usually, 5510this 5511means a read/modify/write when writing to the register. However, for 5512status 5513registers, writing a one means clear the event. Writing a zero means 5514preserve 5515the event (do not clear.) This behavior is clarified in the ACPI 4.0 5516spec, 5517and the ACPICA code now simply always writes a zero to the ignored bit. 5518 5519Modified the handling of ignored bits for the PM1 A/B Control Registers. 5520As 5521per the ACPI specification, for the control registers, preserve 5522(read/modify/write) all bits that are defined as either reserved or 5523ignored. 5524 5525Updated the handling of write-only bits in the PM1 A/B Control Registers. 5526When reading the register, zero the write-only bits as per the ACPI spec. 5527ACPICA BZ 443. Lin Ming. 5528 5529Removed "Linux" from the list of supported _OSI strings. Linux no longer 5530wants to reply true to this request. The Windows strings are the only 5531paths 5532through the AML that are tested and known to work properly. 5533 5534 Previous Release: 5535 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5536 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5537 Current Release: 5538 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5539 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5540 55412) iASL Compiler/Disassembler and Tools: 5542 5543Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 5544and 5545aetables.c 5546 5547---------------------------------------- 554820 February 2009. Summary of changes for version 20090220: 5549 55501) ACPI CA Core Subsystem: 5551 5552Optimized the ACPI register locking. Removed locking for reads from the 5553ACPI 5554bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 5555is 5556not required when reading the single-bit registers. The 5557AcpiGetRegisterUnlocked function is no longer needed and has been 5558removed. 5559This will improve performance for reads on these registers. ACPICA BZ 5560760. 5561 5562Fixed the parameter validation for AcpiRead/Write. Now return 5563AE_BAD_PARAMETER if the input register pointer is null, and 5564AE_BAD_ADDRESS 5565if 5566the register has an address of zero. Previously, these cases simply 5567returned 5568AE_OK. For optional registers such as PM1B status/enable/control, the 5569caller 5570should check for a valid register address before calling. ACPICA BZ 748. 5571 5572Renamed the external ACPI bit register access functions. Renamed 5573AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 5574functions. The new names are AcpiReadBitRegister and 5575AcpiWriteBitRegister. 5576Also, restructured the code for these functions by simplifying the code 5577path 5578and condensing duplicate code to reduce code size. 5579 5580Added new functions to transparently handle the possibly split PM1 A/B 5581registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 5582functions 5583now handle the split registers for PM1 Status, Enable, and Control. 5584ACPICA 5585BZ 5586746. 5587 5588Added a function to handle the PM1 control registers, 5589AcpiHwWritePm1Control. 5590This function writes both of the PM1 control registers (A/B). These 5591registers 5592are different than the PM1 A/B status and enable registers in that 5593different 5594values can be written to the A/B registers. Most notably, the SLP_TYP 5595bits 5596can be different, as per the values returned from the _Sx predefined 5597methods. 5598 5599Removed an extra register write within AcpiHwClearAcpiStatus. This 5600function 5601was writing an optional PM1B status register twice. The existing call to 5602the 5603low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 5604A/B 5605register. ACPICA BZ 751. 5606 5607Split out the PM1 Status registers from the FADT. Added new globals for 5608these 5609registers (A/B), similar to the way the PM1 Enable registers are handled. 5610Instead of overloading the FADT Event Register blocks. This makes the 5611code 5612clearer and less prone to error. 5613 5614Fixed the warning message for when the platform contains too many ACPI 5615tables 5616for the default size of the global root table data structure. The 5617calculation 5618for the truncation value was incorrect. 5619 5620Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 5621obsolete macro, since it is now a simple reference to ->common.type. 5622There 5623were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 5624 5625Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 5626TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 5627simply SLEEP_TYPE. ACPICA BZ 754. 5628 5629Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 5630function is only needed on 64-bit host operating systems and is thus not 5631included for 32-bit hosts. 5632 5633Debug output: print the input and result for invocations of the _OSI 5634reserved 5635control method via the ACPI_LV_INFO debug level. Also, reduced some of 5636the 5637verbosity of this debug level. Len Brown. 5638 5639Example Code and Data Size: These are the sizes for the OS-independent 5640acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5641debug version of the code includes the debug output trace mechanism and 5642has a 5643much larger code and data size. 5644 5645 Previous Release: 5646 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5647 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5648 Current Release: 5649 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5650 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5651 56522) iASL Compiler/Disassembler and Tools: 5653 5654Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 5655various legal performance profiles. 5656 5657---------------------------------------- 565823 January 2009. Summary of changes for version 20090123: 5659 56601) ACPI CA Core Subsystem: 5661 5662Added the 2009 copyright to all module headers and signons. This affects 5663virtually every file in the ACPICA core subsystem, the iASL compiler, and 5664the tools/utilities. 5665 5666Implemented a change to allow the host to override any ACPI table, 5667including 5668dynamically loaded tables. Previously, only the DSDT could be replaced by 5669the 5670host. With this change, the AcpiOsTableOverride interface is called for 5671each 5672table found in the RSDT/XSDT during ACPICA initialization, and also 5673whenever 5674a table is dynamically loaded via the AML Load operator. 5675 5676Updated FADT flag definitions, especially the Boot Architecture flags. 5677 5678Debugger: For the Find command, automatically pad the input ACPI name 5679with 5680underscores if the name is shorter than 4 characters. This enables a 5681match 5682with the actual namespace entry which is itself padded with underscores. 5683 5684Example Code and Data Size: These are the sizes for the OS-independent 5685acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5686debug version of the code includes the debug output trace mechanism and 5687has a 5688much larger code and data size. 5689 5690 Previous Release: 5691 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5692 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5693 Current Release: 5694 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5695 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5696 56972) iASL Compiler/Disassembler and Tools: 5698 5699Fix build error under Bison-2.4. 5700 5701Dissasembler: Enhanced FADT support. Added decoding of the Boot 5702Architecture 5703flags. Now decode all flags, regardless of the FADT version. Flag output 5704includes the FADT version which first defined each flag. 5705 5706The iASL -g option now dumps the RSDT to a file (in addition to the FADT 5707and 5708DSDT). Windows only. 5709 5710---------------------------------------- 571104 December 2008. Summary of changes for version 20081204: 5712 57131) ACPI CA Core Subsystem: 5714 5715The ACPICA Programmer Reference has been completely updated and revamped 5716for 5717this release. This includes updates to the external interfaces, OSL 5718interfaces, the overview sections, and the debugger reference. 5719 5720Several new ACPICA interfaces have been implemented and documented in the 5721programmer reference: 5722AcpiReset - Writes the reset value to the FADT-defined reset register. 5723AcpiDisableAllGpes - Disable all available GPEs. 5724AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 5725AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 5726AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 5727AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 5728AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 5729 5730Most of the public ACPI hardware-related interfaces have been moved to a 5731new 5732file, components/hardware/hwxface.c 5733 5734Enhanced the FADT parsing and low-level ACPI register access: The ACPI 5735register lengths within the FADT are now used, and the low level ACPI 5736register access no longer hardcodes the ACPI register lengths. Given that 5737there may be some risk in actually trusting the FADT register lengths, a 5738run- 5739time option was added to fall back to the default hardcoded lengths if 5740the 5741FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 5742option is set to true for now, and a warning is issued if a suspicious 5743FADT 5744register length is overridden with the default value. 5745 5746Fixed a reference count issue in NsRepairObject. This problem was 5747introduced 5748in version 20081031 as part of a fix to repair Buffer objects within 5749Packages. Lin Ming. 5750 5751Added semaphore support to the Linux/Unix application OS-services layer 5752(OSL). ACPICA BZ 448. Lin Ming. 5753 5754Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 5755will 5756be implemented in the OSL, or will binary semaphores be used instead. 5757 5758Example Code and Data Size: These are the sizes for the OS-independent 5759acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5760debug version of the code includes the debug output trace mechanism and 5761has a 5762much larger code and data size. 5763 5764 Previous Release: 5765 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5766 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5767 Current Release: 5768 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5769 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5770 57712) iASL Compiler/Disassembler and Tools: 5772 5773iASL: Completed the '-e' option to include additional ACPI tables in 5774order 5775to 5776aid with disassembly and External statement generation. ACPICA BZ 742. 5777Lin 5778Ming. 5779 5780iASL: Removed the "named object in while loop" error. The compiler cannot 5781determine how many times a loop will execute. ACPICA BZ 730. 5782 5783Disassembler: Implemented support for FADT revision 2 (MS extension). 5784ACPICA 5785BZ 743. 5786 5787Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 5788MCFG). 5789 5790---------------------------------------- 579131 October 2008. Summary of changes for version 20081031: 5792 57931) ACPI CA Core Subsystem: 5794 5795Restructured the ACPICA header files into public/private. acpi.h now 5796includes 5797only the "public" acpica headers. All other acpica headers are "private" 5798and 5799should not be included by acpica users. One new file, accommon.h is used 5800to 5801include the commonly used private headers for acpica code generation. 5802Future 5803plans include moving all private headers to a new subdirectory. 5804 5805Implemented an automatic Buffer->String return value conversion for 5806predefined ACPI methods. For these methods (such as _BIF), added 5807automatic 5808conversion for return objects that are required to be a String, but a 5809Buffer 5810was found instead. This can happen when reading string battery data from 5811an 5812operation region, because it used to be difficult to convert the data 5813from 5814buffer to string from within the ASL. Ensures that the host OS is 5815provided 5816with a valid null-terminated string. Linux BZ 11822. 5817 5818Updated the FACS waking vector interfaces. Split 5819AcpiSetFirmwareWakingVector 5820into two: one for the 32-bit vector, another for the 64-bit vector. This 5821is 5822required because the host OS must setup the wake much differently for 5823each 5824vector (real vs. protected mode, etc.) and the interface itself should 5825not 5826be 5827deciding which vector to use. Also, eliminated the 5828GetFirmwareWakingVector 5829interface, as it served no purpose (only the firmware reads the vector, 5830OS 5831only writes the vector.) ACPICA BZ 731. 5832 5833Implemented a mechanism to escape infinite AML While() loops. Added a 5834loop 5835counter to force exit from AML While loops if the count becomes too 5836large. 5837This can occur in poorly written AML when the hardware does not respond 5838within a while loop and the loop does not implement a timeout. The 5839maximum 5840loop count is configurable. A new exception code is returned when a loop 5841is 5842broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 5843 5844Optimized the execution of AML While loops. Previously, a control state 5845object was allocated and freed for each execution of the loop. The 5846optimization is to simply reuse the control state for each iteration. 5847This 5848speeds up the raw loop execution time by about 5%. 5849 5850Enhanced the implicit return mechanism. For Windows compatibility, return 5851an 5852implicit integer of value zero for methods that contain no executable 5853code. 5854Such methods are seen in the field as stubs (presumably), and can cause 5855drivers to fail if they expect a return value. Lin Ming. 5856 5857Allow multiple backslashes as root prefixes in namepaths. In a fully 5858qualified namepath, allow multiple backslash prefixes. This can happen 5859(and 5860is seen in the field) because of the use of a double-backslash in strings 5861(since backslash is the escape character) causing confusion. ACPICA BZ 5862739 5863Lin Ming. 5864 5865Emit a warning if two different FACS or DSDT tables are discovered in the 5866FADT. Checks if there are two valid but different addresses for the FACS 5867and 5868DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 5869 5870Consolidated the method argument count validation code. Merged the code 5871that 5872validates control method argument counts into the predefined validation 5873module. Eliminates possible multiple warnings for incorrect argument 5874counts. 5875 5876Implemented ACPICA example code. Includes code for ACPICA initialization, 5877handler installation, and calling a control method. Available at 5878source/tools/examples. 5879 5880Added a global pointer for FACS table to simplify internal FACS access. 5881Use 5882the global pointer instead of using AcpiGetTableByIndex for each FACS 5883access. 5884This simplifies the code for the Global Lock and the Firmware Waking 5885Vector(s). 5886 5887Example Code and Data Size: These are the sizes for the OS-independent 5888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5889debug version of the code includes the debug output trace mechanism and 5890has a 5891much larger code and data size. 5892 5893 Previous Release: 5894 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5895 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5896 Current Release: 5897 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5898 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5899 59002) iASL Compiler/Disassembler and Tools: 5901 5902iASL: Improved disassembly of external method calls. Added the -e option 5903to 5904allow the inclusion of additional ACPI tables to help with the 5905disassembly 5906of 5907method invocations and the generation of external declarations during the 5908disassembly. Certain external method invocations cannot be disassembled 5909properly without the actual declaration of the method. Use the -e option 5910to 5911include the table where the external method(s) are actually declared. 5912Most 5913useful for disassembling SSDTs that make method calls back to the master 5914DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 5915-d 5916-e dsdt.aml ssdt1.aml 5917 5918iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 5919problem where the use of an alias within a namepath would result in a not 5920found error or cause the compiler to fault. Also now allows forward 5921references from the Alias operator itself. ACPICA BZ 738. 5922 5923---------------------------------------- 592426 September 2008. Summary of changes for version 20080926: 5925 59261) ACPI CA Core Subsystem: 5927 5928Designed and implemented a mechanism to validate predefined ACPI methods 5929and 5930objects. This code validates the predefined ACPI objects (objects whose 5931names 5932start with underscore) that appear in the namespace, at the time they are 5933evaluated. The argument count and the type of the returned object are 5934validated against the ACPI specification. The purpose of this validation 5935is 5936to detect problems with the BIOS-implemented predefined ACPI objects 5937before 5938the results are returned to the ACPI-related drivers. Future enhancements 5939may 5940include actual repair of incorrect return objects where possible. Two new 5941files are nspredef.c and acpredef.h. 5942 5943Fixed a fault in the AML parser if a memory allocation fails during the 5944Op 5945completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 5946 5947Fixed an issue with implicit return compatibility. This change improves 5948the 5949implicit return mechanism to be more compatible with the MS interpreter. 5950Lin 5951Ming, ACPICA BZ 349. 5952 5953Implemented support for zero-length buffer-to-string conversions. Allow 5954zero 5955length strings during interpreter buffer-to-string conversions. For 5956example, 5957during the ToDecimalString and ToHexString operators, as well as implicit 5958conversions. Fiodor Suietov, ACPICA BZ 585. 5959 5960Fixed two possible memory leaks in the error exit paths of 5961AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 5962are 5963similar in that they use a stack of state objects in order to eliminate 5964recursion. The stack must be fully unwound and deallocated if an error 5965occurs. Lin Ming. ACPICA BZ 383. 5966 5967Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 5968global 5969ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 5970Moore ACPICA BZ 442. 5971 5972Removed the obsolete version number in module headers. Removed the 5973"$Revision" number that appeared in each module header. This version 5974number 5975was useful under SourceSafe and CVS, but has no meaning under git. It is 5976not 5977only incorrect, it could also be misleading. 5978 5979Example Code and Data Size: These are the sizes for the OS-independent 5980acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5981debug version of the code includes the debug output trace mechanism and 5982has a 5983much larger code and data size. 5984 5985 Previous Release: 5986 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5987 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5988 Current Release: 5989 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5990 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5991 5992---------------------------------------- 599329 August 2008. Summary of changes for version 20080829: 5994 59951) ACPI CA Core Subsystem: 5996 5997Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 5998Reference. Changes include the elimination of cheating on the Object 5999field 6000for the DdbHandle subtype, addition of a reference class field to 6001differentiate the various reference types (instead of an AML opcode), and 6002the 6003cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6004 6005Reduce an error to a warning for an incorrect method argument count. 6006Previously aborted with an error if too few arguments were passed to a 6007control method via the external ACPICA interface. Now issue a warning 6008instead 6009and continue. Handles the case where the method inadvertently declares 6010too 6011many arguments, but does not actually use the extra ones. Applies mainly 6012to 6013the predefined methods. Lin Ming. Linux BZ 11032. 6014 6015Disallow the evaluation of named object types with no intrinsic value. 6016Return 6017AE_TYPE for objects that have no value and therefore evaluation is 6018undefined: 6019Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6020of 6021these types were allowed, but an exception would be generated at some 6022point 6023during the evaluation. Now, the error is generated up front. 6024 6025Fixed a possible memory leak in the AcpiNsGetExternalPathname function 6026(nsnames.c). Fixes a leak in the error exit path. 6027 6028Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6029debug 6030levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6031ACPI_EXCEPTION 6032interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6033ACPI_LV_EVENTS. 6034 6035Removed obsolete and/or unused exception codes from the acexcep.h header. 6036There is the possibility that certain device drivers may be affected if 6037they 6038use any of these exceptions. 6039 6040The ACPICA documentation has been added to the public git source tree, 6041under 6042acpica/documents. Included are the ACPICA programmer reference, the iASL 6043compiler reference, and the changes.txt release logfile. 6044 6045Example Code and Data Size: These are the sizes for the OS-independent 6046acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6047debug version of the code includes the debug output trace mechanism and 6048has a 6049much larger code and data size. 6050 6051 Previous Release: 6052 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6053 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6054 Current Release: 6055 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6056 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6057 60582) iASL Compiler/Disassembler and Tools: 6059 6060Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 6061defines _SCP with 3 arguments. Previous versions defined it with only 1 6062argument. iASL now allows both definitions. 6063 6064iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 6065zero- 6066length subtables when disassembling ACPI tables. Also fixed a couple of 6067errors where a full 16-bit table type field was not extracted from the 6068input 6069properly. 6070 6071acpisrc: Improve comment counting mechanism for generating source code 6072statistics. Count first and last lines of multi-line comments as 6073whitespace, 6074not comment lines. Handle Linux legal header in addition to standard 6075acpica 6076header. 6077 6078---------------------------------------- 6079 608029 July 2008. Summary of changes for version 20080729: 6081 60821) ACPI CA Core Subsystem: 6083 6084Fix a possible deadlock in the GPE dispatch. Remove call to 6085AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 6086attempt 6087to acquire the GPE lock but can deadlock since the GPE lock is already 6088held 6089at dispatch time. This code was introduced in version 20060831 as a 6090response 6091to Linux BZ 6881 and has since been removed from Linux. 6092 6093Add a function to dereference returned reference objects. Examines the 6094return 6095object from a call to AcpiEvaluateObject. Any Index or RefOf references 6096are 6097automatically dereferenced in an attempt to return something useful 6098(these 6099reference types cannot be converted into an external ACPI_OBJECT.) 6100Provides 6101MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 6102 6103x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 6104subtables for the MADT and one new subtable for the SRAT. Includes 6105disassembler and AcpiSrc support. Data from the Intel 64 Architecture 6106x2APIC 6107Specification, June 2008. 6108 6109Additional error checking for pathname utilities. Add error check after 6110all 6111calls to AcpiNsGetPathnameLength. Add status return from 6112AcpiNsBuildExternalPath and check after all calls. Add parameter 6113validation 6114to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 6115 6116Return status from the global init function AcpiUtGlobalInitialize. This 6117is 6118used by both the kernel subsystem and the utilities such as iASL 6119compiler. 6120The function could possibly fail when the caches are initialized. Yang 6121Yi. 6122 6123Add a function to decode reference object types to strings. Created for 6124improved error messages. 6125 6126Improve object conversion error messages. Better error messages during 6127object 6128conversion from internal to the external ACPI_OBJECT. Used for external 6129calls 6130to AcpiEvaluateObject. 6131 6132Example Code and Data Size: These are the sizes for the OS-independent 6133acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6134debug version of the code includes the debug output trace mechanism and 6135has a 6136much larger code and data size. 6137 6138 Previous Release: 6139 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6140 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6141 Current Release: 6142 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6143 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6144 61452) iASL Compiler/Disassembler and Tools: 6146 6147Debugger: fix a possible hang when evaluating non-methods. Fixes a 6148problem 6149introduced in version 20080701. If the object being evaluated (via 6150execute 6151command) is not a method, the debugger can hang while trying to obtain 6152non- 6153existent parameters. 6154 6155iASL: relax error for using reserved "_T_x" identifiers. These names can 6156appear in a disassembled ASL file if they were emitted by the original 6157compiler. Instead of issuing an error or warning and forcing the user to 6158manually change these names, issue a remark instead. 6159 6160iASL: error if named object created in while loop. Emit an error if any 6161named 6162object is created within a While loop. If allowed, this code will 6163generate 6164a 6165run-time error on the second iteration of the loop when an attempt is 6166made 6167to 6168create the same named object twice. ACPICA bugzilla 730. 6169 6170iASL: Support absolute pathnames for include files. Add support for 6171absolute 6172pathnames within the Include operator. previously, only relative 6173pathnames 6174were supported. 6175 6176iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 6177Descriptor. 6178The ACPI spec requires one interrupt minimum. BZ 423 6179 6180iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 6181Handles the case for the Interrupt Resource Descriptor where 6182the ResourceSource argument is omitted but ResourceSourceIndex 6183is present. Now leave room for the Index. BZ 426 6184 6185iASL: Prevent error message if CondRefOf target does not exist. Fixes 6186cases 6187where an error message is emitted if the target does not exist. BZ 516 6188 6189iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 6190(get ACPI tables on Windows). This was apparently broken in version 619120070919. 6192 6193AcpiXtract: Handle EOF while extracting data. Correctly handle the case 6194where 6195the EOF happens immediately after the last table in the input file. Print 6196completion message. Previously, no message was displayed in this case. 6197 6198---------------------------------------- 619901 July 2008. Summary of changes for version 20080701: 6200 62010) Git source tree / acpica.org 6202 6203Fixed a problem where a git-clone from http would not transfer the entire 6204source tree. 6205 62061) ACPI CA Core Subsystem: 6207 6208Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 6209enable bit. Now performs a read-change-write of the enable register 6210instead 6211of simply writing out the cached enable mask. This will prevent 6212inadvertent 6213enabling of GPEs if a rogue GPE is received during initialization (before 6214GPE 6215handlers are installed.) 6216 6217Implemented a copy for dynamically loaded tables. Previously, dynamically 6218loaded tables were simply mapped - but on some machines this memory is 6219corrupted after suspend. Now copy the table to a local buffer. For the 6220OpRegion case, added checksum verify. Use the table length from the table 6221header, not the region length. For the Buffer case, use the table length 6222also. Dennis Noordsij, Bob Moore. BZ 10734 6223 6224Fixed a problem where the same ACPI table could not be dynamically loaded 6225and 6226unloaded more than once. Without this change, a table cannot be loaded 6227again 6228once it has been loaded/unloaded one time. The current mechanism does not 6229unregister a table upon an unload. During a load, if the same table is 6230found, 6231this no longer returns an exception. BZ 722 6232 6233Fixed a problem where the wrong descriptor length was calculated for the 6234EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 6235EndTag 6236are calculated as 12 bytes long, but the actual length in the internal 6237descriptor is 16 because of the round-up to 8 on the 64-bit build. 6238Reported 6239by Linn Crosetto. BZ 728 6240 6241Fixed a possible memory leak in the Unload operator. The DdbHandle 6242returned 6243by Load() did not have its reference count decremented during unload, 6244leading 6245to a memory leak. Lin Ming. BZ 727 6246 6247Fixed a possible memory leak when deleting thermal/processor objects. Any 6248associated notify handlers (and objects) were not being deleted. Fiodor 6249Suietov. BZ 506 6250 6251Fixed the ordering of the ASCII names in the global mutex table to match 6252the 6253actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 6254only. 6255Vegard Nossum. BZ 726 6256 6257Enhanced the AcpiGetObjectInfo interface to return the number of required 6258arguments if the object is a control method. Added this call to the 6259debugger 6260so the proper number of default arguments are passed to a method. This 6261prevents a warning when executing methods from AcpiExec. 6262 6263Added a check for an invalid handle in AcpiGetObjectInfo. Return 6264AE_BAD_PARAMETER if input handle is invalid. BZ 474 6265 6266Fixed an extraneous warning from exconfig.c on the 64-bit build. 6267 6268Example Code and Data Size: These are the sizes for the OS-independent 6269acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6270debug version of the code includes the debug output trace mechanism and 6271has a 6272much larger code and data size. 6273 6274 Previous Release: 6275 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6276 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6277 Current Release: 6278 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6279 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6280 62812) iASL Compiler/Disassembler and Tools: 6282 6283iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 6284resource descriptor names. 6285 6286iASL: Detect invalid ASCII characters in input (windows version). Removed 6287the 6288"-CF" flag from the flex compile, enables correct detection of non-ASCII 6289characters in the input. BZ 441 6290 6291iASL: Eliminate warning when result of LoadTable is not used. Eliminate 6292the 6293"result of operation not used" warning when the DDB handle returned from 6294LoadTable is not used. The warning is not needed. BZ 590 6295 6296AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 6297method 6298to 6299pass address of table to the AML. Added option to disable OpRegion 6300simulation 6301to allow creation of an OpRegion with a real address that was passed to 6302_CFG. 6303All of this allows testing of the Load and Unload operators from 6304AcpiExec. 6305 6306Debugger: update tables command for unloaded tables. Handle unloaded 6307tables 6308and use the standard table header output routine. 6309 6310---------------------------------------- 631109 June 2008. Summary of changes for version 20080609: 6312 63131) ACPI CA Core Subsystem: 6314 6315Implemented a workaround for reversed _PRT entries. A significant number 6316of 6317BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 6318change dynamically detects and repairs this problem. Provides 6319compatibility 6320with MS ACPI. BZ 6859 6321 6322Simplified the internal ACPI hardware interfaces to eliminate the locking 6323flag parameter from Register Read/Write. Added a new external interface, 6324AcpiGetRegisterUnlocked. 6325 6326Fixed a problem where the invocation of a GPE control method could hang. 6327This 6328was a regression introduced in 20080514. The new method argument count 6329validation mechanism can enter an infinite loop when a GPE method is 6330dispatched. Problem fixed by removing the obsolete code that passed GPE 6331block 6332information to the notify handler via the control method parameter 6333pointer. 6334 6335Fixed a problem where the _SST execution status was incorrectly returned 6336to 6337the caller of AcpiEnterSleepStatePrep. This was a regression introduced 6338in 633920080514. _SST is optional and a NOT_FOUND exception should never be 6340returned. BZ 716 6341 6342Fixed a problem where a deleted object could be accessed from within the 6343AML 6344parser. This was a regression introduced in version 20080123 as a fix for 6345the 6346Unload operator. Lin Ming. BZ 10669 6347 6348Cleaned up the debug operand dump mechanism. Eliminated unnecessary 6349operands 6350and eliminated the use of a negative index in a loop. Operands are now 6351displayed in the correct order, not backwards. This also fixes a 6352regression 6353introduced in 20080514 on 64-bit systems where the elimination of 6354ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 6355715 6356 6357Fixed a possible memory leak in EvPciConfigRegionSetup where the error 6358exit 6359path did not delete a locally allocated structure. 6360 6361Updated definitions for the DMAR and SRAT tables to synchronize with the 6362current specifications. Includes disassembler support. 6363 6364Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 6365loop termination value was used. Loop terminated on iteration early, 6366missing 6367one mutex. Linn Crosetto 6368 6369Example Code and Data Size: These are the sizes for the OS-independent 6370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6371debug version of the code includes the debug output trace mechanism and 6372has a 6373much larger code and data size. 6374 6375 Previous Release: 6376 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6377 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6378 Current Release: 6379 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6380 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6381 63822) iASL Compiler/Disassembler and Tools: 6383 6384Disassembler: Implemented support for EisaId() within _CID objects. Now 6385disassemble integer _CID objects back to EisaId invocations, including 6386multiple integers within _CID packages. Includes single-step support for 6387debugger also. 6388 6389Disassembler: Added support for DMAR and SRAT table definition changes. 6390 6391---------------------------------------- 639214 May 2008. Summary of changes for version 20080514: 6393 63941) ACPI CA Core Subsystem: 6395 6396Fixed a problem where GPEs were enabled too early during the ACPICA 6397initialization. This could lead to "handler not installed" errors on some 6398machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 6399This 6400ensures that all operation regions and devices throughout the namespace 6401have 6402been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 6403 6404Implemented a change to the enter sleep code. Moved execution of the _GTS 6405method to just before setting sleep enable bit. The execution was moved 6406from 6407AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 6408immediately before the SLP_EN bit is set, as per the ACPI specification. 6409Luming Yu, BZ 1653. 6410 6411Implemented a fix to disable unknown GPEs (2nd version). Now always 6412disable 6413the GPE, even if ACPICA thinks that that it is already disabled. It is 6414possible that the AML or some other code has enabled the GPE unbeknownst 6415to 6416the ACPICA code. 6417 6418Fixed a problem with the Field operator where zero-length fields would 6419return 6420an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 6421ASL 6422field declarations in Field(), BankField(), and IndexField(). BZ 10606. 6423 6424Implemented a fix for the Load operator, now load the table at the 6425namespace 6426root. This reverts a change introduced in version 20071019. The table is 6427now 6428loaded at the namespace root even though this goes against the ACPI 6429specification. This provides compatibility with other ACPI 6430implementations. 6431The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 6432Ming. 6433 6434Fixed a problem where ACPICA would not Load() tables with unusual 6435signatures. 6436Now ignore ACPI table signature for Load() operator. Only "SSDT" is 6437acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 6438Therefore, signature validation is worthless. Apparently MS ACPI accepts 6439such 6440signatures, ACPICA must be compatible. BZ 10454. 6441 6442Fixed a possible negative array index in AcpiUtValidateException. Added 6443NULL 6444fields to the exception string arrays to eliminate a -1 subtraction on 6445the 6446SubStatus field. 6447 6448Updated the debug tracking macros to reduce overall code and data size. 6449Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 6450instead of pointers to static strings. Jan Beulich and Bob Moore. 6451 6452Implemented argument count checking in control method invocation via 6453AcpiEvaluateObject. Now emit an error if too few arguments, warning if 6454too 6455many. This applies only to extern programmatic control method execution, 6456not 6457method-to-method calls within the AML. Lin Ming. 6458 6459Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 6460no 6461longer needed, especially with the removal of 16-bit support. It was 6462replaced 6463mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 6464bit 6465on 646632/64-bit platforms is required. 6467 6468Added the C const qualifier for appropriate string constants -- mostly 6469MODULE_NAME and printf format strings. Jan Beulich. 6470 6471Example Code and Data Size: These are the sizes for the OS-independent 6472acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6473debug version of the code includes the debug output trace mechanism and 6474has a 6475much larger code and data size. 6476 6477 Previous Release: 6478 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6479 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6480 Current Release: 6481 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6482 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6483 64842) iASL Compiler/Disassembler and Tools: 6485 6486Implemented ACPI table revision ID validation in the disassembler. Zero 6487is 6488always invalid. For DSDTs, the ID controls the interpreter integer width. 64891 6490means 32-bit and this is unusual. 2 or greater is 64-bit. 6491 6492---------------------------------------- 649321 March 2008. Summary of changes for version 20080321: 6494 64951) ACPI CA Core Subsystem: 6496 6497Implemented an additional change to the GPE support in order to suppress 6498spurious or stray GPEs. The AcpiEvDisableGpe function will now 6499permanently 6500disable incoming GPEs that are neither enabled nor disabled -- meaning 6501that 6502the GPE is unknown to the system. This should prevent future interrupt 6503floods 6504from that GPE. BZ 6217 (Zhang Rui) 6505 6506Fixed a problem where NULL package elements were not returned to the 6507AcpiEvaluateObject interface correctly. The element was simply ignored 6508instead of returning a NULL ACPI_OBJECT package element, potentially 6509causing 6510a buffer overflow and/or confusing the caller who expected a fixed number 6511of 6512elements. BZ 10132 (Lin Ming, Bob Moore) 6513 6514Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 6515Dword, 6516Qword), Field, BankField, and IndexField operators when invoked from 6517inside 6518an executing control method. In this case, these operators created 6519namespace 6520nodes that were incorrectly left marked as permanent nodes instead of 6521temporary nodes. This could cause a problem if there is race condition 6522between an exiting control method and a running namespace walk. (Reported 6523by 6524Linn Crosetto) 6525 6526Fixed a problem where the CreateField and CreateXXXField operators would 6527incorrectly allow duplicate names (the name of the field) with no 6528exception 6529generated. 6530 6531Implemented several changes for Notify handling. Added support for new 6532Notify 6533values (ACPI 2.0+) and improved the Notify debug output. Notify on 6534PowerResource objects is no longer allowed, as per the ACPI 6535specification. 6536(Bob Moore, Zhang Rui) 6537 6538All Reference Objects returned via the AcpiEvaluateObject interface are 6539now 6540marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 6541for 6542NULL objects - either NULL package elements or unresolved named 6543references. 6544 6545Fixed a problem where an extraneous debug message was produced for 6546package 6547objects (when debugging enabled). The message "Package List length larger 6548than NumElements count" is now produced in the correct case, and is now 6549an 6550error message rather than a debug message. Added a debug message for the 6551opposite case, where NumElements is larger than the Package List (the 6552package 6553will be padded out with NULL elements as per the ACPI spec.) 6554 6555Implemented several improvements for the output of the ASL "Debug" object 6556to 6557clarify and keep all data for a given object on one output line. 6558 6559Fixed two size calculation issues with the variable-length Start 6560Dependent 6561resource descriptor. 6562 6563Example Code and Data Size: These are the sizes for the OS-independent 6564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6565debug version of the code includes the debug output trace mechanism and 6566has 6567a much larger code and data size. 6568 6569 Previous Release: 6570 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6571 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6572 Current Release: 6573 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6574 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6575 65762) iASL Compiler/Disassembler and Tools: 6577 6578Fixed a problem with the use of the Switch operator where execution of 6579the 6580containing method by multiple concurrent threads could cause an 6581AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 6582actual Switch opcode, it must be simulated with local named temporary 6583variables and if/else pairs. The solution chosen was to mark any method 6584that 6585uses Switch as Serialized, thus preventing multiple thread entries. BZ 6586469. 6587 6588---------------------------------------- 658913 February 2008. Summary of changes for version 20080213: 6590 65911) ACPI CA Core Subsystem: 6592 6593Implemented another MS compatibility design change for GPE/Notify 6594handling. 6595GPEs are now cleared/enabled asynchronously to allow all pending notifies 6596to 6597complete first. It is expected that the OSL will queue the enable request 6598behind all pending notify requests (may require changes to the local host 6599OSL 6600in AcpiOsExecute). Alexey Starikovskiy. 6601 6602Fixed a problem where buffer and package objects passed as arguments to a 6603control method via the external AcpiEvaluateObject interface could cause 6604an 6605AE_AML_INTERNAL exception depending on the order and type of operators 6606executed by the target control method. 6607 6608Fixed a problem where resource descriptor size optimization could cause a 6609problem when a _CRS resource template is passed to a _SRS method. The 6610_SRS 6611resource template must use the same descriptors (with the same size) as 6612returned from _CRS. This change affects the following resource 6613descriptors: 6614IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 66159487) 6616 6617Fixed a problem where a CopyObject to RegionField, BankField, and 6618IndexField 6619objects did not perform an implicit conversion as it should. These types 6620must 6621retain their initial type permanently as per the ACPI specification. 6622However, 6623a CopyObject to all other object types should not perform an implicit 6624conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 6625 6626Fixed a problem with the AcpiGetDevices interface where the mechanism to 6627match device CIDs did not examine the entire list of available CIDs, but 6628instead aborted on the first non-matching CID. Andrew Patterson. 6629 6630Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 6631was 6632inadvertently changed to return a 16-bit value instead of a 32-bit value, 6633truncating the upper dword of a 64-bit value. This macro is only used to 6634display debug output, so no incorrect calculations were made. Also, 6635reimplemented the macro so that a 64-bit shift is not performed by 6636inefficient compilers. 6637 6638Added missing va_end statements that should correspond with each va_start 6639statement. 6640 6641Example Code and Data Size: These are the sizes for the OS-independent 6642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6643debug version of the code includes the debug output trace mechanism and 6644has 6645a much larger code and data size. 6646 6647 Previous Release: 6648 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6649 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6650 Current Release: 6651 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6652 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6653 66542) iASL Compiler/Disassembler and Tools: 6655 6656Implemented full disassembler support for the following new ACPI tables: 6657BERT, EINJ, and ERST. Implemented partial disassembler support for the 6658complicated HEST table. These tables support the Windows Hardware Error 6659Architecture (WHEA). 6660 6661---------------------------------------- 666223 January 2008. Summary of changes for version 20080123: 6663 66641) ACPI CA Core Subsystem: 6665 6666Added the 2008 copyright to all module headers and signons. This affects 6667virtually every file in the ACPICA core subsystem, the iASL compiler, and 6668the tools/utilities. 6669 6670Fixed a problem with the SizeOf operator when used with Package and 6671Buffer 6672objects. These objects have deferred execution for some arguments, and 6673the 6674execution is now completed before the SizeOf is executed. This problem 6675caused 6676unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 6677BZ 66789558 6679 6680Implemented an enhancement to the interpreter "slack mode". In the 6681absence 6682of 6683an explicit return or an implicitly returned object from the last 6684executed 6685opcode, a control method will now implicitly return an integer of value 0 6686for 6687Microsoft compatibility. (Lin Ming) BZ 392 6688 6689Fixed a problem with the Load operator where an exception was not 6690returned 6691in 6692the case where the table is already loaded. (Lin Ming) BZ 463 6693 6694Implemented support for the use of DDBHandles as an Indexed Reference, as 6695per 6696the ACPI spec. (Lin Ming) BZ 486 6697 6698Implemented support for UserTerm (Method invocation) for the Unload 6699operator 6700as per the ACPI spec. (Lin Ming) BZ 580 6701 6702Fixed a problem with the LoadTable operator where the OemId and 6703OemTableId 6704input strings could cause unexpected failures if they were shorter than 6705the 6706maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 6707 6708Implemented support for UserTerm (Method invocation) for the Unload 6709operator 6710as per the ACPI spec. (Lin Ming) BZ 580 6711 6712Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 6713HEST, 6714IBFT, UEFI, WDAT. Disassembler support is forthcoming. 6715 6716Example Code and Data Size: These are the sizes for the OS-independent 6717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6718debug version of the code includes the debug output trace mechanism and 6719has 6720a much larger code and data size. 6721 6722 Previous Release: 6723 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6724 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6725 Current Release: 6726 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6727 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6728 67292) iASL Compiler/Disassembler and Tools: 6730 6731Implemented support in the disassembler for checksum validation on 6732incoming 6733binary DSDTs and SSDTs. If incorrect, a message is displayed within the 6734table 6735header dump at the start of the disassembly. 6736 6737Implemented additional debugging information in the namespace listing 6738file 6739created during compilation. In addition to the namespace hierarchy, the 6740full 6741pathname to each namespace object is displayed. 6742 6743Fixed a problem with the disassembler where invalid ACPI tables could 6744cause 6745faults or infinite loops. 6746 6747Fixed an unexpected parse error when using the optional "parameter types" 6748list in a control method declaration. (Lin Ming) BZ 397 6749 6750Fixed a problem where two External declarations with the same name did 6751not 6752cause an error (Lin Ming) BZ 509 6753 6754Implemented support for full TermArgs (adding Argx, Localx and method 6755invocation) for the ParameterData parameter to the LoadTable operator. 6756(Lin 6757Ming) BZ 583,587 6758 6759---------------------------------------- 676019 December 2007. Summary of changes for version 20071219: 6761 67621) ACPI CA Core Subsystem: 6763 6764Implemented full support for deferred execution for the TermArg string 6765arguments for DataTableRegion. This enables forward references and full 6766operand resolution for the three string arguments. Similar to 6767OperationRegion 6768deferred argument execution.) Lin Ming. BZ 430 6769 6770Implemented full argument resolution support for the BankValue argument 6771to 6772BankField. Previously, only constants were supported, now any TermArg may 6773be 6774used. Lin Ming BZ 387, 393 6775 6776Fixed a problem with AcpiGetDevices where the search of a branch of the 6777device tree could be terminated prematurely. In accordance with the ACPI 6778specification, the search down the current branch is terminated if a 6779device 6780is both not present and not functional (instead of just not present.) 6781Yakui 6782Zhao. 6783 6784Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 6785if 6786the underlying AML code changed the GPE enable registers. Now, any 6787unknown 6788incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 6789disabled 6790instead of simply ignored. Rui Zhang. 6791 6792Fixed a problem with Index Fields where the Index register was 6793incorrectly 6794limited to a maximum of 32 bits. Now any size may be used. 6795 6796Fixed a couple memory leaks associated with "implicit return" objects 6797when 6798the AML Interpreter slack mode is enabled. Lin Ming BZ 349 6799 6800Example Code and Data Size: These are the sizes for the OS-independent 6801acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6802debug version of the code includes the debug output trace mechanism and 6803has 6804a much larger code and data size. 6805 6806 Previous Release: 6807 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6808 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6809 Current Release: 6810 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6811 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6812 6813---------------------------------------- 681414 November 2007. Summary of changes for version 20071114: 6815 68161) ACPI CA Core Subsystem: 6817 6818Implemented event counters for each of the Fixed Events, the ACPI SCI 6819(interrupt) itself, and control methods executed. Named 6820AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 6821These 6822should be useful for debugging and statistics. 6823 6824Implemented a new external interface, AcpiGetStatistics, to retrieve the 6825contents of the various event counters. Returns the current values for 6826AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 6827AcpiMethodCount. The interface can be expanded in the future if new 6828counters 6829are added. Device drivers should use this interface rather than access 6830the 6831counters directly. 6832 6833Fixed a problem with the FromBCD and ToBCD operators. With some 6834compilers, 6835the ShortDivide function worked incorrectly, causing problems with the 6836BCD 6837functions with large input values. A truncation from 64-bit to 32-bit 6838inadvertently occurred. Internal BZ 435. Lin Ming 6839 6840Fixed a problem with Index references passed as method arguments. 6841References 6842passed as arguments to control methods were dereferenced immediately 6843(before 6844control was passed to the called method). The references are now 6845correctly 6846passed directly to the called method. BZ 5389. Lin Ming 6847 6848Fixed a problem with CopyObject used in conjunction with the Index 6849operator. 6850The reference was incorrectly dereferenced before the copy. The reference 6851is 6852now correctly copied. BZ 5391. Lin Ming 6853 6854Fixed a problem with Control Method references within Package objects. 6855These 6856references are now correctly generated. This completes the package 6857construction overhaul that began in version 20071019. 6858 6859Example Code and Data Size: These are the sizes for the OS-independent 6860acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6861debug version of the code includes the debug output trace mechanism and 6862has 6863a much larger code and data size. 6864 6865 Previous Release: 6866 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6867 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6868 Current Release: 6869 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6870 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6871 6872 68732) iASL Compiler/Disassembler and Tools: 6874 6875The AcpiExec utility now installs handlers for all of the predefined 6876Operation Region types. New types supported are: PCI_Config, CMOS, and 6877PCIBARTarget. 6878 6879Fixed a problem with the 64-bit version of AcpiExec where the extended 6880(64- 6881bit) address fields for the DSDT and FACS within the FADT were not being 6882used, causing truncation of the upper 32-bits of these addresses. Lin 6883Ming 6884and Bob Moore 6885 6886---------------------------------------- 688719 October 2007. Summary of changes for version 20071019: 6888 68891) ACPI CA Core Subsystem: 6890 6891Fixed a problem with the Alias operator when the target of the alias is a 6892named ASL operator that opens a new scope -- Scope, Device, 6893PowerResource, 6894Processor, and ThermalZone. In these cases, any children of the original 6895operator could not be accessed via the alias, potentially causing 6896unexpected 6897AE_NOT_FOUND exceptions. (BZ 9067) 6898 6899Fixed a problem with the Package operator where all named references were 6900created as object references and left otherwise unresolved. According to 6901the 6902ACPI specification, a Package can only contain Data Objects or references 6903to 6904control methods. The implication is that named references to Data Objects 6905(Integer, Buffer, String, Package, BufferField, Field) should be resolved 6906immediately upon package creation. This is the approach taken with this 6907change. References to all other named objects (Methods, Devices, Scopes, 6908etc.) are all now properly created as reference objects. (BZ 5328) 6909 6910Reverted a change to Notify handling that was introduced in version 691120070508. This version changed the Notify handling from asynchronous to 6912fully synchronous (Device driver Notify handling with respect to the 6913Notify 6914ASL operator). It was found that this change caused more problems than it 6915solved and was removed by most users. 6916 6917Fixed a problem with the Increment and Decrement operators where the type 6918of 6919the target object could be unexpectedly and incorrectly changed. (BZ 353) 6920Lin Ming. 6921 6922Fixed a problem with the Load and LoadTable operators where the table 6923location within the namespace was ignored. Instead, the table was always 6924loaded into the root or current scope. Lin Ming. 6925 6926Fixed a problem with the Load operator when loading a table from a buffer 6927object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 6928 6929Fixed a problem with the Debug object where a store of a DdbHandle 6930reference 6931object to the Debug object could cause a fault. 6932 6933Added a table checksum verification for the Load operator, in the case 6934where 6935the load is from a buffer. (BZ 578). 6936 6937Implemented additional parameter validation for the LoadTable operator. 6938The 6939length of the input strings SignatureString, OemIdString, and OemTableId 6940are 6941now checked for maximum lengths. (BZ 582) Lin Ming. 6942 6943Example Code and Data Size: These are the sizes for the OS-independent 6944acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6945debug version of the code includes the debug output trace mechanism and 6946has 6947a much larger code and data size. 6948 6949 Previous Release: 6950 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6951 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6952 Current Release: 6953 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6954 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6955 6956 69572) iASL Compiler/Disassembler: 6958 6959Fixed a problem where if a single file was specified and the file did not 6960exist, no error message was emitted. (Introduced with wildcard support in 6961version 20070917.) 6962 6963---------------------------------------- 696419 September 2007. Summary of changes for version 20070919: 6965 69661) ACPI CA Core Subsystem: 6967 6968Designed and implemented new external interfaces to install and remove 6969handlers for ACPI table-related events. Current events that are defined 6970are 6971LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 6972they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 6973AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 6974 6975Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 6976(acpi_serialized option on Linux) could cause some systems to hang during 6977initialization. (Bob Moore) BZ 8171 6978 6979Fixed a problem where objects of certain types (Device, ThermalZone, 6980Processor, PowerResource) can be not found if they are declared and 6981referenced from within the same control method (Lin Ming) BZ 341 6982 6983Example Code and Data Size: These are the sizes for the OS-independent 6984acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6985debug version of the code includes the debug output trace mechanism and 6986has 6987a much larger code and data size. 6988 6989 Previous Release: 6990 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6991 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6992 Current Release: 6993 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6994 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6995 6996 69972) iASL Compiler/Disassembler: 6998 6999Implemented support to allow multiple files to be compiled/disassembled 7000in 7001a 7002single invocation. This includes command line wildcard support for both 7003the 7004Windows and Unix versions of the compiler. This feature simplifies the 7005disassembly and compilation of multiple ACPI tables in a single 7006directory. 7007 7008---------------------------------------- 700908 May 2007. Summary of changes for version 20070508: 7010 70111) ACPI CA Core Subsystem: 7012 7013Implemented a Microsoft compatibility design change for the handling of 7014the 7015Notify AML operator. Previously, notify handlers were dispatched and 7016executed completely asynchronously in a deferred thread. The new design 7017still executes the notify handlers in a different thread, but the 7018original 7019thread that executed the Notify() now waits at a synchronization point 7020for 7021the notify handler to complete. Some machines depend on a synchronous 7022Notify 7023operator in order to operate correctly. 7024 7025Implemented support to allow Package objects to be passed as method 7026arguments to the external AcpiEvaluateObject interface. Previously, this 7027would return the AE_NOT_IMPLEMENTED exception. This feature had not been 7028implemented since there were no reserved control methods that required it 7029until recently. 7030 7031Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7032that 7033contained invalid non-zero values in reserved fields could cause later 7034failures because these fields have meaning in later revisions of the 7035FADT. 7036For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7037fields 7038are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7039 7040Fixed a problem where the Global Lock handle was not properly updated if 7041a 7042thread that acquired the Global Lock via executing AML code then 7043attempted 7044to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7045Joe 7046Liu. 7047 7048Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7049could be corrupted if the interrupt being removed was at the head of the 7050list. Reported by Linn Crosetto. 7051 7052Example Code and Data Size: These are the sizes for the OS-independent 7053acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7054debug version of the code includes the debug output trace mechanism and 7055has 7056a much larger code and data size. 7057 7058 Previous Release: 7059 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7060 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7061 Current Release: 7062 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7063 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7064 7065---------------------------------------- 706620 March 2007. Summary of changes for version 20070320: 7067 70681) ACPI CA Core Subsystem: 7069 7070Implemented a change to the order of interpretation and evaluation of AML 7071operand objects within the AML interpreter. The interpreter now evaluates 7072operands in the order that they appear in the AML stream (and the 7073corresponding ASL code), instead of in the reverse order (after the 7074entire 7075operand list has been parsed). The previous behavior caused several 7076subtle 7077incompatibilities with the Microsoft AML interpreter as well as being 7078somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 7079 7080Implemented a change to the ACPI Global Lock support. All interfaces to 7081the 7082global lock now allow the same thread to acquire the lock multiple times. 7083This affects the AcpiAcquireGlobalLock external interface to the global 7084lock 7085as well as the internal use of the global lock to support AML fields -- a 7086control method that is holding the global lock can now simultaneously 7087access 7088AML fields that require global lock protection. Previously, in both 7089cases, 7090this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 7091to 7092AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 7093Controller. There is no change to the behavior of the AML Acquire 7094operator, 7095as this can already be used to acquire a mutex multiple times by the same 7096thread. BZ 8066. With assistance from Alexey Starikovskiy. 7097 7098Fixed a problem where invalid objects could be referenced in the AML 7099Interpreter after error conditions. During operand evaluation, ensure 7100that 7101the internal "Return Object" field is cleared on error and only valid 7102pointers are stored there. Caused occasional access to deleted objects 7103that 7104resulted in "large reference count" warning messages. Valery Podrezov. 7105 7106Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 7107on 7108deeply nested control method invocations. BZ 7873, local BZ 487. Valery 7109Podrezov. 7110 7111Fixed an internal problem with the handling of result objects on the 7112interpreter result stack. BZ 7872. Valery Podrezov. 7113 7114Removed obsolete code that handled the case where AML_NAME_OP is the 7115target 7116of a reference (Reference.Opcode). This code was no longer necessary. BZ 71177874. Valery Podrezov. 7118 7119Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 7120was 7121a 7122remnant from the previously discontinued 16-bit support. 7123 7124Example Code and Data Size: These are the sizes for the OS-independent 7125acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7126debug version of the code includes the debug output trace mechanism and 7127has 7128a much larger code and data size. 7129 7130 Previous Release: 7131 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7132 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7133 Current Release: 7134 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7135 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7136 7137---------------------------------------- 713826 January 2007. Summary of changes for version 20070126: 7139 71401) ACPI CA Core Subsystem: 7141 7142Added the 2007 copyright to all module headers and signons. This affects 7143virtually every file in the ACPICA core subsystem, the iASL compiler, and 7144the utilities. 7145 7146Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 7147during a table load. A bad pointer was passed in the case where the DSDT 7148is 7149overridden, causing a fault in this case. 7150 7151Example Code and Data Size: These are the sizes for the OS-independent 7152acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7153debug version of the code includes the debug output trace mechanism and 7154has 7155a much larger code and data size. 7156 7157 Previous Release: 7158 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7159 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7160 Current Release: 7161 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7162 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7163 7164---------------------------------------- 716515 December 2006. Summary of changes for version 20061215: 7166 71671) ACPI CA Core Subsystem: 7168 7169Support for 16-bit ACPICA has been completely removed since it is no 7170longer 7171necessary and it clutters the code. All 16-bit macros, types, and 7172conditional compiles have been removed, cleaning up and simplifying the 7173code 7174across the entire subsystem. DOS support is no longer needed since the 7175bootable Linux firmware kit is now available. 7176 7177The handler for the Global Lock is now removed during AcpiTerminate to 7178enable a clean subsystem restart, via the implementation of the 7179AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 7180HP) 7181 7182Implemented enhancements to the multithreading support within the 7183debugger 7184to enable improved multithreading debugging and evaluation of the 7185subsystem. 7186(Valery Podrezov) 7187 7188Debugger: Enhanced the Statistics/Memory command to emit the total 7189(maximum) 7190memory used during the execution, as well as the maximum memory consumed 7191by 7192each of the various object types. (Valery Podrezov) 7193 7194Example Code and Data Size: These are the sizes for the OS-independent 7195acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7196debug version of the code includes the debug output trace mechanism and 7197has 7198a much larger code and data size. 7199 7200 Previous Release: 7201 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7202 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7203 Current Release: 7204 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7205 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7206 7207 72082) iASL Compiler/Disassembler and Tools: 7209 7210AcpiExec: Implemented a new option (-m) to display full memory use 7211statistics upon subsystem/program termination. (Valery Podrezov) 7212 7213---------------------------------------- 721409 November 2006. Summary of changes for version 20061109: 7215 72161) ACPI CA Core Subsystem: 7217 7218Optimized the Load ASL operator in the case where the source operand is 7219an 7220operation region. Simply map the operation region memory, instead of 7221performing a bytewise read. (Region must be of type SystemMemory, see 7222below.) 7223 7224Fixed the Load ASL operator for the case where the source operand is a 7225region field. A buffer object is also allowed as the source operand. BZ 7226480 7227 7228Fixed a problem where the Load ASL operator allowed the source operand to 7229be 7230an operation region of any type. It is now restricted to regions of type 7231SystemMemory, as per the ACPI specification. BZ 481 7232 7233Additional cleanup and optimizations for the new Table Manager code. 7234 7235AcpiEnable will now fail if all of the required ACPI tables are not 7236loaded 7237(FADT, FACS, DSDT). BZ 477 7238 7239Added #pragma pack(8/4) to acobject.h to ensure that the structures in 7240this 7241header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 7242manually optimized to be aligned and will not work if it is byte-packed. 7243 7244Example Code and Data Size: These are the sizes for the OS-independent 7245acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7246debug version of the code includes the debug output trace mechanism and 7247has 7248a much larger code and data size. 7249 7250 Previous Release: 7251 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7252 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7253 Current Release: 7254 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7255 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7256 7257 72582) iASL Compiler/Disassembler and Tools: 7259 7260Fixed a problem where the presence of the _OSI predefined control method 7261within complex expressions could cause an internal compiler error. 7262 7263AcpiExec: Implemented full region support for multiple address spaces. 7264SpaceId is now part of the REGION object. BZ 429 7265 7266---------------------------------------- 726711 October 2006. Summary of changes for version 20061011: 7268 72691) ACPI CA Core Subsystem: 7270 7271Completed an AML interpreter performance enhancement for control method 7272execution. Previously a 2-pass parse/execution, control methods are now 7273completely parsed and executed in a single pass. This improves overall 7274interpreter performance by ~25%, reduces code size, and reduces CPU stack 7275use. (Valery Podrezov + interpreter changes in version 20051202 that 7276eliminated namespace loading during the pass one parse.) 7277 7278Implemented _CID support for PCI Root Bridge detection. If the _HID does 7279not 7280match the predefined PCI Root Bridge IDs, the _CID list (if present) is 7281now 7282obtained and also checked for an ID match. 7283 7284Implemented additional support for the PCI _ADR execution: upsearch until 7285a 7286device scope is found before executing _ADR. This allows PCI_Config 7287operation regions to be declared locally within control methods 7288underneath 7289PCI device objects. 7290 7291Fixed a problem with a possible race condition between threads executing 7292AcpiWalkNamespace and the AML interpreter. This condition was removed by 7293modifying AcpiWalkNamespace to (by default) ignore all temporary 7294namespace 7295entries created during any concurrent control method execution. An 7296additional namespace race condition is known to exist between 7297AcpiWalkNamespace and the Load/Unload ASL operators and is still under 7298investigation. 7299 7300Restructured the AML ParseLoop function, breaking it into several 7301subfunctions in order to reduce CPU stack use and improve 7302maintainability. 7303(Mikhail Kouzmich) 7304 7305AcpiGetHandle: Fix for parameter validation to detect invalid 7306combinations 7307of prefix handle and pathname. BZ 478 7308 7309Example Code and Data Size: These are the sizes for the OS-independent 7310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7311debug version of the code includes the debug output trace mechanism and 7312has 7313a much larger code and data size. 7314 7315 Previous Release: 7316 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7317 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7318 Current Release: 7319 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7320 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7321 73222) iASL Compiler/Disassembler and Tools: 7323 7324Ported the -g option (get local ACPI tables) to the new ACPICA Table 7325Manager 7326to restore original behavior. 7327 7328---------------------------------------- 732927 September 2006. Summary of changes for version 20060927: 7330 73311) ACPI CA Core Subsystem: 7332 7333Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 7334These functions now use a spinlock for mutual exclusion and the interrupt 7335level indication flag is not needed. 7336 7337Fixed a problem with the Global Lock where the lock could appear to be 7338obtained before it is actually obtained. The global lock semaphore was 7339inadvertently created with one unit instead of zero units. (BZ 464) 7340Fiodor 7341Suietov. 7342 7343Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 7344during 7345a read from a buffer or region field. (BZ 458) Fiodor Suietov. 7346 7347Example Code and Data Size: These are the sizes for the OS-independent 7348acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7349debug version of the code includes the debug output trace mechanism and 7350has 7351a much larger code and data size. 7352 7353 Previous Release: 7354 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7355 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7356 Current Release: 7357 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7358 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7359 7360 73612) iASL Compiler/Disassembler and Tools: 7362 7363Fixed a compilation problem with the pre-defined Resource Descriptor 7364field 7365names where an "object does not exist" error could be incorrectly 7366generated 7367if the parent ResourceTemplate pathname places the template within a 7368different namespace scope than the current scope. (BZ 7212) 7369 7370Fixed a problem where the compiler could hang after syntax errors 7371detected 7372in an ElseIf construct. (BZ 453) 7373 7374Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 7375operator. An incorrect output filename was produced when this parameter 7376was 7377a null string (""). Now, the original input filename is used as the AML 7378output filename, with an ".aml" extension. 7379 7380Implemented a generic batch command mode for the AcpiExec utility 7381(execute 7382any AML debugger command) (Valery Podrezov). 7383 7384---------------------------------------- 738512 September 2006. Summary of changes for version 20060912: 7386 73871) ACPI CA Core Subsystem: 7388 7389Enhanced the implementation of the "serialized mode" of the interpreter 7390(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 7391specified, instead of creating a serialization semaphore per control 7392method, 7393the interpreter lock is simply no longer released before a blocking 7394operation during control method execution. This effectively makes the AML 7395Interpreter single-threaded. The overhead of a semaphore per-method is 7396eliminated. 7397 7398Fixed a regression where an error was no longer emitted if a control 7399method 7400attempts to create 2 objects of the same name. This once again returns 7401AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 7402that 7403will dynamically serialize the control method to possible prevent future 7404errors. (BZ 440) 7405 7406Integrated a fix for a problem with PCI Express HID detection in the PCI 7407Config Space setup procedure. (BZ 7145) 7408 7409Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 7410AcpiHwInitialize function - the FADT registers are now validated when the 7411table is loaded. 7412 7413Added two new warnings during FADT verification - 1) if the FADT is 7414larger 7415than the largest known FADT version, and 2) if there is a mismatch 7416between 7417a 741832-bit block address and the 64-bit X counterpart (when both are non- 7419zero.) 7420 7421Example Code and Data Size: These are the sizes for the OS-independent 7422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7423debug version of the code includes the debug output trace mechanism and 7424has 7425a much larger code and data size. 7426 7427 Previous Release: 7428 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7429 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7430 Current Release: 7431 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7432 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7433 7434 74352) iASL Compiler/Disassembler and Tools: 7436 7437Fixed a problem with the implementation of the Switch() operator where 7438the 7439temporary variable was declared too close to the actual Switch, instead 7440of 7441at method level. This could cause a problem if the Switch() operator is 7442within a while loop, causing an error on the second iteration. (BZ 460) 7443 7444Disassembler - fix for error emitted for unknown type for target of scope 7445operator. Now, ignore it and continue. 7446 7447Disassembly of an FADT now verifies the input FADT and reports any errors 7448found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 7449 7450Disassembly of raw data buffers with byte initialization data now 7451prefixes 7452each output line with the current buffer offset. 7453 7454Disassembly of ASF! table now includes all variable-length data fields at 7455the end of some of the subtables. 7456 7457The disassembler now emits a comment if a buffer appears to be a 7458ResourceTemplate, but cannot be disassembled as such because the EndTag 7459does 7460not appear at the very end of the buffer. 7461 7462AcpiExec - Added the "-t" command line option to enable the serialized 7463mode 7464of the AML interpreter. 7465 7466---------------------------------------- 746731 August 2006. Summary of changes for version 20060831: 7468 74691) ACPI CA Core Subsystem: 7470 7471Miscellaneous fixes for the Table Manager: 7472- Correctly initialize internal common FADT for all 64-bit "X" fields 7473- Fixed a couple table mapping issues during table load 7474- Fixed a couple alignment issues for IA64 7475- Initialize input array to zero in AcpiInitializeTables 7476- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 7477AcpiGetTableByIndex 7478 7479Change for GPE support: when a "wake" GPE is received, all wake GPEs are 7480now 7481immediately disabled to prevent the waking GPE from firing again and to 7482prevent other wake GPEs from interrupting the wake process. 7483 7484Added the AcpiGpeCount global that tracks the number of processed GPEs, 7485to 7486be used for debugging systems with a large number of ACPI interrupts. 7487 7488Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 7489both the ACPICA headers and the disassembler. 7490 7491Example Code and Data Size: These are the sizes for the OS-independent 7492acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7493debug version of the code includes the debug output trace mechanism and 7494has 7495a much larger code and data size. 7496 7497 Previous Release: 7498 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7499 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7500 Current Release: 7501 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7502 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7503 7504 75052) iASL Compiler/Disassembler and Tools: 7506 7507Disassembler support for the DMAR ACPI table. 7508 7509---------------------------------------- 751023 August 2006. Summary of changes for version 20060823: 7511 75121) ACPI CA Core Subsystem: 7513 7514The Table Manager component has been completely redesigned and 7515reimplemented. The new design is much simpler, and reduces the overall 7516code 7517and data size of the kernel-resident ACPICA by approximately 5%. Also, it 7518is 7519now possible to obtain the ACPI tables very early during kernel 7520initialization, even before dynamic memory management is initialized. 7521(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 7522 7523Obsolete ACPICA interfaces: 7524 7525- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 7526init 7527time). 7528- AcpiLoadTable: Not needed. 7529- AcpiUnloadTable: Not needed. 7530 7531New ACPICA interfaces: 7532 7533- AcpiInitializeTables: Must be called before the table manager can be 7534used. 7535- AcpiReallocateRootTable: Used to transfer the root table to dynamically 7536allocated memory after it becomes available. 7537- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 7538tables 7539in the RSDT/XSDT. 7540 7541Other ACPICA changes: 7542 7543- AcpiGetTableHeader returns the actual mapped table header, not a copy. 7544Use 7545AcpiOsUnmapMemory to free this mapping. 7546- AcpiGetTable returns the actual mapped table. The mapping is managed 7547internally and must not be deleted by the caller. Use of this interface 7548causes no additional dynamic memory allocation. 7549- AcpiFindRootPointer: Support for physical addressing has been 7550eliminated, 7551it appeared to be unused. 7552- The interface to AcpiOsMapMemory has changed to be consistent with the 7553other allocation interfaces. 7554- The interface to AcpiOsGetRootPointer has changed to eliminate 7555unnecessary 7556parameters. 7557- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 755864- 7559bit platforms. Was previously 64 bits on all platforms. 7560- The interface to the ACPI Global Lock acquire/release macros have 7561changed 7562slightly since ACPICA no longer keeps a local copy of the FACS with a 7563constructed pointer to the actual global lock. 7564 7565Porting to the new table manager: 7566 7567- AcpiInitializeTables: Must be called once, and can be called anytime 7568during the OS initialization process. It allows the host to specify an 7569area 7570of memory to be used to store the internal version of the RSDT/XSDT (root 7571table). This allows the host to access ACPI tables before memory 7572management 7573is initialized and running. 7574- AcpiReallocateRootTable: Can be called after memory management is 7575running 7576to copy the root table to a dynamically allocated array, freeing up the 7577scratch memory specified in the call to AcpiInitializeTables. 7578- AcpiSubsystemInitialize: This existing interface is independent of the 7579Table Manager, and does not have to be called before the Table Manager 7580can 7581be used, it only must be called before the rest of ACPICA can be used. 7582- ACPI Tables: Some changes have been made to the names and structure of 7583the 7584actbl.h and actbl1.h header files and may require changes to existing 7585code. 7586For example, bitfields have been completely removed because of their lack 7587of 7588portability across C compilers. 7589- Update interfaces to the Global Lock acquire/release macros if local 7590versions are used. (see acwin.h) 7591 7592Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 7593 7594New files: tbfind.c 7595 7596Example Code and Data Size: These are the sizes for the OS-independent 7597acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7598debug version of the code includes the debug output trace mechanism and 7599has 7600a much larger code and data size. 7601 7602 Previous Release: 7603 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7604 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7605 Current Release: 7606 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7607 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7608 7609 76102) iASL Compiler/Disassembler and Tools: 7611 7612No changes for this release. 7613 7614---------------------------------------- 761521 July 2006. Summary of changes for version 20060721: 7616 76171) ACPI CA Core Subsystem: 7618 7619The full source code for the ASL test suite used to validate the iASL 7620compiler and the ACPICA core subsystem is being released with the ACPICA 7621source for the first time. The source is contained in a separate package 7622and 7623consists of over 1100 files that exercise all ASL/AML operators. The 7624package 7625should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 7626Fiodor 7627Suietov) 7628 7629Completed a new design and implementation for support of the ACPI Global 7630Lock. On the OS side, the global lock is now treated as a standard AML 7631mutex. Previously, multiple OS threads could "acquire" the global lock 7632simultaneously. However, this could cause the BIOS to be starved out of 7633the 7634lock - especially in cases such as the Embedded Controller driver where 7635there is a tight coupling between the OS and the BIOS. 7636 7637Implemented an optimization for the ACPI Global Lock interrupt mechanism. 7638The Global Lock interrupt handler no longer queues the execution of a 7639separate thread to signal the global lock semaphore. Instead, the 7640semaphore 7641is signaled directly from the interrupt handler. 7642 7643Implemented support within the AML interpreter for package objects that 7644contain a larger AML length (package list length) than the package 7645element 7646count. In this case, the length of the package is truncated to match the 7647package element count. Some BIOS code apparently modifies the package 7648length 7649on the fly, and this change supports this behavior. Provides 7650compatibility 7651with the MS AML interpreter. (With assistance from Fiodor Suietov) 7652 7653Implemented a temporary fix for the BankValue parameter of a Bank Field 7654to 7655support all constant values, now including the Zero and One opcodes. 7656Evaluation of this parameter must eventually be converted to a full 7657TermArg 7658evaluation. A not-implemented error is now returned (temporarily) for 7659non- 7660constant values for this parameter. 7661 7662Fixed problem reports (Fiodor Suietov) integrated: 7663- Fix for premature object deletion after CopyObject on Operation Region 7664(BZ 7665350) 7666 7667Example Code and Data Size: These are the sizes for the OS-independent 7668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7669debug version of the code includes the debug output trace mechanism and 7670has 7671a much larger code and data size. 7672 7673 Previous Release: 7674 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 7675 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 7676 Current Release: 7677 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7678 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7679 7680 76812) iASL Compiler/Disassembler and Tools: 7682 7683No changes for this release. 7684 7685---------------------------------------- 768607 July 2006. Summary of changes for version 20060707: 7687 76881) ACPI CA Core Subsystem: 7689 7690Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 7691that do not allow the initialization of address pointers within packed 7692structures - even though the hardware itself may support misaligned 7693transfers. Some of the debug data structures are packed by default to 7694minimize size. 7695 7696Added an error message for the case where AcpiOsGetThreadId() returns 7697zero. 7698A non-zero value is required by the core ACPICA code to ensure the proper 7699operation of AML mutexes and recursive control methods. 7700 7701The DSDT is now the only ACPI table that determines whether the AML 7702interpreter is in 32-bit or 64-bit mode. Not really a functional change, 7703but 7704the hooks for per-table 32/64 switching have been removed from the code. 7705A 7706clarification to the ACPI specification is forthcoming in ACPI 3.0B. 7707 7708Fixed a possible leak of an OwnerID in the error path of 7709AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 7710deletion to a single place in AcpiTbUninstallTable to correct possible 7711leaks 7712when using the AcpiTbDeleteTablesByType interface (with assistance from 7713Lance Ortiz.) 7714 7715Fixed a problem with Serialized control methods where the semaphore 7716associated with the method could be over-signaled after multiple method 7717invocations. 7718 7719Fixed two issues with the locking of the internal namespace data 7720structure. 7721Both the Unload() operator and AcpiUnloadTable interface now lock the 7722namespace during the namespace deletion associated with the table unload 7723(with assistance from Linn Crosetto.) 7724 7725Fixed problem reports (Valery Podrezov) integrated: 7726- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 7727 7728Fixed problem reports (Fiodor Suietov) integrated: 7729- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 7730- On Address Space handler deletion, needless deactivation call (BZ 374) 7731- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 7732375) 7733- Possible memory leak, Notify sub-objects of Processor, Power, 7734ThermalZone 7735(BZ 376) 7736- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 7737- Minimum Length of RSDT should be validated (BZ 379) 7738- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 7739Handler (BZ (380) 7740- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 7741loaded 7742(BZ 381) 7743 7744Example Code and Data Size: These are the sizes for the OS-independent 7745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7746debug version of the code includes the debug output trace mechanism and 7747has 7748a much larger code and data size. 7749 7750 Previous Release: 7751 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7752 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7753 Current Release: 7754 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7755 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7756 7757 77582) iASL Compiler/Disassembler and Tools: 7759 7760Fixed problem reports: 7761Compiler segfault when ASL contains a long (>1024) String declaration (BZ 7762436) 7763 7764---------------------------------------- 776523 June 2006. Summary of changes for version 20060623: 7766 77671) ACPI CA Core Subsystem: 7768 7769Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 7770allows the type to be customized to the host OS for improved efficiency 7771(since a spinlock is usually a very small object.) 7772 7773Implemented support for "ignored" bits in the ACPI registers. According 7774to 7775the ACPI specification, these bits should be preserved when writing the 7776registers via a read/modify/write cycle. There are 3 bits preserved in 7777this 7778manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 7779 7780Implemented the initial deployment of new OSL mutex interfaces. Since 7781some 7782host operating systems have separate mutex and semaphore objects, this 7783feature was requested. The base code now uses mutexes (and the new mutex 7784interfaces) wherever a binary semaphore was used previously. However, for 7785the current release, the mutex interfaces are defined as macros to map 7786them 7787to the existing semaphore interfaces. Therefore, no OSL changes are 7788required 7789at this time. (See acpiosxf.h) 7790 7791Fixed several problems with the support for the control method SyncLevel 7792parameter. The SyncLevel now works according to the ACPI specification 7793and 7794in concert with the Mutex SyncLevel parameter, since the current 7795SyncLevel 7796is a property of the executing thread. Mutual exclusion for control 7797methods 7798is now implemented with a mutex instead of a semaphore. 7799 7800Fixed three instances of the use of the C shift operator in the bitfield 7801support code (exfldio.c) to avoid the use of a shift value larger than 7802the 7803target data width. The behavior of C compilers is undefined in this case 7804and 7805can cause unpredictable results, and therefore the case must be detected 7806and 7807avoided. (Fiodor Suietov) 7808 7809Added an info message whenever an SSDT or OEM table is loaded dynamically 7810via the Load() or LoadTable() ASL operators. This should improve 7811debugging 7812capability since it will show exactly what tables have been loaded 7813(beyond 7814the tables present in the RSDT/XSDT.) 7815 7816Example Code and Data Size: These are the sizes for the OS-independent 7817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7818debug version of the code includes the debug output trace mechanism and 7819has 7820a much larger code and data size. 7821 7822 Previous Release: 7823 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7824 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7825 Current Release: 7826 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7827 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7828 7829 78302) iASL Compiler/Disassembler and Tools: 7831 7832No changes for this release. 7833 7834---------------------------------------- 783508 June 2006. Summary of changes for version 20060608: 7836 78371) ACPI CA Core Subsystem: 7838 7839Converted the locking mutex used for the ACPI hardware to a spinlock. 7840This 7841change should eliminate all problems caused by attempting to acquire a 7842semaphore at interrupt level, and it means that all ACPICA external 7843interfaces that directly access the ACPI hardware can be safely called 7844from 7845interrupt level. OSL code that implements the semaphore interfaces should 7846be 7847able to eliminate any workarounds for being called at interrupt level. 7848 7849Fixed a regression introduced in 20060526 where the ACPI device 7850initialization could be prematurely aborted with an AE_NOT_FOUND if a 7851device 7852did not have an optional _INI method. 7853 7854Fixed an IndexField issue where a write to the Data Register should be 7855limited in size to the AccessSize (width) of the IndexField itself. (BZ 7856433, 7857Fiodor Suietov) 7858 7859Fixed problem reports (Valery Podrezov) integrated: 7860- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 7861 7862Fixed problem reports (Fiodor Suietov) integrated: 7863- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 7864 7865Removed four global mutexes that were obsolete and were no longer being 7866used. 7867 7868Example Code and Data Size: These are the sizes for the OS-independent 7869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7870debug version of the code includes the debug output trace mechanism and 7871has 7872a much larger code and data size. 7873 7874 Previous Release: 7875 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7876 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7877 Current Release: 7878 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7879 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7880 7881 78822) iASL Compiler/Disassembler and Tools: 7883 7884Fixed a fault when using -g option (get tables from registry) on Windows 7885machines. 7886 7887Fixed problem reports integrated: 7888- Generate error if CreateField NumBits parameter is zero. (BZ 405) 7889- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 7890Suietov) 7891- Global table revision override (-r) is ignored (BZ 413) 7892 7893---------------------------------------- 789426 May 2006. Summary of changes for version 20060526: 7895 78961) ACPI CA Core Subsystem: 7897 7898Restructured, flattened, and simplified the internal interfaces for 7899namespace object evaluation - resulting in smaller code, less CPU stack 7900use, 7901and fewer interfaces. (With assistance from Mikhail Kouzmich) 7902 7903Fixed a problem with the CopyObject operator where the first parameter 7904was 7905not typed correctly for the parser, interpreter, compiler, and 7906disassembler. 7907Caused various errors and unexpected behavior. 7908 7909Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 7910produced incorrect results with some C compilers. Since the behavior of C 7911compilers when the shift value is larger than the datatype width is 7912apparently not well defined, the interpreter now detects this condition 7913and 7914simply returns zero as expected in all such cases. (BZ 395) 7915 7916Fixed problem reports (Valery Podrezov) integrated: 7917- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 7918- Allow interpreter to handle nested method declarations (BZ 5361) 7919 7920Fixed problem reports (Fiodor Suietov) integrated: 7921- AcpiTerminate doesn't free debug memory allocation list objects (BZ 7922355) 7923- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 7924356) 7925- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 7926- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 7927- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 7928- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 7929- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 7930- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 7931- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 7932365) 7933- Status of the Global Initialization Handler call not used (BZ 366) 7934- Incorrect object parameter to Global Initialization Handler (BZ 367) 7935 7936Example Code and Data Size: These are the sizes for the OS-independent 7937acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7938debug version of the code includes the debug output trace mechanism and 7939has 7940a much larger code and data size. 7941 7942 Previous Release: 7943 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7944 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7945 Current Release: 7946 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7947 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7948 7949 79502) iASL Compiler/Disassembler and Tools: 7951 7952Modified the parser to allow the names IO, DMA, and IRQ to be used as 7953namespace identifiers with no collision with existing resource descriptor 7954macro names. This provides compatibility with other ASL compilers and is 7955most useful for disassembly/recompilation of existing tables without 7956parse 7957errors. (With assistance from Thomas Renninger) 7958 7959Disassembler: fixed an incorrect disassembly problem with the 7960DataTableRegion and CopyObject operators. Fixed a possible fault during 7961disassembly of some Alias operators. 7962 7963---------------------------------------- 796412 May 2006. Summary of changes for version 20060512: 7965 79661) ACPI CA Core Subsystem: 7967 7968Replaced the AcpiOsQueueForExecution interface with a new interface named 7969AcpiOsExecute. The major difference is that the new interface does not 7970have 7971a Priority parameter, this appeared to be useless and has been replaced 7972by 7973a 7974Type parameter. The Type tells the host what type of execution is being 7975requested, such as global lock handler, notify handler, GPE handler, etc. 7976This allows the host to queue and execute the request as appropriate for 7977the 7978request type, possibly using different work queues and different 7979priorities 7980for the various request types. This enables fixes for multithreading 7981deadlock problems such as BZ #5534, and will require changes to all 7982existing 7983OS interface layers. (Alexey Starikovskiy and Bob Moore) 7984 7985Fixed a possible memory leak associated with the support for the so- 7986called 7987"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 7988Suietov) 7989 7990Fixed a problem with the Load() operator where a table load from an 7991operation region could overwrite an internal table buffer by up to 7 7992bytes 7993and cause alignment faults on IPF systems. (With assistance from Luming 7994Yu) 7995 7996Example Code and Data Size: These are the sizes for the OS-independent 7997acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7998debug version of the code includes the debug output trace mechanism and 7999has 8000a much larger code and data size. 8001 8002 Previous Release: 8003 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8004 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8005 Current Release: 8006 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8007 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8008 8009 8010 80112) iASL Compiler/Disassembler and Tools: 8012 8013Disassembler: Implemented support to cross reference the internal 8014namespace 8015and automatically generate ASL External() statements for symbols not 8016defined 8017within the current table being disassembled. This will simplify the 8018disassembly and recompilation of interdependent tables such as SSDTs 8019since 8020these statements will no longer have to be added manually. 8021 8022Disassembler: Implemented experimental support to automatically detect 8023invocations of external control methods and generate appropriate 8024External() 8025statements. This is problematic because the AML cannot be correctly 8026parsed 8027until the number of arguments for each control method is known. 8028Currently, 8029standalone method invocations and invocations as the source operand of a 8030Store() statement are supported. 8031 8032Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8033LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8034LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8035more readable and likely closer to the original ASL source. 8036 8037---------------------------------------- 803821 April 2006. Summary of changes for version 20060421: 8039 80401) ACPI CA Core Subsystem: 8041 8042Removed a device initialization optimization introduced in 20051216 where 8043the _STA method was not run unless an _INI was also present for the same 8044device. This optimization could cause problems because it could allow 8045_INI 8046methods to be run within a not-present device subtree. (If a not-present 8047device had no _INI, _STA would not be run, the not-present status would 8048not 8049be discovered, and the children of the device would be incorrectly 8050traversed.) 8051 8052Implemented a new _STA optimization where namespace subtrees that do not 8053contain _INI are identified and ignored during device initialization. 8054Selectively running _STA can significantly improve boot time on large 8055machines (with assistance from Len Brown.) 8056 8057Implemented support for the device initialization case where the returned 8058_STA flags indicate a device not-present but functioning. In this case, 8059_INI 8060is not run, but the device children are examined for presence, as per the 8061ACPI specification. 8062 8063Implemented an additional change to the IndexField support in order to 8064conform to MS behavior. The value written to the Index Register is not 8065simply a byte offset, it is a byte offset in units of the access width of 8066the parent Index Field. (Fiodor Suietov) 8067 8068Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 8069interface is called during the creation of all AML operation regions, and 8070allows the host OS to exert control over what addresses it will allow the 8071AML code to access. Operation Regions whose addresses are disallowed will 8072cause a runtime exception when they are actually accessed (will not 8073affect 8074or abort table loading.) See oswinxf or osunixxf for an example 8075implementation. 8076 8077Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 8078interface allows the host OS to match the various "optional" 8079interface/behavior strings for the _OSI predefined control method as 8080appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 8081for an example implementation. 8082 8083Restructured and corrected various problems in the exception handling 8084code 8085paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 8086(with assistance from Takayoshi Kochi.) 8087 8088Modified the Linux source converter to ignore quoted string literals 8089while 8090converting identifiers from mixed to lower case. This will correct 8091problems 8092with the disassembler and other areas where such strings must not be 8093modified. 8094 8095The ACPI_FUNCTION_* macros no longer require quotes around the function 8096name. This allows the Linux source converter to convert the names, now 8097that 8098the converter ignores quoted strings. 8099 8100Example Code and Data Size: These are the sizes for the OS-independent 8101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8102debug version of the code includes the debug output trace mechanism and 8103has 8104a much larger code and data size. 8105 8106 Previous Release: 8107 8108 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8109 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8110 Current Release: 8111 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8112 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8113 8114 81152) iASL Compiler/Disassembler and Tools: 8116 8117Implemented 3 new warnings for iASL, and implemented multiple warning 8118levels 8119(w2 flag). 8120 81211) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 8122not 8123WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 8124check for the possible timeout, a warning is issued. 8125 81262) Useless operators: If an ASL operator does not specify an optional 8127target 8128operand and it also does not use the function return value from the 8129operator, a warning is issued since the operator effectively does 8130nothing. 8131 81323) Unreferenced objects: If a namespace object is created, but never 8133referenced, a warning is issued. This is a warning level 2 since there 8134are 8135cases where this is ok, such as when a secondary table is loaded that 8136uses 8137the unreferenced objects. Even so, care is taken to only flag objects 8138that 8139don't look like they will ever be used. For example, the reserved methods 8140(starting with an underscore) are usually not referenced because it is 8141expected that the OS will invoke them. 8142 8143---------------------------------------- 814431 March 2006. Summary of changes for version 20060331: 8145 81461) ACPI CA Core Subsystem: 8147 8148Implemented header file support for the following additional ACPI tables: 8149ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 8150support, 8151all current and known ACPI tables are now defined in the ACPICA headers 8152and 8153are available for use by device drivers and other software. 8154 8155Implemented support to allow tables that contain ACPI names with invalid 8156characters to be loaded. Previously, this would cause the table load to 8157fail, but since there are several known cases of such tables on existing 8158machines, this change was made to enable ACPI support for them. Also, 8159this 8160matches the behavior of the Microsoft ACPI implementation. 8161 8162Fixed a couple regressions introduced during the memory optimization in 8163the 816420060317 release. The namespace node definition required additional 8165reorganization and an internal datatype that had been changed to 8-bit 8166was 8167restored to 32-bit. (Valery Podrezov) 8168 8169Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 8170could be passed through to AcpiOsReleaseObject which is unexpected. Such 8171null pointers are now trapped and ignored, matching the behavior of the 8172previous implementation before the deployment of AcpiOsReleaseObject. 8173(Valery Podrezov, Fiodor Suietov) 8174 8175Fixed a memory mapping leak during the deletion of a SystemMemory 8176operation 8177region where a cached memory mapping was not deleted. This became a 8178noticeable problem for operation regions that are defined within 8179frequently 8180used control methods. (Dana Meyers) 8181 8182Reorganized the ACPI table header files into two main files: one for the 8183ACPI tables consumed by the ACPICA core, and another for the 8184miscellaneous 8185ACPI tables that are consumed by the drivers and other software. The 8186various 8187FADT definitions were merged into one common section and three different 8188tables (ACPI 1.0, 1.0+, and 2.0) 8189 8190Example Code and Data Size: These are the sizes for the OS-independent 8191acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8192debug version of the code includes the debug output trace mechanism and 8193has 8194a much larger code and data size. 8195 8196 Previous Release: 8197 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8198 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8199 Current Release: 8200 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8201 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8202 8203 82042) iASL Compiler/Disassembler and Tools: 8205 8206Disassembler: Implemented support to decode and format all non-AML ACPI 8207tables (tables other than DSDTs and SSDTs.) This includes the new tables 8208added to the ACPICA headers, therefore all current and known ACPI tables 8209are 8210supported. 8211 8212Disassembler: The change to allow ACPI names with invalid characters also 8213enables the disassembly of such tables. Invalid characters within names 8214are 8215changed to '*' to make the name printable; the iASL compiler will still 8216generate an error for such names, however, since this is an invalid ACPI 8217character. 8218 8219Implemented an option for AcpiXtract (-a) to extract all tables found in 8220the 8221input file. The default invocation extracts only the DSDTs and SSDTs. 8222 8223Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 8224makefile for the AcpiXtract utility. 8225 8226---------------------------------------- 822717 March 2006. Summary of changes for version 20060317: 8228 82291) ACPI CA Core Subsystem: 8230 8231Implemented the use of a cache object for all internal namespace nodes. 8232Since there are about 1000 static nodes in a typical system, this will 8233decrease memory use for cache implementations that minimize per- 8234allocation 8235overhead (such as a slab allocator.) 8236 8237Removed the reference count mechanism for internal namespace nodes, since 8238it 8239was deemed unnecessary. This reduces the size of each namespace node by 8240about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 8241case, 8242and 32 bytes for the 64-bit case. 8243 8244Optimized several internal data structures to reduce object size on 64- 8245bit 8246platforms by packing data within the 64-bit alignment. This includes the 8247frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 8248instances corresponding to the namespace objects. 8249 8250Added two new strings for the predefined _OSI method: "Windows 2001.1 8251SP1" 8252and "Windows 2006". 8253 8254Split the allocation tracking mechanism out to a separate file, from 8255utalloc.c to uttrack.c. This mechanism appears to be only useful for 8256application-level code. Kernels may wish to not include uttrack.c in 8257distributions. 8258 8259Removed all remnants of the obsolete ACPI_REPORT_* macros and the 8260associated 8261code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 8262macros.) 8263 8264Code and Data Size: These are the sizes for the acpica.lib produced by 8265the 8266Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8267ACPI 8268driver or OSPM code. The debug version of the code includes the debug 8269output 8270trace mechanism and has a much larger code and data size. Note that these 8271values will vary depending on the efficiency of the compiler and the 8272compiler options used during generation. 8273 8274 Previous Release: 8275 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8276 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8277 Current Release: 8278 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8279 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8280 8281 82822) iASL Compiler/Disassembler and Tools: 8283 8284Implemented an ANSI C version of the acpixtract utility. This version 8285will 8286automatically extract the DSDT and all SSDTs from the input acpidump text 8287file and dump the binary output to separate files. It can also display a 8288summary of the input file including the headers for each table found and 8289will extract any single ACPI table, with any signature. (See 8290source/tools/acpixtract) 8291 8292---------------------------------------- 829310 March 2006. Summary of changes for version 20060310: 8294 82951) ACPI CA Core Subsystem: 8296 8297Tagged all external interfaces to the subsystem with the new 8298ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 8299assist 8300kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 8301macro. The default definition is NULL. 8302 8303Added the ACPI_THREAD_ID type for the return value from 8304AcpiOsGetThreadId. 8305This allows the host to define this as necessary to simplify kernel 8306integration. The default definition is ACPI_NATIVE_UINT. 8307 8308Fixed two interpreter problems related to error processing, the deletion 8309of 8310objects, and placing invalid pointers onto the internal operator result 8311stack. BZ 6028, 6151 (Valery Podrezov) 8312 8313Increased the reference count threshold where a warning is emitted for 8314large 8315reference counts in order to eliminate unnecessary warnings on systems 8316with 8317large namespaces (especially 64-bit.) Increased the value from 0x400 to 83180x800. 8319 8320Due to universal disagreement as to the meaning of the 'c' in the 8321calloc() 8322function, the ACPI_MEM_CALLOCATE macro has been renamed to 8323ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 8324ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 8325ACPI_FREE. 8326 8327Code and Data Size: These are the sizes for the acpica.lib produced by 8328the 8329Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8330ACPI 8331driver or OSPM code. The debug version of the code includes the debug 8332output 8333trace mechanism and has a much larger code and data size. Note that these 8334values will vary depending on the efficiency of the compiler and the 8335compiler options used during generation. 8336 8337 Previous Release: 8338 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8339 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8340 Current Release: 8341 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8342 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8343 8344 83452) iASL Compiler/Disassembler: 8346 8347Disassembler: implemented support for symbolic resource descriptor 8348references. If a CreateXxxxField operator references a fixed offset 8349within 8350a 8351resource descriptor, a name is assigned to the descriptor and the offset 8352is 8353translated to the appropriate resource tag and pathname. The addition of 8354this support brings the disassembled code very close to the original ASL 8355source code and helps eliminate run-time errors when the disassembled 8356code 8357is modified (and recompiled) in such a way as to invalidate the original 8358fixed offsets. 8359 8360Implemented support for a Descriptor Name as the last parameter to the 8361ASL 8362Register() macro. This parameter was inadvertently left out of the ACPI 8363specification, and will be added for ACPI 3.0b. 8364 8365Fixed a problem where the use of the "_OSI" string (versus the full path 8366"\_OSI") caused an internal compiler error. ("No back ptr to op") 8367 8368Fixed a problem with the error message that occurs when an invalid string 8369is 8370used for a _HID object (such as one with an embedded asterisk: 8371"*PNP010A".) 8372The correct message is now displayed. 8373 8374---------------------------------------- 837517 February 2006. Summary of changes for version 20060217: 8376 83771) ACPI CA Core Subsystem: 8378 8379Implemented a change to the IndexField support to match the behavior of 8380the 8381Microsoft AML interpreter. The value written to the Index register is now 8382a 8383byte offset, no longer an index based upon the width of the Data 8384register. 8385This should fix IndexField problems seen on some machines where the Data 8386register is not exactly one byte wide. The ACPI specification will be 8387clarified on this point. 8388 8389Fixed a problem where several resource descriptor types could overrun the 8390internal descriptor buffer due to size miscalculation: VendorShort, 8391VendorLong, and Interrupt. This was noticed on IA64 machines, but could 8392affect all platforms. 8393 8394Fixed a problem where individual resource descriptors were misaligned 8395within 8396the internal buffer, causing alignment faults on IA64 platforms. 8397 8398Code and Data Size: These are the sizes for the acpica.lib produced by 8399the 8400Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 8401ACPI 8402driver or OSPM code. The debug version of the code includes the debug 8403output 8404trace mechanism and has a much larger code and data size. Note that these 8405values will vary depending on the efficiency of the compiler and the 8406compiler options used during generation. 8407 8408 Previous Release: 8409 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8410 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8411 Current Release: 8412 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8413 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8414 8415 84162) iASL Compiler/Disassembler: 8417 8418Implemented support for new reserved names: _WDG and _WED are Microsoft 8419extensions for Windows Instrumentation Management, _TDL is a new ACPI- 8420defined method (Throttling Depth Limit.) 8421 8422Fixed a problem where a zero-length VendorShort or VendorLong resource 8423descriptor was incorrectly emitted as a descriptor of length one. 8424 8425---------------------------------------- 842610 February 2006. Summary of changes for version 20060210: 8427 84281) ACPI CA Core Subsystem: 8429 8430Removed a couple of extraneous ACPI_ERROR messages that appeared during 8431normal execution. These became apparent after the conversion from 8432ACPI_DEBUG_PRINT. 8433 8434Fixed a problem where the CreateField operator could hang if the BitIndex 8435or 8436NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 8437 8438Fixed a problem where a DeRefOf operation on a buffer object incorrectly 8439failed with an exception. This also fixes a couple of related RefOf and 8440DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 8441 8442Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 8443of 8444AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 8445BZ 84465480) 8447 8448Implemented a memory cleanup at the end of the execution of each 8449iteration 8450of an AML While() loop, preventing the accumulation of outstanding 8451objects. 8452(Valery Podrezov, BZ 5427) 8453 8454Eliminated a chunk of duplicate code in the object resolution code. 8455(Valery 8456Podrezov, BZ 5336) 8457 8458Fixed several warnings during the 64-bit code generation. 8459 8460The AcpiSrc source code conversion tool now inserts one line of 8461whitespace 8462after an if() statement that is followed immediately by a comment, 8463improving 8464readability of the Linux code. 8465 8466Code and Data Size: The current and previous library sizes for the core 8467subsystem are shown below. These are the code and data sizes for the 8468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8469These 8470values do not include any ACPI driver or OSPM code. The debug version of 8471the 8472code includes the debug output trace mechanism and has a much larger code 8473and data size. Note that these values will vary depending on the 8474efficiency 8475of the compiler and the compiler options used during generation. 8476 8477 Previous Release: 8478 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8479 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8480 Current Release: 8481 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8482 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8483 8484 84852) iASL Compiler/Disassembler: 8486 8487Fixed a problem with the disassembly of a BankField operator with a 8488complex 8489expression for the BankValue parameter. 8490 8491---------------------------------------- 849227 January 2006. Summary of changes for version 20060127: 8493 84941) ACPI CA Core Subsystem: 8495 8496Implemented support in the Resource Manager to allow unresolved 8497namestring 8498references within resource package objects for the _PRT method. This 8499support 8500is in addition to the previously implemented unresolved reference support 8501within the AML parser. If the interpreter slack mode is enabled, these 8502unresolved references will be passed through to the caller as a NULL 8503package 8504entry. 8505 8506Implemented and deployed new macros and functions for error and warning 8507messages across the subsystem. These macros are simpler and generate less 8508code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 8509ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 8510macros remain defined to allow ACPI drivers time to migrate to the new 8511macros. 8512 8513Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 8514the 8515Acquire/Release Lock OSL interfaces. 8516 8517Fixed a problem where Alias ASL operators are sometimes not correctly 8518resolved, in both the interpreter and the iASL compiler. 8519 8520Fixed several problems with the implementation of the 8521ConcatenateResTemplate 8522ASL operator. As per the ACPI specification, zero length buffers are now 8523treated as a single EndTag. One-length buffers always cause a fatal 8524exception. Non-zero length buffers that do not end with a full 2-byte 8525EndTag 8526cause a fatal exception. 8527 8528Fixed a possible structure overwrite in the AcpiGetObjectInfo external 8529interface. (With assistance from Thomas Renninger) 8530 8531Code and Data Size: The current and previous library sizes for the core 8532subsystem are shown below. These are the code and data sizes for the 8533acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8534These 8535values do not include any ACPI driver or OSPM code. The debug version of 8536the 8537code includes the debug output trace mechanism and has a much larger code 8538and data size. Note that these values will vary depending on the 8539efficiency 8540of the compiler and the compiler options used during generation. 8541 8542 Previous Release: 8543 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8544 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8545 Current Release: 8546 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8547 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8548 8549 85502) iASL Compiler/Disassembler: 8551 8552Fixed an internal error that was generated for any forward references to 8553ASL 8554Alias objects. 8555 8556---------------------------------------- 855713 January 2006. Summary of changes for version 20060113: 8558 85591) ACPI CA Core Subsystem: 8560 8561Added 2006 copyright to all module headers and signons. This affects 8562virtually every file in the ACPICA core subsystem, iASL compiler, and the 8563utilities. 8564 8565Enhanced the ACPICA error reporting in order to simplify user migration 8566to 8567the non-debug version of ACPICA. Replaced all instances of the 8568ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 8569debug 8570levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 8571respectively. This preserves all error and warning messages in the non- 8572debug 8573version of the ACPICA code (this has been referred to as the "debug lite" 8574option.) Over 200 cases were converted to create a total of over 380 8575error/warning messages across the ACPICA code. This increases the code 8576and 8577data size of the default non-debug version of the code somewhat (about 857813K), 8579but all error/warning reporting may be disabled if desired (and code 8580eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 8581configuration option. The size of the debug version of ACPICA remains 8582about 8583the same. 8584 8585Fixed a memory leak within the AML Debugger "Set" command. One object was 8586not properly deleted for every successful invocation of the command. 8587 8588Code and Data Size: The current and previous library sizes for the core 8589subsystem are shown below. These are the code and data sizes for the 8590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8591These 8592values do not include any ACPI driver or OSPM code. The debug version of 8593the 8594code includes the debug output trace mechanism and has a much larger code 8595and data size. Note that these values will vary depending on the 8596efficiency 8597of the compiler and the compiler options used during generation. 8598 8599 Previous Release: 8600 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8601 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8602 Current Release: 8603 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8604 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8605 8606 86072) iASL Compiler/Disassembler: 8608 8609The compiler now officially supports the ACPI 3.0a specification that was 8610released on December 30, 2005. (Specification is available at 8611www.acpi.info) 8612 8613---------------------------------------- 861416 December 2005. Summary of changes for version 20051216: 8615 86161) ACPI CA Core Subsystem: 8617 8618Implemented optional support to allow unresolved names within ASL Package 8619objects. A null object is inserted in the package when a named reference 8620cannot be located in the current namespace. Enabled via the interpreter 8621slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 8622machines 8623that contain such code. 8624 8625Implemented an optimization to the initialization sequence that can 8626improve 8627boot time. During ACPI device initialization, the _STA method is now run 8628if 8629and only if the _INI method exists. The _STA method is used to determine 8630if 8631the device is present; An _INI can only be run if _STA returns present, 8632but 8633it is a waste of time to run the _STA method if the _INI does not exist. 8634(Prototype and assistance from Dong Wei) 8635 8636Implemented use of the C99 uintptr_t for the pointer casting macros if it 8637is 8638available in the current compiler. Otherwise, the default (void *) cast 8639is 8640used as before. 8641 8642Fixed some possible memory leaks found within the execution path of the 8643Break, Continue, If, and CreateField operators. (Valery Podrezov) 8644 8645Fixed a problem introduced in the 20051202 release where an exception is 8646generated during method execution if a control method attempts to declare 8647another method. 8648 8649Moved resource descriptor string constants that are used by both the AML 8650disassembler and AML debugger to the common utilities directory so that 8651these components are independent. 8652 8653Implemented support in the AcpiExec utility (-e switch) to globally 8654ignore 8655exceptions during control method execution (method is not aborted.) 8656 8657Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 8658generation. 8659 8660Code and Data Size: The current and previous library sizes for the core 8661subsystem are shown below. These are the code and data sizes for the 8662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8663These 8664values do not include any ACPI driver or OSPM code. The debug version of 8665the 8666code includes the debug output trace mechanism and has a much larger code 8667and data size. Note that these values will vary depending on the 8668efficiency 8669of the compiler and the compiler options used during generation. 8670 8671 Previous Release: 8672 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8673 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8674 Current Release: 8675 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8676 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8677 8678 86792) iASL Compiler/Disassembler: 8680 8681Fixed a problem where a CPU stack overflow fault could occur if a 8682recursive 8683method call was made from within a Return statement. 8684 8685---------------------------------------- 868602 December 2005. Summary of changes for version 20051202: 8687 86881) ACPI CA Core Subsystem: 8689 8690Modified the parsing of control methods to no longer create namespace 8691objects during the first pass of the parse. Objects are now created only 8692during the execute phase, at the moment the namespace creation operator 8693is 8694encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 8695This 8696should eliminate ALREADY_EXISTS exceptions seen on some machines where 8697reentrant control methods are protected by an AML mutex. The mutex will 8698now 8699correctly block multiple threads from attempting to create the same 8700object 8701more than once. 8702 8703Increased the number of available Owner Ids for namespace object tracking 8704from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 8705on 8706some machines with a large number of ACPI tables (either static or 8707dynamic). 8708 8709Fixed a problem with the AcpiExec utility where a fault could occur when 8710the 8711-b switch (batch mode) is used. 8712 8713Enhanced the namespace dump routine to output the owner ID for each 8714namespace object. 8715 8716Code and Data Size: The current and previous library sizes for the core 8717subsystem are shown below. These are the code and data sizes for the 8718acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8719These 8720values do not include any ACPI driver or OSPM code. The debug version of 8721the 8722code includes the debug output trace mechanism and has a much larger code 8723and data size. Note that these values will vary depending on the 8724efficiency 8725of the compiler and the compiler options used during generation. 8726 8727 Previous Release: 8728 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8729 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8730 Current Release: 8731 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8732 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8733 8734 87352) iASL Compiler/Disassembler: 8736 8737Fixed a parse error during compilation of certain Switch/Case constructs. 8738To 8739simplify the parse, the grammar now allows for multiple Default 8740statements 8741and this error is now detected and flagged during the analysis phase. 8742 8743Disassembler: The disassembly now includes the contents of the original 8744table header within a comment at the start of the file. This includes the 8745name and version of the original ASL compiler. 8746 8747---------------------------------------- 874817 November 2005. Summary of changes for version 20051117: 8749 87501) ACPI CA Core Subsystem: 8751 8752Fixed a problem in the AML parser where the method thread count could be 8753decremented below zero if any errors occurred during the method parse 8754phase. 8755This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 8756machines. 8757This also fixed a related regression with the mechanism that detects and 8758corrects methods that cannot properly handle reentrancy (related to the 8759deployment of the new OwnerId mechanism.) 8760 8761Eliminated the pre-parsing of control methods (to detect errors) during 8762table load. Related to the problem above, this was causing unwind issues 8763if 8764any errors occurred during the parse, and it seemed to be overkill. A 8765table 8766load should not be aborted if there are problems with any single control 8767method, thus rendering this feature rather pointless. 8768 8769Fixed a problem with the new table-driven resource manager where an 8770internal 8771buffer overflow could occur for small resource templates. 8772 8773Implemented a new external interface, AcpiGetVendorResource. This 8774interface 8775will find and return a vendor-defined resource descriptor within a _CRS 8776or 8777_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 8778Helgaas. 8779 8780Removed the length limit (200) on string objects as per the upcoming ACPI 87813.0A specification. This affects the following areas of the interpreter: 87821) 8783any implicit conversion of a Buffer to a String, 2) a String object 8784result 8785of the ASL Concatentate operator, 3) the String object result of the ASL 8786ToString operator. 8787 8788Fixed a problem in the Windows OS interface layer (OSL) where a 8789WAIT_FOREVER 8790on a semaphore object would incorrectly timeout. This allows the 8791multithreading features of the AcpiExec utility to work properly under 8792Windows. 8793 8794Updated the Linux makefiles for the iASL compiler and AcpiExec to include 8795the recently added file named "utresrc.c". 8796 8797Code and Data Size: The current and previous library sizes for the core 8798subsystem are shown below. These are the code and data sizes for the 8799acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8800These 8801values do not include any ACPI driver or OSPM code. The debug version of 8802the 8803code includes the debug output trace mechanism and has a much larger code 8804and data size. Note that these values will vary depending on the 8805efficiency 8806of the compiler and the compiler options used during generation. 8807 8808 Previous Release: 8809 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8810 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8811 Current Release: 8812 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8813 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8814 8815 88162) iASL Compiler/Disassembler: 8817 8818Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 8819specification. For the iASL compiler, this means that string literals 8820within 8821the source ASL can be of any length. 8822 8823Enhanced the listing output to dump the AML code for resource descriptors 8824immediately after the ASL code for each descriptor, instead of in a block 8825at 8826the end of the entire resource template. 8827 8828Enhanced the compiler debug output to dump the entire original parse tree 8829constructed during the parse phase, before any transforms are applied to 8830the 8831tree. The transformed tree is dumped also. 8832 8833---------------------------------------- 883402 November 2005. Summary of changes for version 20051102: 8835 88361) ACPI CA Core Subsystem: 8837 8838Modified the subsystem initialization sequence to improve GPE support. 8839The 8840GPE initialization has been split into two parts in order to defer 8841execution 8842of the _PRW methods (Power Resources for Wake) until after the hardware 8843is 8844fully initialized and the SCI handler is installed. This allows the _PRW 8845methods to access fields protected by the Global Lock. This will fix 8846systems 8847where a NO_GLOBAL_LOCK exception has been seen during initialization. 8848 8849Converted the ACPI internal object disassemble and display code within 8850the 8851AML debugger to fully table-driven operation, reducing code size and 8852increasing maintainability. 8853 8854Fixed a regression with the ConcatenateResTemplate() ASL operator 8855introduced 8856in the 20051021 release. 8857 8858Implemented support for "local" internal ACPI object types within the 8859debugger "Object" command and the AcpiWalkNamespace external interfaces. 8860These local types include RegionFields, BankFields, IndexFields, Alias, 8861and 8862reference objects. 8863 8864Moved common AML resource handling code into a new file, "utresrc.c". 8865This 8866code is shared by both the Resource Manager and the AML Debugger. 8867 8868Code and Data Size: The current and previous library sizes for the core 8869subsystem are shown below. These are the code and data sizes for the 8870acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8871These 8872values do not include any ACPI driver or OSPM code. The debug version of 8873the 8874code includes the debug output trace mechanism and has a much larger code 8875and data size. Note that these values will vary depending on the 8876efficiency 8877of the compiler and the compiler options used during generation. 8878 8879 Previous Release: 8880 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8881 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8882 Current Release: 8883 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8884 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8885 8886 88872) iASL Compiler/Disassembler: 8888 8889Fixed a problem with very large initializer lists (more than 4000 8890elements) 8891for both Buffer and Package objects where the parse stack could overflow. 8892 8893Enhanced the pre-compile source code scan for non-ASCII characters to 8894ignore 8895characters within comment fields. The scan is now always performed and is 8896no 8897longer optional, detecting invalid characters within a source file 8898immediately rather than during the parse phase or later. 8899 8900Enhanced the ASL grammar definition to force early reductions on all 8901list- 8902style grammar elements so that the overall parse stack usage is greatly 8903reduced. This should improve performance and reduce the possibility of 8904parse 8905stack overflow. 8906 8907Eliminated all reduce/reduce conflicts in the iASL parser generation. 8908Also, 8909with the addition of a %expected statement, the compiler generates from 8910source with no warnings. 8911 8912Fixed a possible segment fault in the disassembler if the input filename 8913does not contain a "dot" extension (Thomas Renninger). 8914 8915---------------------------------------- 891621 October 2005. Summary of changes for version 20051021: 8917 89181) ACPI CA Core Subsystem: 8919 8920Implemented support for the EM64T and other x86-64 processors. This 8921essentially entails recognizing that these processors support non-aligned 8922memory transfers. Previously, all 64-bit processors were assumed to lack 8923hardware support for non-aligned transfers. 8924 8925Completed conversion of the Resource Manager to nearly full table-driven 8926operation. Specifically, the resource conversion code (convert AML to 8927internal format and the reverse) and the debug code to dump internal 8928resource descriptors are fully table-driven, reducing code and data size 8929and 8930improving maintainability. 8931 8932The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 8933word 8934on 64-bit processors instead of a fixed 32-bit word. (With assistance 8935from 8936Alexey Starikovskiy) 8937 8938Implemented support within the resource conversion code for the Type- 8939Specific byte within the various ACPI 3.0 *WordSpace macros. 8940 8941Fixed some issues within the resource conversion code for the type- 8942specific 8943flags for both Memory and I/O address resource descriptors. For Memory, 8944implemented support for the MTP and TTP flags. For I/O, split the TRS and 8945TTP flags into two separate fields. 8946 8947Code and Data Size: The current and previous library sizes for the core 8948subsystem are shown below. These are the code and data sizes for the 8949acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8950These 8951values do not include any ACPI driver or OSPM code. The debug version of 8952the 8953code includes the debug output trace mechanism and has a much larger code 8954and data size. Note that these values will vary depending on the 8955efficiency 8956of the compiler and the compiler options used during generation. 8957 8958 Previous Release: 8959 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8960 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8961 Current Release: 8962 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8963 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8964 8965 8966 89672) iASL Compiler/Disassembler: 8968 8969Relaxed a compiler restriction that disallowed a ResourceIndex byte if 8970the 8971corresponding ResourceSource string was not also present in a resource 8972descriptor declaration. This restriction caused problems with existing 8973AML/ASL code that includes the Index byte without the string. When such 8974AML 8975was disassembled, it could not be compiled without modification. Further, 8976the modified code created a resource template with a different size than 8977the 8978original, breaking code that used fixed offsets into the resource 8979template 8980buffer. 8981 8982Removed a recent feature of the disassembler to ignore a lone 8983ResourceIndex 8984byte. This byte is now emitted if present so that the exact AML can be 8985reproduced when the disassembled code is recompiled. 8986 8987Improved comments and text alignment for the resource descriptor code 8988emitted by the disassembler. 8989 8990Implemented disassembler support for the ACPI 3.0 AccessSize field within 8991a 8992Register() resource descriptor. 8993 8994---------------------------------------- 899530 September 2005. Summary of changes for version 20050930: 8996 89971) ACPI CA Core Subsystem: 8998 8999Completed a major overhaul of the Resource Manager code - specifically, 9000optimizations in the area of the AML/internal resource conversion code. 9001The 9002code has been optimized to simplify and eliminate duplicated code, CPU 9003stack 9004use has been decreased by optimizing function parameters and local 9005variables, and naming conventions across the manager have been 9006standardized 9007for clarity and ease of maintenance (this includes function, parameter, 9008variable, and struct/typedef names.) The update may force changes in some 9009driver code, depending on how resources are handled by the host OS. 9010 9011All Resource Manager dispatch and information tables have been moved to a 9012single location for clarity and ease of maintenance. One new file was 9013created, named "rsinfo.c". 9014 9015The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9016guarantee that the argument is not evaluated twice, making them less 9017prone 9018to macro side-effects. However, since there exists the possibility of 9019additional stack use if a particular compiler cannot optimize them (such 9020as 9021in the debug generation case), the original macros are optionally 9022available. 9023Note that some invocations of the return_VALUE macro may now cause size 9024mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9025to 9026eliminate these. (From Randy Dunlap) 9027 9028Implemented a new mechanism to enable debug tracing for individual 9029control 9030methods. A new external interface, AcpiDebugTrace, is provided to enable 9031this mechanism. The intent is to allow the host OS to easily enable and 9032disable tracing for problematic control methods. This interface can be 9033easily exposed to a user or debugger interface if desired. See the file 9034psxface.c for details. 9035 9036AcpiUtCallocate will now return a valid pointer if a length of zero is 9037specified - a length of one is used and a warning is issued. This matches 9038the behavior of AcpiUtAllocate. 9039 9040Code and Data Size: The current and previous library sizes for the core 9041subsystem are shown below. These are the code and data sizes for the 9042acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9043These 9044values do not include any ACPI driver or OSPM code. The debug version of 9045the 9046code includes the debug output trace mechanism and has a much larger code 9047and data size. Note that these values will vary depending on the 9048efficiency 9049of the compiler and the compiler options used during generation. 9050 9051 Previous Release: 9052 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9053 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9054 Current Release: 9055 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9056 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9057 9058 90592) iASL Compiler/Disassembler: 9060 9061A remark is issued if the effective compile-time length of a package or 9062buffer is zero. Previously, this was a warning. 9063 9064---------------------------------------- 906516 September 2005. Summary of changes for version 20050916: 9066 90671) ACPI CA Core Subsystem: 9068 9069Fixed a problem within the Resource Manager where support for the Generic 9070Register descriptor was not fully implemented. This descriptor is now 9071fully 9072recognized, parsed, disassembled, and displayed. 9073 9074Completely restructured the Resource Manager code to utilize table-driven 9075dispatch and lookup, eliminating many of the large switch() statements. 9076This 9077reduces overall subsystem code size and code complexity. Affects the 9078resource parsing and construction, disassembly, and debug dump output. 9079 9080Cleaned up and restructured the debug dump output for all resource 9081descriptors. Improved readability of the output and reduced code size. 9082 9083Fixed a problem where changes to internal data structures caused the 9084optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 9085 9086Code and Data Size: The current and previous library sizes for the core 9087subsystem are shown below. These are the code and data sizes for the 9088acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9089These 9090values do not include any ACPI driver or OSPM code. The debug version of 9091the 9092code includes the debug output trace mechanism and has a much larger code 9093and data size. Note that these values will vary depending on the 9094efficiency 9095of the compiler and the compiler options used during generation. 9096 9097 Previous Release: 9098 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9099 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9100 Current Release: 9101 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9102 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9103 9104 91052) iASL Compiler/Disassembler: 9106 9107Updated the disassembler to automatically insert an EndDependentFn() 9108macro 9109into the ASL stream if this macro is missing in the original AML code, 9110simplifying compilation of the resulting ASL module. 9111 9112Fixed a problem in the disassembler where a disassembled ResourceSource 9113string (within a large resource descriptor) was not surrounded by quotes 9114and 9115not followed by a comma, causing errors when the resulting ASL module was 9116compiled. Also, escape sequences within a ResourceSource string are now 9117handled correctly (especially "\\") 9118 9119---------------------------------------- 912002 September 2005. Summary of changes for version 20050902: 9121 91221) ACPI CA Core Subsystem: 9123 9124Fixed a problem with the internal Owner ID allocation and deallocation 9125mechanisms for control method execution and recursive method invocation. 9126This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 9127messages seen on some systems. Recursive method invocation depth is 9128currently limited to 255. (Alexey Starikovskiy) 9129 9130Completely eliminated all vestiges of support for the "module-level 9131executable code" until this support is fully implemented and debugged. 9132This 9133should eliminate the NO_RETURN_VALUE exceptions seen during table load on 9134some systems that invoke this support. 9135 9136Fixed a problem within the resource manager code where the transaction 9137flags 9138for a 64-bit address descriptor were handled incorrectly in the type- 9139specific flag byte. 9140 9141Consolidated duplicate code within the address descriptor resource 9142manager 9143code, reducing overall subsystem code size. 9144 9145Fixed a fault when using the AML debugger "disassemble" command to 9146disassemble individual control methods. 9147 9148Removed references to the "release_current" directory within the Unix 9149release package. 9150 9151Code and Data Size: The current and previous core subsystem library sizes 9152are shown below. These are the code and data sizes for the acpica.lib 9153produced by the Microsoft Visual C++ 6.0 compiler. These values do not 9154include any ACPI driver or OSPM code. The debug version of the code 9155includes 9156the debug output trace mechanism and has a much larger code and data 9157size. 9158Note that these values will vary depending on the efficiency of the 9159compiler 9160and the compiler options used during generation. 9161 9162 Previous Release: 9163 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9164 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9165 Current Release: 9166 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9167 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9168 9169 91702) iASL Compiler/Disassembler: 9171 9172Implemented an error check for illegal duplicate values in the interrupt 9173and 9174dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 9175Interrupt(). 9176 9177Implemented error checking for the Irq() and IrqNoFlags() macros to 9178detect 9179too many values in the interrupt list (16 max) and invalid values in the 9180list (range 0 - 15) 9181 9182The maximum length string literal within an ASL file is now restricted to 9183200 characters as per the ACPI specification. 9184 9185Fixed a fault when using the -ln option (generate namespace listing). 9186 9187Implemented an error check to determine if a DescriptorName within a 9188resource descriptor has already been used within the current scope. 9189 9190---------------------------------------- 919115 August 2005. Summary of changes for version 20050815: 9192 91931) ACPI CA Core Subsystem: 9194 9195Implemented a full bytewise compare to determine if a table load request 9196is 9197attempting to load a duplicate table. The compare is performed if the 9198table 9199signatures and table lengths match. This will allow different tables with 9200the same OEM Table ID and revision to be loaded - probably against the 9201ACPI 9202specification, but discovered in the field nonetheless. 9203 9204Added the changes.txt logfile to each of the zipped release packages. 9205 9206Code and Data Size: Current and previous core subsystem library sizes are 9207shown below. These are the code and data sizes for the acpica.lib 9208produced 9209by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9210any ACPI driver or OSPM code. The debug version of the code includes the 9211debug output trace mechanism and has a much larger code and data size. 9212Note 9213that these values will vary depending on the efficiency of the compiler 9214and 9215the compiler options used during generation. 9216 9217 Previous Release: 9218 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9219 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9220 Current Release: 9221 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9222 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9223 9224 92252) iASL Compiler/Disassembler: 9226 9227Fixed a problem where incorrect AML code could be generated for Package 9228objects if optimization is disabled (via the -oa switch). 9229 9230Fixed a problem with where incorrect AML code is generated for variable- 9231length packages when the package length is not specified and the number 9232of 9233initializer values is greater than 255. 9234 9235 9236---------------------------------------- 923729 July 2005. Summary of changes for version 20050729: 9238 92391) ACPI CA Core Subsystem: 9240 9241Implemented support to ignore an attempt to install/load a particular 9242ACPI 9243table more than once. Apparently there exists BIOS code that repeatedly 9244attempts to load the same SSDT upon certain events. With assistance from 9245Venkatesh Pallipadi. 9246 9247Restructured the main interface to the AML parser in order to correctly 9248handle all exceptional conditions. This will prevent leakage of the 9249OwnerId 9250resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 9251some 9252machines. With assistance from Alexey Starikovskiy. 9253 9254Support for "module level code" has been disabled in this version due to 9255a 9256number of issues that have appeared on various machines. The support can 9257be 9258enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 9259compilation. When the issues are fully resolved, the code will be enabled 9260by 9261default again. 9262 9263Modified the internal functions for debug print support to define the 9264FunctionName parameter as a (const char *) for compatibility with 9265compiler 9266built-in macros such as __FUNCTION__, etc. 9267 9268Linted the entire ACPICA source tree for both 32-bit and 64-bit. 9269 9270Implemented support to display an object count summary for the AML 9271Debugger 9272commands Object and Methods. 9273 9274Code and Data Size: Current and previous core subsystem library sizes are 9275shown below. These are the code and data sizes for the acpica.lib 9276produced 9277by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9278any ACPI driver or OSPM code. The debug version of the code includes the 9279debug output trace mechanism and has a much larger code and data size. 9280Note 9281that these values will vary depending on the efficiency of the compiler 9282and 9283the compiler options used during generation. 9284 9285 Previous Release: 9286 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9287 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9288 Current Release: 9289 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9290 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9291 9292 92932) iASL Compiler/Disassembler: 9294 9295Fixed a regression that appeared in the 20050708 version of the compiler 9296where an error message was inadvertently emitted for invocations of the 9297_OSI 9298reserved control method. 9299 9300---------------------------------------- 930108 July 2005. Summary of changes for version 20050708: 9302 93031) ACPI CA Core Subsystem: 9304 9305The use of the CPU stack in the debug version of the subsystem has been 9306considerably reduced. Previously, a debug structure was declared in every 9307function that used the debug macros. This structure has been removed in 9308favor of declaring the individual elements as parameters to the debug 9309functions. This reduces the cumulative stack use during nested execution 9310of 9311ACPI function calls at the cost of a small increase in the code size of 9312the 9313debug version of the subsystem. With assistance from Alexey Starikovskiy 9314and 9315Len Brown. 9316 9317Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 9318headers to define a macro that will return the current function name at 9319runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 9320by 9321the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 9322compiler-dependent header, the function name is saved on the CPU stack 9323(one 9324pointer per function.) This mechanism is used because apparently there 9325exists no standard ANSI-C defined macro that that returns the function 9326name. 9327 9328Redesigned and reimplemented the "Owner ID" mechanism used to track 9329namespace objects created/deleted by ACPI tables and control method 9330execution. A bitmap is now used to allocate and free the IDs, thus 9331solving 9332the wraparound problem present in the previous implementation. The size 9333of 9334the namespace node descriptor was reduced by 2 bytes as a result (Alexey 9335Starikovskiy). 9336 9337Removed the UINT32_BIT and UINT16_BIT types that were used for the 9338bitfield 9339flag definitions within the headers for the predefined ACPI tables. These 9340have been replaced by UINT8_BIT in order to increase the code portability 9341of 9342the subsystem. If the use of UINT8 remains a problem, we may be forced to 9343eliminate bitfields entirely because of a lack of portability. 9344 9345Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 9346This 9347is a frequently used function and this improvement increases the 9348performance 9349of the entire subsystem (Alexey Starikovskiy). 9350 9351Fixed several possible memory leaks and the inverse - premature object 9352deletion (Alexey Starikovskiy). 9353 9354Code and Data Size: Current and previous core subsystem library sizes are 9355shown below. These are the code and data sizes for the acpica.lib 9356produced 9357by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9358any ACPI driver or OSPM code. The debug version of the code includes the 9359debug output trace mechanism and has a much larger code and data size. 9360Note 9361that these values will vary depending on the efficiency of the compiler 9362and 9363the compiler options used during generation. 9364 9365 Previous Release: 9366 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9367 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9368 Current Release: 9369 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9370 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9371 9372---------------------------------------- 937324 June 2005. Summary of changes for version 20050624: 9374 93751) ACPI CA Core Subsystem: 9376 9377Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 9378the host-defined cache object. This allows the OSL implementation to 9379define 9380and type this object in any manner desired, simplifying the OSL 9381implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 9382Linux, and should be defined in the OS-specific header file for other 9383operating systems as required. 9384 9385Changed the interface to AcpiOsAcquireObject to directly return the 9386requested object as the function return (instead of ACPI_STATUS.) This 9387change was made for performance reasons, since this is the purpose of the 9388interface in the first place. AcpiOsAcquireObject is now similar to the 9389AcpiOsAllocate interface. 9390 9391Implemented a new AML debugger command named Businfo. This command 9392displays 9393information about all devices that have an associate _PRT object. The 9394_ADR, 9395_HID, _UID, and _CID are displayed for these devices. 9396 9397Modified the initialization sequence in AcpiInitializeSubsystem to call 9398the 9399OSL interface AcpiOslInitialize first, before any local initialization. 9400This 9401change was required because the global initialization now calls OSL 9402interfaces. 9403 9404Enhanced the Dump command to display the entire contents of Package 9405objects 9406(including all sub-objects and their values.) 9407 9408Restructured the code base to split some files because of size and/or 9409because the code logically belonged in a separate file. New files are 9410listed 9411below. All makefiles and project files included in the ACPI CA release 9412have 9413been updated. 9414 utilities/utcache.c /* Local cache interfaces */ 9415 utilities/utmutex.c /* Local mutex support */ 9416 utilities/utstate.c /* State object support */ 9417 interpreter/parser/psloop.c /* Main AML parse loop */ 9418 9419Code and Data Size: Current and previous core subsystem library sizes are 9420shown below. These are the code and data sizes for the acpica.lib 9421produced 9422by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9423any ACPI driver or OSPM code. The debug version of the code includes the 9424debug output trace mechanism and has a much larger code and data size. 9425Note 9426that these values will vary depending on the efficiency of the compiler 9427and 9428the compiler options used during generation. 9429 9430 Previous Release: 9431 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9432 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9433 Current Release: 9434 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9435 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9436 9437 94382) iASL Compiler/Disassembler: 9439 9440Fixed a regression introduced in version 20050513 where the use of a 9441Package 9442object within a Case() statement caused a compile time exception. The 9443original behavior has been restored (a Match() operator is emitted.) 9444 9445---------------------------------------- 944617 June 2005. Summary of changes for version 20050617: 9447 94481) ACPI CA Core Subsystem: 9449 9450Moved the object cache operations into the OS interface layer (OSL) to 9451allow 9452the host OS to handle these operations if desired (for example, the Linux 9453OSL will invoke the slab allocator). This support is optional; the 9454compile 9455time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 9456cache 9457code in the ACPI CA core. The new OSL interfaces are shown below. See 9458utalloc.c for an example implementation, and acpiosxf.h for the exact 9459interface definitions. With assistance from Alexey Starikovskiy. 9460 AcpiOsCreateCache 9461 AcpiOsDeleteCache 9462 AcpiOsPurgeCache 9463 AcpiOsAcquireObject 9464 AcpiOsReleaseObject 9465 9466Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 9467return 9468and restore a flags parameter. This fits better with many OS lock models. 9469Note: the current execution state (interrupt handler or not) is no longer 9470passed to these interfaces. If necessary, the OSL must determine this 9471state 9472by itself, a simple and fast operation. With assistance from Alexey 9473Starikovskiy. 9474 9475Fixed a problem in the ACPI table handling where a valid XSDT was assumed 9476present if the revision of the RSDP was 2 or greater. According to the 9477ACPI 9478specification, the XSDT is optional in all cases, and the table manager 9479therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 9480Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 9481contain 9482only the RSDT. 9483 9484Fixed an interpreter problem with the Mid() operator in the case of an 9485input 9486string where the resulting output string is of zero length. It now 9487correctly 9488returns a valid, null terminated string object instead of a string object 9489with a null pointer. 9490 9491Fixed a problem with the control method argument handling to allow a 9492store 9493to an Arg object that already contains an object of type Device. The 9494Device 9495object is now correctly overwritten. Previously, an error was returned. 9496 9497 9498Enhanced the debugger Find command to emit object values in addition to 9499the 9500found object pathnames. The output format is the same as the dump 9501namespace 9502command. 9503 9504Enhanced the debugger Set command. It now has the ability to set the 9505value 9506of any Named integer object in the namespace (Previously, only method 9507locals 9508and args could be set.) 9509 9510Code and Data Size: Current and previous core subsystem library sizes are 9511shown below. These are the code and data sizes for the acpica.lib 9512produced 9513by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9514any ACPI driver or OSPM code. The debug version of the code includes the 9515debug output trace mechanism and has a much larger code and data size. 9516Note 9517that these values will vary depending on the efficiency of the compiler 9518and 9519the compiler options used during generation. 9520 9521 Previous Release: 9522 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9523 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9524 Current Release: 9525 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9526 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9527 9528 95292) iASL Compiler/Disassembler: 9530 9531Fixed a regression in the disassembler where if/else/while constructs 9532were 9533output incorrectly. This problem was introduced in the previous release 9534(20050526). This problem also affected the single-step disassembly in the 9535debugger. 9536 9537Fixed a problem where compiling the reserved _OSI method would randomly 9538(but 9539rarely) produce compile errors. 9540 9541Enhanced the disassembler to emit compilable code in the face of 9542incorrect 9543AML resource descriptors. If the optional ResourceSourceIndex is present, 9544but the ResourceSource is not, do not emit the ResourceSourceIndex in the 9545disassembly. Otherwise, the resulting code cannot be compiled without 9546errors. 9547 9548---------------------------------------- 954926 May 2005. Summary of changes for version 20050526: 9550 95511) ACPI CA Core Subsystem: 9552 9553Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 9554the module level (not within a control method.) These opcodes are 9555executed 9556exactly once at the time the table is loaded. This type of code was legal 9557up 9558until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 9559in 9560order to provide backwards compatibility with earlier BIOS 9561implementations. 9562This eliminates the "Encountered executable code at module level" warning 9563that was previously generated upon detection of such code. 9564 9565Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 9566inadvertently be generated during the lookup of namespace objects in the 9567second pass parse of ACPI tables and control methods. It appears that 9568this 9569problem could occur during the resolution of forward references to 9570namespace 9571objects. 9572 9573Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 9574corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 9575allows the deadlock detection debug code to be compiled out in the normal 9576case, improving mutex performance (and overall subsystem performance) 9577considerably. 9578 9579Implemented a handful of miscellaneous fixes for possible memory leaks on 9580error conditions and error handling control paths. These fixes were 9581suggested by FreeBSD and the Coverity Prevent source code analysis tool. 9582 9583Added a check for a null RSDT pointer in AcpiGetFirmwareTable 9584(tbxfroot.c) 9585to prevent a fault in this error case. 9586 9587Code and Data Size: Current and previous core subsystem library sizes are 9588shown below. These are the code and data sizes for the acpica.lib 9589produced 9590by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9591any ACPI driver or OSPM code. The debug version of the code includes the 9592debug output trace mechanism and has a much larger code and data size. 9593Note 9594that these values will vary depending on the efficiency of the compiler 9595and 9596the compiler options used during generation. 9597 9598 Previous Release: 9599 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9600 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9601 Current Release: 9602 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9603 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9604 9605 96062) iASL Compiler/Disassembler: 9607 9608Implemented support to allow Type 1 and Type 2 ASL operators to appear at 9609the module level (not within a control method.) These operators will be 9610executed once at the time the table is loaded. This type of code was 9611legal 9612up until the release of ACPI 2.0B (2002) and is now supported by the iASL 9613compiler in order to provide backwards compatibility with earlier BIOS 9614ASL 9615code. 9616 9617The ACPI integer width (specified via the table revision ID or the -r 9618override, 32 or 64 bits) is now used internally during compile-time 9619constant 9620folding to ensure that constants are truncated to 32 bits if necessary. 9621Previously, the revision ID value was only emitted in the AML table 9622header. 9623 9624An error message is now generated for the Mutex and Method operators if 9625the 9626SyncLevel parameter is outside the legal range of 0 through 15. 9627 9628Fixed a problem with the Method operator ParameterTypes list handling 9629(ACPI 96303.0). Previously, more than 2 types or 2 arguments generated a syntax 9631error. 9632The actual underlying implementation of method argument typechecking is 9633still under development, however. 9634 9635---------------------------------------- 963613 May 2005. Summary of changes for version 20050513: 9637 96381) ACPI CA Core Subsystem: 9639 9640Implemented support for PCI Express root bridges -- added support for 9641device 9642PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 9643 9644The interpreter now automatically truncates incoming 64-bit constants to 964532 9646bits if currently executing out of a 32-bit ACPI table (Revision < 2). 9647This 9648also affects the iASL compiler constant folding. (Note: as per below, the 9649iASL compiler no longer allows 64-bit constants within 32-bit tables.) 9650 9651Fixed a problem where string and buffer objects with "static" pointers 9652(pointers to initialization data within an ACPI table) were not handled 9653consistently. The internal object copy operation now always copies the 9654data 9655to a newly allocated buffer, regardless of whether the source object is 9656static or not. 9657 9658Fixed a problem with the FromBCD operator where an implicit result 9659conversion was improperly performed while storing the result to the 9660target 9661operand. Since this is an "explicit conversion" operator, the implicit 9662conversion should never be performed on the output. 9663 9664Fixed a problem with the CopyObject operator where a copy to an existing 9665named object did not always completely overwrite the existing object 9666stored 9667at name. Specifically, a buffer-to-buffer copy did not delete the 9668existing 9669buffer. 9670 9671Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 9672and 9673structs for consistency. 9674 9675Code and Data Size: Current and previous core subsystem library sizes are 9676shown below. These are the code and data sizes for the acpica.lib 9677produced 9678by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9679any ACPI driver or OSPM code. The debug version of the code includes the 9680debug output trace mechanism and has a much larger code and data size. 9681Note 9682that these values will vary depending on the efficiency of the compiler 9683and 9684the compiler options used during generation. 9685 9686 Previous Release: 9687 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9688 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9689 Current Release: (Same sizes) 9690 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9691 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9692 9693 96942) iASL Compiler/Disassembler: 9695 9696The compiler now emits a warning if an attempt is made to generate a 64- 9697bit 9698integer constant from within a 32-bit ACPI table (Revision < 2). The 9699integer 9700is truncated to 32 bits. 9701 9702Fixed a problem with large package objects: if the static length of the 9703package is greater than 255, the "variable length package" opcode is 9704emitted. Previously, this caused an error. This requires an update to the 9705ACPI spec, since it currently (incorrectly) states that packages larger 9706than 9707255 elements are not allowed. 9708 9709The disassembler now correctly handles variable length packages and 9710packages 9711larger than 255 elements. 9712 9713---------------------------------------- 971408 April 2005. Summary of changes for version 20050408: 9715 97161) ACPI CA Core Subsystem: 9717 9718Fixed three cases in the interpreter where an "index" argument to an ASL 9719function was still (internally) 32 bits instead of the required 64 bits. 9720This was the Index argument to the Index, Mid, and Match operators. 9721 9722The "strupr" function is now permanently local (AcpiUtStrupr), since this 9723is 9724not a POSIX-defined function and not present in most kernel-level C 9725libraries. All references to the C library strupr function have been 9726removed 9727from the headers. 9728 9729Completed the deployment of static functions/prototypes. All prototypes 9730with 9731the static attribute have been moved from the headers to the owning C 9732file. 9733 9734Implemented an extract option (-e) for the AcpiBin utility (AML binary 9735utility). This option allows the utility to extract individual ACPI 9736tables 9737from the output of AcpiDmp. It provides the same functionality of the 9738acpixtract.pl perl script without the worry of setting the correct perl 9739options. AcpiBin runs on Windows and has not yet been generated/validated 9740in 9741the Linux/Unix environment (but should be soon). 9742 9743Updated and fixed the table dump option for AcpiBin (-d). This option 9744converts a single ACPI table to a hex/ascii file, similar to the output 9745of 9746AcpiDmp. 9747 9748Code and Data Size: Current and previous core subsystem library sizes are 9749shown below. These are the code and data sizes for the acpica.lib 9750produced 9751by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9752any ACPI driver or OSPM code. The debug version of the code includes the 9753debug output trace mechanism and has a much larger code and data size. 9754Note 9755that these values will vary depending on the efficiency of the compiler 9756and 9757the compiler options used during generation. 9758 9759 Previous Release: 9760 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9761 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9762 Current Release: 9763 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9764 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9765 9766 97672) iASL Compiler/Disassembler: 9768 9769Disassembler fix: Added a check to ensure that the table length found in 9770the 9771ACPI table header within the input file is not longer than the actual 9772input 9773file size. This indicates some kind of file or table corruption. 9774 9775---------------------------------------- 977629 March 2005. Summary of changes for version 20050329: 9777 97781) ACPI CA Core Subsystem: 9779 9780An error is now generated if an attempt is made to create a Buffer Field 9781of 9782length zero (A CreateField with a length operand of zero.) 9783 9784The interpreter now issues a warning whenever executable code at the 9785module 9786level is detected during ACPI table load. This will give some idea of the 9787prevalence of this type of code. 9788 9789Implemented support for references to named objects (other than control 9790methods) within package objects. 9791 9792Enhanced package object output for the debug object. Package objects are 9793now 9794completely dumped, showing all elements. 9795 9796Enhanced miscellaneous object output for the debug object. Any object can 9797now be written to the debug object (for example, a device object can be 9798written, and the type of the object will be displayed.) 9799 9800The "static" qualifier has been added to all local functions across both 9801the 9802core subsystem and the iASL compiler. 9803 9804The number of "long" lines (> 80 chars) within the source has been 9805significantly reduced, by about 1/3. 9806 9807Cleaned up all header files to ensure that all CA/iASL functions are 9808prototyped (even static functions) and the formatting is consistent. 9809 9810Two new header files have been added, acopcode.h and acnames.h. 9811 9812Removed several obsolete functions that were no longer used. 9813 9814Code and Data Size: Current and previous core subsystem library sizes are 9815shown below. These are the code and data sizes for the acpica.lib 9816produced 9817by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9818any ACPI driver or OSPM code. The debug version of the code includes the 9819debug output trace mechanism and has a much larger code and data size. 9820Note 9821that these values will vary depending on the efficiency of the compiler 9822and 9823the compiler options used during generation. 9824 9825 Previous Release: 9826 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9827 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9828 Current Release: 9829 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9830 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9831 9832 9833 98342) iASL Compiler/Disassembler: 9835 9836Fixed a problem with the resource descriptor generation/support. For the 9837ResourceSourceIndex and the ResourceSource fields, both must be present, 9838or 9839both must be not present - can't have one without the other. 9840 9841The compiler now returns non-zero from the main procedure if any errors 9842have 9843occurred during the compilation. 9844 9845 9846---------------------------------------- 984709 March 2005. Summary of changes for version 20050309: 9848 98491) ACPI CA Core Subsystem: 9850 9851The string-to-buffer implicit conversion code has been modified again 9852after 9853a change to the ACPI specification. In order to match the behavior of 9854the 9855other major ACPI implementation, the target buffer is no longer truncated 9856if 9857the source string is smaller than an existing target buffer. This change 9858requires an update to the ACPI spec, and should eliminate the recent 9859AE_AML_BUFFER_LIMIT issues. 9860 9861The "implicit return" support was rewritten to a new algorithm that 9862solves 9863the general case. Rather than attempt to determine when a method is about 9864to 9865exit, the result of every ASL operator is saved momentarily until the 9866very 9867next ASL operator is executed. Therefore, no matter how the method exits, 9868there will always be a saved implicit return value. This feature is only 9869enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 9870eliminate 9871AE_AML_NO_RETURN_VALUE errors when enabled. 9872 9873Implemented implicit conversion support for the predicate (operand) of 9874the 9875If, Else, and While operators. String and Buffer arguments are 9876automatically 9877converted to Integers. 9878 9879Changed the string-to-integer conversion behavior to match the new ACPI 9880errata: "If no integer object exists, a new integer is created. The ASCII 9881string is interpreted as a hexadecimal constant. Each string character is 9882interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 9883with the first character as the most significant digit, and ending with 9884the 9885first non-hexadecimal character or end-of-string." This means that the 9886first 9887non-hex character terminates the conversion and this is the code that was 9888changed. 9889 9890Fixed a problem where the ObjectType operator would fail (fault) when 9891used 9892on an Index of a Package which pointed to a null package element. The 9893operator now properly returns zero (Uninitialized) in this case. 9894 9895Fixed a problem where the While operator used excessive memory by not 9896properly popping the result stack during execution. There was no memory 9897leak 9898after execution, however. (Code provided by Valery Podrezov.) 9899 9900Fixed a problem where references to control methods within Package 9901objects 9902caused the method to be invoked, instead of producing a reference object 9903pointing to the method. 9904 9905Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 9906to 9907improve performance and reduce code size. (Code provided by Alexey 9908Starikovskiy.) 9909 9910Code and Data Size: Current and previous core subsystem library sizes are 9911shown below. These are the code and data sizes for the acpica.lib 9912produced 9913by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9914any ACPI driver or OSPM code. The debug version of the code includes the 9915debug output trace mechanism and has a much larger code and data size. 9916Note 9917that these values will vary depending on the efficiency of the compiler 9918and 9919the compiler options used during generation. 9920 9921 Previous Release: 9922 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9923 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9924 Current Release: 9925 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9926 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9927 9928 99292) iASL Compiler/Disassembler: 9930 9931Fixed a problem with the Return operator with no arguments. Since the AML 9932grammar for the byte encoding requires an operand for the Return opcode, 9933the 9934compiler now emits a Return(Zero) for this case. An ACPI specification 9935update has been written for this case. 9936 9937For tables other than the DSDT, namepath optimization is automatically 9938disabled. This is because SSDTs can be loaded anywhere in the namespace, 9939the 9940compiler has no knowledge of where, and thus cannot optimize namepaths. 9941 9942Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 9943inadvertently omitted from the ACPI specification, and will require an 9944update to the spec. 9945 9946The source file scan for ASCII characters is now optional (-a). This 9947change 9948was made because some vendors place non-ascii characters within comments. 9949However, the scan is simply a brute-force byte compare to ensure all 9950characters in the file are in the range 0x00 to 0x7F. 9951 9952Fixed a problem with the CondRefOf operator where the compiler was 9953inappropriately checking for the existence of the target. Since the point 9954of 9955the operator is to check for the existence of the target at run-time, the 9956compiler no longer checks for the target existence. 9957 9958Fixed a problem where errors generated from the internal AML interpreter 9959during constant folding were not handled properly, causing a fault. 9960 9961Fixed a problem with overly aggressive range checking for the Stall 9962operator. The valid range (max 255) is now only checked if the operand is 9963of 9964type Integer. All other operand types cannot be statically checked. 9965 9966Fixed a problem where control method references within the RefOf, 9967DeRefOf, 9968and ObjectType operators were not treated properly. They are now treated 9969as 9970actual references, not method invocations. 9971 9972Fixed and enhanced the "list namespace" option (-ln). This option was 9973broken 9974a number of releases ago. 9975 9976Improved error handling for the Field, IndexField, and BankField 9977operators. 9978The compiler now cleanly reports and recovers from errors in the field 9979component (FieldUnit) list. 9980 9981Fixed a disassembler problem where the optional ResourceDescriptor fields 9982TRS and TTP were not always handled correctly. 9983 9984Disassembler - Comments in output now use "//" instead of "/*" 9985 9986---------------------------------------- 998728 February 2005. Summary of changes for version 20050228: 9988 99891) ACPI CA Core Subsystem: 9990 9991Fixed a problem where the result of an Index() operator (an object 9992reference) must increment the reference count on the target object for 9993the 9994life of the object reference. 9995 9996Implemented AML Interpreter and Debugger support for the new ACPI 3.0 9997Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 9998WordSpace 9999resource descriptors. 10000 10001Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 10002Space Descriptor" string, indicating interpreter support for the 10003descriptors 10004above. 10005 10006Implemented header support for the new ACPI 3.0 FADT flag bits. 10007 10008Implemented header support for the new ACPI 3.0 PCI Express bits for the 10009PM1 10010status/enable registers. 10011 10012Updated header support for the MADT processor local Apic struct and MADT 10013platform interrupt source struct for new ACPI 3.0 fields. 10014 10015Implemented header support for the SRAT and SLIT ACPI tables. 10016 10017Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10018flag 10019at runtime. 10020 10021Code and Data Size: Current and previous core subsystem library sizes are 10022shown below. These are the code and data sizes for the acpica.lib 10023produced 10024by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10025any ACPI driver or OSPM code. The debug version of the code includes the 10026debug output trace mechanism and has a much larger code and data size. 10027Note 10028that these values will vary depending on the efficiency of the compiler 10029and 10030the compiler options used during generation. 10031 10032 Previous Release: 10033 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10034 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10035 Current Release: 10036 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10037 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10038 10039 100402) iASL Compiler/Disassembler: 10041 10042Fixed a problem with the internal 64-bit String-to-integer conversion 10043with 10044strings less than two characters long. 10045 10046Fixed a problem with constant folding where the result of the Index() 10047operator can not be considered a constant. This means that Index() cannot 10048be 10049a type3 opcode and this will require an update to the ACPI specification. 10050 10051Disassembler: Implemented support for the TTP, MTP, and TRS resource 10052descriptor fields. These fields were inadvertently ignored and not output 10053in 10054the disassembly of the resource descriptor. 10055 10056 10057 ---------------------------------------- 1005811 February 2005. Summary of changes for version 20050211: 10059 100601) ACPI CA Core Subsystem: 10061 10062Implemented ACPI 3.0 support for implicit conversion within the Match() 10063operator. MatchObjects can now be of type integer, buffer, or string 10064instead 10065of just type integer. Package elements are implicitly converted to the 10066type 10067of the MatchObject. This change aligns the behavior of Match() with the 10068behavior of the other logical operators (LLess(), etc.) It also requires 10069an 10070errata change to the ACPI specification as this support was intended for 10071ACPI 3.0, but was inadvertently omitted. 10072 10073Fixed a problem with the internal implicit "to buffer" conversion. 10074Strings 10075that are converted to buffers will cause buffer truncation if the string 10076is 10077smaller than the target buffer. Integers that are converted to buffers 10078will 10079not cause buffer truncation, only zero extension (both as per the ACPI 10080spec.) The problem was introduced when code was added to truncate the 10081buffer, but this should not be performed in all cases, only the string 10082case. 10083 10084Fixed a problem with the Buffer and Package operators where the 10085interpreter 10086would get confused if two such operators were used as operands to an ASL 10087operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 10088stack was not being popped after the execution of these operators, 10089resulting 10090in an AE_NO_RETURN_VALUE exception. 10091 10092Fixed a problem with constructs of the form Store(Index(...),...). The 10093reference object returned from Index was inadvertently resolved to an 10094actual 10095value. This problem was introduced in version 20050114 when the behavior 10096of 10097Store() was modified to restrict the object types that can be used as the 10098source operand (to match the ACPI specification.) 10099 10100Reduced excessive stack use within the AcpiGetObjectInfo procedure. 10101 10102Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 10103 10104Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 10105 10106Code and Data Size: Current and previous core subsystem library sizes are 10107shown below. These are the code and data sizes for the acpica.lib 10108produced 10109by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10110any ACPI driver or OSPM code. The debug version of the code includes the 10111debug output trace mechanism and has a much larger code and data size. 10112Note 10113that these values will vary depending on the efficiency of the compiler 10114and 10115the compiler options used during generation. 10116 10117 Previous Release: 10118 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10119 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10120 Current Release: 10121 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10122 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10123 10124 101252) iASL Compiler/Disassembler: 10126 10127Fixed a code generation problem in the constant folding optimization code 10128where incorrect code was generated if a constant was reduced to a buffer 10129object (i.e., a reduced type 5 opcode.) 10130 10131Fixed a typechecking problem for the ToBuffer operator. Caused by an 10132incorrect return type in the internal opcode information table. 10133 10134---------------------------------------- 1013525 January 2005. Summary of changes for version 20050125: 10136 101371) ACPI CA Core Subsystem: 10138 10139Fixed a recently introduced problem with the Global Lock where the 10140underlying semaphore was not created. This problem was introduced in 10141version 20050114, and caused an AE_AML_NO_OPERAND exception during an 10142Acquire() operation on _GL. 10143 10144The local object cache is now optional, and is disabled by default. Both 10145AcpiExec and the iASL compiler enable the cache because they run in user 10146mode and this enhances their performance. #define 10147ACPI_ENABLE_OBJECT_CACHE 10148to enable the local cache. 10149 10150Fixed an issue in the internal function AcpiUtEvaluateObject concerning 10151the 10152optional "implicit return" support where an error was returned if no 10153return 10154object was expected, but one was implicitly returned. AE_OK is now 10155returned 10156in this case and the implicitly returned object is deleted. 10157AcpiUtEvaluateObject is only occasionally used, and only to execute 10158reserved 10159methods such as _STA and _INI where the return type is known up front. 10160 10161Fixed a few issues with the internal convert-to-integer code. It now 10162returns 10163an error if an attempt is made to convert a null string, a string of only 10164blanks/tabs, or a zero-length buffer. This affects both implicit 10165conversion 10166and explicit conversion via the ToInteger() operator. 10167 10168The internal debug code in AcpiUtAcquireMutex has been commented out. It 10169is 10170not needed for normal operation and should increase the performance of 10171the 10172entire subsystem. The code remains in case it is needed for debug 10173purposes 10174again. 10175 10176The AcpiExec source and makefile are included in the Unix/Linux package 10177for 10178the first time. 10179 10180Code and Data Size: Current and previous core subsystem library sizes are 10181shown below. These are the code and data sizes for the acpica.lib 10182produced 10183by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10184any ACPI driver or OSPM code. The debug version of the code includes the 10185debug output trace mechanism and has a much larger code and data size. 10186Note 10187that these values will vary depending on the efficiency of the compiler 10188and 10189the compiler options used during generation. 10190 10191 Previous Release: 10192 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10193 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10194 Current Release: 10195 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10196 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10197 101982) iASL Compiler/Disassembler: 10199 10200Switch/Case support: A warning is now issued if the type of the Switch 10201value 10202cannot be determined at compile time. For example, Switch(Arg0) will 10203generate the warning, and the type is assumed to be an integer. As per 10204the 10205ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 10206the 10207warning. 10208 10209Switch/Case support: Implemented support for buffer and string objects as 10210the switch value. This is an ACPI 3.0 feature, now that LEqual supports 10211buffers and strings. 10212 10213Switch/Case support: The emitted code for the LEqual() comparisons now 10214uses 10215the switch value as the first operand, not the second. The case value is 10216now 10217the second operand, and this allows the case value to be implicitly 10218converted to the type of the switch value, not the other way around. 10219 10220Switch/Case support: Temporary variables are now emitted immediately 10221within 10222the control method, not at the global level. This means that there are 10223now 1022436 temps available per-method, not 36 temps per-module as was the case 10225with 10226the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 10227 10228---------------------------------------- 1022914 January 2005. Summary of changes for version 20050114: 10230 10231Added 2005 copyright to all module headers. This affects every module in 10232the core subsystem, iASL compiler, and the utilities. 10233 102341) ACPI CA Core Subsystem: 10235 10236Fixed an issue with the String-to-Buffer conversion code where the string 10237null terminator was not included in the buffer after conversion, but 10238there 10239is existing ASL that assumes the string null terminator is included. This 10240is 10241the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 10242introduced in the previous version when the code was updated to correctly 10243set the converted buffer size as per the ACPI specification. The ACPI 10244spec 10245is ambiguous and will be updated to specify that the null terminator must 10246be 10247included in the converted buffer. This also affects the ToBuffer() ASL 10248operator. 10249 10250Fixed a problem with the Mid() ASL/AML operator where it did not work 10251correctly on Buffer objects. Newly created sub-buffers were not being 10252marked 10253as initialized. 10254 10255 10256Fixed a problem in AcpiTbFindTable where incorrect string compares were 10257performed on the OemId and OemTableId table header fields. These fields 10258are 10259not null terminated, so strncmp is now used instead of strcmp. 10260 10261Implemented a restriction on the Store() ASL/AML operator to align the 10262behavior with the ACPI specification. Previously, any object could be 10263used 10264as the source operand. Now, the only objects that may be used are 10265Integers, 10266Buffers, Strings, Packages, Object References, and DDB Handles. If 10267necessary, the original behavior can be restored by enabling the 10268EnableInterpreterSlack flag. 10269 10270Enhanced the optional "implicit return" support to allow an implicit 10271return 10272value from methods that are invoked externally via the AcpiEvaluateObject 10273interface. This enables implicit returns from the _STA and _INI methods, 10274for example. 10275 10276Changed the Revision() ASL/AML operator to return the current version of 10277the 10278AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 10279returned 10280the supported ACPI version (This is the function of the _REV method). 10281 10282Updated the _REV predefined method to return the currently supported 10283version 10284of ACPI, now 3. 10285 10286Implemented batch mode option for the AcpiExec utility (-b). 10287 10288Code and Data Size: Current and previous core subsystem library sizes are 10289shown below. These are the code and data sizes for the acpica.lib 10290produced 10291by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10292any ACPI driver or OSPM code. The debug version of the code includes the 10293debug output trace mechanism and has a much larger code and data size. 10294Note 10295that these values will vary depending on the efficiency of the compiler 10296and 10297the compiler options used during generation. 10298 10299 Previous Release: 10300 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10301 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10302 Current Release: 10303 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10304 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10305 10306---------------------------------------- 1030710 December 2004. Summary of changes for version 20041210: 10308 10309ACPI 3.0 support is nearing completion in both the iASL compiler and the 10310ACPI CA core subsystem. 10311 103121) ACPI CA Core Subsystem: 10313 10314Fixed a problem in the ToDecimalString operator where the resulting 10315string 10316length was incorrectly calculated. The length is now calculated exactly, 10317eliminating incorrect AE_STRING_LIMIT exceptions. 10318 10319Fixed a problem in the ToHexString operator to allow a maximum 200 10320character 10321string to be produced. 10322 10323Fixed a problem in the internal string-to-buffer and buffer-to-buffer 10324copy 10325routine where the length of the resulting buffer was not truncated to the 10326new size (if the target buffer already existed). 10327 10328Code and Data Size: Current and previous core subsystem library sizes are 10329shown below. These are the code and data sizes for the acpica.lib 10330produced 10331by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10332any ACPI driver or OSPM code. The debug version of the code includes the 10333debug output trace mechanism and has a much larger code and data size. 10334Note 10335that these values will vary depending on the efficiency of the compiler 10336and 10337the compiler options used during generation. 10338 10339 Previous Release: 10340 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10341 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10342 Current Release: 10343 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10344 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10345 10346 103472) iASL Compiler/Disassembler: 10348 10349Implemented the new ACPI 3.0 resource template macros - DWordSpace, 10350ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 10351Includes support in the disassembler. 10352 10353Implemented support for the new (ACPI 3.0) parameter to the Register 10354macro, 10355AccessSize. 10356 10357Fixed a problem where the _HE resource name for the Interrupt macro was 10358referencing bit 0 instead of bit 1. 10359 10360Implemented check for maximum 255 interrupts in the Interrupt macro. 10361 10362Fixed a problem with the predefined resource descriptor names where 10363incorrect AML code was generated if the offset within the resource buffer 10364was 0 or 1. The optimizer shortened the AML code to a single byte opcode 10365but did not update the surrounding package lengths. 10366 10367Changes to the Dma macro: All channels within the channel list must be 10368in 10369the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 10370optional (default is BusMaster). 10371 10372Implemented check for maximum 7 data bytes for the VendorShort macro. 10373 10374The ReadWrite parameter is now optional for the Memory32 and similar 10375macros. 10376 10377---------------------------------------- 1037803 December 2004. Summary of changes for version 20041203: 10379 103801) ACPI CA Core Subsystem: 10381 10382The low-level field insertion/extraction code (exfldio) has been 10383completely 10384rewritten to eliminate unnecessary complexity, bugs, and boundary 10385conditions. 10386 10387Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 10388ToDecimalString 10389operators where the input operand could be inadvertently deleted if no 10390conversion was necessary (e.g., if the input to ToInteger was an Integer 10391object.) 10392 10393Fixed a problem with the ToDecimalString and ToHexString where an 10394incorrect 10395exception code was returned if the resulting string would be > 200 chars. 10396AE_STRING_LIMIT is now returned. 10397 10398Fixed a problem with the Concatenate operator where AE_OK was always 10399returned, even if the operation failed. 10400 10401Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 10402semaphores to be allocated. 10403 10404Code and Data Size: Current and previous core subsystem library sizes are 10405shown below. These are the code and data sizes for the acpica.lib 10406produced 10407by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10408any ACPI driver or OSPM code. The debug version of the code includes the 10409debug output trace mechanism and has a much larger code and data size. 10410Note 10411that these values will vary depending on the efficiency of the compiler 10412and 10413the compiler options used during generation. 10414 10415 Previous Release: 10416 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10417 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10418 Current Release: 10419 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10420 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10421 10422 104232) iASL Compiler/Disassembler: 10424 10425Fixed typechecking for the ObjectType and SizeOf operators. Problem was 10426recently introduced in 20041119. 10427 10428Fixed a problem with the ToUUID macro where the upper nybble of each 10429buffer 10430byte was inadvertently set to zero. 10431 10432---------------------------------------- 1043319 November 2004. Summary of changes for version 20041119: 10434 104351) ACPI CA Core Subsystem: 10436 10437Fixed a problem in the internal ConvertToInteger routine where new 10438integers 10439were not truncated to 32 bits for 32-bit ACPI tables. This routine 10440converts 10441buffers and strings to integers. 10442 10443Implemented support to store a value to an Index() on a String object. 10444This 10445is an ACPI 2.0 feature that had not yet been implemented. 10446 10447Implemented new behavior for storing objects to individual package 10448elements 10449(via the Index() operator). The previous behavior was to invoke the 10450implicit 10451conversion rules if an object was already present at the index. The new 10452behavior is to simply delete any existing object and directly store the 10453new 10454object. Although the ACPI specification seems unclear on this subject, 10455other 10456ACPI implementations behave in this manner. (This is the root of the 10457AE_BAD_HEX_CONSTANT issue.) 10458 10459Modified the RSDP memory scan mechanism to support the extended checksum 10460for 10461ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 10462RSDP signature is found with a valid checksum. 10463 10464Code and Data Size: Current and previous core subsystem library sizes are 10465shown below. These are the code and data sizes for the acpica.lib 10466produced 10467by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10468any ACPI driver or OSPM code. The debug version of the code includes the 10469debug output trace mechanism and has a much larger code and data size. 10470Note 10471that these values will vary depending on the efficiency of the compiler 10472and 10473the compiler options used during generation. 10474 10475 Previous Release: 10476 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10477 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10478 Current Release: 10479 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10480 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10481 10482 104832) iASL Compiler/Disassembler: 10484 10485Fixed a missing semicolon in the aslcompiler.y file. 10486 10487---------------------------------------- 1048805 November 2004. Summary of changes for version 20041105: 10489 104901) ACPI CA Core Subsystem: 10491 10492Implemented support for FADT revision 2. This was an interim table 10493(between 10494ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 10495 10496Implemented optional support to allow uninitialized LocalX and ArgX 10497variables in a control method. The variables are initialized to an 10498Integer 10499object with a value of zero. This support is enabled by setting the 10500AcpiGbl_EnableInterpreterSlack flag to TRUE. 10501 10502Implemented support for Integer objects for the SizeOf operator. Either 105034 10504or 8 is returned, depending on the current integer size (32-bit or 64- 10505bit, 10506depending on the parent table revision). 10507 10508Fixed a problem in the implementation of the SizeOf and ObjectType 10509operators 10510where the operand was resolved to a value too early, causing incorrect 10511return values for some objects. 10512 10513Fixed some possible memory leaks during exceptional conditions. 10514 10515Code and Data Size: Current and previous core subsystem library sizes are 10516shown below. These are the code and data sizes for the acpica.lib 10517produced 10518by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10519any ACPI driver or OSPM code. The debug version of the code includes the 10520debug output trace mechanism and has a much larger code and data size. 10521Note 10522that these values will vary depending on the efficiency of the compiler 10523and 10524the compiler options used during generation. 10525 10526 Previous Release: 10527 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10528 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10529 Current Release: 10530 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10531 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10532 10533 105342) iASL Compiler/Disassembler: 10535 10536Implemented support for all ACPI 3.0 reserved names and methods. 10537 10538Implemented all ACPI 3.0 grammar elements in the front-end, including 10539support for semicolons. 10540 10541Implemented the ACPI 3.0 Function() and ToUUID() macros 10542 10543Fixed a problem in the disassembler where a Scope() operator would not be 10544emitted properly if the target of the scope was in another table. 10545 10546---------------------------------------- 1054715 October 2004. Summary of changes for version 20041015: 10548 10549Note: ACPI CA is currently undergoing an in-depth and complete formal 10550evaluation to test/verify the following areas. Other suggestions are 10551welcome. This will result in an increase in the frequency of releases and 10552the number of bug fixes in the next few months. 10553 - Functional tests for all ASL/AML operators 10554 - All implicit/explicit type conversions 10555 - Bit fields and operation regions 10556 - 64-bit math support and 32-bit-only "truncated" math support 10557 - Exceptional conditions, both compiler and interpreter 10558 - Dynamic object deletion and memory leaks 10559 - ACPI 3.0 support when implemented 10560 - External interfaces to the ACPI subsystem 10561 10562 105631) ACPI CA Core Subsystem: 10564 10565Fixed two alignment issues on 64-bit platforms - within debug statements 10566in 10567AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 10568Address 10569field within the non-aligned ACPI generic address structure. 10570 10571Fixed a problem in the Increment and Decrement operators where incorrect 10572operand resolution could result in the inadvertent modification of the 10573original integer when the integer is passed into another method as an 10574argument and the arg is then incremented/decremented. 10575 10576Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 10577bit 10578BCD number were truncated during conversion. 10579 10580Fixed a problem in the ToDecimal operator where the length of the 10581resulting 10582string could be set incorrectly too long if the input operand was a 10583Buffer 10584object. 10585 10586Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 10587(0) 10588within a buffer would prematurely terminate a compare between buffer 10589objects. 10590 10591Added a check for string overflow (>200 characters as per the ACPI 10592specification) during the Concatenate operator with two string operands. 10593 10594Code and Data Size: Current and previous core subsystem library sizes are 10595shown below. These are the code and data sizes for the acpica.lib 10596produced 10597by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10598any ACPI driver or OSPM code. The debug version of the code includes the 10599debug output trace mechanism and has a much larger code and data size. 10600Note 10601that these values will vary depending on the efficiency of the compiler 10602and 10603the compiler options used during generation. 10604 10605 Previous Release: 10606 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10607 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10608 Current Release: 10609 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10610 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10611 10612 10613 106142) iASL Compiler/Disassembler: 10615 10616Allow the use of the ObjectType operator on uninitialized Locals and Args 10617(returns 0 as per the ACPI specification). 10618 10619Fixed a problem where the compiler would fault if there was a syntax 10620error 10621in the FieldName of all of the various CreateXXXField operators. 10622 10623Disallow the use of lower case letters within the EISAID macro, as per 10624the 10625ACPI specification. All EISAID strings must be of the form "UUUNNNN" 10626Where 10627U is an uppercase letter and N is a hex digit. 10628 10629 10630---------------------------------------- 1063106 October 2004. Summary of changes for version 20041006: 10632 106331) ACPI CA Core Subsystem: 10634 10635Implemented support for the ACPI 3.0 Timer operator. This ASL function 10636implements a 64-bit timer with 100 nanosecond granularity. 10637 10638Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 10639implement the ACPI 3.0 Timer operator. This allows the host OS to 10640implement 10641the timer with the best clock available. Also, it keeps the core 10642subsystem 10643out of the clock handling business, since the host OS (usually) performs 10644this function. 10645 10646Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 10647functions use a 64-bit address which is part of the packed ACPI Generic 10648Address Structure. Since the structure is non-aligned, the alignment 10649macros 10650are now used to extract the address to a local variable before use. 10651 10652Fixed a problem where the ToInteger operator assumed all input strings 10653were 10654hexadecimal. The operator now handles both decimal strings and hex 10655strings 10656(prefixed with "0x"). 10657 10658Fixed a problem where the string length in the string object created as a 10659result of the internal ConvertToString procedure could be incorrect. This 10660potentially affected all implicit conversions and also the 10661ToDecimalString 10662and ToHexString operators. 10663 10664Fixed two problems in the ToString operator. If the length parameter was 10665zero, an incorrect string object was created and the value of the input 10666length parameter was inadvertently changed from zero to Ones. 10667 10668Fixed a problem where the optional ResourceSource string in the 10669ExtendedIRQ 10670resource macro was ignored. 10671 10672Simplified the interfaces to the internal division functions, reducing 10673code 10674size and complexity. 10675 10676Code and Data Size: Current and previous core subsystem library sizes are 10677shown below. These are the code and data sizes for the acpica.lib 10678produced 10679by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10680any ACPI driver or OSPM code. The debug version of the code includes the 10681debug output trace mechanism and has a much larger code and data size. 10682Note 10683that these values will vary depending on the efficiency of the compiler 10684and 10685the compiler options used during generation. 10686 10687 Previous Release: 10688 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10689 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10690 Current Release: 10691 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10692 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10693 10694 106952) iASL Compiler/Disassembler: 10696 10697Implemented support for the ACPI 3.0 Timer operator. 10698 10699Fixed a problem where the Default() operator was inadvertently ignored in 10700a 10701Switch/Case block. This was a problem in the translation of the Switch 10702statement to If...Else pairs. 10703 10704Added support to allow a standalone Return operator, with no parentheses 10705(or 10706operands). 10707 10708Fixed a problem with code generation for the ElseIf operator where the 10709translated Else...If parse tree was improperly constructed leading to the 10710loss of some code. 10711 10712---------------------------------------- 1071322 September 2004. Summary of changes for version 20040922: 10714 107151) ACPI CA Core Subsystem: 10716 10717Fixed a problem with the implementation of the LNot() operator where 10718"Ones" 10719was not returned for the TRUE case. Changed the code to return Ones 10720instead 10721of (!Arg) which was usually 1. This change affects iASL constant folding 10722for 10723this operator also. 10724 10725Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 10726not 10727initialized properly -- Now zero the entire buffer in this case where the 10728buffer already exists. 10729 10730Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 10731Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 10732related code considerably. This will require changes/updates to all OS 10733interface layers (OSLs.) 10734 10735Implemented a new external interface, AcpiInstallExceptionHandler, to 10736allow 10737a system exception handler to be installed. This handler is invoked upon 10738any 10739run-time exception that occurs during control method execution. 10740 10741Added support for the DSDT in AcpiTbFindTable. This allows the 10742DataTableRegion() operator to access the local copy of the DSDT. 10743 10744Code and Data Size: Current and previous core subsystem library sizes are 10745shown below. These are the code and data sizes for the acpica.lib 10746produced 10747by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10748any ACPI driver or OSPM code. The debug version of the code includes the 10749debug output trace mechanism and has a much larger code and data size. 10750Note 10751that these values will vary depending on the efficiency of the compiler 10752and 10753the compiler options used during generation. 10754 10755 Previous Release: 10756 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10757 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10758 Current Release: 10759 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10760 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10761 10762 107632) iASL Compiler/Disassembler: 10764 10765Fixed a problem with constant folding and the LNot operator. LNot was 10766returning 1 in the TRUE case, not Ones as per the ACPI specification. 10767This 10768could result in the generation of an incorrect folded/reduced constant. 10769 10770End-Of-File is now allowed within a "//"-style comment. A parse error no 10771longer occurs if such a comment is at the very end of the input ASL 10772source 10773file. 10774 10775Implemented the "-r" option to override the Revision in the table header. 10776The initial use of this option will be to simplify the evaluation of the 10777AML 10778interpreter by allowing a single ASL source module to be compiled for 10779either 1078032-bit or 64-bit integers. 10781 10782 10783---------------------------------------- 1078427 August 2004. Summary of changes for version 20040827: 10785 107861) ACPI CA Core Subsystem: 10787 10788- Implemented support for implicit object conversion in the non-numeric 10789logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 10790and 10791LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 10792the second operand is implicitly converted on the fly to match the type 10793of 10794the first operand. For example: 10795 10796 LEqual (Source1, Source2) 10797 10798Source1 and Source2 must each evaluate to an integer, a string, or a 10799buffer. 10800The data type of Source1 dictates the required type of Source2. Source2 10801is 10802implicitly converted if necessary to match the type of Source1. 10803 10804- Updated and corrected the behavior of the string conversion support. 10805The 10806rules concerning conversion of buffers to strings (according to the ACPI 10807specification) are as follows: 10808 10809ToDecimalString - explicit byte-wise conversion of buffer to string of 10810decimal values (0-255) separated by commas. ToHexString - explicit byte- 10811wise 10812conversion of buffer to string of hex values (0-FF) separated by commas. 10813ToString - explicit byte-wise conversion of buffer to string. Byte-by- 10814byte 10815copy with no transform except NULL terminated. Any other implicit buffer- 10816to- 10817string conversion - byte-wise conversion of buffer to string of hex 10818values 10819(0-FF) separated by spaces. 10820 10821- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 10822 10823- Fixed a problem in AcpiNsGetPathnameLength where the returned length 10824was 10825one byte too short in the case of a node in the root scope. This could 10826cause a fault during debug output. 10827 10828- Code and Data Size: Current and previous core subsystem library sizes 10829are 10830shown below. These are the code and data sizes for the acpica.lib 10831produced 10832by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10833any ACPI driver or OSPM code. The debug version of the code includes the 10834debug output trace mechanism and has a much larger code and data size. 10835Note 10836that these values will vary depending on the efficiency of the compiler 10837and 10838the compiler options used during generation. 10839 10840 Previous Release: 10841 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10842 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10843 Current Release: 10844 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10845 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10846 10847 108482) iASL Compiler/Disassembler: 10849 10850- Fixed a Linux generation error. 10851 10852 10853---------------------------------------- 1085416 August 2004. Summary of changes for version 20040816: 10855 108561) ACPI CA Core Subsystem: 10857 10858Designed and implemented support within the AML interpreter for the so- 10859called "implicit return". This support returns the result of the last 10860ASL 10861operation within a control method, in the absence of an explicit Return() 10862operator. A few machines depend on this behavior, even though it is not 10863explicitly supported by the ASL language. It is optional support that 10864can 10865be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 10866 10867Removed support for the PCI_Config address space from the internal low 10868level 10869hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 10870support was not used internally, and would not work correctly anyway 10871because 10872the PCI bus number and segment number were not supported. There are 10873separate interfaces for PCI configuration space access because of the 10874unique 10875interface. 10876 10877Code and Data Size: Current and previous core subsystem library sizes are 10878shown below. These are the code and data sizes for the acpica.lib 10879produced 10880by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10881any ACPI driver or OSPM code. The debug version of the code includes the 10882debug output trace mechanism and has a much larger code and data size. 10883Note 10884that these values will vary depending on the efficiency of the compiler 10885and 10886the compiler options used during generation. 10887 10888 Previous Release: 10889 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10890 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10891 Current Release: 10892 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10893 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10894 10895 108962) iASL Compiler/Disassembler: 10897 10898Fixed a problem where constants in ASL expressions at the root level (not 10899within a control method) could be inadvertently truncated during code 10900generation. This problem was introduced in the 20040715 release. 10901 10902 10903---------------------------------------- 1090415 July 2004. Summary of changes for version 20040715: 10905 109061) ACPI CA Core Subsystem: 10907 10908Restructured the internal HW GPE interfaces to pass/track the current 10909state 10910of interrupts (enabled/disabled) in order to avoid possible deadlock and 10911increase flexibility of the interfaces. 10912 10913Implemented a "lexicographical compare" for String and Buffer objects 10914within 10915the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 10916- 10917as per further clarification to the ACPI specification. Behavior is 10918similar 10919to C library "strcmp". 10920 10921Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 10922external function. In the 32-bit non-debug case, the stack use has been 10923reduced from 168 bytes to 32 bytes. 10924 10925Deployed a new run-time configuration flag, 10926AcpiGbl_EnableInterpreterSlack, 10927whose purpose is to allow the AML interpreter to forgive certain bad AML 10928constructs. Default setting is FALSE. 10929 10930Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 10931IO 10932support code. If enabled, it allows field access to go beyond the end of 10933a 10934region definition if the field is within the region length rounded up to 10935the 10936next access width boundary (a common coding error.) 10937 10938Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 10939ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 10940these 10941symbols are lowercased by the latest version of the AcpiSrc tool. 10942 10943The prototypes for the PCI interfaces in acpiosxf.h have been updated to 10944rename "Register" to simply "Reg" to prevent certain compilers from 10945complaining. 10946 10947Code and Data Size: Current and previous core subsystem library sizes are 10948shown below. These are the code and data sizes for the acpica.lib 10949produced 10950by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10951any ACPI driver or OSPM code. The debug version of the code includes the 10952debug output trace mechanism and has a much larger code and data size. 10953Note 10954that these values will vary depending on the efficiency of the compiler 10955and 10956the compiler options used during generation. 10957 10958 Previous Release: 10959 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10960 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10961 Current Release: 10962 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10963 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10964 10965 109662) iASL Compiler/Disassembler: 10967 10968Implemented full support for Package objects within the Case() operator. 10969Note: The Break() operator is currently not supported within Case blocks 10970(TermLists) as there is some question about backward compatibility with 10971ACPI 109721.0 interpreters. 10973 10974 10975Fixed a problem where complex terms were not supported properly within 10976the 10977Switch() operator. 10978 10979Eliminated extraneous warning for compiler-emitted reserved names of the 10980form "_T_x". (Used in Switch/Case operators.) 10981 10982Eliminated optimization messages for "_T_x" objects and small constants 10983within the DefinitionBlock operator. 10984 10985 10986---------------------------------------- 1098715 June 2004. Summary of changes for version 20040615: 10988 109891) ACPI CA Core Subsystem: 10990 10991Implemented support for Buffer and String objects (as per ACPI 2.0) for 10992the 10993following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10994LLessEqual. 10995 10996All directory names in the entire source package are lower case, as they 10997were in earlier releases. 10998 10999Implemented "Disassemble" command in the AML debugger that will 11000disassemble 11001a single control method. 11002 11003Code and Data Size: Current and previous core subsystem library sizes are 11004shown below. These are the code and data sizes for the acpica.lib 11005produced 11006by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11007any ACPI driver or OSPM code. The debug version of the code includes the 11008debug output trace mechanism and has a much larger code and data size. 11009Note 11010that these values will vary depending on the efficiency of the compiler 11011and 11012the compiler options used during generation. 11013 11014 Previous Release: 11015 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11016 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11017 11018 Current Release: 11019 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11020 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11021 11022 110232) iASL Compiler/Disassembler: 11024 11025Implemented support for Buffer and String objects (as per ACPI 2.0) for 11026the 11027following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11028LLessEqual. 11029 11030All directory names in the entire source package are lower case, as they 11031were in earlier releases. 11032 11033Fixed a fault when using the -g or -d<nofilename> options if the FADT was 11034not found. 11035 11036Fixed an issue with the Windows version of the compiler where later 11037versions 11038of Windows place the FADT in the registry under the name "FADT" and not 11039"FACP" as earlier versions did. This applies when using the -g or - 11040d<nofilename> options. The compiler now looks for both strings as 11041necessary. 11042 11043Fixed a problem with compiler namepath optimization where a namepath 11044within 11045the Scope() operator could not be optimized if the namepath was a subpath 11046of 11047the current scope path. 11048 11049---------------------------------------- 1105027 May 2004. Summary of changes for version 20040527: 11051 110521) ACPI CA Core Subsystem: 11053 11054Completed a new design and implementation for EBDA (Extended BIOS Data 11055Area) 11056support in the RSDP scan code. The original code improperly scanned for 11057the 11058EBDA by simply scanning from memory location 0 to 0x400. The correct 11059method 11060is to first obtain the EBDA pointer from within the BIOS data area, then 11061scan 1K of memory starting at the EBDA pointer. There appear to be few 11062if 11063any machines that place the RSDP in the EBDA, however. 11064 11065Integrated a fix for a possible fault during evaluation of BufferField 11066arguments. Obsolete code that was causing the problem was removed. 11067 11068Found and fixed a problem in the Field Support Code where data could be 11069corrupted on a bit field read that starts on an aligned boundary but does 11070not end on an aligned boundary. Merged the read/write "datum length" 11071calculation code into a common procedure. 11072 11073Rolled in a couple of changes to the FreeBSD-specific header. 11074 11075 11076Code and Data Size: Current and previous core subsystem library sizes are 11077shown below. These are the code and data sizes for the acpica.lib 11078produced 11079by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11080any ACPI driver or OSPM code. The debug version of the code includes the 11081debug output trace mechanism and has a much larger code and data size. 11082Note 11083that these values will vary depending on the efficiency of the compiler 11084and 11085the compiler options used during generation. 11086 11087 Previous Release: 11088 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11089 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11090 Current Release: 11091 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11092 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11093 11094 110952) iASL Compiler/Disassembler: 11096 11097Fixed a generation warning produced by some overly-verbose compilers for 11098a 1109964-bit constant. 11100 11101---------------------------------------- 1110214 May 2004. Summary of changes for version 20040514: 11103 111041) ACPI CA Core Subsystem: 11105 11106Fixed a problem where hardware GPE enable bits sometimes not set properly 11107during and after GPE method execution. Result of 04/27 changes. 11108 11109Removed extra "clear all GPEs" when sleeping/waking. 11110 11111Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 11112AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 11113to 11114the new AcpiEv* calls as appropriate. 11115 11116ACPI_OS_NAME was removed from the OS-specific headers. The default name 11117is 11118now "Microsoft Windows NT" for maximum compatibility. However this can 11119be 11120changed by modifying the acconfig.h file. 11121 11122Allow a single invocation of AcpiInstallNotifyHandler for a handler that 11123traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 11124 11125Run _INI methods on ThermalZone objects. This is against the ACPI 11126specification, but there is apparently ASL code in the field that has 11127these 11128_INI methods, and apparently "other" AML interpreters execute them. 11129 11130Performed a full 16/32/64 bit lint that resulted in some small changes. 11131 11132Added a sleep simulation command to the AML debugger to test sleep code. 11133 11134Code and Data Size: Current and previous core subsystem library sizes are 11135shown below. These are the code and data sizes for the acpica.lib 11136produced 11137by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11138any ACPI driver or OSPM code. The debug version of the code includes the 11139debug output trace mechanism and has a much larger code and data size. 11140Note 11141that these values will vary depending on the efficiency of the compiler 11142and 11143the compiler options used during generation. 11144 11145 Previous Release: 11146 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11147 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11148 Current Release: 11149 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11150 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11151 11152---------------------------------------- 1115327 April 2004. Summary of changes for version 20040427: 11154 111551) ACPI CA Core Subsystem: 11156 11157Completed a major overhaul of the GPE handling within ACPI CA. There are 11158now three types of GPEs: wake-only, runtime-only, and combination 11159wake/run. 11160The only GPEs allowed to be combination wake/run are for button-style 11161devices such as a control-method power button, control-method sleep 11162button, 11163or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 11164not 11165referenced by any _PRW methods are marked for "runtime" and hardware 11166enabled. Any GPE that is referenced by a _PRW method is marked for 11167"wake" 11168(and disabled at runtime). However, at sleep time, only those GPEs that 11169have been specifically enabled for wake via the AcpiEnableGpe interface 11170will 11171actually be hardware enabled. 11172 11173A new external interface has been added, AcpiSetGpeType(), that is meant 11174to 11175be used by device drivers to force a GPE to a particular type. It will 11176be 11177especially useful for the drivers for the button devices mentioned above. 11178 11179Completed restructuring of the ACPI CA initialization sequence so that 11180default operation region handlers are installed before GPEs are 11181initialized 11182and the _PRW methods are executed. This will prevent errors when the 11183_PRW 11184methods attempt to access system memory or I/O space. 11185 11186GPE enable/disable no longer reads the GPE enable register. We now keep 11187the 11188enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 11189thus no longer depend on the hardware to maintain these bits. 11190 11191Always clear the wake status and fixed/GPE status bits before sleep, even 11192for state S5. 11193 11194Improved the AML debugger output for displaying the GPE blocks and their 11195current status. 11196 11197Added new strings for the _OSI method, of the form "Windows 2001 SPx" 11198where 11199x = 0,1,2,3,4. 11200 11201Fixed a problem where the physical address was incorrectly calculated 11202when 11203the Load() operator was used to directly load from an Operation Region 11204(vs. 11205loading from a Field object.) Also added check for minimum table length 11206for 11207this case. 11208 11209Fix for multiple mutex acquisition. Restore original thread SyncLevel on 11210mutex release. 11211 11212Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 11213consistency with the other fields returned. 11214 11215Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 11216structure for each GPE in the system, so the size of this structure is 11217important. 11218 11219CPU stack requirement reduction: Cleaned up the method execution and 11220object 11221evaluation paths so that now a parameter structure is passed, instead of 11222copying the various method parameters over and over again. 11223 11224In evregion.c: Correctly exit and reenter the interpreter region if and 11225only if dispatching an operation region request to a user-installed 11226handler. 11227Do not exit/reenter when dispatching to a default handler (e.g., default 11228system memory or I/O handlers) 11229 11230 11231Notes for updating drivers for the new GPE support. The following 11232changes 11233must be made to ACPI-related device drivers that are attached to one or 11234more 11235GPEs: (This information will be added to the ACPI CA Programmer 11236Reference.) 11237 112381) AcpiInstallGpeHandler no longer automatically enables the GPE, you 11239must 11240explicitly call AcpiEnableGpe. 112412) There is a new interface called AcpiSetGpeType. This should be called 11242before enabling the GPE. Also, this interface will automatically disable 11243the GPE if it is currently enabled. 112443) AcpiEnableGpe no longer supports a GPE type flag. 11245 11246Specific drivers that must be changed: 112471) EC driver: 11248 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 11249AeGpeHandler, NULL); 11250 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 11251 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 11252 112532) Button Drivers (Power, Lid, Sleep): 11254Run _PRW method under parent device 11255If _PRW exists: /* This is a control-method button */ 11256 Extract GPE number and possibly GpeDevice 11257 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 11258 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 11259 11260For all other devices that have _PRWs, we automatically set the GPE type 11261to 11262ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 11263This 11264must be done on a selective basis, usually requiring some kind of user 11265app 11266to allow the user to pick the wake devices. 11267 11268 11269Code and Data Size: Current and previous core subsystem library sizes are 11270shown below. These are the code and data sizes for the acpica.lib 11271produced 11272by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11273any ACPI driver or OSPM code. The debug version of the code includes the 11274debug output trace mechanism and has a much larger code and data size. 11275Note 11276that these values will vary depending on the efficiency of the compiler 11277and 11278the compiler options used during generation. 11279 11280 Previous Release: 11281 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11282 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11283 Current Release: 11284 11285 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11286 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11287 11288 11289 11290---------------------------------------- 1129102 April 2004. Summary of changes for version 20040402: 11292 112931) ACPI CA Core Subsystem: 11294 11295Fixed an interpreter problem where an indirect store through an ArgX 11296parameter was incorrectly applying the "implicit conversion rules" during 11297the store. From the ACPI specification: "If the target is a method local 11298or 11299argument (LocalX or ArgX), no conversion is performed and the result is 11300stored directly to the target". The new behavior is to disable implicit 11301conversion during ALL stores to an ArgX. 11302 11303Changed the behavior of the _PRW method scan to ignore any and all errors 11304returned by a given _PRW. This prevents the scan from aborting from the 11305failure of any single _PRW. 11306 11307Moved the runtime configuration parameters from the global init procedure 11308to 11309static variables in acglobal.h. This will allow the host to override the 11310default values easily. 11311 11312Code and Data Size: Current and previous core subsystem library sizes are 11313shown below. These are the code and data sizes for the acpica.lib 11314produced 11315by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11316any ACPI driver or OSPM code. The debug version of the code includes the 11317debug output trace mechanism and has a much larger code and data size. 11318Note 11319that these values will vary depending on the efficiency of the compiler 11320and 11321the compiler options used during generation. 11322 11323 Previous Release: 11324 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11325 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11326 Current Release: 11327 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11328 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11329 11330 113312) iASL Compiler/Disassembler: 11332 11333iASL now fully disassembles SSDTs. However, External() statements are 11334not 11335generated automatically for unresolved symbols at this time. This is a 11336planned feature for future implementation. 11337 11338Fixed a scoping problem in the disassembler that occurs when the type of 11339the 11340target of a Scope() operator is overridden. This problem caused an 11341incorrectly nested internal namespace to be constructed. 11342 11343Any warnings or errors that are emitted during disassembly are now 11344commented 11345out automatically so that the resulting file can be recompiled without 11346any 11347hand editing. 11348 11349---------------------------------------- 1135026 March 2004. Summary of changes for version 20040326: 11351 113521) ACPI CA Core Subsystem: 11353 11354Implemented support for "wake" GPEs via interaction between GPEs and the 11355_PRW methods. Every GPE that is pointed to by one or more _PRWs is 11356identified as a WAKE GPE and by default will no longer be enabled at 11357runtime. Previously, we were blindly enabling all GPEs with a 11358corresponding 11359_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 11360We 11361believe this has been the cause of thousands of "spurious" GPEs on some 11362systems. 11363 11364This new GPE behavior is can be reverted to the original behavior (enable 11365ALL GPEs at runtime) via a runtime flag. 11366 11367Fixed a problem where aliased control methods could not access objects 11368properly. The proper scope within the namespace was not initialized 11369(transferred to the target of the aliased method) before executing the 11370target method. 11371 11372Fixed a potential race condition on internal object deletion on the 11373return 11374object in AcpiEvaluateObject. 11375 11376Integrated a fix for resource descriptors where both _MEM and _MTP were 11377being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 11378wide, 0x0F instead of 0x03.) 11379 11380Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 11381preventing 11382a 11383fault in some cases. 11384 11385Updated Notify() values for debug statements in evmisc.c 11386 11387Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 11388 11389Code and Data Size: Current and previous core subsystem library sizes are 11390shown below. These are the code and data sizes for the acpica.lib 11391produced 11392by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11393any ACPI driver or OSPM code. The debug version of the code includes the 11394debug output trace mechanism and has a much larger code and data size. 11395Note 11396that these values will vary depending on the efficiency of the compiler 11397and 11398the compiler options used during generation. 11399 11400 Previous Release: 11401 11402 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11403 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11404 Current Release: 11405 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11406 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11407 11408---------------------------------------- 1140911 March 2004. Summary of changes for version 20040311: 11410 114111) ACPI CA Core Subsystem: 11412 11413Fixed a problem where errors occurring during the parse phase of control 11414method execution did not abort cleanly. For example, objects created and 11415installed in the namespace were not deleted. This caused all subsequent 11416invocations of the method to return the AE_ALREADY_EXISTS exception. 11417 11418Implemented a mechanism to force a control method to "Serialized" 11419execution 11420if the method attempts to create namespace objects. (The root of the 11421AE_ALREADY_EXISTS problem.) 11422 11423Implemented support for the predefined _OSI "internal" control method. 11424Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 11425and 11426"Windows 2001.1", and can be easily upgraded for new strings as 11427necessary. 11428This feature will allow "other" operating systems to execute the fully 11429tested, "Windows" code path through the ASL code 11430 11431Global Lock Support: Now allows multiple acquires and releases with any 11432internal thread. Removed concept of "owning thread" for this special 11433mutex. 11434 11435Fixed two functions that were inappropriately declaring large objects on 11436the 11437CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 11438during 11439method execution considerably. 11440 11441Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 11442S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 11443 11444Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 11445defined on the machine. 11446 11447Implemented two runtime options: One to force all control method 11448execution 11449to "Serialized" to mimic Windows behavior, another to disable _OSI 11450support 11451if it causes problems on a given machine. 11452 11453Code and Data Size: Current and previous core subsystem library sizes are 11454shown below. These are the code and data sizes for the acpica.lib 11455produced 11456by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11457any ACPI driver or OSPM code. The debug version of the code includes the 11458debug output trace mechanism and has a much larger code and data size. 11459Note 11460that these values will vary depending on the efficiency of the compiler 11461and 11462the compiler options used during generation. 11463 11464 Previous Release: 11465 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11466 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11467 Current Release: 11468 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11469 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11470 114712) iASL Compiler/Disassembler: 11472 11473Fixed an array size problem for FreeBSD that would cause the compiler to 11474fault. 11475 11476---------------------------------------- 1147720 February 2004. Summary of changes for version 20040220: 11478 11479 114801) ACPI CA Core Subsystem: 11481 11482Implemented execution of _SxD methods for Device objects in the 11483GetObjectInfo interface. 11484 11485Fixed calls to _SST method to pass the correct arguments. 11486 11487Added a call to _SST on wake to restore to "working" state. 11488 11489Check for End-Of-Buffer failure case in the WalkResources interface. 11490 11491Integrated fix for 64-bit alignment issue in acglobal.h by moving two 11492structures to the beginning of the file. 11493 11494After wake, clear GPE status register(s) before enabling GPEs. 11495 11496After wake, clear/enable power button. (Perhaps we should clear/enable 11497all 11498fixed events upon wake.) 11499 11500Fixed a couple of possible memory leaks in the Namespace manager. 11501 11502Integrated latest acnetbsd.h file. 11503 11504---------------------------------------- 1150511 February 2004. Summary of changes for version 20040211: 11506 11507 115081) ACPI CA Core Subsystem: 11509 11510Completed investigation and implementation of the call-by-reference 11511mechanism for control method arguments. 11512 11513Fixed a problem where a store of an object into an indexed package could 11514fail if the store occurs within a different method than the method that 11515created the package. 11516 11517Fixed a problem where the ToDecimal operator could return incorrect 11518results. 11519 11520Fixed a problem where the CopyObject operator could fail on some of the 11521more 11522obscure objects (e.g., Reference objects.) 11523 11524Improved the output of the Debug object to display buffer, package, and 11525index objects. 11526 11527Fixed a problem where constructs of the form "RefOf (ArgX)" did not 11528return 11529the expected result. 11530 11531Added permanent ACPI_REPORT_ERROR macros for all instances of the 11532ACPI_AML_INTERNAL exception. 11533 11534Integrated latest version of acfreebsd.h 11535 11536---------------------------------------- 1153716 January 2004. Summary of changes for version 20040116: 11538 11539The purpose of this release is primarily to update the copyright years in 11540each module, thus causing a huge number of diffs. There are a few small 11541functional changes, however. 11542 115431) ACPI CA Core Subsystem: 11544 11545Improved error messages when there is a problem finding one or more of 11546the 11547required base ACPI tables 11548 11549Reintroduced the definition of APIC_HEADER in actbl.h 11550 11551Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 11552 11553Removed extraneous reference to NewObj in dsmthdat.c 11554 115552) iASL compiler 11556 11557Fixed a problem introduced in December that disabled the correct 11558disassembly 11559of Resource Templates 11560 11561 11562---------------------------------------- 1156303 December 2003. Summary of changes for version 20031203: 11564 115651) ACPI CA Core Subsystem: 11566 11567Changed the initialization of Operation Regions during subsystem 11568init to perform two entire walks of the ACPI namespace; The first 11569to initialize the regions themselves, the second to execute the 11570_REG methods. This fixed some interdependencies across _REG 11571methods found on some machines. 11572 11573Fixed a problem where a Store(Local0, Local1) could simply update 11574the object reference count, and not create a new copy of the 11575object if the Local1 is uninitialized. 11576 11577Implemented support for the _SST reserved method during sleep 11578transitions. 11579 11580Implemented support to clear the SLP_TYP and SLP_EN bits when 11581waking up, this is apparently required by some machines. 11582 11583When sleeping, clear the wake status only if SleepState is not S5. 11584 11585Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 11586pointer arithmetic advanced a string pointer too far. 11587 11588Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 11589could be returned if the requested table has not been loaded. 11590 11591Within the support for IRQ resources, restructured the handling of 11592the active and edge/level bits. 11593 11594Fixed a few problems in AcpiPsxExecute() where memory could be 11595leaked under certain error conditions. 11596 11597Improved error messages for the cases where the ACPI mode could 11598not be entered. 11599 11600Code and Data Size: Current and previous core subsystem library 11601sizes are shown below. These are the code and data sizes for the 11602acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11603these values do not include any ACPI driver or OSPM code. The 11604debug version of the code includes the debug output trace 11605mechanism and has a much larger code and data size. Note that 11606these values will vary depending on the efficiency of the compiler 11607and the compiler options used during generation. 11608 11609 Previous Release (20031029): 11610 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11611 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11612 Current Release: 11613 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11614 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11615 116162) iASL Compiler/Disassembler: 11617 11618Implemented a fix for the iASL disassembler where a bad index was 11619generated. This was most noticeable on 64-bit platforms 11620 11621 11622---------------------------------------- 1162329 October 2003. Summary of changes for version 20031029: 11624 116251) ACPI CA Core Subsystem: 11626 11627 11628Fixed a problem where a level-triggered GPE with an associated 11629_Lxx control method was incorrectly cleared twice. 11630 11631Fixed a problem with the Field support code where an access can 11632occur beyond the end-of-region if the field is non-aligned but 11633extends to the very end of the parent region (resulted in an 11634AE_AML_REGION_LIMIT exception.) 11635 11636Fixed a problem with ACPI Fixed Events where an RT Clock handler 11637would not get invoked on an RTC event. The RTC event bitmasks for 11638the PM1 registers were not being initialized properly. 11639 11640Implemented support for executing _STA and _INI methods for 11641Processor objects. Although this is currently not part of the 11642ACPI specification, there is existing ASL code that depends on the 11643init-time execution of these methods. 11644 11645Implemented and deployed a GetDescriptorName function to decode 11646the various types of internal descriptors. Guards against null 11647descriptors during debug output also. 11648 11649Implemented and deployed a GetNodeName function to extract the 4- 11650character namespace node name. This function simplifies the debug 11651and error output, as well as guarding against null pointers during 11652output. 11653 11654Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 11655simplify the debug and error output of 64-bit integers. This 11656macro replaces the HIDWORD and LODWORD macros for dumping these 11657integers. 11658 11659Updated the implementation of the Stall() operator to only call 11660AcpiOsStall(), and also return an error if the operand is larger 11661than 255. This preserves the required behavior of not 11662relinquishing the processor, as would happen if AcpiOsSleep() was 11663called for "long stalls". 11664 11665Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 11666initialized are now treated as NOOPs. 11667 11668Cleaned up a handful of warnings during 64-bit generation. 11669 11670Fixed a reported error where and incorrect GPE number was passed 11671to the GPE dispatch handler. This value is only used for error 11672output, however. Used this opportunity to clean up and streamline 11673the GPE dispatch code. 11674 11675Code and Data Size: Current and previous core subsystem library 11676sizes are shown below. These are the code and data sizes for the 11677acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11678these values do not include any ACPI driver or OSPM code. The 11679 11680debug version of the code includes the debug output trace 11681mechanism and has a much larger code and data size. Note that 11682these values will vary depending on the efficiency of the compiler 11683and the compiler options used during generation. 11684 11685 Previous Release (20031002): 11686 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11687 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11688 Current Release: 11689 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11690 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11691 11692 116932) iASL Compiler/Disassembler: 11694 11695Updated the iASL compiler to return an error if the operand to the 11696Stall() operator is larger than 255. 11697 11698 11699---------------------------------------- 1170002 October 2003. Summary of changes for version 20031002: 11701 11702 117031) ACPI CA Core Subsystem: 11704 11705Fixed a problem with Index Fields where the index was not 11706incremented for fields that require multiple writes to the 11707index/data registers (Fields that are wider than the data 11708register.) 11709 11710Fixed a problem with all Field objects where a write could go 11711beyond the end-of-field if the field was larger than the access 11712granularity and therefore required multiple writes to complete the 11713request. An extra write beyond the end of the field could happen 11714inadvertently. 11715 11716Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 11717would incorrectly be returned if the width of the Data Register 11718was larger than the specified field access width. 11719 11720Completed fixes for LoadTable() and Unload() and verified their 11721operation. Implemented full support for the "DdbHandle" object 11722throughout the ACPI CA subsystem. 11723 11724Implemented full support for the MADT and ECDT tables in the ACPI 11725CA header files. Even though these tables are not directly 11726consumed by ACPI CA, the header definitions are useful for ACPI 11727device drivers. 11728 11729Integrated resource descriptor fixes posted to the Linux ACPI 11730list. This included checks for minimum descriptor length, and 11731support for trailing NULL strings within descriptors that have 11732optional string elements. 11733 11734Code and Data Size: Current and previous core subsystem library 11735sizes are shown below. These are the code and data sizes for the 11736acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11737these values do not include any ACPI driver or OSPM code. The 11738debug version of the code includes the debug output trace 11739mechanism and has a much larger code and data size. Note that 11740these values will vary depending on the efficiency of the compiler 11741and the compiler options used during generation. 11742 11743 Previous Release (20030918): 11744 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11745 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11746 Current Release: 11747 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11748 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11749 11750 117512) iASL Compiler: 11752 11753Implemented detection of non-ASCII characters within the input 11754source ASL file. This catches attempts to compile binary (AML) 11755files early in the compile, with an informative error message. 11756 11757Fixed a problem where the disassembler would fault if the output 11758filename could not be generated or if the output file could not be 11759opened. 11760 11761---------------------------------------- 1176218 September 2003. Summary of changes for version 20030918: 11763 11764 117651) ACPI CA Core Subsystem: 11766 11767Found and fixed a longstanding problem with the late execution of 11768the various deferred AML opcodes (such as Operation Regions, 11769Buffer Fields, Buffers, and Packages). If the name string 11770specified for the name of the new object placed the object in a 11771scope other than the current scope, the initialization/execution 11772of the opcode failed. The solution to this problem was to 11773implement a mechanism where the late execution of such opcodes 11774does not attempt to lookup/create the name a second time in an 11775incorrect scope. This fixes the "region size computed 11776incorrectly" problem. 11777 11778Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 11779Global Lock AE_BAD_PARAMETER error. 11780 11781Fixed several 64-bit issues with prototypes, casting and data 11782types. 11783 11784Removed duplicate prototype from acdisasm.h 11785 11786Fixed an issue involving EC Operation Region Detach (Shaohua Li) 11787 11788Code and Data Size: Current and previous core subsystem library 11789sizes are shown below. These are the code and data sizes for the 11790acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11791these values do not include any ACPI driver or OSPM code. The 11792debug version of the code includes the debug output trace 11793mechanism and has a much larger code and data size. Note that 11794these values will vary depending on the efficiency of the compiler 11795and the compiler options used during generation. 11796 11797 Previous Release: 11798 11799 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11800 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11801 Current Release: 11802 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11803 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11804 11805 118062) Linux: 11807 11808Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 11809correct sleep time in seconds. 11810 11811---------------------------------------- 1181214 July 2003. Summary of changes for version 20030619: 11813 118141) ACPI CA Core Subsystem: 11815 11816Parse SSDTs in order discovered, as opposed to reverse order 11817(Hrvoje Habjanic) 11818 11819Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 11820Klausner, 11821 Nate Lawson) 11822 11823 118242) Linux: 11825 11826Dynamically allocate SDT list (suggested by Andi Kleen) 11827 11828proc function return value cleanups (Andi Kleen) 11829 11830Correctly handle NMI watchdog during long stalls (Andrew Morton) 11831 11832Make it so acpismp=force works (reported by Andrew Morton) 11833 11834 11835---------------------------------------- 1183619 June 2003. Summary of changes for version 20030619: 11837 118381) ACPI CA Core Subsystem: 11839 11840Fix To/FromBCD, eliminating the need for an arch-specific #define. 11841 11842Do not acquire a semaphore in the S5 shutdown path. 11843 11844Fix ex_digits_needed for 0. (Takayoshi Kochi) 11845 11846Fix sleep/stall code reversal. (Andi Kleen) 11847 11848Revert a change having to do with control method calling 11849semantics. 11850 118512) Linux: 11852 11853acpiphp update (Takayoshi Kochi) 11854 11855Export acpi_disabled for sonypi (Stelian Pop) 11856 11857Mention acpismp=force in config help 11858 11859Re-add acpitable.c and acpismp=force. This improves backwards 11860 11861compatibility and also cleans up the code to a significant degree. 11862 11863Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 11864 11865---------------------------------------- 1186622 May 2003. Summary of changes for version 20030522: 11867 118681) ACPI CA Core Subsystem: 11869 11870Found and fixed a reported problem where an AE_NOT_FOUND error 11871occurred occasionally during _BST evaluation. This turned out to 11872be an Owner ID allocation issue where a called method did not get 11873a new ID assigned to it. Eventually, (after 64k calls), the Owner 11874ID UINT16 would wraparound so that the ID would be the same as the 11875caller's and the called method would delete the caller's 11876namespace. 11877 11878Implemented extended error reporting for control methods that are 11879aborted due to a run-time exception. Output includes the exact 11880AML instruction that caused the method abort, a dump of the method 11881locals and arguments at the time of the abort, and a trace of all 11882nested control method calls. 11883 11884Modified the interpreter to allow the creation of buffers of zero 11885length from the AML code. Implemented new code to ensure that no 11886attempt is made to actually allocate a memory buffer (of length 11887zero) - instead, a simple buffer object with a NULL buffer pointer 11888and length zero is created. A warning is no longer issued when 11889the AML attempts to create a zero-length buffer. 11890 11891Implemented a workaround for the "leading asterisk issue" in 11892_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 11893asterisk is automatically removed if present in any HID, UID, or 11894CID strings. The iASL compiler will still flag this asterisk as 11895an error, however. 11896 11897Implemented full support for _CID methods that return a package of 11898multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 11899now additionally returns a device _CID list if present. This 11900required a change to the external interface in order to pass an 11901ACPI_BUFFER object as a parameter since the _CID list is of 11902variable length. 11903 11904Fixed a problem with the new AE_SAME_HANDLER exception where 11905handler initialization code did not know about this exception. 11906 11907Code and Data Size: Current and previous core subsystem library 11908sizes are shown below. These are the code and data sizes for the 11909acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11910these values do not include any ACPI driver or OSPM code. The 11911debug version of the code includes the debug output trace 11912mechanism and has a much larger code and data size. Note that 11913these values will vary depending on the efficiency of the compiler 11914and the compiler options used during generation. 11915 11916 Previous Release (20030509): 11917 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11918 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11919 Current Release: 11920 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11921 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11922 11923 119242) Linux: 11925 11926Fixed a bug in which we would reinitialize the ACPI interrupt 11927after it was already working, thus disabling all ACPI and the IRQs 11928for any other device sharing the interrupt. (Thanks to Stian 11929Jordet) 11930 11931Toshiba driver update (John Belmonte) 11932 11933Return only 0 or 1 for our interrupt handler status (Andrew 11934Morton) 11935 11936 119373) iASL Compiler: 11938 11939Fixed a reported problem where multiple (nested) ElseIf() 11940statements were not handled correctly by the compiler, resulting 11941in incorrect warnings and incorrect AML code. This was a problem 11942in both the ASL parser and the code generator. 11943 11944 119454) Documentation: 11946 11947Added changes to existing interfaces, new exception codes, and new 11948text concerning reference count object management versus garbage 11949collection. 11950 11951---------------------------------------- 1195209 May 2003. Summary of changes for version 20030509. 11953 11954 119551) ACPI CA Core Subsystem: 11956 11957Changed the subsystem initialization sequence to hold off 11958installation of address space handlers until the hardware has been 11959initialized and the system has entered ACPI mode. This is because 11960the installation of space handlers can cause _REG methods to be 11961run. Previously, the _REG methods could potentially be run before 11962ACPI mode was enabled. 11963 11964Fixed some memory leak issues related to address space handler and 11965notify handler installation. There were some problems with the 11966reference count mechanism caused by the fact that the handler 11967objects are shared across several namespace objects. 11968 11969Fixed a reported problem where reference counts within the 11970namespace were not properly updated when named objects created by 11971method execution were deleted. 11972 11973Fixed a reported problem where multiple SSDTs caused a deletion 11974issue during subsystem termination. Restructured the table data 11975structures to simplify the linked lists and the related code. 11976 11977Fixed a problem where the table ID associated with secondary 11978tables (SSDTs) was not being propagated into the namespace objects 11979created by those tables. This would only present a problem for 11980tables that are unloaded at run-time, however. 11981 11982Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 11983type as the length parameter (instead of UINT32). 11984 11985Solved a long-standing problem where an ALREADY_EXISTS error 11986appears on various systems. This problem could happen when there 11987are multiple PCI_Config operation regions under a single PCI root 11988bus. This doesn't happen very frequently, but there are some 11989systems that do this in the ASL. 11990 11991Fixed a reported problem where the internal DeleteNode function 11992was incorrectly handling the case where a namespace node was the 11993first in the parent's child list, and had additional peers (not 11994the only child, but first in the list of children.) 11995 11996Code and Data Size: Current core subsystem library sizes are shown 11997below. These are the code and data sizes for the acpica.lib 11998produced by the Microsoft Visual C++ 6.0 compiler, and these 11999values do not include any ACPI driver or OSPM code. The debug 12000version of the code includes the debug output trace mechanism and 12001has a much larger code and data size. Note that these values will 12002vary depending on the efficiency of the compiler and the compiler 12003options used during generation. 12004 12005 Previous Release 12006 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12007 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12008 Current Release: 12009 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12010 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12011 12012 120132) Linux: 12014 12015Allow ":" in OS override string (Ducrot Bruno) 12016 12017Kobject fix (Greg KH) 12018 12019 120203 iASL Compiler/Disassembler: 12021 12022Fixed a problem in the generation of the C source code files (AML 12023is emitted in C source statements for BIOS inclusion) where the 12024Ascii dump that appears within a C comment at the end of each line 12025could cause a compile time error if the AML sequence happens to 12026have an open comment or close comment sequence embedded. 12027 12028 12029---------------------------------------- 1203024 April 2003. Summary of changes for version 20030424. 12031 12032 120331) ACPI CA Core Subsystem: 12034 12035Support for big-endian systems has been implemented. Most of the 12036support has been invisibly added behind big-endian versions of the 12037ACPI_MOVE_* macros. 12038 12039Fixed a problem in AcpiHwDisableGpeBlock() and 12040AcpiHwClearGpeBlock() where an incorrect offset was passed to the 12041low level hardware write routine. The offset parameter was 12042actually eliminated from the low level read/write routines because 12043they had become obsolete. 12044 12045Fixed a problem where a handler object was deleted twice during 12046the removal of a fixed event handler. 12047 12048 120492) Linux: 12050 12051A fix for SMP systems with link devices was contributed by 12052 12053Compaq's Dan Zink. 12054 12055(2.5) Return whether we handled the interrupt in our IRQ handler. 12056(Linux ISRs no longer return void, so we can propagate the handler 12057return value from the ACPI CA core back to the OS.) 12058 12059 12060 120613) Documentation: 12062 12063The ACPI CA Programmer Reference has been updated to reflect new 12064interfaces and changes to existing interfaces. 12065 12066---------------------------------------- 1206728 March 2003. Summary of changes for version 20030328. 12068 120691) ACPI CA Core Subsystem: 12070 12071The GPE Block Device support has been completed. New interfaces 12072are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 12073interfaces (enable, disable, clear, getstatus) have been split 12074into separate interfaces for Fixed Events and General Purpose 12075Events (GPEs) in order to support GPE Block Devices properly. 12076 12077Fixed a problem where the error message "Failed to acquire 12078semaphore" would appear during operations on the embedded 12079controller (EC). 12080 12081Code and Data Size: Current core subsystem library sizes are shown 12082below. These are the code and data sizes for the acpica.lib 12083produced by the Microsoft Visual C++ 6.0 compiler, and these 12084values do not include any ACPI driver or OSPM code. The debug 12085version of the code includes the debug output trace mechanism and 12086has a much larger code and data size. Note that these values will 12087vary depending on the efficiency of the compiler and the compiler 12088options used during generation. 12089 12090 Previous Release 12091 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12092 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12093 Current Release: 12094 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12095 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12096 12097 12098---------------------------------------- 1209928 February 2003. Summary of changes for version 20030228. 12100 12101 121021) ACPI CA Core Subsystem: 12103 12104The GPE handling and dispatch code has been completely overhauled 12105in preparation for support of GPE Block Devices (ID ACPI0006). 12106This affects internal data structures and code only; there should 12107be no differences visible externally. One new file has been 12108added, evgpeblk.c 12109 12110The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 12111fields that are used to determine the GPE block lengths. The 12112REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 12113structures are ignored. This is per the ACPI specification but it 12114isn't very clear. The full 256 Block 0/1 GPEs are now supported 12115(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 12116 12117In the SCI interrupt handler, removed the read of the PM1_CONTROL 12118register to look at the SCI_EN bit. On some machines, this read 12119causes an SMI event and greatly slows down SCI events. (This may 12120in fact be the cause of slow battery status response on some 12121systems.) 12122 12123Fixed a problem where a store of a NULL string to a package object 12124could cause the premature deletion of the object. This was seen 12125during execution of the battery _BIF method on some systems, 12126resulting in no battery data being returned. 12127 12128Added AcpiWalkResources interface to simplify parsing of resource 12129lists. 12130 12131Code and Data Size: Current core subsystem library sizes are shown 12132below. These are the code and data sizes for the acpica.lib 12133produced by the Microsoft Visual C++ 6.0 compiler, and these 12134values do not include any ACPI driver or OSPM code. The debug 12135version of the code includes the debug output trace mechanism and 12136has a much larger code and data size. Note that these values will 12137vary depending on the efficiency of the compiler and the compiler 12138options used during generation. 12139 12140 Previous Release 12141 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12142 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12143 Current Release: 12144 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12145 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12146 12147 121482) Linux 12149 12150S3 fixes (Ole Rohne) 12151 12152Update ACPI PHP driver with to use new acpi_walk_resource API 12153(Bjorn Helgaas) 12154 12155Add S4BIOS support (Pavel Machek) 12156 12157Map in entire table before performing checksum (John Stultz) 12158 12159Expand the mem= cmdline to allow the specification of reserved and 12160ACPI DATA blocks (Pavel Machek) 12161 12162Never use ACPI on VISWS 12163 12164Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 12165 12166Revert a change that allowed P_BLK lengths to be 4 or 5. This is 12167causing us to think that some systems support C2 when they really 12168don't. 12169 12170Do not count processor objects for non-present CPUs (Thanks to 12171Dominik Brodowski) 12172 12173 121743) iASL Compiler: 12175 12176Fixed a problem where ASL include files could not be found and 12177opened. 12178 12179Added support for the _PDC reserved name. 12180 12181 12182---------------------------------------- 1218322 January 2003. Summary of changes for version 20030122. 12184 12185 121861) ACPI CA Core Subsystem: 12187 12188Added a check for constructs of the form: Store (Local0, Local0) 12189where Local0 is not initialized. Apparently, some BIOS 12190programmers believe that this is a NOOP. Since this store doesn't 12191do anything anyway, the new prototype behavior will ignore this 12192error. This is a case where we can relax the strict checking in 12193the interpreter in the name of compatibility. 12194 12195 121962) Linux 12197 12198The AcpiSrc Source Conversion Utility has been released with the 12199Linux package for the first time. This is the utility that is 12200used to convert the ACPI CA base source code to the Linux version. 12201 12202(Both) Handle P_BLK lengths shorter than 6 more gracefully 12203 12204(Both) Move more headers to include/acpi, and delete an unused 12205header. 12206 12207(Both) Move drivers/acpi/include directory to include/acpi 12208 12209(Both) Boot functions don't use cmdline, so don't pass it around 12210 12211(Both) Remove include of unused header (Adrian Bunk) 12212 12213(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 12214the 12215former now also includes the latter, acpiphp.h only needs the one, 12216now. 12217 12218(2.5) Make it possible to select method of bios restoring after S3 12219resume. [=> no more ugly ifdefs] (Pavel Machek) 12220 12221(2.5) Make proc write interfaces work (Pavel Machek) 12222 12223(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 12224 12225(2.5) Break out ACPI Perf code into its own module, under cpufreq 12226(Dominik Brodowski) 12227 12228(2.4) S4BIOS support (Ducrot Bruno) 12229 12230(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 12231Visinoni) 12232 12233 122343) iASL Compiler: 12235 12236Added support to disassemble SSDT and PSDTs. 12237 12238Implemented support to obtain SSDTs from the Windows registry if 12239available. 12240 12241 12242---------------------------------------- 1224309 January 2003. Summary of changes for version 20030109. 12244 122451) ACPI CA Core Subsystem: 12246 12247Changed the behavior of the internal Buffer-to-String conversion 12248function. The current ACPI specification states that the contents 12249of the buffer are "converted to a string of two-character 12250hexadecimal numbers, each separated by a space". Unfortunately, 12251this definition is not backwards compatible with existing ACPI 1.0 12252implementations (although the behavior was not defined in the ACPI 122531.0 specification). The new behavior simply copies data from the 12254buffer to the string until a null character is found or the end of 12255the buffer is reached. The new String object is always null 12256terminated. This problem was seen during the generation of _BIF 12257battery data where incorrect strings were returned for battery 12258type, etc. This will also require an errata to the ACPI 12259specification. 12260 12261Renamed all instances of NATIVE_UINT and NATIVE_INT to 12262ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 12263 12264Copyright in all module headers (both Linux and non-Linux) has be 12265updated to 2003. 12266 12267Code and Data Size: Current core subsystem library sizes are shown 12268below. These are the code and data sizes for the acpica.lib 12269produced by the Microsoft Visual C++ 6.0 compiler, and these 12270values do not include any ACPI driver or OSPM code. The debug 12271version of the code includes the debug output trace mechanism and 12272has a much larger code and data size. Note that these values will 12273vary depending on the efficiency of the compiler and the compiler 12274options used during generation. 12275 12276 Previous Release 12277 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12278 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12279 Current Release: 12280 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12281 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12282 12283 122842) Linux 12285 12286Fixed an oops on module insertion/removal (Matthew Tippett) 12287 12288(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 12289 12290(2.5) Replace pr_debug (Randy Dunlap) 12291 12292(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 12293 12294(Both) Eliminate spawning of thread from timer callback, in favor 12295of schedule_work() 12296 12297(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 12298 12299(Both) Added define for Fixed Function HW region (Matthew Wilcox) 12300 12301(Both) Add missing statics to button.c (Pavel Machek) 12302 12303Several changes have been made to the source code translation 12304utility that generates the Linux Code in order to make the code 12305more "Linux-like": 12306 12307All typedefs on structs and unions have been removed in keeping 12308with the Linux coding style. 12309 12310Removed the non-Linux SourceSafe module revision number from each 12311module header. 12312 12313Completed major overhaul of symbols to be lowercased for linux. 12314Doubled the number of symbols that are lowercased. 12315 12316Fixed a problem where identifiers within procedure headers and 12317within quotes were not fully lower cased (they were left with a 12318starting capital.) 12319 12320Some C macros whose only purpose is to allow the generation of 16- 12321bit code are now completely removed in the Linux code, increasing 12322readability and maintainability. 12323 12324---------------------------------------- 12325 1232612 December 2002. Summary of changes for version 20021212. 12327 12328 123291) ACPI CA Core Subsystem: 12330 12331Fixed a problem where the creation of a zero-length AML Buffer 12332would cause a fault. 12333 12334Fixed a problem where a Buffer object that pointed to a static AML 12335buffer (in an ACPI table) could inadvertently be deleted, causing 12336memory corruption. 12337 12338Fixed a problem where a user buffer (passed in to the external 12339ACPI CA interfaces) could be overwritten if the buffer was too 12340small to complete the operation, causing memory corruption. 12341 12342Fixed a problem in the Buffer-to-String conversion code where a 12343string of length one was always returned, regardless of the size 12344of the input Buffer object. 12345 12346Removed the NATIVE_CHAR data type across the entire source due to 12347lack of need and lack of consistent use. 12348 12349Code and Data Size: Current core subsystem library sizes are shown 12350below. These are the code and data sizes for the acpica.lib 12351produced by the Microsoft Visual C++ 6.0 compiler, and these 12352values do not include any ACPI driver or OSPM code. The debug 12353version of the code includes the debug output trace mechanism and 12354has a much larger code and data size. Note that these values will 12355vary depending on the efficiency of the compiler and the compiler 12356options used during generation. 12357 12358 Previous Release 12359 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12360 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12361 Current Release: 12362 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12363 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12364 12365 12366---------------------------------------- 1236705 December 2002. Summary of changes for version 20021205. 12368 123691) ACPI CA Core Subsystem: 12370 12371Fixed a problem where a store to a String or Buffer object could 12372cause corruption of the DSDT if the object type being stored was 12373the same as the target object type and the length of the object 12374being stored was equal to or smaller than the original (existing) 12375target object. This was seen to cause corruption of battery _BIF 12376buffers if the _BIF method modified the buffer on the fly. 12377 12378Fixed a problem where an internal error was generated if a control 12379method invocation was used in an OperationRegion, Buffer, or 12380Package declaration. This was caused by the deferred parsing of 12381the control method and thus the deferred creation of the internal 12382method object. The solution to this problem was to create the 12383internal method object at the moment the method is encountered in 12384the first pass - so that subsequent references to the method will 12385able to obtain the required parameter count and thus properly 12386parse the method invocation. This problem presented itself as an 12387AE_AML_INTERNAL during the pass 1 parse phase during table load. 12388 12389Fixed a problem where the internal String object copy routine did 12390not always allocate sufficient memory for the target String object 12391and caused memory corruption. This problem was seen to cause 12392"Allocation already present in list!" errors as memory allocation 12393became corrupted. 12394 12395Implemented a new function for the evaluation of namespace objects 12396that allows the specification of the allowable return object 12397types. This simplifies a lot of code that checks for a return 12398object of one or more specific objects returned from the 12399evaluation (such as _STA, etc.) This may become and external 12400function if it would be useful to ACPI-related drivers. 12401 12402Completed another round of prefixing #defines with "ACPI_" for 12403clarity. 12404 12405Completed additional code restructuring to allow more modular 12406linking for iASL compiler and AcpiExec. Several files were split 12407creating new files. New files: nsparse.c dsinit.c evgpe.c 12408 12409Implemented an abort mechanism to terminate an executing control 12410method via the AML debugger. This feature is useful for debugging 12411control methods that depend (wait) for specific hardware 12412responses. 12413 12414Code and Data Size: Current core subsystem library sizes are shown 12415below. These are the code and data sizes for the acpica.lib 12416produced by the Microsoft Visual C++ 6.0 compiler, and these 12417values do not include any ACPI driver or OSPM code. The debug 12418version of the code includes the debug output trace mechanism and 12419has a much larger code and data size. Note that these values will 12420vary depending on the efficiency of the compiler and the compiler 12421options used during generation. 12422 12423 Previous Release 12424 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12425 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12426 Current Release: 12427 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12428 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12429 12430 124312) iASL Compiler/Disassembler 12432 12433Fixed a compiler code generation problem for "Interrupt" Resource 12434Descriptors. If specified in the ASL, the optional "Resource 12435Source Index" and "Resource Source" fields were not inserted into 12436the correct location within the AML resource descriptor, creating 12437an invalid descriptor. 12438 12439Fixed a disassembler problem for "Interrupt" resource descriptors. 12440The optional "Resource Source Index" and "Resource Source" fields 12441were ignored. 12442 12443 12444---------------------------------------- 1244522 November 2002. Summary of changes for version 20021122. 12446 12447 124481) ACPI CA Core Subsystem: 12449 12450Fixed a reported problem where an object stored to a Method Local 12451or Arg was not copied to a new object during the store - the 12452object pointer was simply copied to the Local/Arg. This caused 12453all subsequent operations on the Local/Arg to also affect the 12454original source of the store operation. 12455 12456Fixed a problem where a store operation to a Method Local or Arg 12457was not completed properly if the Local/Arg contained a reference 12458(from RefOf) to a named field. The general-purpose store-to- 12459namespace-node code is now used so that this case is handled 12460automatically. 12461 12462Fixed a problem where the internal object copy routine would cause 12463a protection fault if the object being copied was a Package and 12464contained either 1) a NULL package element or 2) a nested sub- 12465package. 12466 12467Fixed a problem with the GPE initialization that resulted from an 12468ambiguity in the ACPI specification. One section of the 12469specification states that both the address and length of the GPE 12470block must be zero if the block is not supported. Another section 12471implies that only the address need be zero if the block is not 12472supported. The code has been changed so that both the address and 12473the length must be non-zero to indicate a valid GPE block (i.e., 12474if either the address or the length is zero, the GPE block is 12475invalid.) 12476 12477Code and Data Size: Current core subsystem library sizes are shown 12478below. These are the code and data sizes for the acpica.lib 12479produced by the Microsoft Visual C++ 6.0 compiler, and these 12480values do not include any ACPI driver or OSPM code. The debug 12481version of the code includes the debug output trace mechanism and 12482has a much larger code and data size. Note that these values will 12483vary depending on the efficiency of the compiler and the compiler 12484options used during generation. 12485 12486 Previous Release 12487 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12488 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12489 Current Release: 12490 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12491 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12492 12493 124942) Linux 12495 12496Cleaned up EC driver. Exported an external EC read/write 12497interface. By going through this, other drivers (most notably 12498sonypi) will be able to serialize access to the EC. 12499 12500 125013) iASL Compiler/Disassembler 12502 12503Implemented support to optionally generate include files for both 12504ASM and C (the -i switch). This simplifies BIOS development by 12505automatically creating include files that contain external 12506declarations for the symbols that are created within the 12507 12508(optionally generated) ASM and C AML source files. 12509 12510 12511---------------------------------------- 1251215 November 2002. Summary of changes for version 20021115. 12513 125141) ACPI CA Core Subsystem: 12515 12516Fixed a memory leak problem where an error during resolution of 12517 12518method arguments during a method invocation from another method 12519failed to cleanup properly by deleting all successfully resolved 12520argument objects. 12521 12522Fixed a problem where the target of the Index() operator was not 12523correctly constructed if the source object was a package. This 12524problem has not been detected because the use of a target operand 12525with Index() is very rare. 12526 12527Fixed a problem with the Index() operator where an attempt was 12528made to delete the operand objects twice. 12529 12530Fixed a problem where an attempt was made to delete an operand 12531twice during execution of the CondRefOf() operator if the target 12532did not exist. 12533 12534Implemented the first of perhaps several internal create object 12535functions that create and initialize a specific object type. This 12536consolidates duplicated code wherever the object is created, thus 12537shrinking the size of the subsystem. 12538 12539Implemented improved debug/error messages for errors that occur 12540during nested method invocations. All executing method pathnames 12541are displayed (with the error) as the call stack is unwound - thus 12542simplifying debug. 12543 12544Fixed a problem introduced in the 10/02 release that caused 12545premature deletion of a buffer object if a buffer was used as an 12546ASL operand where an integer operand is required (Thus causing an 12547implicit object conversion from Buffer to Integer.) The change in 12548the 10/02 release was attempting to fix a memory leak (albeit 12549incorrectly.) 12550 12551Code and Data Size: Current core subsystem library sizes are shown 12552below. These are the code and data sizes for the acpica.lib 12553produced by the Microsoft Visual C++ 6.0 compiler, and these 12554values do not include any ACPI driver or OSPM code. The debug 12555version of the code includes the debug output trace mechanism and 12556has a much larger code and data size. Note that these values will 12557vary depending on the efficiency of the compiler and the compiler 12558options used during generation. 12559 12560 Previous Release 12561 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12562 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12563 Current Release: 12564 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12565 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12566 12567 125682) Linux 12569 12570Changed the implementation of the ACPI semaphores to use down() 12571instead of down_interruptable(). It is important that the 12572execution of ACPI control methods not be interrupted by signals. 12573Methods must run to completion, or the system may be left in an 12574unknown/unstable state. 12575 12576Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 12577(Shawn Starr) 12578 12579 125803) iASL Compiler/Disassembler 12581 12582 12583Changed the default location of output files. All output files 12584are now placed in the current directory by default instead of in 12585the directory of the source file. This change may affect some 12586existing makefiles, but it brings the behavior of the compiler in 12587line with other similar tools. The location of the output files 12588can be overridden with the -p command line switch. 12589 12590 12591---------------------------------------- 1259211 November 2002. Summary of changes for version 20021111. 12593 12594 125950) ACPI Specification 2.0B is released and is now available at: 12596http://www.acpi.info/index.html 12597 12598 125991) ACPI CA Core Subsystem: 12600 12601Implemented support for the ACPI 2.0 SMBus Operation Regions. 12602This includes the early detection and handoff of the request to 12603the SMBus region handler (avoiding all of the complex field 12604support code), and support for the bidirectional return packet 12605from an SMBus write operation. This paves the way for the 12606development of SMBus drivers in each host operating system. 12607 12608Fixed a problem where the semaphore WAIT_FOREVER constant was 12609defined as 32 bits, but must be 16 bits according to the ACPI 12610specification. This had the side effect of causing ASL 12611Mutex/Event timeouts even though the ASL code requested a wait 12612forever. Changed all internal references to the ACPI timeout 12613parameter to 16 bits to prevent future problems. Changed the name 12614of WAIT_FOREVER to ACPI_WAIT_FOREVER. 12615 12616Code and Data Size: Current core subsystem library sizes are shown 12617below. These are the code and data sizes for the acpica.lib 12618produced by the Microsoft Visual C++ 6.0 compiler, and these 12619values do not include any ACPI driver or OSPM code. The debug 12620version of the code includes the debug output trace mechanism and 12621has a much larger code and data size. Note that these values will 12622vary depending on the efficiency of the compiler and the compiler 12623options used during generation. 12624 12625 Previous Release 12626 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12627 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12628 Current Release: 12629 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12630 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12631 12632 126332) Linux 12634 12635Module loading/unloading fixes (John Cagle) 12636 12637 126383) iASL Compiler/Disassembler 12639 12640Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 12641 12642Implemented support for the disassembly of all SMBus protocol 12643keywords (SMBQuick, SMBWord, etc.) 12644 12645---------------------------------------- 1264601 November 2002. Summary of changes for version 20021101. 12647 12648 126491) ACPI CA Core Subsystem: 12650 12651Fixed a problem where platforms that have a GPE1 block but no GPE0 12652block were not handled correctly. This resulted in a "GPE 12653overlap" error message. GPE0 is no longer required. 12654 12655Removed code added in the previous release that inserted nodes 12656into the namespace in alphabetical order. This caused some side- 12657effects on various machines. The root cause of the problem is 12658still under investigation since in theory, the internal ordering 12659of the namespace nodes should not matter. 12660 12661 12662Enhanced error reporting for the case where a named object is not 12663found during control method execution. The full ACPI namepath 12664(name reference) of the object that was not found is displayed in 12665this case. 12666 12667Note: as a result of the overhaul of the namespace object types in 12668the previous release, the namespace nodes for the predefined 12669scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 12670instead of ACPI_TYPE_ANY. This simplifies the namespace 12671management code but may affect code that walks the namespace tree 12672looking for specific object types. 12673 12674Code and Data Size: Current core subsystem library sizes are shown 12675below. These are the code and data sizes for the acpica.lib 12676produced by the Microsoft Visual C++ 6.0 compiler, and these 12677values do not include any ACPI driver or OSPM code. The debug 12678version of the code includes the debug output trace mechanism and 12679has a much larger code and data size. Note that these values will 12680vary depending on the efficiency of the compiler and the compiler 12681options used during generation. 12682 12683 Previous Release 12684 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12685 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12686 Current Release: 12687 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12688 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12689 12690 126912) Linux 12692 12693Fixed a problem introduced in the previous release where the 12694Processor and Thermal objects were not recognized and installed in 12695/proc. This was related to the scope type change described above. 12696 12697 126983) iASL Compiler/Disassembler 12699 12700Implemented the -g option to get all of the required ACPI tables 12701from the registry and save them to files (Windows version of the 12702compiler only.) The required tables are the FADT, FACS, and DSDT. 12703 12704Added ACPI table checksum validation during table disassembly in 12705order to catch corrupted tables. 12706 12707 12708---------------------------------------- 1270922 October 2002. Summary of changes for version 20021022. 12710 127111) ACPI CA Core Subsystem: 12712 12713Implemented a restriction on the Scope operator that the target 12714must already exist in the namespace at the time the operator is 12715encountered (during table load or method execution). In other 12716words, forward references are not allowed and Scope() cannot 12717create a new object. This changes the previous behavior where the 12718interpreter would create the name if not found. This new behavior 12719correctly enables the search-to-root algorithm during namespace 12720lookup of the target name. Because of this upsearch, this fixes 12721the known Compaq _SB_.OKEC problem and makes both the AML 12722interpreter and iASL compiler compatible with other ACPI 12723implementations. 12724 12725Completed a major overhaul of the internal ACPI object types for 12726the ACPI Namespace and the associated operand objects. Many of 12727these types had become obsolete with the introduction of the two- 12728pass namespace load. This cleanup simplifies the code and makes 12729the entire namespace load mechanism much clearer and easier to 12730understand. 12731 12732Improved debug output for tracking scope opening/closing to help 12733diagnose scoping issues. The old scope name as well as the new 12734scope name are displayed. Also improved error messages for 12735problems with ASL Mutex objects and error messages for GPE 12736problems. 12737 12738Cleaned up the namespace dump code, removed obsolete code. 12739 12740All string output (for all namespace/object dumps) now uses the 12741common ACPI string output procedure which handles escapes properly 12742and does not emit non-printable characters. 12743 12744Fixed some issues with constants in the 64-bit version of the 12745local C library (utclib.c) 12746 12747 127482) Linux 12749 12750EC Driver: No longer attempts to acquire the Global Lock at 12751interrupt level. 12752 12753 127543) iASL Compiler/Disassembler 12755 12756Implemented ACPI 2.0B grammar change that disallows all Type 1 and 127572 opcodes outside of a control method. This means that the 12758"executable" operators (versus the "namespace" operators) cannot 12759be used at the table level; they can only be used within a control 12760method. 12761 12762Implemented the restriction on the Scope() operator where the 12763target must already exist in the namespace at the time the 12764operator is encountered (during ASL compilation). In other words, 12765forward references are not allowed and Scope() cannot create a new 12766object. This makes the iASL compiler compatible with other ACPI 12767implementations and makes the Scope() implementation adhere to the 12768ACPI specification. 12769 12770Fixed a problem where namepath optimization for the Alias operator 12771was optimizing the wrong path (of the two namepaths.) This caused 12772a "Missing alias link" error message. 12773 12774Fixed a problem where an "unknown reserved name" warning could be 12775incorrectly generated for names like "_SB" when the trailing 12776underscore is not used in the original ASL. 12777 12778Fixed a problem where the reserved name check did not handle 12779NamePaths with multiple NameSegs correctly. The first nameseg of 12780the NamePath was examined instead of the last NameSeg. 12781 12782 12783---------------------------------------- 12784 1278502 October 2002. Summary of changes for this release. 12786 12787 127881) ACPI CA Core Subsystem version 20021002: 12789 12790Fixed a problem where a store/copy of a string to an existing 12791string did not always set the string length properly in the String 12792object. 12793 12794Fixed a reported problem with the ToString operator where the 12795behavior was identical to the ToHexString operator instead of just 12796simply converting a raw buffer to a string data type. 12797 12798Fixed a problem where CopyObject and the other "explicit" 12799conversion operators were not updating the internal namespace node 12800type as part of the store operation. 12801 12802Fixed a memory leak during implicit source operand conversion 12803where the original object was not deleted if it was converted to a 12804new object of a different type. 12805 12806Enhanced error messages for all problems associated with namespace 12807lookups. Common procedure generates and prints the lookup name as 12808well as the formatted status. 12809 12810Completed implementation of a new design for the Alias support 12811within the namespace. The existing design did not handle the case 12812where a new object was assigned to one of the two names due to the 12813use of an explicit conversion operator, resulting in the two names 12814pointing to two different objects. The new design simply points 12815the Alias name to the original name node - not to the object. 12816This results in a level of indirection that must be handled in the 12817name resolution mechanism. 12818 12819Code and Data Size: Current core subsystem library sizes are shown 12820below. These are the code and data sizes for the acpica.lib 12821produced by the Microsoft Visual C++ 6.0 compiler, and these 12822values do not include any ACPI driver or OSPM code. The debug 12823version of the code includes the debug output trace mechanism and 12824has a larger code and data size. Note that these values will vary 12825depending on the efficiency of the compiler and the compiler 12826options used during generation. 12827 12828 Previous Release 12829 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12830 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12831 Current Release: 12832 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12833 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12834 12835 128362) Linux 12837 12838Initialize thermal driver's timer before it is used. (Knut 12839Neumann) 12840 12841Allow handling negative celsius values. (Kochi Takayoshi) 12842 12843Fix thermal management and make trip points. R/W (Pavel Machek) 12844 12845Fix /proc/acpi/sleep. (P. Christeas) 12846 12847IA64 fixes. (David Mosberger) 12848 12849Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 12850 12851Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 12852Brodowski) 12853 12854 128553) iASL Compiler/Disassembler 12856 12857Clarified some warning/error messages. 12858 12859 12860---------------------------------------- 1286118 September 2002. Summary of changes for this release. 12862 12863 128641) ACPI CA Core Subsystem version 20020918: 12865 12866Fixed a reported problem with reference chaining (via the Index() 12867and RefOf() operators) in the ObjectType() and SizeOf() operators. 12868The definition of these operators includes the dereferencing of 12869all chained references to return information on the base object. 12870 12871Fixed a problem with stores to indexed package elements - the 12872existing code would not complete the store if an "implicit 12873conversion" was not performed. In other words, if the existing 12874object (package element) was to be replaced completely, the code 12875didn't handle this case. 12876 12877Relaxed typechecking on the ASL "Scope" operator to allow the 12878target name to refer to an object of type Integer, String, or 12879Buffer, in addition to the scoping object types (Device, 12880predefined Scopes, Processor, PowerResource, and ThermalZone.) 12881This allows existing AML code that has workarounds for a bug in 12882Windows to function properly. A warning is issued, however. This 12883affects both the AML interpreter and the iASL compiler. Below is 12884an example of this type of ASL code: 12885 12886 Name(DEB,0x00) 12887 Scope(DEB) 12888 { 12889 12890Fixed some reported problems with 64-bit integer support in the 12891local implementation of C library functions (clib.c) 12892 12893 128942) Linux 12895 12896Use ACPI fix map region instead of IOAPIC region, since it is 12897undefined in non-SMP. 12898 12899Ensure that the SCI has the proper polarity and trigger, even on 12900systems that do not have an interrupt override entry in the MADT. 12901 129022.5 big driver reorganization (Pat Mochel) 12903 12904Use early table mapping code from acpitable.c (Andi Kleen) 12905 12906New blacklist entries (Andi Kleen) 12907 12908Blacklist improvements. Split blacklist code out into a separate 12909file. Move checking the blacklist to very early. Previously, we 12910would use ACPI tables, and then halfway through init, check the 12911blacklist -- too late. Now, it's early enough to completely fall- 12912back to non-ACPI. 12913 12914 129153) iASL Compiler/Disassembler version 20020918: 12916 12917Fixed a problem where the typechecking code didn't know that an 12918alias could point to a method. In other words, aliases were not 12919being dereferenced during typechecking. 12920 12921 12922---------------------------------------- 1292329 August 2002. Summary of changes for this release. 12924 129251) ACPI CA Core Subsystem Version 20020829: 12926 12927If the target of a Scope() operator already exists, it must be an 12928object type that actually opens a scope -- such as a Device, 12929Method, Scope, etc. This is a fatal runtime error. Similar error 12930check has been added to the iASL compiler also. 12931 12932Tightened up the namespace load to disallow multiple names in the 12933same scope. This previously was allowed if both objects were of 12934the same type. (i.e., a lookup was the same as entering a new 12935name). 12936 12937 129382) Linux 12939 12940Ensure that the ACPI interrupt has the proper trigger and 12941polarity. 12942 12943local_irq_disable is extraneous. (Matthew Wilcox) 12944 12945Make "acpi=off" actually do what it says, and not use the ACPI 12946interpreter *or* the tables. 12947 12948Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 12949Takayoshi) 12950 12951 129523) iASL Compiler/Disassembler Version 20020829: 12953 12954Implemented namepath optimization for name declarations. For 12955example, a declaration like "Method (\_SB_.ABCD)" would get 12956optimized to "Method (ABCD)" if the declaration is within the 12957\_SB_ scope. This optimization is in addition to the named 12958reference path optimization first released in the previous 12959version. This would seem to complete all possible optimizations 12960for namepaths within the ASL/AML. 12961 12962If the target of a Scope() operator already exists, it must be an 12963object type that actually opens a scope -- such as a Device, 12964Method, Scope, etc. 12965 12966Implemented a check and warning for unreachable code in the same 12967block below a Return() statement. 12968 12969Fixed a problem where the listing file was not generated if the 12970compiler aborted if the maximum error count was exceeded (200). 12971 12972Fixed a problem where the typechecking of method return values was 12973broken. This includes the check for a return value when the 12974method is invoked as a TermArg (a return value is expected.) 12975 12976Fixed a reported problem where EOF conditions during a quoted 12977string or comment caused a fault. 12978 12979 12980---------------------------------------- 1298115 August 2002. Summary of changes for this release. 12982 129831) ACPI CA Core Subsystem Version 20020815: 12984 12985Fixed a reported problem where a Store to a method argument that 12986contains a reference did not perform the indirect store correctly. 12987This problem was created during the conversion to the new 12988reference object model - the indirect store to a method argument 12989code was not updated to reflect the new model. 12990 12991Reworked the ACPI mode change code to better conform to ACPI 2.0, 12992handle corner cases, and improve code legibility (Kochi Takayoshi) 12993 12994Fixed a problem with the pathname parsing for the carat (^) 12995prefix. The heavy use of the carat operator by the new namepath 12996optimization in the iASL compiler uncovered a problem with the AML 12997interpreter handling of this prefix. In the case where one or 12998more carats precede a single nameseg, the nameseg was treated as 12999standalone and the search rule (to root) was inadvertently 13000applied. This could cause both the iASL compiler and the 13001interpreter to find the wrong object or to miss the error that 13002should occur if the object does not exist at that exact pathname. 13003 13004Found and fixed the problem where the HP Pavilion DSDT would not 13005load. This was a relatively minor tweak to the table loading code 13006(a problem caused by the unexpected encounter with a method 13007invocation not within a control method), but it does not solve the 13008overall issue of the execution of AML code at the table level. 13009This investigation is still ongoing. 13010 13011Code and Data Size: Current core subsystem library sizes are shown 13012below. These are the code and data sizes for the acpica.lib 13013produced by the Microsoft Visual C++ 6.0 compiler, and these 13014values do not include any ACPI driver or OSPM code. The debug 13015version of the code includes the debug output trace mechanism and 13016has a larger code and data size. Note that these values will vary 13017depending on the efficiency of the compiler and the compiler 13018options used during generation. 13019 13020 Previous Release 13021 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13022 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13023 Current Release: 13024 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13025 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13026 13027 130282) Linux 13029 13030Remove redundant slab.h include (Brad Hards) 13031 13032Fix several bugs in thermal.c (Herbert Nachtnebel) 13033 13034Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 13035 13036Change acpi_system_suspend to use updated irq functions (Pavel 13037Machek) 13038 13039Export acpi_get_firmware_table (Matthew Wilcox) 13040 13041Use proper root proc entry for ACPI (Kochi Takayoshi) 13042 13043Fix early-boot table parsing (Bjorn Helgaas) 13044 13045 130463) iASL Compiler/Disassembler 13047 13048Reworked the compiler options to make them more consistent and to 13049use two-letter options where appropriate. We were running out of 13050sensible letters. This may break some makefiles, so check the 13051current options list by invoking the compiler with no parameters. 13052 13053Completed the design and implementation of the ASL namepath 13054optimization option for the compiler. This option optimizes all 13055references to named objects to the shortest possible path. The 13056first attempt tries to utilize a single nameseg (4 characters) and 13057the "search-to-root" algorithm used by the interpreter. If that 13058cannot be used (because either the name is not in the search path 13059or there is a conflict with another object with the same name), 13060the pathname is optimized using the carat prefix (usually a 13061shorter string than specifying the entire path from the root.) 13062 13063Implemented support to obtain the DSDT from the Windows registry 13064(when the disassembly option is specified with no input file). 13065Added this code as the implementation for AcpiOsTableOverride in 13066the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 13067utility) to scan memory for the DSDT to the AcpiOsTableOverride 13068function in the DOS OSL to make the disassembler truly OS 13069independent. 13070 13071Implemented a new option to disassemble and compile in one step. 13072When used without an input filename, this option will grab the 13073DSDT from the local machine, disassemble it, and compile it in one 13074step. 13075 13076Added a warning message for invalid escapes (a backslash followed 13077by any character other than the allowable escapes). This catches 13078the quoted string error "\_SB_" (which should be "\\_SB_" ). 13079 13080Also, there are numerous instances in the ACPI specification where 13081this error occurs. 13082 13083Added a compiler option to disable all optimizations. This is 13084basically the "compatibility mode" because by using this option, 13085the AML code will come out exactly the same as other ASL 13086compilers. 13087 13088Added error messages for incorrectly ordered dependent resource 13089functions. This includes: missing EndDependentFn macro at end of 13090dependent resource list, nested dependent function macros (both 13091start and end), and missing StartDependentFn macro. These are 13092common errors that should be caught at compile time. 13093 13094Implemented _OSI support for the disassembler and compiler. _OSI 13095must be included in the namespace for proper disassembly (because 13096the disassembler must know the number of arguments.) 13097 13098Added an "optimization" message type that is optional (off by 13099default). This message is used for all optimizations - including 13100constant folding, integer optimization, and namepath optimization. 13101 13102---------------------------------------- 1310325 July 2002. Summary of changes for this release. 13104 13105 131061) ACPI CA Core Subsystem Version 20020725: 13107 13108The AML Disassembler has been enhanced to produce compilable ASL 13109code and has been integrated into the iASL compiler (see below) as 13110well as the single-step disassembly for the AML debugger and the 13111disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 13112resource templates and macros are fully supported. The 13113disassembler has been tested on over 30 different AML files, 13114producing identical AML when the resulting disassembled ASL file 13115is recompiled with the same ASL compiler. 13116 13117Modified the Resource Manager to allow zero interrupts and zero 13118dma channels during the GetCurrentResources call. This was 13119causing problems on some platforms. 13120 13121Added the AcpiOsRedirectOutput interface to the OSL to simplify 13122output redirection for the AcpiOsPrintf and AcpiOsVprintf 13123interfaces. 13124 13125Code and Data Size: Current core subsystem library sizes are shown 13126below. These are the code and data sizes for the acpica.lib 13127produced by the Microsoft Visual C++ 6.0 compiler, and these 13128values do not include any ACPI driver or OSPM code. The debug 13129version of the code includes the debug output trace mechanism and 13130has a larger code and data size. Note that these values will vary 13131depending on the efficiency of the compiler and the compiler 13132options used during generation. 13133 13134 Previous Release 13135 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13136 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13137 Current Release: 13138 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13139 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13140 13141 131422) Linux 13143 13144Fixed a panic in the EC driver (Dominik Brodowski) 13145 13146Implemented checksum of the R/XSDT itself during Linux table scan 13147(Richard Schaal) 13148 13149 131503) iASL compiler 13151 13152The AML disassembler is integrated into the compiler. The "-d" 13153option invokes the disassembler to completely disassemble an 13154input AML file, producing as output a text ASL file with the 13155extension ".dsl" (to avoid name collisions with existing .asl 13156source files.) A future enhancement will allow the disassembler 13157to obtain the BIOS DSDT from the registry under Windows. 13158 13159Fixed a problem with the VendorShort and VendorLong resource 13160descriptors where an invalid AML sequence was created. 13161 13162Implemented a fix for BufferData term in the ASL parser. It was 13163inadvertently defined twice, allowing invalid syntax to pass and 13164causing reduction conflicts. 13165 13166Fixed a problem where the Ones opcode could get converted to a 13167value of zero if "Ones" was used where a byte, word or dword value 13168was expected. The 64-bit value is now truncated to the correct 13169size with the correct value. 13170 13171 13172 13173---------------------------------------- 1317402 July 2002. Summary of changes for this release. 13175 13176 131771) ACPI CA Core Subsystem Version 20020702: 13178 13179The Table Manager code has been restructured to add several new 13180features. Tables that are not required by the core subsystem 13181(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 13182validated in any way and are returned from AcpiGetFirmwareTable if 13183requested. The AcpiOsTableOverride interface is now called for 13184each table that is loaded by the subsystem in order to allow the 13185host to override any table it chooses. Previously, only the DSDT 13186could be overridden. Added one new files, tbrsdt.c and 13187tbgetall.c. 13188 13189Fixed a problem with the conversion of internal package objects to 13190external objects (when a package is returned from a control 13191method.) The return buffer length was set to zero instead of the 13192proper length of the package object. 13193 13194Fixed a reported problem with the use of the RefOf and DeRefOf 13195operators when passing reference arguments to control methods. A 13196new type of Reference object is used internally for references 13197produced by the RefOf operator. 13198 13199Added additional error messages in the Resource Manager to explain 13200AE_BAD_DATA errors when they occur during resource parsing. 13201 13202Split the AcpiEnableSubsystem into two primitives to enable a 13203finer granularity initialization sequence. These two calls should 13204be called in this order: AcpiEnableSubsystem (flags), 13205AcpiInitializeObjects (flags). The flags parameter remains the 13206same. 13207 13208 132092) Linux 13210 13211Updated the ACPI utilities module to understand the new style of 13212fully resolved package objects that are now returned from the core 13213subsystem. This eliminates errors of the form: 13214 13215 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 13216 acpi_utils-0430 [145] acpi_evaluate_reference: 13217 Invalid element in package (not a device reference) 13218 13219The method evaluation utility uses the new buffer allocation 13220scheme instead of calling AcpiEvaluate Object twice. 13221 13222Added support for ECDT. This allows the use of the Embedded 13223 13224Controller before the namespace has been fully initialized, which 13225is necessary for ACPI 2.0 support, and for some laptops to 13226initialize properly. (Laptops using ECDT are still rare, so only 13227limited testing was performed of the added functionality.) 13228 13229Fixed memory leaks in the EC driver. 13230 13231Eliminated a brittle code structure in acpi_bus_init(). 13232 13233Eliminated the acpi_evaluate() helper function in utils.c. It is 13234no longer needed since acpi_evaluate_object can optionally 13235allocate memory for the return object. 13236 13237Implemented fix for keyboard hang when getting battery readings on 13238some systems (Stephen White) 13239 13240PCI IRQ routing update (Dominik Brodowski) 13241 13242Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 13243support 13244 13245---------------------------------------- 1324611 June 2002. Summary of changes for this release. 13247 13248 132491) ACPI CA Core Subsystem Version 20020611: 13250 13251Fixed a reported problem where constants such as Zero and One 13252appearing within _PRT packages were not handled correctly within 13253the resource manager code. Originally reported against the ASL 13254compiler because the code generator now optimizes integers to 13255their minimal AML representation (i.e. AML constants if possible.) 13256The _PRT code now handles all AML constant opcodes correctly 13257(Zero, One, Ones, Revision). 13258 13259Fixed a problem with the Concatenate operator in the AML 13260interpreter where a buffer result object was incorrectly marked as 13261not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 13262 13263All package sub-objects are now fully resolved before they are 13264returned from the external ACPI interfaces. This means that name 13265strings are resolved to object handles, and constant operators 13266(Zero, One, Ones, Revision) are resolved to Integers. 13267 13268Implemented immediate resolution of the AML Constant opcodes 13269(Zero, One, Ones, Revision) to Integer objects upon detection 13270within the AML stream. This has simplified and reduced the 13271generated code size of the subsystem by eliminating about 10 13272switch statements for these constants (which previously were 13273contained in Reference objects.) The complicating issues are that 13274the Zero opcode is used as a "placeholder" for unspecified 13275optional target operands and stores to constants are defined to be 13276no-ops. 13277 13278Code and Data Size: Current core subsystem library sizes are shown 13279below. These are the code and data sizes for the acpica.lib 13280produced by the Microsoft Visual C++ 6.0 compiler, and these 13281values do not include any ACPI driver or OSPM code. The debug 13282version of the code includes the debug output trace mechanism and 13283has a larger code and data size. Note that these values will vary 13284depending on the efficiency of the compiler and the compiler 13285options used during generation. 13286 13287 Previous Release 13288 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13289 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13290 Current Release: 13291 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13292 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13293 13294 132952) Linux 13296 13297 13298Added preliminary support for obtaining _TRA data for PCI root 13299bridges (Bjorn Helgaas). 13300 13301 133023) iASL Compiler Version X2046: 13303 13304Fixed a problem where the "_DDN" reserved name was defined to be a 13305control method with one argument. There are no arguments, and 13306_DDN does not have to be a control method. 13307 13308Fixed a problem with the Linux version of the compiler where the 13309source lines printed with error messages were the wrong lines. 13310This turned out to be the "LF versus CR/LF" difference between 13311Windows and Unix. This appears to be the longstanding issue 13312concerning listing output and error messages. 13313 13314Fixed a problem with the Linux version of compiler where opcode 13315names within error messages were wrong. This was caused by a 13316slight difference in the output of the Flex tool on Linux versus 13317Windows. 13318 13319Fixed a problem with the Linux compiler where the hex output files 13320contained some garbage data caused by an internal buffer overrun. 13321 13322 13323---------------------------------------- 1332417 May 2002. Summary of changes for this release. 13325 13326 133271) ACPI CA Core Subsystem Version 20020517: 13328 13329Implemented a workaround to an BIOS bug discovered on the HP 13330OmniBook where the FADT revision number and the table size are 13331inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 13332behavior is to fallback to using only the ACPI 1.0 fields of the 13333FADT if the table is too small to be a ACPI 2.0 table as claimed 13334by the revision number. Although this is a BIOS bug, this is a 13335case where the workaround is simple enough and with no side 13336effects, so it seemed prudent to add it. A warning message is 13337issued, however. 13338 13339Implemented minimum size checks for the fixed-length ACPI tables - 13340- the FADT and FACS, as well as consistency checks between the 13341revision number and the table size. 13342 13343Fixed a reported problem in the table override support where the 13344new table pointer was incorrectly treated as a physical address 13345instead of a logical address. 13346 13347Eliminated the use of the AE_AML_ERROR exception and replaced it 13348with more descriptive codes. 13349 13350Fixed a problem where an exception would occur if an ASL Field was 13351defined with no named Field Units underneath it (used by some 13352index fields). 13353 13354Code and Data Size: Current core subsystem library sizes are shown 13355below. These are the code and data sizes for the acpica.lib 13356produced by the Microsoft Visual C++ 6.0 compiler, and these 13357values do not include any ACPI driver or OSPM code. The debug 13358version of the code includes the debug output trace mechanism and 13359has a larger code and data size. Note that these values will vary 13360depending on the efficiency of the compiler and the compiler 13361options used during generation. 13362 13363 Previous Release 13364 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13365 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13366 Current Release: 13367 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13368 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13369 13370 13371 133722) Linux 13373 13374Much work done on ACPI init (MADT and PCI IRQ routing support). 13375(Paul D. and Dominik Brodowski) 13376 13377Fix PCI IRQ-related panic on boot (Sam Revitch) 13378 13379Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 13380 13381Fix "MHz" typo (Dominik Brodowski) 13382 13383Fix RTC year 2000 issue (Dominik Brodowski) 13384 13385Preclude multiple button proc entries (Eric Brunet) 13386 13387Moved arch-specific code out of include/platform/aclinux.h 13388 133893) iASL Compiler Version X2044: 13390 13391Implemented error checking for the string used in the EISAID macro 13392(Usually used in the definition of the _HID object.) The code now 13393strictly enforces the PnP format - exactly 7 characters, 3 13394uppercase letters and 4 hex digits. 13395 13396If a raw string is used in the definition of the _HID object 13397(instead of the EISAID macro), the string must contain all 13398alphanumeric characters (e.g., "*PNP0011" is not allowed because 13399of the asterisk.) 13400 13401Implemented checking for invalid use of ACPI reserved names for 13402most of the name creation operators (Name, Device, Event, Mutex, 13403OperationRegion, PowerResource, Processor, and ThermalZone.) 13404Previously, this check was only performed for control methods. 13405 13406Implemented an additional check on the Name operator to emit an 13407error if a reserved name that must be implemented in ASL as a 13408control method is used. We know that a reserved name must be a 13409method if it is defined with input arguments. 13410 13411The warning emitted when a namespace object reference is not found 13412during the cross reference phase has been changed into an error. 13413The "External" directive should be used for names defined in other 13414modules. 13415 13416 134174) Tools and Utilities 13418 13419The 16-bit tools (adump16 and aexec16) have been regenerated and 13420tested. 13421 13422Fixed a problem with the output of both acpidump and adump16 where 13423the indentation of closing parentheses and brackets was not 13424 13425aligned properly with the parent block. 13426 13427 13428---------------------------------------- 1342903 May 2002. Summary of changes for this release. 13430 13431 134321) ACPI CA Core Subsystem Version 20020503: 13433 13434Added support a new OSL interface that allows the host operating 13435 13436system software to override the DSDT found in the firmware - 13437AcpiOsTableOverride. With this interface, the OSL can examine the 13438version of the firmware DSDT and replace it with a different one 13439if desired. 13440 13441Added new external interfaces for accessing ACPI registers from 13442device drivers and other system software - AcpiGetRegister and 13443AcpiSetRegister. This was simply an externalization of the 13444existing AcpiHwBitRegister interfaces. 13445 13446Fixed a regression introduced in the previous build where the 13447ASL/AML CreateField operator always returned an error, 13448"destination must be a NS Node". 13449 13450Extended the maximum time (before failure) to successfully enable 13451ACPI mode to 3 seconds. 13452 13453Code and Data Size: Current core subsystem library sizes are shown 13454below. These are the code and data sizes for the acpica.lib 13455produced by the Microsoft Visual C++ 6.0 compiler, and these 13456values do not include any ACPI driver or OSPM code. The debug 13457version of the code includes the debug output trace mechanism and 13458has a larger code and data size. Note that these values will vary 13459depending on the efficiency of the compiler and the compiler 13460options used during generation. 13461 13462 Previous Release 13463 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13464 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13465 Current Release: 13466 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13467 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13468 13469 134702) Linux 13471 13472Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 13473free. While 3 out of 4 of our in-house systems work fine, the last 13474one still hangs when testing the LAPIC timer. 13475 13476Renamed many files in 2.5 kernel release to omit "acpi_" from the 13477name. 13478 13479Added warning on boot for Presario 711FR. 13480 13481Sleep improvements (Pavel Machek) 13482 13483ACPI can now be built without CONFIG_PCI enabled. 13484 13485IA64: Fixed memory map functions (JI Lee) 13486 13487 134883) iASL Compiler Version X2043: 13489 13490Added support to allow the compiler to be integrated into the MS 13491VC++ development environment for one-button compilation of single 13492files or entire projects -- with error-to-source-line mapping. 13493 13494Implemented support for compile-time constant folding for the 13495Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 13496specification. This allows the ASL writer to use expressions 13497instead of Integer/Buffer/String constants in terms that must 13498evaluate to constants at compile time and will also simplify the 13499emitted AML in any such sub-expressions that can be folded 13500(evaluated at compile-time.) This increases the size of the 13501compiler significantly because a portion of the ACPI CA AML 13502interpreter is included within the compiler in order to pre- 13503evaluate constant expressions. 13504 13505 13506Fixed a problem with the "Unicode" ASL macro that caused the 13507compiler to fault. (This macro is used in conjunction with the 13508_STR reserved name.) 13509 13510Implemented an AML opcode optimization to use the Zero, One, and 13511Ones opcodes where possible to further reduce the size of integer 13512constants and thus reduce the overall size of the generated AML 13513code. 13514 13515Implemented error checking for new reserved terms for ACPI version 135162.0A. 13517 13518Implemented the -qr option to display the current list of ACPI 13519reserved names known to the compiler. 13520 13521Implemented the -qc option to display the current list of ASL 13522operators that are allowed within constant expressions and can 13523therefore be folded at compile time if the operands are constants. 13524 13525 135264) Documentation 13527 13528Updated the Programmer's Reference for new interfaces, data types, 13529and memory allocation model options. 13530 13531Updated the iASL Compiler User Reference to apply new format and 13532add information about new features and options. 13533 13534---------------------------------------- 1353519 April 2002. Summary of changes for this release. 13536 135371) ACPI CA Core Subsystem Version 20020419: 13538 13539The source code base for the Core Subsystem has been completely 13540cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 13541versions. The Lint option files used are included in the 13542/acpi/generate/lint directory. 13543 13544Implemented enhanced status/error checking across the entire 13545Hardware manager subsystem. Any hardware errors (reported from 13546the OSL) are now bubbled up and will abort a running control 13547method. 13548 13549 13550Fixed a problem where the per-ACPI-table integer width (32 or 64) 13551was stored only with control method nodes, causing a fault when 13552non-control method code was executed during table loading. The 13553solution implemented uses a global variable to indicate table 13554width across the entire ACPI subsystem. Therefore, ACPI CA does 13555not support mixed integer widths across different ACPI tables 13556(DSDT, SSDT). 13557 13558Fixed a problem where NULL extended fields (X fields) in an ACPI 135592.0 ACPI FADT caused the table load to fail. Although the 13560existing ACPI specification is a bit fuzzy on this topic, the new 13561behavior is to fall back on a ACPI 1.0 field if the corresponding 13562ACPI 2.0 X field is zero (even though the table revision indicates 13563a full ACPI 2.0 table.) The ACPI specification will be updated to 13564clarify this issue. 13565 13566Fixed a problem with the SystemMemory operation region handler 13567where memory was always accessed byte-wise even if the AML- 13568specified access width was larger than a byte. This caused 13569problems on systems with memory-mapped I/O. Memory is now 13570accessed with the width specified. On systems that do not support 13571non-aligned transfers, a check is made to guarantee proper address 13572alignment before proceeding in order to avoid an AML-caused 13573alignment fault within the kernel. 13574 13575 13576Fixed a problem with the ExtendedIrq resource where only one byte 13577of the 4-byte Irq field was extracted. 13578 13579Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 13580function was out of date and required a rewrite. 13581 13582Code and Data Size: Current core subsystem library sizes are shown 13583below. These are the code and data sizes for the acpica.lib 13584produced by the Microsoft Visual C++ 6.0 compiler, and these 13585values do not include any ACPI driver or OSPM code. The debug 13586version of the code includes the debug output trace mechanism and 13587has a larger code and data size. Note that these values will vary 13588depending on the efficiency of the compiler and the compiler 13589options used during generation. 13590 13591 Previous Release 13592 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13593 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13594 Current Release: 13595 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13596 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13597 13598 135992) Linux 13600 13601PCI IRQ routing fixes (Dominik Brodowski) 13602 13603 136043) iASL Compiler Version X2042: 13605 13606Implemented an additional compile-time error check for a field 13607unit whose size + minimum access width would cause a run-time 13608access beyond the end-of-region. Previously, only the field size 13609itself was checked. 13610 13611The Core subsystem and iASL compiler now share a common parse 13612object in preparation for compile-time evaluation of the type 136133/4/5 ASL operators. 13614 13615 13616---------------------------------------- 13617Summary of changes for this release: 03_29_02 13618 136191) ACPI CA Core Subsystem Version 20020329: 13620 13621Implemented support for late evaluation of TermArg operands to 13622Buffer and Package objects. This allows complex expressions to be 13623used in the declarations of these object types. 13624 13625Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 136261.0, if the field was larger than 32 bits, it was returned as a 13627buffer - otherwise it was returned as an integer. In ACPI 2.0, 13628the field is returned as a buffer only if the field is larger than 1362964 bits. The TableRevision is now considered when making this 13630conversion to avoid incompatibility with existing ASL code. 13631 13632Implemented logical addressing for AcpiOsGetRootPointer. This 13633allows an RSDP with either a logical or physical address. With 13634this support, the host OS can now override all ACPI tables with 13635one logical RSDP. Includes implementation of "typed" pointer 13636support to allow a common data type for both physical and logical 13637pointers internally. This required a change to the 13638AcpiOsGetRootPointer interface. 13639 13640Implemented the use of ACPI 2.0 Generic Address Structures for all 13641GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 13642mapped I/O for these ACPI features. 13643 13644Initialization now ignores not only non-required tables (All 13645tables other than the FADT, FACS, DSDT, and SSDTs), but also does 13646not validate the table headers of unrecognized tables. 13647 13648Fixed a problem where a notify handler could only be 13649installed/removed on an object of type Device. All "notify" 13650 13651objects are now supported -- Devices, Processor, Power, and 13652Thermal. 13653 13654Removed most verbosity from the ACPI_DB_INFO debug level. Only 13655critical information is returned when this debug level is enabled. 13656 13657Code and Data Size: Current core subsystem library sizes are shown 13658below. These are the code and data sizes for the acpica.lib 13659produced by the Microsoft Visual C++ 6.0 compiler, and these 13660values do not include any ACPI driver or OSPM code. The debug 13661version of the code includes the debug output trace mechanism and 13662has a larger code and data size. Note that these values will vary 13663depending on the efficiency of the compiler and the compiler 13664options used during generation. 13665 13666 Previous Release 13667 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13668 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13669 Current Release: 13670 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13671 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13672 13673 136742) Linux: 13675 13676The processor driver (acpi_processor.c) now fully supports ACPI 136772.0-based processor performance control (e.g. Intel(R) 13678SpeedStep(TM) technology) Note that older laptops that only have 13679the Intel "applet" interface are not supported through this. The 13680'limit' and 'performance' interface (/proc) are fully functional. 13681[Note that basic policy for controlling performance state 13682transitions will be included in the next version of ospmd.] The 13683idle handler was modified to more aggressively use C2, and PIIX4 13684errata handling underwent a complete overhaul (big thanks to 13685Dominik Brodowski). 13686 13687Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 13688based devices in the ACPI namespace are now dynamically bound 13689(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 13690This allows, among other things, ACPI to resolve bus numbers for 13691subordinate PCI bridges. 13692 13693Enhanced PCI IRQ routing to get the proper bus number for _PRT 13694entries defined underneath PCI bridges. 13695 13696Added IBM 600E to bad bios list due to invalid _ADR value for 13697PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 13698 13699In the process of adding full MADT support (e.g. IOAPIC) for IA32 13700(acpi.c, mpparse.c) -- stay tuned. 13701 13702Added back visual differentiation between fixed-feature and 13703control-method buttons in dmesg. Buttons are also subtyped (e.g. 13704button/power/PWRF) to simplify button identification. 13705 13706We no longer use -Wno-unused when compiling debug. Please ignore 13707any "_THIS_MODULE defined but not used" messages. 13708 13709Can now shut down the system using "magic sysrq" key. 13710 13711 137123) iASL Compiler version 2041: 13713 13714Fixed a problem where conversion errors for hex/octal/decimal 13715constants were not reported. 13716 13717Implemented a fix for the General Register template Address field. 13718This field was 8 bits when it should be 64. 13719 13720Fixed a problem where errors/warnings were no longer being emitted 13721within the listing output file. 13722 13723Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 13724exactly 4 characters, alphanumeric only. 13725 13726 13727 13728 13729---------------------------------------- 13730Summary of changes for this release: 03_08_02 13731 13732 137331) ACPI CA Core Subsystem Version 20020308: 13734 13735Fixed a problem with AML Fields where the use of the "AccessAny" 13736keyword could cause an interpreter error due to attempting to read 13737or write beyond the end of the parent Operation Region. 13738 13739Fixed a problem in the SystemMemory Operation Region handler where 13740an attempt was made to map memory beyond the end of the region. 13741This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 13742errors on some Linux systems. 13743 13744Fixed a problem where the interpreter/namespace "search to root" 13745algorithm was not functioning for some object types. Relaxed the 13746internal restriction on the search to allow upsearches for all 13747external object types as well as most internal types. 13748 13749 137502) Linux: 13751 13752We now use safe_halt() macro versus individual calls to sti | hlt. 13753 13754Writing to the processor limit interface should now work. "echo 1" 13755will increase the limit, 2 will decrease, and 0 will reset to the 13756 13757default. 13758 13759 137603) ASL compiler: 13761 13762Fixed segfault on Linux version. 13763 13764 13765---------------------------------------- 13766Summary of changes for this release: 02_25_02 13767 137681) ACPI CA Core Subsystem: 13769 13770 13771Fixed a problem where the GPE bit masks were not initialized 13772properly, causing erratic GPE behavior. 13773 13774Implemented limited support for multiple calling conventions. The 13775code can be generated with either the VPL (variable parameter 13776list, or "C") convention, or the FPL (fixed parameter list, or 13777"Pascal") convention. The core subsystem is about 3.4% smaller 13778when generated with FPL. 13779 13780 137812) Linux 13782 13783Re-add some /proc/acpi/event functionality that was lost during 13784the rewrite 13785 13786Resolved issue with /proc events for fixed-feature buttons showing 13787up as the system device. 13788 13789Fixed checks on C2/C3 latencies to be inclusive of maximum values. 13790 13791Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 13792 13793Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 13794 13795Fixed limit interface & usage to fix bugs with passive cooling 13796hysterisis. 13797 13798Restructured PRT support. 13799 13800 13801---------------------------------------- 13802Summary of changes for this label: 02_14_02 13803 13804 138051) ACPI CA Core Subsystem: 13806 13807Implemented support in AcpiLoadTable to allow loading of FACS and 13808FADT tables. 13809 13810Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 13811been removed. All 64-bit platforms should be migrated to the ACPI 138122.0 tables. The actbl71.h header has been removed from the source 13813tree. 13814 13815All C macros defined within the subsystem have been prefixed with 13816"ACPI_" to avoid collision with other system include files. 13817 13818Removed the return value for the two AcpiOsPrint interfaces, since 13819it is never used and causes lint warnings for ignoring the return 13820value. 13821 13822Added error checking to all internal mutex acquire and release 13823calls. Although a failure from one of these interfaces is 13824probably a fatal system error, these checks will cause the 13825immediate abort of the currently executing method or interface. 13826 13827Fixed a problem where the AcpiSetCurrentResources interface could 13828fault. This was a side effect of the deployment of the new memory 13829allocation model. 13830 13831Fixed a couple of problems with the Global Lock support introduced 13832in the last major build. The "common" (1.0/2.0) internal FACS was 13833being overwritten with the FACS signature and clobbering the 13834Global Lock pointer. Also, the actual firmware FACS was being 13835unmapped after construction of the "common" FACS, preventing 13836access to the actual Global Lock field within it. The "common" 13837internal FACS is no longer installed as an actual ACPI table; it 13838is used simply as a global. 13839 13840Code and Data Size: Current core subsystem library sizes are shown 13841below. These are the code and data sizes for the acpica.lib 13842produced by the Microsoft Visual C++ 6.0 compiler, and these 13843values do not include any ACPI driver or OSPM code. The debug 13844version of the code includes the debug output trace mechanism and 13845has a larger code and data size. Note that these values will vary 13846depending on the efficiency of the compiler and the compiler 13847options used during generation. 13848 13849 Previous Release (02_07_01) 13850 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13851 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13852 Current Release: 13853 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13854 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13855 13856 138572) Linux 13858 13859Updated Linux-specific code for core macro and OSL interface 13860changes described above. 13861 13862Improved /proc/acpi/event. It now can be opened only once and has 13863proper poll functionality. 13864 13865Fixed and restructured power management (acpi_bus). 13866 13867Only create /proc "view by type" when devices of that class exist. 13868 13869Fixed "charging/discharging" bug (and others) in acpi_battery. 13870 13871Improved thermal zone code. 13872 13873 138743) ASL Compiler, version X2039: 13875 13876 13877Implemented the new compiler restriction on ASL String hex/octal 13878escapes to non-null, ASCII values. An error results if an invalid 13879value is used. (This will require an ACPI 2.0 specification 13880change.) 13881 13882AML object labels that are output to the optional C and ASM source 13883are now prefixed with both the ACPI table signature and table ID 13884to help guarantee uniqueness within a large BIOS project. 13885 13886 13887---------------------------------------- 13888Summary of changes for this label: 02_01_02 13889 138901) ACPI CA Core Subsystem: 13891 13892ACPI 2.0 support is complete in the entire Core Subsystem and the 13893ASL compiler. All new ACPI 2.0 operators are implemented and all 13894other changes for ACPI 2.0 support are complete. With 13895simultaneous code and data optimizations throughout the subsystem, 13896ACPI 2.0 support has been implemented with almost no additional 13897cost in terms of code and data size. 13898 13899Implemented a new mechanism for allocation of return buffers. If 13900the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 13901be allocated on behalf of the caller. Consolidated all return 13902buffer validation and allocation to a common procedure. Return 13903buffers will be allocated via the primary OSL allocation interface 13904since it appears that a separate pool is not needed by most users. 13905If a separate pool is required for these buffers, the caller can 13906still use the original mechanism and pre-allocate the buffer(s). 13907 13908Implemented support for string operands within the DerefOf 13909operator. 13910 13911Restructured the Hardware and Event managers to be table driven, 13912simplifying the source code and reducing the amount of generated 13913code. 13914 13915Split the common read/write low-level ACPI register bitfield 13916procedure into a separate read and write, simplifying the code 13917considerably. 13918 13919Obsoleted the AcpiOsCallocate OSL interface. This interface was 13920used only a handful of times and didn't have enough critical mass 13921for a separate interface. Replaced with a common calloc procedure 13922in the core. 13923 13924Fixed a reported problem with the GPE number mapping mechanism 13925that allows GPE1 numbers to be non-contiguous with GPE0. 13926Reorganized the GPE information and shrunk a large array that was 13927originally large enough to hold info for all possible GPEs (256) 13928to simply large enough to hold all GPEs up to the largest GPE 13929number on the machine. 13930 13931Fixed a reported problem with resource structure alignment on 64- 13932bit platforms. 13933 13934Changed the AcpiEnableEvent and AcpiDisableEvent external 13935interfaces to not require any flags for the common case of 13936enabling/disabling a GPE. 13937 13938Implemented support to allow a "Notify" on a Processor object. 13939 13940Most TBDs in comments within the source code have been resolved 13941and eliminated. 13942 13943 13944Fixed a problem in the interpreter where a standalone parent 13945prefix (^) was not handled correctly in the interpreter and 13946debugger. 13947 13948Removed obsolete and unnecessary GPE save/restore code. 13949 13950Implemented Field support in the ASL Load operator. This allows a 13951table to be loaded from a named field, in addition to loading a 13952table directly from an Operation Region. 13953 13954Implemented timeout and handle support in the external Global Lock 13955interfaces. 13956 13957Fixed a problem in the AcpiDump utility where pathnames were no 13958longer being generated correctly during the dump of named objects. 13959 13960Modified the AML debugger to give a full display of if/while 13961predicates instead of just one AML opcode at a time. (The 13962predicate can have several nested ASL statements.) The old method 13963was confusing during single stepping. 13964 13965Code and Data Size: Current core subsystem library sizes are shown 13966below. These are the code and data sizes for the acpica.lib 13967produced by the Microsoft Visual C++ 6.0 compiler, and these 13968values do not include any ACPI driver or OSPM code. The debug 13969version of the code includes the debug output trace mechanism and 13970has a larger code and data size. Note that these values will vary 13971depending on the efficiency of the compiler and the compiler 13972options used during generation. 13973 13974 Previous Release (12_18_01) 13975 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13976 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13977 Current Release: 13978 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13979 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13980 139812) Linux 13982 13983 Implemented fix for PIIX reverse throttling errata (Processor 13984driver) 13985 13986Added new Limit interface (Processor and Thermal drivers) 13987 13988New thermal policy (Thermal driver) 13989 13990Many updates to /proc 13991 13992Battery "low" event support (Battery driver) 13993 13994Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 13995 13996IA32 - IA64 initialization unification, no longer experimental 13997 13998Menuconfig options redesigned 13999 140003) ASL Compiler, version X2037: 14001 14002Implemented several new output features to simplify integration of 14003AML code into firmware: 1) Output the AML in C source code with 14004labels for each named ASL object. The original ASL source code 14005is interleaved as C comments. 2) Output the AML in ASM source code 14006with labels and interleaved ASL source. 3) Output the AML in 14007raw hex table form, in either C or ASM. 14008 14009Implemented support for optional string parameters to the 14010LoadTable operator. 14011 14012Completed support for embedded escape sequences within string 14013literals. The compiler now supports all single character escapes 14014as well as the Octal and Hex escapes. Note: the insertion of a 14015null byte into a string literal (via the hex/octal escape) causes 14016the string to be immediately terminated. A warning is issued. 14017 14018Fixed a problem where incorrect AML was generated for the case 14019where an ASL namepath consists of a single parent prefix ( 14020 14021) with no trailing name segments. 14022 14023The compiler has been successfully generated with a 64-bit C 14024compiler. 14025 14026 14027 14028 14029---------------------------------------- 14030Summary of changes for this label: 12_18_01 14031 140321) Linux 14033 14034Enhanced blacklist with reason and severity fields. Any table's 14035signature may now be used to identify a blacklisted system. 14036 14037Call _PIC control method to inform the firmware which interrupt 14038model the OS is using. Turn on any disabled link devices. 14039 14040Cleaned up busmgr /proc error handling (Andreas Dilger) 14041 14042 2) ACPI CA Core Subsystem: 14043 14044Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 14045while loop) 14046 14047Completed implementation of the ACPI 2.0 "Continue", 14048"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14049operators. All new ACPI 2.0 operators are now implemented in both 14050the ASL compiler and the AML interpreter. The only remaining ACPI 140512.0 task is support for the String data type in the DerefOf 14052operator. Fixed a problem with AcquireMutex where the status code 14053was lost if the caller had to actually wait for the mutex. 14054 14055Increased the maximum ASL Field size from 64K bits to 4G bits. 14056 14057Completed implementation of the external Global Lock interfaces -- 14058AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14059Handler parameters were added. 14060 14061Completed another pass at removing warnings and issues when 14062compiling with 64-bit compilers. The code now compiles cleanly 14063with the Intel 64-bit C/C++ compiler. Most notably, the pointer 14064add and subtract (diff) macros have changed considerably. 14065 14066 14067Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1406864-bit platforms, 32-bits on all others. This type is used 14069wherever memory allocation and/or the C sizeof() operator is used, 14070and affects the OSL memory allocation interfaces AcpiOsAllocate 14071and AcpiOsCallocate. 14072 14073Implemented sticky user breakpoints in the AML debugger. 14074 14075Code and Data Size: Current core subsystem library sizes are shown 14076below. These are the code and data sizes for the acpica.lib 14077produced by the Microsoft Visual C++ 6.0 compiler, and these 14078values do not include any ACPI driver or OSPM code. The debug 14079version of the code includes the debug output trace mechanism and 14080has a larger code and data size. Note that these values will vary 14081depending on the efficiency of the compiler and the compiler 14082options used during generation. 14083 14084 Previous Release (12_05_01) 14085 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14086 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14087 Current Release: 14088 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14089 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14090 14091 3) ASL Compiler, version X2034: 14092 14093Now checks for (and generates an error if detected) the use of a 14094Break or Continue statement without an enclosing While statement. 14095 14096 14097Successfully generated the compiler with the Intel 64-bit C 14098compiler. 14099 14100 ---------------------------------------- 14101Summary of changes for this label: 12_05_01 14102 14103 1) ACPI CA Core Subsystem: 14104 14105The ACPI 2.0 CopyObject operator is fully implemented. This 14106operator creates a new copy of an object (and is also used to 14107bypass the "implicit conversion" mechanism of the Store operator.) 14108 14109The ACPI 2.0 semantics for the SizeOf operator are fully 14110implemented. The change is that performing a SizeOf on a 14111reference object causes an automatic dereference of the object to 14112tha actual value before the size is evaluated. This behavior was 14113undefined in ACPI 1.0. 14114 14115The ACPI 2.0 semantics for the Extended IRQ resource descriptor 14116have been implemented. The interrupt polarity and mode are now 14117independently set. 14118 14119Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 14120appearing in Package objects were not properly converted to 14121integers when the internal Package was converted to an external 14122object (via the AcpiEvaluateObject interface.) 14123 14124Fixed a problem with the namespace object deletion mechanism for 14125objects created by control methods. There were two parts to this 14126problem: 1) Objects created during the initialization phase method 14127parse were not being deleted, and 2) The object owner ID mechanism 14128to track objects was broken. 14129 14130Fixed a problem where the use of the ASL Scope operator within a 14131control method would result in an invalid opcode exception. 14132 14133Fixed a problem introduced in the previous label where the buffer 14134length required for the _PRT structure was not being returned 14135correctly. 14136 14137Code and Data Size: Current core subsystem library sizes are shown 14138below. These are the code and data sizes for the acpica.lib 14139produced by the Microsoft Visual C++ 6.0 compiler, and these 14140values do not include any ACPI driver or OSPM code. The debug 14141version of the code includes the debug output trace mechanism and 14142has a larger code and data size. Note that these values will vary 14143depending on the efficiency of the compiler and the compiler 14144options used during generation. 14145 14146 Previous Release (11_20_01) 14147 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14148 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14149 14150 Current Release: 14151 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14152 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14153 14154 2) Linux: 14155 14156Updated all files to apply cleanly against 2.4.16. 14157 14158Added basic PCI Interrupt Routing Table (PRT) support for IA32 14159(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 14160version supports both static and dyanmic PRT entries, but dynamic 14161entries are treated as if they were static (not yet 14162reconfigurable). Architecture- specific code to use this data is 14163absent on IA32 but should be available shortly. 14164 14165Changed the initialization sequence to start the ACPI interpreter 14166(acpi_init) prior to initialization of the PCI driver (pci_init) 14167in init/main.c. This ordering is required to support PRT and 14168facilitate other (future) enhancement. A side effect is that the 14169ACPI bus driver and certain device drivers can no longer be loaded 14170as modules. 14171 14172Modified the 'make menuconfig' options to allow PCI Interrupt 14173Routing support to be included without the ACPI Bus and other 14174device drivers. 14175 14176 3) ASL Compiler, version X2033: 14177 14178Fixed some issues with the use of the new CopyObject and 14179DataTableRegion operators. Both are fully functional. 14180 14181 ---------------------------------------- 14182Summary of changes for this label: 11_20_01 14183 14184 20 November 2001. Summary of changes for this release. 14185 14186 1) ACPI CA Core Subsystem: 14187 14188Updated Index support to match ACPI 2.0 semantics. Storing a 14189Integer, String, or Buffer to an Index of a Buffer will store only 14190the least-significant byte of the source to the Indexed buffer 14191byte. Multiple writes are not performed. 14192 14193Fixed a problem where the access type used in an AccessAs ASL 14194operator was not recorded correctly into the field object. 14195 14196Fixed a problem where ASL Event objects were created in a 14197signalled state. Events are now created in an unsignalled state. 14198 14199The internal object cache is now purged after table loading and 14200initialization to reduce the use of dynamic kernel memory -- on 14201the assumption that object use is greatest during the parse phase 14202of the entire table (versus the run-time use of individual control 14203methods.) 14204 14205ACPI 2.0 variable-length packages are now fully operational. 14206 14207Code and Data Size: Code and Data optimizations have permitted new 14208feature development with an actual reduction in the library size. 14209Current core subsystem library sizes are shown below. These are 14210the code and data sizes for the acpica.lib produced by the 14211Microsoft Visual C++ 6.0 compiler, and these values do not include 14212any ACPI driver or OSPM code. The debug version of the code 14213includes the debug output trace mechanism and has a larger code 14214and data size. Note that these values will vary depending on the 14215efficiency of the compiler and the compiler options used during 14216generation. 14217 14218 Previous Release (11_09_01): 14219 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14220 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14221 14222 Current Release: 14223 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14224 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14225 14226 2) Linux: 14227 14228Enhanced the ACPI boot-time initialization code to allow the use 14229of Local APIC tables for processor enumeration on IA-32, and to 14230pave the way for a fully MPS-free boot (on SMP systems) in the 14231near future. This functionality replaces 14232arch/i386/kernel/acpitables.c, which was introduced in an earlier 142332.4.15-preX release. To enable this feature you must add 14234"acpi_boot=on" to the kernel command line -- see the help entry 14235for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 14236the works... 14237 14238Restructured the configuration options to allow boot-time table 14239parsing support without inclusion of the ACPI Interpreter (and 14240other) code. 14241 14242NOTE: This release does not include fixes for the reported events, 14243power-down, and thermal passive cooling issues (coming soon). 14244 14245 3) ASL Compiler: 14246 14247Added additional typechecking for Fields within restricted access 14248Operation Regions. All fields within EC and CMOS regions must be 14249declared with ByteAcc. All fields withing SMBus regions must be 14250declared with the BufferAcc access type. 14251 14252Fixed a problem where the listing file output of control methods 14253no longer interleaved the actual AML code with the ASL source 14254code. 14255 14256 14257 14258 14259---------------------------------------- 14260Summary of changes for this label: 11_09_01 14261 142621) ACPI CA Core Subsystem: 14263 14264Implemented ACPI 2.0-defined support for writes to fields with a 14265Buffer, String, or Integer source operand that is smaller than the 14266target field. In these cases, the source operand is zero-extended 14267to fill the target field. 14268 14269Fixed a problem where a Field starting bit offset (within the 14270parent operation region) was calculated incorrectly if the 14271 14272alignment of the field differed from the access width. This 14273affected CreateWordField, CreateDwordField, CreateQwordField, and 14274possibly other fields that use the "AccessAny" keyword. 14275 14276Fixed a problem introduced in the 11_02_01 release where indirect 14277stores through method arguments did not operate correctly. 14278 142792) Linux: 14280 14281Implemented boot-time ACPI table parsing support 14282(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 14283facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 14284legacy BIOS interfaces (e.g. MPS) for the configuration of system 14285processors, memory, and interrupts during setup_arch(). Note that 14286this patch does not include the required architecture-specific 14287changes required to apply this information -- subsequent patches 14288will be posted for both IA32 and IA64 to achieve this. 14289 14290Added low-level sleep support for IA32 platforms, courtesy of Pat 14291Mochel. This allows IA32 systems to transition to/from various 14292sleeping states (e.g. S1, S3), although the lack of a centralized 14293driver model and power-manageable drivers will prevent its 14294(successful) use on most systems. 14295 14296Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 14297submenu, unified IA32 and IA64 options, added new "Boot using ACPI 14298tables" option, etc. 14299 14300Increased the default timeout for the EC driver from 1ms to 10ms 14301(1000 cycles of 10us) to try to address AE_TIME errors during EC 14302transactions. 14303 14304 ---------------------------------------- 14305Summary of changes for this label: 11_02_01 14306 143071) ACPI CA Core Subsystem: 14308 14309ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 14310(QWordAcc keyword). All ACPI 2.0 64-bit support is now 14311implemented. 14312 14313OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 14314changes to support ACPI 2.0 Qword field access. Read/Write 14315PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 14316accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 14317the value parameter for the address space handler interface is now 14318an ACPI_INTEGER. OSL implementations of these interfaces must now 14319handle the case where the Width parameter is 64. 14320 14321Index Fields: Fixed a problem where unaligned bit assembly and 14322disassembly for IndexFields was not supported correctly. 14323 14324Index and Bank Fields: Nested Index and Bank Fields are now 14325supported. During field access, a check is performed to ensure 14326that the value written to an Index or Bank register is not out of 14327the range of the register. The Index (or Bank) register is 14328written before each access to the field data. Future support will 14329include allowing individual IndexFields to be wider than the 14330DataRegister width. 14331 14332Fields: Fixed a problem where the AML interpreter was incorrectly 14333attempting to write beyond the end of a Field/OpRegion. This was 14334a boundary case that occurred when a DWORD field was written to a 14335BYTE access OpRegion, forcing multiple writes and causing the 14336interpreter to write one datum too many. 14337 14338Fields: Fixed a problem with Field/OpRegion access where the 14339starting bit address of a field was incorrectly calculated if the 14340current access type was wider than a byte (WordAcc, DwordAcc, or 14341QwordAcc). 14342 14343Fields: Fixed a problem where forward references to individual 14344FieldUnits (individual Field names within a Field definition) were 14345not resolved during the AML table load. 14346 14347Fields: Fixed a problem where forward references from a Field 14348definition to the parent Operation Region definition were not 14349resolved during the AML table load. 14350 14351Fields: Duplicate FieldUnit names within a scope are now detected 14352during AML table load. 14353 14354Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 14355returned an incorrect name for the root node. 14356 14357Code and Data Size: Code and Data optimizations have permitted new 14358feature development with an actual reduction in the library size. 14359Current core subsystem library sizes are shown below. These are 14360the code and data sizes for the acpica.lib produced by the 14361Microsoft Visual C++ 6.0 compiler, and these values do not include 14362any ACPI driver or OSPM code. The debug version of the code 14363includes the debug output trace mechanism and has a larger code 14364and data size. Note that these values will vary depending on the 14365efficiency of the compiler and the compiler options used during 14366generation. 14367 14368 Previous Release (10_18_01): 14369 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14370 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14371 14372 Current Release: 14373 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14374 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14375 14376 2) Linux: 14377 14378Improved /proc processor output (Pavel Machek) Re-added 14379MODULE_LICENSE("GPL") to all modules. 14380 14381 3) ASL Compiler version X2030: 14382 14383Duplicate FieldUnit names within a scope are now detected and 14384flagged as errors. 14385 14386 4) Documentation: 14387 14388Programmer Reference updated to reflect OSL and address space 14389handler interface changes described above. 14390 14391---------------------------------------- 14392Summary of changes for this label: 10_18_01 14393 14394ACPI CA Core Subsystem: 14395 14396Fixed a problem with the internal object reference count mechanism 14397that occasionally caused premature object deletion. This resolves 14398all of the outstanding problem reports where an object is deleted 14399in the middle of an interpreter evaluation. Although this problem 14400only showed up in rather obscure cases, the solution to the 14401problem involved an adjustment of all reference counts involving 14402objects attached to namespace nodes. 14403 14404Fixed a problem with Field support in the interpreter where 14405writing to an aligned field whose length is an exact multiple (2 14406or greater) of the field access granularity would cause an attempt 14407to write beyond the end of the field. 14408 14409The top level AML opcode execution functions within the 14410interpreter have been renamed with a more meaningful and 14411consistent naming convention. The modules exmonad.c and 14412exdyadic.c were eliminated. New modules are exoparg1.c, 14413exoparg2.c, exoparg3.c, and exoparg6.c. 14414 14415Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 14416 14417Fixed a problem where the AML debugger was causing some internal 14418objects to not be deleted during subsystem termination. 14419 14420Fixed a problem with the external AcpiEvaluateObject interface 14421where the subsystem would fault if the named object to be 14422evaluated refered to a constant such as Zero, Ones, etc. 14423 14424Fixed a problem with IndexFields and BankFields where the 14425subsystem would fault if the index, data, or bank registers were 14426not defined in the same scope as the field itself. 14427 14428Added printf format string checking for compilers that support 14429this feature. Corrected more than 50 instances of issues with 14430format specifiers within invocations of ACPI_DEBUG_PRINT 14431throughout the core subsystem code. 14432 14433The ASL "Revision" operator now returns the ACPI support level 14434implemented in the core - the value "2" since the ACPI 2.0 support 14435is more than 50% implemented. 14436 14437Enhanced the output of the AML debugger "dump namespace" command 14438to output in a more human-readable form. 14439 14440Current core subsystem library code sizes are shown below. These 14441 14442are the code and data sizes for the acpica.lib produced by the 14443Microsoft Visual C++ 6.0 compiler, and these values do not include 14444any ACPI driver or OSPM code. The debug version of the code 14445includes the full debug trace mechanism -- leading to a much 14446 14447larger code and data size. Note that these values will vary 14448depending on the efficiency of the compiler and the compiler 14449options used during generation. 14450 14451 Previous Label (09_20_01): 14452 Non-Debug Version: 65K Code, 5K Data, 70K Total 14453 Debug Version: 138K Code, 58K Data, 196K Total 14454 14455 This Label: 14456 14457 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14458 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14459 14460Linux: 14461 14462Implemented a "Bad BIOS Blacklist" to track machines that have 14463known ASL/AML problems. 14464 14465Enhanced the /proc interface for the thermal zone driver and added 14466support for _HOT (the critical suspend trip point). The 'info' 14467file now includes threshold/policy information, and allows setting 14468of _SCP (cooling preference) and _TZP (polling frequency) values 14469to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 14470frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 14471preference to the passive/quiet mode (if supported by the ASL). 14472 14473Implemented a workaround for a gcc bug that resuted in an OOPs 14474when loading the control method battery driver. 14475 14476 ---------------------------------------- 14477Summary of changes for this label: 09_20_01 14478 14479 ACPI CA Core Subsystem: 14480 14481The AcpiEnableEvent and AcpiDisableEvent interfaces have been 14482modified to allow individual GPE levels to be flagged as wake- 14483enabled (i.e., these GPEs are to remain enabled when the platform 14484sleeps.) 14485 14486The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 14487support wake-enabled GPEs. This means that upon entering the 14488sleep state, all GPEs that are not wake-enabled are disabled. 14489When leaving the sleep state, these GPEs are reenabled. 14490 14491A local double-precision divide/modulo module has been added to 14492enhance portability to OS kernels where a 64-bit math library is 14493not available. The new module is "utmath.c". 14494 14495Several optimizations have been made to reduce the use of CPU 14496stack. Originally over 2K, the maximum stack usage is now below 144972K at 1860 bytes (1.82k) 14498 14499Fixed a problem with the AcpiGetFirmwareTable interface where the 14500root table pointer was not mapped into a logical address properly. 14501 14502Fixed a problem where a NULL pointer was being dereferenced in the 14503interpreter code for the ASL Notify operator. 14504 14505Fixed a problem where the use of the ASL Revision operator 14506returned an error. This operator now returns the current version 14507of the ACPI CA core subsystem. 14508 14509Fixed a problem where objects passed as control method parameters 14510to AcpiEvaluateObject were always deleted at method termination. 14511However, these objects may end up being stored into the namespace 14512by the called method. The object reference count mechanism was 14513applied to these objects instead of a force delete. 14514 14515Fixed a problem where static strings or buffers (contained in the 14516AML code) that are declared as package elements within the ASL 14517code could cause a fault because the interpreter would attempt to 14518delete them. These objects are now marked with the "static 14519object" flag to prevent any attempt to delete them. 14520 14521Implemented an interpreter optimization to use operands directly 14522from the state object instead of extracting the operands to local 14523variables. This reduces stack use and code size, and improves 14524performance. 14525 14526The module exxface.c was eliminated as it was an unnecessary extra 14527layer of code. 14528 14529Current core subsystem library code sizes are shown below. These 14530are the code and data sizes for the acpica.lib produced by the 14531Microsoft Visual C++ 6.0 compiler, and these values do not include 14532any ACPI driver or OSPM code. The debug version of the code 14533includes the full debug trace mechanism -- leading to a much 14534larger code and data size. Note that these values will vary 14535depending on the efficiency of the compiler and the compiler 14536options used during generation. 14537 14538 Non-Debug Version: 65K Code, 5K Data, 70K Total 14539(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 14540Total (Previously 195K) 14541 14542Linux: 14543 14544Support for ACPI 2.0 64-bit integers has been added. All ACPI 14545Integer objects are now 64 bits wide 14546 14547All Acpi data types and structures are now in lower case. Only 14548Acpi macros are upper case for differentiation. 14549 14550 Documentation: 14551 14552Changes to the external interfaces as described above. 14553 14554 ---------------------------------------- 14555Summary of changes for this label: 08_31_01 14556 14557 ACPI CA Core Subsystem: 14558 14559A bug with interpreter implementation of the ASL Divide operator 14560was found and fixed. The implicit function return value (not the 14561explicit store operands) was returning the remainder instead of 14562the quotient. This was a longstanding bug and it fixes several 14563known outstanding issues on various platforms. 14564 14565The ACPI_DEBUG_PRINT and function trace entry/exit macros have 14566been further optimized for size. There are 700 invocations of the 14567DEBUG_PRINT macro alone, so each optimization reduces the size of 14568the debug version of the subsystem significantly. 14569 14570A stack trace mechanism has been implemented. The maximum stack 14571usage is about 2K on 32-bit platforms. The debugger command "stat 14572stack" will display the current maximum stack usage. 14573 14574All public symbols and global variables within the subsystem are 14575now prefixed with the string "Acpi". This keeps all of the 14576symbols grouped together in a kernel map, and avoids conflicts 14577with other kernel subsystems. 14578 14579Most of the internal fixed lookup tables have been moved into the 14580code segment via the const operator. 14581 14582Several enhancements have been made to the interpreter to both 14583reduce the code size and improve performance. 14584 14585Current core subsystem library code sizes are shown below. These 14586are the code and data sizes for the acpica.lib produced by the 14587Microsoft Visual C++ 6.0 compiler, and these values do not include 14588any ACPI driver or OSPM code. The debug version of the code 14589includes the full debug trace mechanism which contains over 700 14590invocations of the DEBUG_PRINT macro, 500 function entry macro 14591invocations, and over 900 function exit macro invocations -- 14592leading to a much larger code and data size. Note that these 14593values will vary depending on the efficiency of the compiler and 14594the compiler options used during generation. 14595 14596 Non-Debug Version: 64K Code, 5K Data, 69K Total 14597Debug Version: 137K Code, 58K Data, 195K Total 14598 14599 Linux: 14600 14601Implemented wbinvd() macro, pending a kernel-wide definition. 14602 14603Fixed /proc/acpi/event to handle poll() and short reads. 14604 14605 ASL Compiler, version X2026: 14606 14607Fixed a problem introduced in the previous label where the AML 14608 14609code emitted for package objects produced packages with zero 14610length. 14611 14612 ---------------------------------------- 14613Summary of changes for this label: 08_16_01 14614 14615ACPI CA Core Subsystem: 14616 14617The following ACPI 2.0 ASL operators have been implemented in the 14618AML interpreter (These are already supported by the Intel ASL 14619compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 14620ToBuffer. Support for 64-bit AML constants is implemented in the 14621AML parser, debugger, and disassembler. 14622 14623The internal memory tracking mechanism (leak detection code) has 14624been upgraded to reduce the memory overhead (a separate tracking 14625block is no longer allocated for each memory allocation), and now 14626supports all of the internal object caches. 14627 14628The data structures and code for the internal object caches have 14629been coelesced and optimized so that there is a single cache and 14630memory list data structure and a single group of functions that 14631implement generic cache management. This has reduced the code 14632size in both the debug and release versions of the subsystem. 14633 14634The DEBUG_PRINT macro(s) have been optimized for size and replaced 14635by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 14636different, because it generates a single call to an internal 14637function. This results in a savings of about 90 bytes per 14638invocation, resulting in an overall code and data savings of about 1463916% in the debug version of the subsystem. 14640 14641 Linux: 14642 14643Fixed C3 disk corruption problems and re-enabled C3 on supporting 14644machines. 14645 14646Integrated low-level sleep code by Patrick Mochel. 14647 14648Further tweaked source code Linuxization. 14649 14650Other minor fixes. 14651 14652 ASL Compiler: 14653 14654Support for ACPI 2.0 variable length packages is fixed/completed. 14655 14656Fixed a problem where the optional length parameter for the ACPI 146572.0 ToString operator. 14658 14659Fixed multiple extraneous error messages when a syntax error is 14660detected within the declaration line of a control method. 14661 14662 ---------------------------------------- 14663Summary of changes for this label: 07_17_01 14664 14665ACPI CA Core Subsystem: 14666 14667Added a new interface named AcpiGetFirmwareTable to obtain any 14668ACPI table via the ACPI signature. The interface can be called at 14669any time during kernel initialization, even before the kernel 14670virtual memory manager is initialized and paging is enabled. This 14671allows kernel subsystems to obtain ACPI tables very early, even 14672before the ACPI CA subsystem is initialized. 14673 14674Fixed a problem where Fields defined with the AnyAcc attribute 14675could be resolved to the incorrect address under the following 14676conditions: 1) the field width is larger than 8 bits and 2) the 14677parent operation region is not defined on a DWORD boundary. 14678 14679Fixed a problem where the interpreter is not being locked during 14680namespace initialization (during execution of the _INI control 14681methods), causing an error when an attempt is made to release it 14682later. 14683 14684ACPI 2.0 support in the AML Interpreter has begun and will be 14685ongoing throughout the rest of this year. In this label, The Mod 14686operator is implemented. 14687 14688Added a new data type to contain full PCI addresses named 14689ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 14690and Function values. 14691 14692 Linux: 14693 14694Enhanced the Linux version of the source code to change most 14695capitalized ACPI type names to lowercase. For example, all 14696instances of ACPI_STATUS are changed to acpi_status. This will 14697result in a large diff, but the change is strictly cosmetic and 14698aligns the CA code closer to the Linux coding standard. 14699 14700OSL Interfaces: 14701 14702The interfaces to the PCI configuration space have been changed to 14703add the PCI Segment number and to split the single 32-bit combined 14704DeviceFunction field into two 16-bit fields. This was 14705accomplished by moving the four values that define an address in 14706PCI configuration space (segment, bus, device, and function) to 14707the new ACPI_PCI_ID structure. 14708 14709The changes to the PCI configuration space interfaces led to a 14710reexamination of the complete set of address space access 14711interfaces for PCI, I/O, and Memory. The previously existing 18 14712interfaces have proven difficult to maintain (any small change 14713must be propagated across at least 6 interfaces) and do not easily 14714allow for future expansion to 64 bits if necessary. Also, on some 14715systems, it would not be appropriate to demultiplex the access 14716width (8, 16, 32,or 64) before calling the OSL if the 14717corresponding native OS interfaces contain a similar access width 14718parameter. For these reasons, the 18 address space interfaces 14719have been replaced by these 6 new ones: 14720 14721AcpiOsReadPciConfiguration 14722AcpiOsWritePciConfiguration 14723AcpiOsReadMemory 14724AcpiOsWriteMemory 14725AcpiOsReadPort 14726AcpiOsWritePort 14727 14728Added a new interface named AcpiOsGetRootPointer to allow the OSL 14729to perform the platform and/or OS-specific actions necessary to 14730obtain the ACPI RSDP table pointer. On IA-32 platforms, this 14731interface will simply call down to the CA core to perform the low- 14732memory search for the table. On IA-64, the RSDP is obtained from 14733EFI. Migrating this interface to the OSL allows the CA core to 14734 14735remain OS and platform independent. 14736 14737Added a new interface named AcpiOsSignal to provide a generic 14738"function code and pointer" interface for various miscellaneous 14739signals and notifications that must be made to the host OS. The 14740first such signals are intended to support the ASL Fatal and 14741Breakpoint operators. In the latter case, the AcpiOsBreakpoint 14742interface has been obsoleted. 14743 14744The definition of the AcpiFormatException interface has been 14745changed to simplify its use. The caller no longer must supply a 14746buffer to the call; A pointer to a const string is now returned 14747directly. This allows the call to be easily used in printf 14748statements, etc. since the caller does not have to manage a local 14749buffer. 14750 14751 14752 ASL Compiler, Version X2025: 14753 14754The ACPI 2.0 Switch/Case/Default operators have been implemented 14755and are fully functional. They will work with all ACPI 1.0 14756interpreters, since the operators are simply translated to If/Else 14757pairs. 14758 14759The ACPI 2.0 ElseIf operator is implemented and will also work 14760with 1.0 interpreters, for the same reason. 14761 14762Implemented support for ACPI 2.0 variable-length packages. These 14763packages have a separate opcode, and their size is determined by 14764the interpreter at run-time. 14765 14766Documentation The ACPI CA Programmer Reference has been updated to 14767reflect the new interfaces and changes to existing interfaces. 14768 14769 ------------------------------------------ 14770Summary of changes for this label: 06_15_01 14771 14772 ACPI CA Core Subsystem: 14773 14774Fixed a problem where a DWORD-accessed field within a Buffer 14775object would get its byte address inadvertently rounded down to 14776the nearest DWORD. Buffers are always Byte-accessible. 14777 14778 ASL Compiler, version X2024: 14779 14780Fixed a problem where the Switch() operator would either fault or 14781hang the compiler. Note however, that the AML code for this ACPI 147822.0 operator is not yet implemented. 14783 14784Compiler uses the new AcpiOsGetTimer interface to obtain compile 14785timings. 14786 14787Implementation of the CreateField operator automatically converts 14788a reference to a named field within a resource descriptor from a 14789byte offset to a bit offset if required. 14790 14791Added some missing named fields from the resource descriptor 14792support. These are the names that are automatically created by the 14793compiler to reference fields within a descriptor. They are only 14794valid at compile time and are not passed through to the AML 14795interpreter. 14796 14797Resource descriptor named fields are now typed as Integers and 14798subject to compile-time typechecking when used in expressions. 14799 14800 ------------------------------------------ 14801Summary of changes for this label: 05_18_01 14802 14803 ACPI CA Core Subsystem: 14804 14805Fixed a couple of problems in the Field support code where bits 14806from adjacent fields could be returned along with the proper field 14807bits. Restructured the field support code to improve performance, 14808readability and maintainability. 14809 14810New DEBUG_PRINTP macro automatically inserts the procedure name 14811into the output, saving hundreds of copies of procedure name 14812strings within the source, shrinking the memory footprint of the 14813debug version of the core subsystem. 14814 14815 Source Code Structure: 14816 14817The source code directory tree was restructured to reflect the 14818current organization of the component architecture. Some files 14819and directories have been moved and/or renamed. 14820 14821 Linux: 14822 14823Fixed leaking kacpidpc processes. 14824 14825Fixed queueing event data even when /proc/acpi/event is not 14826opened. 14827 14828 ASL Compiler, version X2020: 14829 14830Memory allocation performance enhancement - over 24X compile time 14831improvement on large ASL files. Parse nodes and namestring 14832buffers are now allocated from a large internal compiler buffer. 14833 14834The temporary .SRC file is deleted unless the "-s" option is 14835specified 14836 14837The "-d" debug output option now sends all output to the .DBG file 14838instead of the console. 14839 14840"External" second parameter is now optional 14841 14842"ElseIf" syntax now properly allows the predicate 14843 14844Last operand to "Load" now recognized as a Target operand 14845 14846Debug object can now be used anywhere as a normal object. 14847 14848ResourceTemplate now returns an object of type BUFFER 14849 14850EISAID now returns an object of type INTEGER 14851 14852"Index" now works with a STRING operand 14853 14854"LoadTable" now accepts optional parameters 14855 14856"ToString" length parameter is now optional 14857 14858"Interrupt (ResourceType," parse error fixed. 14859 14860"Register" with a user-defined region space parse error fixed 14861 14862Escaped backslash at the end of a string ("\\") scan/parse error 14863fixed 14864 14865"Revision" is now an object of type INTEGER. 14866 14867 14868 14869------------------------------------------ 14870Summary of changes for this label: 05_02_01 14871 14872Linux: 14873 14874/proc/acpi/event now blocks properly. 14875 14876Removed /proc/sys/acpi. You can still dump your DSDT from 14877/proc/acpi/dsdt. 14878 14879 ACPI CA Core Subsystem: 14880 14881Fixed a problem introduced in the previous label where some of the 14882"small" resource descriptor types were not recognized. 14883 14884Improved error messages for the case where an ASL Field is outside 14885the range of the parent operation region. 14886 14887 ASL Compiler, version X2018: 14888 14889 14890Added error detection for ASL Fields that extend beyond the length 14891of the parent operation region (only if the length of the region 14892is known at compile time.) This includes fields that have a 14893minimum access width that is smaller than the parent region, and 14894individual field units that are partially or entirely beyond the 14895extent of the parent. 14896 14897 14898 14899------------------------------------------ 14900Summary of changes for this label: 04_27_01 14901 14902 ACPI CA Core Subsystem: 14903 14904Fixed a problem where the namespace mutex could be released at the 14905wrong time during execution of AcpiRemoveAddressSpaceHandler. 14906 14907Added optional thread ID output for debug traces, to simplify 14908debugging of multiple threads. Added context switch notification 14909when the debug code realizes that a different thread is now 14910executing ACPI code. 14911 14912Some additional external data types have been prefixed with the 14913string "ACPI_" for consistency. This may effect existing code. 14914The data types affected are the external callback typedefs - e.g., 14915 14916WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 14917 14918 Linux: 14919 14920Fixed an issue with the OSL semaphore implementation where a 14921thread was waking up with an error from receiving a SIGCHLD 14922signal. 14923 14924Linux version of ACPI CA now uses the system C library for string 14925manipulation routines instead of a local implementation. 14926 14927Cleaned up comments and removed TBDs. 14928 14929 ASL Compiler, version X2017: 14930 14931Enhanced error detection and reporting for all file I/O 14932operations. 14933 14934 Documentation: 14935 14936Programmer Reference updated to version 1.06. 14937 14938 14939 14940------------------------------------------ 14941Summary of changes for this label: 04_13_01 14942 14943 ACPI CA Core Subsystem: 14944 14945Restructured support for BufferFields and RegionFields. 14946BankFields support is now fully operational. All known 32-bit 14947limitations on field sizes have been removed. Both BufferFields 14948and (Operation) RegionFields are now supported by the same field 14949management code. 14950 14951Resource support now supports QWORD address and IO resources. The 1495216/32/64 bit address structures and the Extended IRQ structure 14953have been changed to properly handle Source Resource strings. 14954 14955A ThreadId of -1 is now used to indicate a "mutex not acquired" 14956condition internally and must never be returned by AcpiOsThreadId. 14957This reserved value was changed from 0 since Unix systems allow a 14958thread ID of 0. 14959 14960Linux: 14961 14962Driver code reorganized to enhance portability 14963 14964Added a kernel configuration option to control ACPI_DEBUG 14965 14966Fixed the EC driver to honor _GLK. 14967 14968ASL Compiler, version X2016: 14969 14970Fixed support for the "FixedHw" keyword. Previously, the FixedHw 14971address space was set to 0, not 0x7f as it should be. 14972 14973 ------------------------------------------ 14974Summary of changes for this label: 03_13_01 14975 14976 ACPI CA Core Subsystem: 14977 14978During ACPI initialization, the _SB_._INI method is now run if 14979present. 14980 14981Notify handler fix - notifies are deferred until the parent method 14982completes execution. This fixes the "mutex already acquired" 14983issue seen occasionally. 14984 14985Part of the "implicit conversion" rules in ACPI 2.0 have been 14986found to cause compatibility problems with existing ASL/AML. The 14987convert "result-to-target-type" implementation has been removed 14988for stores to method Args and Locals. Source operand conversion 14989is still fully implemented. Possible changes to ACPI 2.0 14990specification pending. 14991 14992Fix to AcpiRsCalculatePciRoutingTableLength to return correct 14993length. 14994 14995Fix for compiler warnings for 64-bit compiles. 14996 14997 Linux: 14998 14999/proc output aligned for easier parsing. 15000 15001Release-version compile problem fixed. 15002 15003New kernel configuration options documented in Configure.help. 15004 15005IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15006context" message. 15007 15008 OSPM: 15009 15010Power resource driver integrated with bus manager. 15011 15012Fixed kernel fault during active cooling for thermal zones. 15013 15014Source Code: 15015 15016The source code tree has been restructured. 15017 15018 15019 15020------------------------------------------ 15021Summary of changes for this label: 03_02_01 15022 15023 Linux OS Services Layer (OSL): 15024 15025Major revision of all Linux-specific code. 15026 15027Modularized all ACPI-specific drivers. 15028 15029Added new thermal zone and power resource drivers. 15030 15031Revamped /proc interface (new functionality is under /proc/acpi). 15032 15033New kernel configuration options. 15034 15035 Linux known issues: 15036 15037New kernel configuration options not documented in Configure.help 15038yet. 15039 15040 15041Module dependencies not currently implemented. If used, they 15042should be loaded in this order: busmgr, power, ec, system, 15043processor, battery, ac_adapter, button, thermal. 15044 15045Modules will not load if CONFIG_MODVERSION is set. 15046 15047IBM 600E - entering S5 may reboot instead of shutting down. 15048 15049IBM 600E - Sleep button may generate "Invalid <NULL> context" 15050message. 15051 15052Some systems may fail with "execution mutex already acquired" 15053message. 15054 15055 ACPI CA Core Subsystem: 15056 15057Added a new OSL Interface, AcpiOsGetThreadId. This was required 15058for the deadlock detection code. Defined to return a non-zero, 32- 15059bit thread ID for the currently executing thread. May be a non- 15060zero constant integer on single-thread systems. 15061 15062Implemented deadlock detection for internal subsystem mutexes. We 15063may add conditional compilation for this code (debug only) later. 15064 15065ASL/AML Mutex object semantics are now fully supported. This 15066includes multiple acquires/releases by owner and support for the 15067 15068Mutex SyncLevel parameter. 15069 15070A new "Force Release" mechanism automatically frees all ASL 15071Mutexes that have been acquired but not released when a thread 15072exits the interpreter. This forces conformance to the ACPI spec 15073("All mutexes must be released when an invocation exits") and 15074prevents deadlocked ASL threads. This mechanism can be expanded 15075(later) to monitor other resource acquisitions if OEM ASL code 15076continues to misbehave (which it will). 15077 15078Several new ACPI exception codes have been added for the Mutex 15079support. 15080 15081Recursive method calls are now allowed and supported (the ACPI 15082spec does in fact allow recursive method calls.) The number of 15083recursive calls is subject to the restrictions imposed by the 15084SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 15085parameter. 15086 15087Implemented support for the SyncLevel parameter for control 15088methods (ACPI 2.0 feature) 15089 15090Fixed a deadlock problem when multiple threads attempted to use 15091the interpreter. 15092 15093Fixed a problem where the string length of a String package 15094element was not always set in a package returned from 15095AcpiEvaluateObject. 15096 15097Fixed a problem where the length of a String package element was 15098not always included in the length of the overall package returned 15099from AcpiEvaluateObject. 15100 15101Added external interfaces (Acpi*) to the ACPI debug memory 15102manager. This manager keeps a list of all outstanding 15103allocations, and can therefore detect memory leaks and attempts to 15104free memory blocks more than once. Useful for code such as the 15105power manager, etc. May not be appropriate for device drivers. 15106Performance with the debug code enabled is slow. 15107 15108The ACPI Global Lock is now an optional hardware element. 15109 15110 ASL Compiler Version X2015: 15111 15112Integrated changes to allow the compiler to be generated on 15113multiple platforms. 15114 15115Linux makefile added to generate the compiler on Linux 15116 15117 Source Code: 15118 15119All platform-specific headers have been moved to their own 15120subdirectory, Include/Platform. 15121 15122New source file added, Interpreter/ammutex.c 15123 15124New header file, Include/acstruct.h 15125 15126 Documentation: 15127 15128The programmer reference has been updated for the following new 15129interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 15130 15131 ------------------------------------------ 15132Summary of changes for this label: 02_08_01 15133 15134Core ACPI CA Subsystem: Fixed a problem where an error was 15135incorrectly returned if the return resource buffer was larger than 15136the actual data (in the resource interfaces). 15137 15138References to named objects within packages are resolved to the 15139 15140full pathname string before packages are returned directly (via 15141the AcpiEvaluateObject interface) or indirectly via the resource 15142interfaces. 15143 15144Linux OS Services Layer (OSL): 15145 15146Improved /proc battery interface. 15147 15148 15149Added C-state debugging output and other miscellaneous fixes. 15150 15151ASL Compiler Version X2014: 15152 15153All defined method arguments can now be used as local variables, 15154including the ones that are not actually passed in as parameters. 15155The compiler tracks initialization of the arguments and issues an 15156exception if they are used without prior assignment (just like 15157locals). 15158 15159The -o option now specifies a filename prefix that is used for all 15160output files, including the AML output file. Otherwise, the 15161default behavior is as follows: 1) the AML goes to the file 15162specified in the DSDT. 2) all other output files use the input 15163source filename as the base. 15164 15165 ------------------------------------------ 15166Summary of changes for this label: 01_25_01 15167 15168Core ACPI CA Subsystem: Restructured the implementation of object 15169store support within the interpreter. This includes support for 15170the Store operator as well as any ASL operators that include a 15171target operand. 15172 15173Partially implemented support for Implicit Result-to-Target 15174conversion. This is when a result object is converted on the fly 15175to the type of an existing target object. Completion of this 15176support is pending further analysis of the ACPI specification 15177concerning this matter. 15178 15179CPU-specific code has been removed from the subsystem (hardware 15180directory). 15181 15182New Power Management Timer functions added 15183 15184Linux OS Services Layer (OSL): Moved system state transition code 15185to the core, fixed it, and modified Linux OSL accordingly. 15186 15187Fixed C2 and C3 latency calculations. 15188 15189 15190We no longer use the compilation date for the version message on 15191initialization, but retrieve the version from AcpiGetSystemInfo(). 15192 15193Incorporated for fix Sony VAIO machines. 15194 15195Documentation: The Programmer Reference has been updated and 15196reformatted. 15197 15198 15199ASL Compiler: Version X2013: Fixed a problem where the line 15200numbering and error reporting could get out of sync in the 15201presence of multiple include files. 15202 15203 ------------------------------------------ 15204Summary of changes for this label: 01_15_01 15205 15206Core ACPI CA Subsystem: 15207 15208Implemented support for type conversions in the execution of the 15209ASL Concatenate operator (The second operand is converted to 15210match the type of the first operand before concatenation.) 15211 15212Support for implicit source operand conversion is partially 15213implemented. The ASL source operand types Integer, Buffer, and 15214String are freely interchangeable for most ASL operators and are 15215converted by the interpreter on the fly as required. Implicit 15216Target operand conversion (where the result is converted to the 15217target type before storing) is not yet implemented. 15218 15219Support for 32-bit and 64-bit BCD integers is implemented. 15220 15221Problem fixed where a field read on an aligned field could cause a 15222read past the end of the field. 15223 15224New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 15225does not return a value, but the caller expects one. (The ASL 15226compiler flags this as a warning.) 15227 15228ASL Compiler: 15229 15230Version X2011: 152311. Static typechecking of all operands is implemented. This 15232prevents the use of invalid objects (such as using a Package where 15233an Integer is required) at compile time instead of at interpreter 15234run-time. 152352. The ASL source line is printed with ALL errors and warnings. 152363. Bug fix for source EOF without final linefeed. 152374. Debug option is split into a parse trace and a namespace trace. 152385. Namespace output option (-n) includes initial values for 15239integers and strings. 152406. Parse-only option added for quick syntax checking. 152417. Compiler checks for duplicate ACPI name declarations 15242 15243Version X2012: 152441. Relaxed typechecking to allow interchangeability between 15245strings, integers, and buffers. These types are now converted by 15246the interpreter at runtime. 152472. Compiler reports time taken by each internal subsystem in the 15248debug output file. 15249 15250 15251 ------------------------------------------ 15252Summary of changes for this label: 12_14_00 15253 15254ASL Compiler: 15255 15256This is the first official release of the compiler. Since the 15257compiler requires elements of the Core Subsystem, this label 15258synchronizes everything. 15259 15260------------------------------------------ 15261Summary of changes for this label: 12_08_00 15262 15263 15264Fixed a problem where named references within the ASL definition 15265of both OperationRegions and CreateXXXFields did not work 15266properly. The symptom was an AE_AML_OPERAND_TYPE during 15267initialization of the region/field. This is similar (but not 15268related internally) to the problem that was fixed in the last 15269label. 15270 15271Implemented both 32-bit and 64-bit support for the BCD ASL 15272functions ToBCD and FromBCD. 15273 15274Updated all legal headers to include "2000" in the copyright 15275years. 15276 15277 ------------------------------------------ 15278Summary of changes for this label: 12_01_00 15279 15280Fixed a problem where method invocations within the ASL definition 15281of both OperationRegions and CreateXXXFields did not work 15282properly. The symptom was an AE_AML_OPERAND_TYPE during 15283initialization of the region/field: 15284 15285 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 15286[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 15287(0x3005) 15288 15289Fixed a problem where operators with more than one nested 15290subexpression would fail. The symptoms were varied, by mostly 15291AE_AML_OPERAND_TYPE errors. This was actually a rather serious 15292problem that has gone unnoticed until now. 15293 15294 Subtract (Add (1,2), Multiply (3,4)) 15295 15296Fixed a problem where AcpiGetHandle didn't quite get fixed in the 15297previous build (The prefix part of a relative path was handled 15298incorrectly). 15299 15300Fixed a problem where Operation Region initialization failed if 15301the operation region name was a "namepath" instead of a simple 15302"nameseg". Symptom was an AE_NO_OPERAND error. 15303 15304Fixed a problem where an assignment to a local variable via the 15305indirect RefOf mechanism only worked for the first such 15306assignment. Subsequent assignments were ignored. 15307 15308 ------------------------------------------ 15309Summary of changes for this label: 11_15_00 15310 15311ACPI 2.0 table support with backwards support for ACPI 1.0 and the 153120.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 15313the AML interpreter does NOT have support for the new 2.0 ASL 15314grammar terms at this time. 15315 15316All ACPI hardware access is via the GAS structures in the ACPI 2.0 15317FADT. 15318 15319All physical memory addresses across all platforms are now 64 bits 15320wide. Logical address width remains dependent on the platform 15321(i.e., "void *"). 15322 15323AcpiOsMapMemory interface changed to a 64-bit physical address. 15324 15325The AML interpreter integer size is now 64 bits, as per the ACPI 153262.0 specification. 15327 15328For backwards compatibility with ACPI 1.0, ACPI tables with a 15329revision number less than 2 use 32-bit integers only. 15330 15331Fixed a problem where the evaluation of OpRegion operands did not 15332always resolve them to numbers properly. 15333 15334------------------------------------------ 15335Summary of changes for this label: 10_20_00 15336 15337Fix for CBN_._STA issue. This fix will allow correct access to 15338CBN_ OpRegions when the _STA returns 0x8. 15339 15340Support to convert ACPI constants (Ones, Zeros, One) to actual 15341values before a package object is returned 15342 15343Fix for method call as predicate to if/while construct causing 15344incorrect if/while behavior 15345 15346Fix for Else block package lengths sometimes calculated wrong (if 15347block > 63 bytes) 15348 15349Fix for Processor object length field, was always zero 15350 15351Table load abort if FACP sanity check fails 15352 15353Fix for problem with Scope(name) if name already exists 15354 15355Warning emitted if a named object referenced cannot be found 15356(resolved) during method execution. 15357 15358 15359 15360 15361 15362------------------------------------------ 15363Summary of changes for this label: 9_29_00 15364 15365New table initialization interfaces: AcpiInitializeSubsystem no 15366longer has any parameters AcpiFindRootPointer - Find the RSDP (if 15367necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 15368>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 15369AcpiLoadTables 15370 15371Note: These interface changes require changes to all existing OSDs 15372 15373The PCI_Config default address space handler is always installed 15374at the root namespace object. 15375 15376------------------------------------------- 15377Summary of changes for this label: 09_15_00 15378 15379The new initialization architecture is implemented. New 15380interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 15381AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 15382 15383(Namespace is automatically loaded when a table is loaded) 15384 15385The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1538652 bytes to 32 bytes. There is usually one of these for every 15387namespace object, so the memory savings is significant. 15388 15389Implemented just-in-time evaluation of the CreateField operators. 15390 15391Bug fixes for IA-64 support have been integrated. 15392 15393Additional code review comments have been implemented 15394 15395The so-called "third pass parse" has been replaced by a final walk 15396through the namespace to initialize all operation regions (address 15397spaces) and fields that have not yet been initialized during the 15398execution of the various _INI and REG methods. 15399 15400New file - namespace/nsinit.c 15401 15402------------------------------------------- 15403Summary of changes for this label: 09_01_00 15404 15405Namespace manager data structures have been reworked to change the 15406primary object from a table to a single object. This has 15407resulted in dynamic memory savings of 3X within the namespace and 154082X overall in the ACPI CA subsystem. 15409 15410Fixed problem where the call to AcpiEvFindPciRootBuses was 15411inadvertently left commented out. 15412 15413Reduced the warning count when generating the source with the GCC 15414compiler. 15415 15416Revision numbers added to each module header showing the 15417SourceSafe version of the file. Please refer to this version 15418number when giving us feedback or comments on individual modules. 15419 15420The main object types within the subsystem have been renamed to 15421clarify their purpose: 15422 15423ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 15424ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 15425ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 15426 15427NOTE: no changes to the initialization sequence are included in 15428this label. 15429 15430------------------------------------------- 15431Summary of changes for this label: 08_23_00 15432 15433Fixed problem where TerminateControlMethod was being called 15434multiple times per method 15435 15436Fixed debugger problem where single stepping caused a semaphore to 15437be oversignalled 15438 15439Improved performance through additional parse object caching - 15440added ACPI_EXTENDED_OP type 15441 15442------------------------------------------- 15443Summary of changes for this label: 08_10_00 15444 15445Parser/Interpreter integration: Eliminated the creation of 15446complete parse trees for ACPI tables and control methods. 15447Instead, parse subtrees are created and then deleted as soon as 15448they are processed (Either entered into the namespace or executed 15449by the interpreter). This reduces the use of dynamic kernel 15450memory significantly. (about 10X) 15451 15452Exception codes broken into classes and renumbered. Be sure to 15453recompile all code that includes acexcep.h. Hopefully we won't 15454have to renumber the codes again now that they are split into 15455classes (environment, programmer, AML code, ACPI table, and 15456internal). 15457 15458Fixed some additional alignment issues in the Resource Manager 15459subcomponent 15460 15461Implemented semaphore tracking in the AcpiExec utility, and fixed 15462several places where mutexes/semaphores were being unlocked 15463without a corresponding lock operation. There are no known 15464semaphore or mutex "leaks" at this time. 15465 15466Fixed the case where an ASL Return operator is used to return an 15467unnamed package. 15468 15469------------------------------------------- 15470Summary of changes for this label: 07_28_00 15471 15472Fixed a problem with the way addresses were calculated in 15473AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 15474manifested itself when a Field was created with WordAccess or 15475DwordAccess, but the field unit defined within the Field was less 15476 15477than a Word or Dword. 15478 15479Fixed a problem in AmlDumpOperands() module's loop to pull 15480operands off of the operand stack to display information. The 15481problem manifested itself as a TLB error on 64-bit systems when 15482accessing an operand stack with two or more operands. 15483 15484Fixed a problem with the PCI configuration space handlers where 15485context was getting confused between accesses. This required a 15486change to the generic address space handler and address space 15487setup definitions. Handlers now get both a global handler context 15488(this is the one passed in by the user when executing 15489AcpiInstallAddressSpaceHandler() and a specific region context 15490that is unique to each region (For example, the _ADR, _SEG and 15491_BBN values associated with a specific region). The generic 15492function definitions have changed to the following: 15493 15494typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 15495UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 15496*HandlerContext, // This used to be void *Context void 15497*RegionContext); // This is an additional parameter 15498 15499typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 15500RegionHandle, UINT32 Function, void *HandlerContext, void 15501**RegionContext); // This used to be **ReturnContext 15502 15503------------------------------------------- 15504Summary of changes for this label: 07_21_00 15505 15506Major file consolidation and rename. All files within the 15507interpreter have been renamed as well as most header files. This 15508was done to prevent collisions with existing files in the host 15509OSs -- filenames such as "config.h" and "global.h" seem to be 15510quite common. The VC project files have been updated. All 15511makefiles will require modification. 15512 15513The parser/interpreter integration continues in Phase 5 with the 15514implementation of a complete 2-pass parse (the AML is parsed 15515twice) for each table; This avoids the construction of a huge 15516parse tree and therefore reduces the amount of dynamic memory 15517required by the subsystem. Greater use of the parse object cache 15518means that performance is unaffected. 15519 15520Many comments from the two code reviews have been rolled in. 15521 15522The 64-bit alignment support is complete. 15523 15524------------------------------------------- 15525Summary of changes for this label: 06_30_00 15526 15527With a nod and a tip of the hat to the technology of yesteryear, 15528we've added support in the source code for 80 column output 15529devices. The code is now mostly constrained to 80 columns or 15530less to support environments and editors that 1) cannot display 15531or print more than 80 characters on a single line, and 2) cannot 15532disable line wrapping. 15533 15534A major restructuring of the namespace data structure has been 15535completed. The result is 1) cleaner and more 15536understandable/maintainable code, and 2) a significant reduction 15537in the dynamic memory requirement for each named ACPI object 15538(almost half). 15539 15540------------------------------------------- 15541Summary of changes for this label: 06_23_00 15542 15543Linux support has been added. In order to obtain approval to get 15544the ACPI CA subsystem into the Linux kernel, we've had to make 15545quite a few changes to the base subsystem that will affect all 15546users (all the changes are generic and OS- independent). The 15547effects of these global changes have been somewhat far reaching. 15548Files have been merged and/or renamed and interfaces have been 15549renamed. The major changes are described below. 15550 15551Osd* interfaces renamed to AcpiOs* to eliminate namespace 15552pollution/confusion within our target kernels. All OSD 15553interfaces must be modified to match the new naming convention. 15554 15555Files merged across the subsystem. A number of the smaller source 15556and header files have been merged to reduce the file count and 15557increase the density of the existing files. There are too many 15558to list here. In general, makefiles that call out individual 15559files will require rebuilding. 15560 15561Interpreter files renamed. All interpreter files now have the 15562prefix am* instead of ie* and is*. 15563 15564Header files renamed: The acapi.h file is now acpixf.h. The 15565acpiosd.h file is now acpiosxf.h. We are removing references to 15566the acronym "API" since it is somewhat windowsy. The new name is 15567"external interface" or xface or xf in the filenames.j 15568 15569 15570All manifest constants have been forced to upper case (some were 15571mixed case.) Also, the string "ACPI_" has been prepended to many 15572(not all) of the constants, typedefs, and structs. 15573 15574The globals "DebugLevel" and "DebugLayer" have been renamed 15575"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 15576 15577All other globals within the subsystem are now prefixed with 15578"AcpiGbl_" Internal procedures within the subsystem are now 15579prefixed with "Acpi" (with only a few exceptions). The original 15580two-letter abbreviation for the subcomponent remains after "Acpi" 15581- for example, CmCallocate became AcpiCmCallocate. 15582 15583Added a source code translation/conversion utility. Used to 15584generate the Linux source code, it can be modified to generate 15585other types of source as well. Can also be used to cleanup 15586existing source by removing extraneous spaces and blank lines. 15587Found in tools/acpisrc/* 15588 15589OsdUnMapMemory was renamed to OsdUnmapMemory and then 15590AcpiOsUnmapMemory. (UnMap became Unmap). 15591 15592A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 15593When set to one, this indicates that the caller wants to use the 15594 15595semaphore as a mutex, not a counting semaphore. ACPI CA uses 15596both types. However, implementers of this call may want to use 15597different OS primitives depending on the type of semaphore 15598requested. For example, some operating systems provide separate 15599 15600"mutex" and "semaphore" interfaces - where the mutex interface is 15601much faster because it doesn't have all the overhead of a full 15602semaphore implementation. 15603 15604Fixed a deadlock problem where a method that accesses the PCI 15605address space can block forever if it is the first access to the 15606space. 15607 15608------------------------------------------- 15609Summary of changes for this label: 06_02_00 15610 15611Support for environments that cannot handle unaligned data 15612accesses (e.g. firmware and OS environments devoid of alignment 15613handler technology namely SAL/EFI and the IA-64 Linux kernel) has 15614been added (via configurable macros) in these three areas: - 15615Transfer of data from the raw AML byte stream is done via byte 15616moves instead of word/dword/qword moves. - External objects are 15617aligned within the user buffer, including package elements (sub- 15618objects). - Conversion of name strings to UINT32 Acpi Names is now 15619done byte-wise. 15620 15621The Store operator was modified to mimic Microsoft's 15622implementation when storing to a Buffer Field. 15623 15624Added a check of the BM_STS bit before entering C3. 15625 15626The methods subdirectory has been obsoleted and removed. A new 15627file, cmeval.c subsumes the functionality. 15628 15629A 16-bit (DOS) version of AcpiExec has been developed. The 15630makefile is under the acpiexec directory. 15631