1117521Snjl---------------------------------------- 2284460Sjkim08 April 2015. Summary of changes for version 20150515: 3284460Sjkim 4284460SjkimThis release implements most of ACPI 6.0 as described below. 5284460Sjkim 6284460Sjkim1) ACPICA kernel-resident subsystem: 7284460Sjkim 8284460SjkimImplemented runtime argument checking and return value checking for all 9284460Sjkimnew ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 10284460Sjkim_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 11284460Sjkim 12284460SjkimExample Code and Data Size: These are the sizes for the OS-independent 13284460Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 14284460Sjkimdebug version of the code includes the debug output trace mechanism and 15284460Sjkimhas a much larger code and data size. 16284460Sjkim 17284460Sjkim Current Release: 18284460Sjkim Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 19284460Sjkim Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 20284460Sjkim Previous Release: 21284460Sjkim Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 22284460Sjkim Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 23284460Sjkim 24284460Sjkim 25284460Sjkim2) iASL Compiler/Disassembler and Tools: 26284460Sjkim 27284460SjkimiASL compiler: Added compile-time support for all new ACPI 6.0 predefined 28284460Sjkimnames (argument count validation and return value typechecking.) 29284460Sjkim 30284460SjkimiASL disassembler and table compiler: implemented support for all new 31284460SjkimACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 32284460Sjkim 33284460SjkimiASL disassembler and table compiler: Added ACPI 6.0 changes to existing 34284460Sjkimtables: FADT, MADT. 35284460Sjkim 36284460SjkimiASL preprocessor: Added a new directive to enable inclusion of binary 37284460Sjkimblobs into ASL code. The new directive is #includebinary. It takes a 38284460Sjkimbinary file as input and emits a named ascii buffer object into the ASL 39284460Sjkimcode. 40284460Sjkim 41284460SjkimAcpiHelp: Added support for all new ACPI 6.0 predefined names. 42284460Sjkim 43284460SjkimAcpiHelp: Added a new option, -d, to display all iASL preprocessor 44284460Sjkimdirectives. 45284460Sjkim 46284460SjkimAcpiHelp: Added a new option, -t, to display all known/supported ACPI 47284460Sjkimtables. 48284460Sjkim 49284460Sjkim---------------------------------------- 50281687Sjkim10 April 2015. Summary of changes for version 20150410: 51281687Sjkim 52281687SjkimReverted a change introduced in version 20150408 that caused 53281687Sjkima regression in the disassembler where incorrect operator 54281687Sjkimsymbols could be emitted. 55281687Sjkim 56281687Sjkim---------------------------------------- 57281687Sjkim08 April 2015. Summary of changes for version 20150408: 58281687Sjkim 59281687Sjkim 60281687Sjkim1) ACPICA kernel-resident subsystem: 61281687Sjkim 62281687SjkimPermanently set the return value for the _REV predefined name. It now 63281687Sjkimreturns 2 (was 5). This matches other ACPI implementations. _REV will be 64281687Sjkimdeprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 65281687Sjkimfor ACPI 2.0 and later. It should never be used to differentiate or 66281687Sjkimidentify operating systems. 67281687Sjkim 68281687SjkimAdded the "Windows 2015" string to the _OSI support. ACPICA will now 69281687Sjkimreturn TRUE to a query with this string. 70281687Sjkim 71281687SjkimFixed several issues with the local version of the printf function. 72281687Sjkim 73281687SjkimAdded the C99 compiler option (-std=c99) to the Unix makefiles. 74281687Sjkim 75281687Sjkim Current Release: 76281687Sjkim Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 77281687Sjkim Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 78281687Sjkim Previous Release: 79281687Sjkim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 80281687Sjkim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 81281687Sjkim 82281687Sjkim 83281687Sjkim2) iASL Compiler/Disassembler and Tools: 84281687Sjkim 85281687SjkimiASL: Implemented an enhancement to the constant folding feature to 86281687Sjkimtransform the parse tree to a simple Store operation whenever possible: 87281687Sjkim Add (2, 3, X) ==> is converted to: Store (5, X) 88281687Sjkim X = 2 + 3 ==> is converted to: Store (5, X) 89281687Sjkim 90281687SjkimUpdated support for the SLIC table (Software Licensing Description Table) 91281687Sjkimin both the Data Table compiler and the disassembler. The SLIC table 92281687Sjkimsupport now conforms to "Microsoft Software Licensing Tables (SLIC and 93281687SjkimMSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 94281687Sjkimfollowing the ACPI header is now defined to be "Proprietary Data", and as 95281687Sjkimsuch, can only be entered or displayed as a hex data block. 96281687Sjkim 97281687SjkimImplemented full support for the MSDM table as described in the document 98281687Sjkimabove. Note: The format of MSDM is similar to SLIC. Any MSDM data 99281687Sjkimfollowing the ACPI header is defined to be "Proprietary Data", and can 100281687Sjkimonly be entered or displayed as a hex data block. 101281687Sjkim 102281687SjkimImplemented the -Pn option for the iASL Table Compiler (was only 103281687Sjkimimplemented for the ASL compiler). This option disables the iASL 104281687Sjkimpreprocessor. 105281687Sjkim 106281687SjkimDisassembler: For disassembly of Data Tables, added a comment field 107281687Sjkimaround the Ascii equivalent data that is emitted as part of the "Raw 108281687SjkimTable Data" block. This prevents the iASL Preprocessor from possible 109281687Sjkimconfusion if/when the table is compiled. 110281687Sjkim 111281687SjkimDisassembler: Added an option (-df) to force the disassembler to assume 112281687Sjkimthat the table being disassembled contains valid AML. This feature is 113281687Sjkimuseful for disassembling AML files that contain ACPI signatures other 114281687Sjkimthan DSDT or SSDT (such as OEMx or other signatures). 115281687Sjkim 116281687SjkimChanges for the EFI version of the tools: 117281687Sjkim1) Fixed a build error/issue 118281687Sjkim2) Fixed a cast warning 119281687Sjkim 120281687SjkimiASL: Fixed a path issue with the __FILE__ operator by making the 121281687Sjkimdirectory prefix optional within the internal SplitInputFilename 122281687Sjkimfunction. 123281687Sjkim 124281687SjkimDebugger: Removed some unused global variables. 125281687Sjkim 126281687SjkimTests: Updated the makefile for proper generation of the AAPITS suite. 127281687Sjkim 128281687Sjkim---------------------------------------- 129281075Sdim04 February 2015. Summary of changes for version 20150204: 130281075Sdim 131281075SdimACPICA kernel-resident subsystem: 132281075Sdim 133281075SdimUpdated all ACPICA copyrights and signons to 2014. Added the 2014 134281075Sdimcopyright to all module headers and signons, including the standard Linux 135281075Sdimheader. This affects virtually every file in the ACPICA core subsystem, 136281075SdimiASL compiler, all ACPICA utilities, and the test suites. 137281075Sdim 138281075SdimEvents: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 139281075SdimA raw gpe handling mechanism was created to allow better handling of GPE 140281075Sdimstorms that aren't easily managed by the normal handler. The raw handler 141281075Sdimallows disabling/renabling of the the GPE so that interrupt storms can be 142281687Sjkimavoided in cases where events cannot be timely serviced. In this 143281687Sjkimscenario, handlers should use the AcpiSetGpe() API to disable/enable the 144281687SjkimGPE. This API will leave the reference counts undisturbed, thereby 145281687Sjkimpreventing unintentional clearing of the GPE when the intent in only to 146281687Sjkimtemporarily disable it. Raw handlers allow enabling and disabling of a 147281687SjkimGPE by removing GPE register locking. As such, raw handlers much provide 148281687Sjkimtheir own locks while using GPE API's to protect access to GPE data 149281687Sjkimstructures. 150281075SdimLv Zheng 151281075Sdim 152281075SdimEvents: Always modify GPE registers under the GPE lock. 153281075SdimApplies GPE lock around AcpiFinishGpe() to protect access to GPE register 154281075Sdimvalues. Reported as bug by joe.liu@apple.com. 155281075Sdim 156281687SjkimUnix makefiles: Separate option to disable optimizations and 157281687Sjkim_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 158281687SjkimNOOPT disable option and creates a separate flag (NOFORTIFY) for this 159281687Sjkimpurpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 160281687Sjkimerrors when building ACPICA. This allows disabling the option without 161281687Sjkimalso having to disable optimazations. 162281075SdimDavid Box 163281075Sdim 164281075Sdim Current Release: 165281075Sdim Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 166281075Sdim Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 167281075Sdim 168281075Sdim---------------------------------------- 169281075Sdim07 November 2014. Summary of changes for version 20141107: 170281075Sdim 171281075SdimThis release is available at https://acpica.org/downloads 172281075Sdim 173281075SdimThis release introduces and implements language extensions to ASL that 174281075Sdimprovide support for symbolic ("C-style") operators and expressions. These 175281075Sdimlanguage extensions are known collectively as ASL+. 176281075Sdim 177281075Sdim 178281075Sdim1) iASL Compiler/Disassembler and Tools: 179281075Sdim 180281075SdimDisassembler: Fixed a problem with disassembly of the UartSerialBus 181281075Sdimmacro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 182281075SdimBox. 183281075Sdim 184281075SdimDisassembler: Fixed the Unicode macro support to add escape sequences. 185281075SdimAll non-printable ASCII values are emitted as escape sequences, as well 186281075Sdimas the standard escapes for quote and backslash. Ensures that the 187281075Sdimdisassembled macro can be correctly recompiled. 188281075Sdim 189281075SdimiASL: Added Printf/Fprintf macros for formatted output. These macros are 190281075Sdimtranslated to existing AML Concatenate and Store operations. Printf 191281075Sdimwrites to the ASL Debug object. Fprintf allows the specification of an 192281075SdimASL name as the target. Only a single format specifier is required, %o, 193281075Sdimsince the AML interpreter dynamically converts objects to the required 194281075Sdimtype. David E. Box. 195281075Sdim 196281075Sdim (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 197281075Sdim (Concatenate (Concatenate (Concatenate ("", Arg0), 198281075Sdim ": Unexpected value for "), Arg1), ", "), Arg2), 199281075Sdim " at line "), Arg3), Debug) 200281075Sdim 201281075Sdim (new) Printf ("%o: Unexpected value for %o, %o at line %o", 202281075Sdim Arg0, Arg1, Arg2, Arg3) 203281075Sdim 204281075Sdim (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 205281075Sdim ("", Arg1), ": "), Arg0), " Successful"), STR1) 206281075Sdim 207281075Sdim (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 208281075Sdim 209281075SdimiASL: Added debug options (-bp, -bt) to dynamically prune levels of the 210281075SdimASL parse tree before the AML code is generated. This allows blocks of 211281075SdimASL code to be removed in order to help locate and identify problem 212281075Sdimdevices and/or code. David E. Box. 213281075Sdim 214281075SdimAcpiExec: Added support (-fi) for an optional namespace object 215281075Sdiminitialization file. This file specifies initial values for namespace 216281075Sdimobjects as necessary for debugging and testing different ASL code paths 217281075Sdimthat may be taken as a result of BIOS options. 218281075Sdim 219281075Sdim 220281075Sdim2) Overview of symbolic operator support for ASL (ASL+) 221281075Sdim------------------------------------------------------- 222281075Sdim 223281075SdimAs an extension to the ASL language, iASL implements support for symbolic 224281075Sdim(C-style) operators for math and logical expressions. This can greatly 225281075Sdimsimplify ASL code as well as improve both readability and 226281075Sdimmaintainability. These language extensions can exist concurrently with 227281075Sdimall legacy ASL code and expressions. 228281075Sdim 229281075SdimThe symbolic extensions are 100% compatible with existing AML 230281075Sdiminterpreters, since no new AML opcodes are created. To implement the 231281075Sdimextensions, the iASL compiler transforms the symbolic expressions into 232281075Sdimthe legacy ASL/AML equivalents at compile time. 233281075Sdim 234281075SdimFull symbolic expressions are supported, along with the standard C 235281075Sdimprecedence and associativity rules. 236281075Sdim 237281075SdimFull disassembler support for the symbolic expressions is provided, and 238281075Sdimcreates an automatic migration path for existing ASL code to ASL+ code 239281075Sdimvia the disassembly process. By default, the disassembler now emits ASL+ 240281075Sdimcode with symbolic expressions. An option (-dl) is provided to force the 241281075Sdimdisassembler to emit legacy ASL code if desired. 242281075Sdim 243281075SdimBelow is the complete list of the currently supported symbolic operators 244281075Sdimwith examples. See the iASL User Guide for additional information. 245281075Sdim 246281075Sdim 247281075SdimASL+ Syntax Legacy ASL Equivalent 248281075Sdim----------- --------------------- 249281075Sdim 250281075Sdim // Math operators 251281075Sdim 252281075SdimZ = X + Y Add (X, Y, Z) 253281075SdimZ = X - Y Subtract (X, Y, Z) 254281075SdimZ = X * Y Multiply (X, Y, Z) 255281075SdimZ = X / Y Divide (X, Y, , Z) 256281075SdimZ = X % Y Mod (X, Y, Z) 257281075SdimZ = X << Y ShiftLeft (X, Y, Z) 258281075SdimZ = X >> Y ShiftRight (X, Y, Z) 259281075SdimZ = X & Y And (X, Y, Z) 260281075SdimZ = X | Y Or (X, Y, Z) 261281075SdimZ = X ^ Y Xor (X, Y, Z) 262281075SdimZ = ~X Not (X, Z) 263281075SdimX++ Increment (X) 264281075SdimX-- Decrement (X) 265281075Sdim 266281075Sdim // Logical operators 267281075Sdim 268281075Sdim(X == Y) LEqual (X, Y) 269281075Sdim(X != Y) LNotEqual (X, Y) 270281075Sdim(X < Y) LLess (X, Y) 271281075Sdim(X > Y) LGreater (X, Y) 272281075Sdim(X <= Y) LLessEqual (X, Y) 273281075Sdim(X >= Y) LGreaterEqual (X, Y) 274281075Sdim(X && Y) LAnd (X, Y) 275281075Sdim(X || Y) LOr (X, Y) 276281075Sdim(!X) LNot (X) 277281075Sdim 278281075Sdim // Assignment and compound assignment operations 279281075Sdim 280281075SdimX = Y Store (Y, X) 281281075SdimX += Y Add (X, Y, X) 282281075SdimX -= Y Subtract (X, Y, X) 283281075SdimX *= Y Multiply (X, Y, X) 284281075SdimX /= Y Divide (X, Y, , X) 285281075SdimX %= Y Mod (X, Y, X) 286281075SdimX <<= Y ShiftLeft (X, Y, X) 287281075SdimX >>= Y ShiftRight (X, Y, X) 288281075SdimX &= Y And (X, Y, X) 289281075SdimX |= Y Or (X, Y, X) 290281075SdimX ^= Y Xor (X, Y, X) 291281075Sdim 292281075Sdim 293281075Sdim3) ASL+ Examples: 294281075Sdim----------------- 295281075Sdim 296281075SdimLegacy ASL: 297281075Sdim If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 298281075Sdim And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 299281075Sdim0x03FB), 300281075Sdim 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 301281075Sdim { 302281075Sdim And (MEMB, 0xFFFFFFF0, SRMB) 303281075Sdim Store (MEMB, Local2) 304281075Sdim Store (PDBM, Local1) 305281075Sdim And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 306281075Sdim Store (SRMB, MEMB) 307281075Sdim Or (PDBM, 0x02, PDBM) 308281075Sdim } 309281075Sdim 310281075SdimASL+ version: 311281075Sdim If (((R510 & 0x03FB) == 0x02E0) || 312281075Sdim ((R520 & 0x03FB) == 0x02E0) || 313281075Sdim ((R530 & 0x03FB) == 0x02E0) || 314281075Sdim ((R540 & 0x03FB) == 0x02E0)) 315281075Sdim { 316281075Sdim SRMB = (MEMB & 0xFFFFFFF0) 317281075Sdim Local2 = MEMB 318281075Sdim Local1 = PDBM 319281075Sdim PDBM &= 0xFFFFFFFFFFFFFFF9 320281075Sdim MEMB = SRMB 321281075Sdim PDBM |= 0x02 322281075Sdim } 323281075Sdim 324281075SdimLegacy ASL: 325281075Sdim Store (0x1234, Local1) 326281075Sdim Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 327281075Sdim Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 328281075Sdim Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 329281075Sdim Store (Index (PKG1, 0x03), Local6) 330281075Sdim Store (Add (Local3, Local2), Debug) 331281075Sdim Add (Local1, 0x0F, Local2) 332281075Sdim Add (Local1, Multiply (Local2, Local3), Local2) 333281075Sdim Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 334281075Sdim 335281075SdimASL+ version: 336281075Sdim Local1 = 0x1234 337281075Sdim Local3 = (((Local1 + TEST) + 0x20) * Local2) 338281075Sdim Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 339281075Sdim Local3 = (Local1 + (TEST + (0x20 * Local2))) 340281075Sdim Local6 = Index (PKG1, 0x03) 341281075Sdim Debug = (Local3 + Local2) 342281075Sdim Local2 = (Local1 + 0x0F) 343281075Sdim Local2 = (Local1 + (Local2 * Local3)) 344281075Sdim Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 345281075Sdim 346281075Sdim 347281075Sdim---------------------------------------- 348281075Sdim26 September 2014. Summary of changes for version 20140926: 349281075Sdim 350281075Sdim1) ACPICA kernel-resident subsystem: 351281075Sdim 352281075SdimUpdated the GPIO operation region handler interface (GeneralPurposeIo). 353281075SdimIn order to support GPIO Connection objects with multiple pins, along 354281075Sdimwith the related Field objects, the following changes to the interface 355281075Sdimhave been made: The Address is now defined to be the offset in bits of 356281075Sdimthe field unit from the previous invocation of a Connection. It can be 357281075Sdimviewed as a "Pin Number Index" into the connection resource descriptor. 358281075SdimThe BitWidth is the exact bit width of the field. It is usually one bit, 359281075Sdimbut not always. See the ACPICA reference guide (section 8.8.6.2.1) for 360281075Sdimadditional information and examples. 361281075Sdim 362281075SdimGPE support: During ACPICA/GPE initialization, ensure that all GPEs with 363281075Sdimcorresponding _Lxx/_Exx methods are disabled (they may have been enabled 364281075Sdimby the firmware), so that they cannot fire until they are enabled via 365281075SdimAcpiUpdateAllGpes. Rafael J. Wysocki. 366281075Sdim 367281075SdimAdded a new return flag for the Event/GPE status interfaces -- 368281075SdimAcpiGetEventStatus and AcpiGetGpeStatus. The new 369281075SdimACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 370281075SdimGPE currently has a handler associated with it, and can thus actually 371281075Sdimaffect the system. Lv Zheng. 372281075Sdim 373281075SdimExample Code and Data Size: These are the sizes for the OS-independent 374281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 375281075Sdimdebug version of the code includes the debug output trace mechanism and 376281075Sdimhas a much larger code and data size. 377281075Sdim 378281075Sdim Current Release: 379281075Sdim Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 380281075Sdim Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 381281075Sdim Previous Release: 382281075Sdim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 383281075Sdim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 384281075Sdim 385281075Sdim2) iASL Compiler/Disassembler and Tools: 386281075Sdim 387281075SdimiASL: Fixed a memory allocation/free regression introduced in 20140828 388281075Sdimthat could cause the compiler to crash. This was introduced inadvertently 389281075Sdimduring the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 390281075Sdim1113. 391281075Sdim 392281075SdimiASL: Removed two error messages that have been found to create false 393281075Sdimpositives, until they can be fixed and fully validated (ACPICA BZ 1112): 394281075Sdim1) Illegal forward reference within a method 395281075Sdim2) Illegal reference across two methods 396281075Sdim 397281075SdimiASL: Implemented a new option (-lm) to create a hardware mapping file 398281075Sdimthat summarizes all GPIO, I2C, SPI, and UART connections. This option 399281075Sdimworks for both the compiler and disassembler. See the iASL compiler user 400281075Sdimguide for additional information and examples (section 6.4.6). 401281075Sdim 402281075SdimAcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 403281075Sdimversion 2. This corrects the AE_BAD_HEADER exception seen on systems with 404281075Sdima version 1 RSDP. Lv Zheng ACPICA BZ 1097. 405281075Sdim 406281075SdimAcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 407281075Sdimunless STDIN is actually a terminal. Assists with batch-mode processing. 408281075SdimACPICA BZ 1114. 409281075Sdim 410281075SdimDisassembler/AcpiHelp: Added another large group of recognized _HID 411281075Sdimvalues. 412281075Sdim 413281075Sdim 414281075Sdim---------------------------------------- 415281075Sdim28 August 2014. Summary of changes for version 20140828: 416281075Sdim 417281075Sdim1) ACPICA kernel-resident subsystem: 418281075Sdim 419281075SdimFixed a problem related to the internal use of the Timer() operator where 420281075Sdima 64-bit divide could cause an attempted link to a double-precision math 421281075Sdimlibrary. This divide is not actually necessary, so the code was 422281075Sdimrestructured to eliminate it. Lv Zheng. 423281075Sdim 424281075SdimACPI 5.1: Added support for the runtime validation of the _DSD package 425281075Sdim(similar to the iASL support). 426281075Sdim 427281075SdimACPI 5.1/Headers: Added support for the GICC affinity subtable to the 428281075SdimSRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 429281075Sdim 430281075SdimExample Code and Data Size: These are the sizes for the OS-independent 431281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 432281075Sdimdebug version of the code includes the debug output trace mechanism and 433281075Sdimhas a much larger code and data size. 434281075Sdim 435281075Sdim Current Release: 436281075Sdim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 437281075Sdim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 438281075Sdim Previous Release: 439281075Sdim Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 440281075Sdim Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 441281075Sdim 442281075Sdim2) iASL Compiler/Disassembler and Tools: 443281075Sdim 444281075SdimAcpiExec: Fixed a problem on unix systems where the original terminal 445281075Sdimstate was not always properly restored upon exit. Seen when using the -v 446281075Sdimoption. ACPICA BZ 1104. 447281075Sdim 448281075SdimiASL: Fixed a problem with the validation of the ranges/length within the 449281075SdimMemory24 resource descriptor. There was a boundary condition when the 450281075Sdimrange was equal to the (length -1) caused by the fact that these values 451281075Sdimare defined in 256-byte blocks, not bytes. ACPICA BZ 1098 452281075Sdim 453281075SdimDisassembler: Fixed a problem with the GpioInt descriptor interrupt 454281075Sdimpolarity 455281075Sdimflags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 456281075Sdimis 457281075Sdimnow supported properly. 458281075Sdim 459281075SdimACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 460281075Sdimin the disassembler, data table compiler, and table template generator. 461281075Sdim 462281075SdimiASL: Added a requirement for Device() objects that one of either a _HID 463281075Sdimor _ADR must exist within the scope of a Device, as per the ACPI 464281075Sdimspecification. Remove a similar requirement that was incorrectly in place 465281075Sdimfor the _DSD object. 466281075Sdim 467281075SdimiASL: Added error detection for illegal named references within control 468281075Sdimmethods that would cause runtime failures. Now trapped as errors are: 1) 469281075SdimReferences to objects within a non-parent control method. 2) Forward 470281075Sdimreferences (within a method) -- for control methods, AML interpreters use 471281075Sdima one-pass parse of control methods. ACPICA BZ 1008. 472281075Sdim 473281075SdimiASL: Added error checking for dependencies related to the _PSx power 474281075Sdimmethods. ACPICA BZ 1029. 475281075Sdim1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 476281075Sdim_PS3. 477281075Sdim2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 478281075Sdimscope. 479281075Sdim 480281075SdimiASL and table compiler: Cleanup miscellaneous memory leaks by fully 481281075Sdimdeploying the existing object and string caches and adding new caches for 482281075Sdimthe table compiler. 483281075Sdim 484281075SdimiASL: Split the huge parser source file into multiple subfiles to improve 485281075Sdimmanageability. Generation now requires the M4 macro preprocessor, which 486281075Sdimis part of the Bison distribution on both unix and windows platforms. 487281075Sdim 488281075SdimAcpiSrc: Fixed and removed all extraneous warnings generated during 489281075Sdimentire ACPICA source code scan and/or conversion. 490281075Sdim 491281075Sdim 492281075Sdim---------------------------------------- 493281075Sdim 494281075Sdim24 July 2014. Summary of changes for version 20140724: 495281075Sdim 496281075SdimThe ACPI 5.1 specification has been released and is available at: 497281075Sdimhttp://uefi.org/specs/access 498281075Sdim 499281075Sdim 500281075Sdim0) ACPI 5.1 support in ACPICA: 501281075Sdim 502281075SdimACPI 5.1 is fully supported in ACPICA as of this release. 503281075Sdim 504281075SdimNew predefined names. Support includes iASL and runtime ACPICA 505281075Sdimvalidation. 506281075Sdim _CCA (Cache Coherency Attribute). 507281075Sdim _DSD (Device-Specific Data). David Box. 508281075Sdim 509281075SdimModifications to existing ACPI tables. Support includes headers, iASL 510281075SdimData Table compiler, disassembler, and the template generator. 511281075Sdim FADT - New fields and flags. Graeme Gregory. 512281075Sdim GTDT - One new subtable and new fields. Tomasz Nowicki. 513281075Sdim MADT - Two new subtables. Tomasz Nowicki. 514281075Sdim PCCT - One new subtable. 515281075Sdim 516281075SdimMiscellaneous. 517281075Sdim New notification type for System Resource Affinity change events. 518281075Sdim 519281075Sdim 520281075Sdim1) ACPICA kernel-resident subsystem: 521281075Sdim 522281075SdimFixed a regression introduced in 20140627 where a fault can happen during 523281075Sdimthe deletion of Alias AML namespace objects. The problem affected both 524281075Sdimthe core ACPICA and the ACPICA tools including iASL and AcpiExec. 525281075Sdim 526281075SdimImplemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 527281075Sdimsimple mechanism to enable wake GPEs that have no associated handler or 528281075Sdimcontrol method. Rafael Wysocki. 529281075Sdim 530281075SdimUpdated the AcpiEnableGpe interface to disallow the enable if there is no 531281075Sdimhandler or control method associated with the particular GPE. This will 532281075Sdimhelp avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 533281075Sdim 534281075SdimUpdated GPE handling and dispatch by disabling the GPE before clearing 535281075Sdimthe status bit for edge-triggered GPEs. Lv Zheng. 536281075Sdim 537281075SdimAdded Timer() support to the AML Debug object. The current timer value is 538281075Sdimnow displayed with each invocation of (Store to) the debug object to 539281075Sdimenable simple generation of execution times for AML code (method 540281075Sdimexecution for example.) ACPICA BZ 1093. 541281075Sdim 542281075SdimExample Code and Data Size: These are the sizes for the OS-independent 543281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 544281075Sdimdebug version of the code includes the debug output trace mechanism and 545281075Sdimhas a much larger code and data size. 546281075Sdim 547281075Sdim Current Release: 548281075Sdim Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 549281075Sdim Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 550281075Sdim Previous Release: 551281075Sdim Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 552281075Sdim Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 553281075Sdim 554281075Sdim 555281075Sdim2) iASL Compiler/Disassembler and Tools: 556281075Sdim 557281075SdimFixed an issue with the recently added local printf implementation, 558281075Sdimconcerning width/precision specifiers that could cause incorrect output. 559281075SdimLv Zheng. ACPICA BZ 1094. 560281075Sdim 561281075SdimDisassembler: Added support to detect buffers that contain UUIDs and 562281075Sdimdisassemble them to an invocation of the ToUUID operator. Also emit 563281075Sdimcommented descriptions of known ACPI-related UUIDs. 564281075Sdim 565281075SdimAcpiHelp: Added support to display known ACPI-related UUIDs. New option, 566281075Sdim-u. Adds three new files. 567281075Sdim 568281075SdimiASL: Update table compiler and disassembler for DMAR table changes that 569281075Sdimwere introduced in September 2013. With assistance by David Woodhouse. 570281075Sdim 571281075Sdim---------------------------------------- 572281075Sdim27 June 2014. Summary of changes for version 20140627: 573281075Sdim 574281075Sdim1) ACPICA kernel-resident subsystem: 575281075Sdim 576281075SdimFormatted Output: Implemented local versions of standard formatted output 577281075Sdimutilities such as printf, etc. Over time, it has been discovered that 578281075Sdimthere are in fact many portability issues with printf, and the addition 579281075Sdimof this feature will fix/prevent these issues once and for all. Some 580281075Sdimknown issues are summarized below: 581281075Sdim 582281075Sdim1) Output of 64-bit values is not portable. For example, UINT64 is %ull 583281075Sdimfor the Linux kernel and is %uI64 for some MSVC versions. 584281075Sdim2) Invoking printf consistently in a manner that is portable across both 585281075Sdim32-bit and 64-bit platforms is difficult at best in many situations. 586281075Sdim3) The output format for pointers varies from system to system (leading 587281075Sdimzeros especially), and leads to inconsistent output from ACPICA across 588281075Sdimplatforms. 589281075Sdim4) Certain platform-specific printf formats may conflict with ACPICA use. 590281075Sdim5) If there is no local C library available, ACPICA now has local support 591281075Sdimfor printf. 592281075Sdim 593281075Sdim-- To address these printf issues in a complete manner, ACPICA now 594281075Sdimdirectly implements a small subset of printf format specifiers, only 595281075Sdimthose that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 596281075Sdim 597281075SdimImplemented support for ACPICA generation within the EFI environment. 598281075SdimInitially, the AcpiDump utility is supported in the UEFI shell 599281075Sdimenvironment. Lv Zheng. 600281075Sdim 601281075SdimAdded a new external interface, AcpiLogError, to improve ACPICA 602281075Sdimportability. This allows the host to redirect error messages from the 603281075SdimACPICA utilities. Lv Zheng. 604281075Sdim 605281075SdimAdded and deployed new OSL file I/O interfaces to improve ACPICA 606281075Sdimportability: 607281075Sdim AcpiOsOpenFile 608281075Sdim AcpiOsCloseFile 609281075Sdim AcpiOsReadFile 610281075Sdim AcpiOsWriteFile 611281075Sdim AcpiOsGetFileOffset 612281075Sdim AcpiOsSetFileOffset 613281075SdimThere are C library implementations of these functions in the new file 614281075Sdimservice_layers/oslibcfs.c -- however, the functions can be implemented by 615281075Sdimthe local host in any way necessary. Lv Zheng. 616281075Sdim 617281075SdimImplemented a mechanism to disable/enable ACPI table checksum validation 618281075Sdimat runtime. This can be useful when loading tables very early during OS 619281075Sdiminitialization when it may not be possible to map the entire table in 620281075Sdimorder to compute the checksum. Lv Zheng. 621281075Sdim 622281075SdimFixed a buffer allocation issue for the Generic Serial Bus support. 623281075SdimOriginally, a fixed buffer length was used. This change allows for 624281075Sdimvariable-length buffers based upon the protocol indicated by the field 625281075Sdimaccess attributes. Reported by Lan Tianyu. Lv Zheng. 626281075Sdim 627281075SdimFixed a problem where an object detached from a namespace node was not 628281075Sdimproperly terminated/cleared and could cause a circular list problem if 629281075Sdimreattached. ACPICA BZ 1063. David Box. 630281075Sdim 631281075SdimFixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 632281075Sdim 633281075SdimFixed a possible memory leak in an error return path within the function 634281075SdimAcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 635281075Sdim 636281075SdimExample Code and Data Size: These are the sizes for the OS-independent 637281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 638281075Sdimdebug version of the code includes the debug output trace mechanism and 639281075Sdimhas a much larger code and data size. 640281075Sdim 641281075Sdim Current Release: 642281075Sdim Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 643281075Sdim Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 644281075Sdim Previous Release: 645281075Sdim Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 646281075Sdim Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 647281075Sdim 648281075Sdim 649281075Sdim2) iASL Compiler/Disassembler and Tools: 650281075Sdim 651281075SdimDisassembler: Add dump of ASCII equivalent text within a comment at the 652281075Sdimend of each line of the output for the Buffer() ASL operator. 653281075Sdim 654281075SdimAcpiDump: Miscellaneous changes: 655281075Sdim Fixed repetitive table dump in -n mode. 656281075Sdim For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 657281075Sdimthe ACPI 2.0 GUID fails. 658281075Sdim 659281075SdimiASL: Fixed a problem where the compiler could fault if incorrectly given 660281075Sdiman acpidump output file as input. ACPICA BZ 1088. David Box. 661281075Sdim 662281075SdimAcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 663281075Sdimthey are invoked without any arguments. 664281075Sdim 665281075SdimDebugger: Fixed a possible memory leak in an error return path. ACPICA BZ 666281075Sdim1086. Colin Ian King. 667281075Sdim 668281075SdimDisassembler: Cleaned up a block of code that extracts a parent Op 669281075Sdimobject. Added a comment that explains that the parent is guaranteed to be 670281075Sdimvalid in this case. ACPICA BZ 1069. 671281075Sdim 672281075Sdim---------------------------------------- 673281075Sdim24 April 2014. Summary of changes for version 20140424: 674281075Sdim 675281075Sdim1) ACPICA kernel-resident subsystem: 676281075Sdim 677281075SdimImplemented support to skip/ignore NULL address entries in the RSDT/XSDT. 678281075SdimSome of these tables are known to contain a trailing NULL entry. Lv 679281075SdimZheng. 680281075Sdim 681281075SdimRemoved an extraneous error message for the case where there are a large 682281075Sdimnumber of system GPEs (> 124). This was the "32-bit FADT register is too 683281075Sdimlong to convert to GAS struct" message, which is irrelevant for GPEs 684281075Sdimsince the GPEx_BLK_LEN fields of the FADT are always used instead of the 685281075Sdim(limited capacity) GAS bit length. Also, several changes to ensure proper 686281075Sdimsupport for GPE numbers > 255, where some "GPE number" fields were 8-bits 687281075Sdiminternally. 688281075Sdim 689281075SdimImplemented and deployed additional configuration support for the public 690281075SdimACPICA external interfaces. Entire classes of interfaces can now be 691281075Sdimeasily modified or configured out, replaced by stubbed inline functions 692281075Sdimby default. Lv Zheng. 693281075Sdim 694281075SdimMoved all public ACPICA runtime configuration globals to the public 695281075SdimACPICA external interface file for convenience. Also, removed some 696281075Sdimobsolete/unused globals. See the file acpixf.h. Lv Zheng. 697281075Sdim 698281075SdimDocumentation: Added a new section to the ACPICA reference describing the 699281075Sdimmaximum number of GPEs that can be supported by the FADT-defined GPEs in 700281075Sdimblock zero and one. About 1200 total. See section 4.4.1 of the ACPICA 701281075Sdimreference. 702281075Sdim 703281075SdimExample Code and Data Size: These are the sizes for the OS-independent 704281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 705281075Sdimdebug version of the code includes the debug output trace mechanism and 706281075Sdimhas a much larger code and data size. 707281075Sdim 708281075Sdim Current Release: 709281075Sdim Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 710281075Sdim Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 711281075Sdim Previous Release: 712281075Sdim Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 713281075Sdim Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 714281075Sdim 715281075Sdim 716281075Sdim2) iASL Compiler/Disassembler and Tools: 717281075Sdim 718281075SdimiASL and disassembler: Add full support for the LPIT table (Low Power 719281075SdimIdle Table). Includes support in the disassembler, data table compiler, 720281075Sdimand template generator. 721281075Sdim 722281075SdimAcpiDump utility: 723281075Sdim1) Add option to force the use of the RSDT (over the XSDT). 724281075Sdim2) Improve validation of the RSDP signature (use 8 chars instead of 4). 725281075Sdim 726281075SdimiASL: Add check for predefined packages that are too large. For 727281075Sdimpredefined names that contain subpackages, check if each subpackage is 728281075Sdimtoo large. (Check for too small already exists.) 729281075Sdim 730281075SdimDebugger: Updated the GPE command (which simulates a GPE by executing the 731281075SdimGPE code paths in ACPICA). The GPE device is now optional, and defaults 732281075Sdimto the GPE 0/1 FADT-defined blocks. 733281075Sdim 734281075SdimUnix application OSL: Update line-editing support. Add additional error 735281075Sdimchecking and take care not to reset terminal attributes on exit if they 736281075Sdimwere never set. This should help guarantee that the terminal is always 737281075Sdimleft in the previous state on program exit. 738281075Sdim 739281075Sdim---------------------------------------- 740281075Sdim25 March 2014. Summary of changes for version 20140325: 741281075Sdim 742281075Sdim1) ACPICA kernel-resident subsystem: 743281075Sdim 744281075SdimUpdated the auto-serialize feature for control methods. This feature 745281075Sdimautomatically serializes all methods that create named objects in order 746281075Sdimto prevent runtime errors. The update adds support to ignore the 747281075Sdimcurrently executing AML SyncLevel when invoking such a method, in order 748281075Sdimto prevent disruption of any existing SyncLevel priorities that may exist 749281075Sdimin the AML code. Although the use of SyncLevels is relatively rare, this 750281075Sdimchange fixes a regression where an AE_AML_MUTEX_ORDER exception can 751281075Sdimappear on some machines starting with the 20140214 release. 752281075Sdim 753281075SdimAdded a new external interface to allow the host to install ACPI tables 754281075Sdimvery early, before the namespace is even created. AcpiInstallTable gives 755281075Sdimthe host additional flexibility for ACPI table management. Tables can be 756281075Sdiminstalled directly by the host as if they had originally appeared in the 757281075SdimXSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 758281075Sdim(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 759281075Sdimwith additional internal restructuring and cleanup. See the ACPICA 760281075SdimReference for interface details. Lv Zheng. 761281075Sdim 762281075SdimAdded validation of the checksum for all incoming dynamically loaded 763281075Sdimtables (via external interfaces or via AML Load/LoadTable operators). Lv 764281075SdimZheng. 765281075Sdim 766281075SdimUpdated the use of the AcpiOsWaitEventsComplete interface during Notify 767281075Sdimand GPE handler removal. Restructured calls to eliminate possible race 768281075Sdimconditions. Lv Zheng. 769281075Sdim 770281075SdimAdded a warning for the use/execution of the ASL/AML Unload (table) 771281075Sdimoperator. This will help detect and identify machines that use this 772281075Sdimoperator if and when it is ever used. This operator has never been seen 773281075Sdimin the field and the usage model and possible side-effects of the drastic 774281075Sdimruntime action of a full table removal are unknown. 775281075Sdim 776281075SdimReverted the use of #pragma push/pop which was introduced in the 20140214 777281075Sdimrelease. It appears that push and pop are not implemented by enough 778281075Sdimcompilers to make the use of this feature feasible for ACPICA at this 779281075Sdimtime. However, these operators may be deployed in a future ACPICA 780281075Sdimrelease. 781281075Sdim 782281075SdimAdded the missing EXPORT_SYMBOL macros for the install and remove SCI 783281075Sdimhandler interfaces. 784281075Sdim 785281075SdimSource code generation: 786281075Sdim1) Disabled the use of the "strchr" macro for the gcc-specific 787281075Sdimgeneration. For some versions of gcc, this macro can periodically expose 788281075Sdima compiler bug which in turn causes compile-time error(s). 789281075Sdim2) Added support for PPC64 compilation. Colin Ian King. 790281075Sdim 791281075SdimExample Code and Data Size: These are the sizes for the OS-independent 792281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 793281075Sdimdebug version of the code includes the debug output trace mechanism and 794281075Sdimhas a much larger code and data size. 795281075Sdim 796281075Sdim Current Release: 797281075Sdim Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 798281075Sdim Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 799281075Sdim Previous Release: 800281075Sdim Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 801281075Sdim Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 802281075Sdim 803281075Sdim 804281075Sdim2) iASL Compiler/Disassembler and Tools: 805281075Sdim 806281075SdimDisassembler: Added several new features to improve the readability of 807281075Sdimthe resulting ASL code. Extra information is emitted within comment 808281075Sdimfields in the ASL code: 809281075Sdim1) Known _HID/_CID values are decoded to descriptive text. 810281075Sdim2) Standard values for the Notify() operator are decoded to descriptive 811281075Sdimtext. 812281075Sdim3) Target operands are expanded to full pathnames (in a comment) when 813281075Sdimpossible. 814281075Sdim 815281075SdimDisassembler: Miscellaneous updates for extern() handling: 816281075Sdim1) Abort compiler if file specified by -fe option does not exist. 817281075Sdim2) Silence unnecessary warnings about argument count mismatches. 818281075Sdim3) Update warning messages concerning unresolved method externals. 819281075Sdim4) Emit "UnknownObj" keyword for externals whose type cannot be 820281075Sdimdetermined. 821281075Sdim 822281075SdimAcpiHelp utility: 823281075Sdim1) Added the -a option to display both the ASL syntax and the AML 824281075Sdimencoding for an input ASL operator. This effectively displays all known 825281075Sdiminformation about an ASL operator with one AcpiHelp invocation. 826281075Sdim2) Added substring match support (similar to a wildcard) for the -i 827281075Sdim(_HID/PNP IDs) option. 828281075Sdim 829281075SdimiASL/Disassembler: Since this tool does not yet support execution on big- 830281075Sdimendian machines, added detection of endianness and an error message if 831281075Sdimexecution is attempted on big-endian. Support for big-endian within iASL 832281075Sdimis a feature that is on the ACPICA to-be-done list. 833281075Sdim 834281075SdimAcpiBin utility: 835281075Sdim1) Remove option to extract binary files from an acpidump; this function 836281075Sdimis made obsolete by the AcpiXtract utility. 837281075Sdim2) General cleanup of open files and allocated buffers. 838281075Sdim 839281075Sdim---------------------------------------- 840281075Sdim14 February 2014. Summary of changes for version 20140214: 841281075Sdim 842281075Sdim1) ACPICA kernel-resident subsystem: 843281075Sdim 844281075SdimImplemented a new mechanism to proactively prevent problems with ill- 845281075Sdimbehaved reentrant control methods that create named ACPI objects. This 846281075Sdimbehavior is illegal as per the ACPI specification, but is nonetheless 847281075Sdimfrequently seen in the field. Previously, this could lead to an 848281075SdimAE_ALREADY_EXISTS exception if the method was actually entered by more 849281075Sdimthan one thread. This new mechanism detects such methods at table load 850281075Sdimtime and marks them "serialized" to prevent reentrancy. A new global 851281075Sdimoption, AcpiGbl_AutoSerializeMethods, has been added to disable this 852281075Sdimfeature if desired. This mechanism and global option obsoletes and 853281075Sdimsupersedes the previous AcpiGbl_SerializeAllMethods option. 854281075Sdim 855281075SdimAdded the "Windows 2013" string to the _OSI support. ACPICA will now 856281075Sdimrespond TRUE to _OSI queries with this string. It is the stated policy of 857281075SdimACPICA to add new strings to the _OSI support as soon as possible after 858281075Sdimthey are defined. See the full ACPICA _OSI policy which has been added to 859281075Sdimthe utilities/utosi.c file. 860281075Sdim 861281075SdimHardened/updated the _PRT return value auto-repair code: 862281075Sdim1) Do not abort the repair on a single subpackage failure, continue to 863281075Sdimcheck all subpackages. 864281075Sdim2) Add check for the minimum subpackage length (4). 865281075Sdim3) Properly handle extraneous NULL package elements. 866281075Sdim 867281075SdimAdded support to avoid the possibility of infinite loops when traversing 868281075Sdimobject linked lists. Never allow an infinite loop, even in the face of 869281075Sdimcorrupted object lists. 870281075Sdim 871281075SdimACPICA headers: Deployed the use of #pragma pack(push) and #pragma 872281075Sdimpack(pop) directives to ensure that the ACPICA headers are independent of 873281075Sdimcompiler settings or other host headers. 874281075Sdim 875281075SdimExample Code and Data Size: These are the sizes for the OS-independent 876281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 877281075Sdimdebug version of the code includes the debug output trace mechanism and 878281075Sdimhas a much larger code and data size. 879281075Sdim 880281075Sdim Current Release: 881281075Sdim Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 882281075Sdim Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 883281075Sdim Previous Release: 884281075Sdim Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 885281075Sdim Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 886281075Sdim 887281075Sdim 888281075Sdim2) iASL Compiler/Disassembler and Tools: 889281075Sdim 890281075SdimiASL/Table-compiler: Fixed a problem with support for the SPMI table. The 891281075Sdimfirst reserved field was incorrectly forced to have a value of zero. This 892281075Sdimchange correctly forces the field to have a value of one. ACPICA BZ 1081. 893281075Sdim 894281075SdimDebugger: Added missing support for the "Extra" and "Data" subobjects 895281075Sdimwhen displaying object data. 896281075Sdim 897281075SdimDebugger: Added support to display entire object linked lists when 898281075Sdimdisplaying object data. 899281075Sdim 900281075SdimiASL: Removed the obsolete -g option to obtain ACPI tables from the 901281075SdimWindows registry. This feature has been superseded by the acpidump 902281075Sdimutility. 903281075Sdim 904281075Sdim---------------------------------------- 905281075Sdim14 January 2014. Summary of changes for version 20140114: 906281075Sdim 907281075Sdim1) ACPICA kernel-resident subsystem: 908281075Sdim 909281075SdimUpdated all ACPICA copyrights and signons to 2014. Added the 2014 910281075Sdimcopyright to all module headers and signons, including the standard Linux 911281075Sdimheader. This affects virtually every file in the ACPICA core subsystem, 912281075SdimiASL compiler, all ACPICA utilities, and the test suites. 913281075Sdim 914281075SdimImproved parameter validation for AcpiInstallGpeBlock. Added the 915281075Sdimfollowing checks: 916281075Sdim1) The incoming device handle refers to type ACPI_TYPE_DEVICE. 917281075Sdim2) There is not already a GPE block attached to the device. 918281075SdimLikewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 919281075Sdimdevice. 920281075Sdim 921281075SdimCorrectly support "references" in the ACPI_OBJECT. This change fixes the 922281075Sdimsupport to allow references (namespace nodes) to be passed as arguments 923281075Sdimto control methods via the evaluate object interface. This is probably 924281075Sdimmost useful for testing purposes, however. 925281075Sdim 926281075SdimImproved support for 32/64 bit physical addresses in printf()-like 927281075Sdimoutput. This change improves the support for physical addresses in printf 928281075Sdimdebug statements and other output on both 32-bit and 64-bit hosts. It 929281075Sdimconsistently outputs the appropriate number of bytes for each host. The 930281075Sdim%p specifier is unsatisfactory since it does not emit uniform output on 931281075Sdimall hosts/clib implementations (on some, leading zeros are not supported, 932281075Sdimleading to difficult-to-read output). 933281075Sdim 934281075SdimExample Code and Data Size: These are the sizes for the OS-independent 935281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 936281075Sdimdebug version of the code includes the debug output trace mechanism and 937281075Sdimhas a much larger code and data size. 938281075Sdim 939281075Sdim Current Release: 940281075Sdim Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 941281075Sdim Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 942281075Sdim Previous Release: 943281075Sdim Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 944281075Sdim Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 945281075Sdim 946281075Sdim 947281075Sdim2) iASL Compiler/Disassembler and Tools: 948281075Sdim 949281075SdimiASL: Fix a possible fault when using the Connection() operator. Fixes a 950281075Sdimproblem if the parent Field definition for the Connection operator refers 951281075Sdimto an operation region that does not exist. ACPICA BZ 1064. 952281075Sdim 953281075SdimAcpiExec: Load of local test tables is now optional. The utility has the 954281075Sdimcapability to load some various tables to test features of ACPICA. 955281075SdimHowever, there are enough of them that the output of the utility became 956281075Sdimconfusing. With this change, only the required local tables are displayed 957281075Sdim(RSDP, XSDT, etc.) along with the actual tables loaded via the command 958281075Sdimline specification. This makes the default output simler and easier to 959281075Sdimunderstand. The -el command line option restores the original behavior 960281075Sdimfor testing purposes. 961281075Sdim 962281075SdimAcpiExec: Added support for overlapping operation regions. This change 963281075Sdimexpands the simulation of operation regions by supporting regions that 964281075Sdimoverlap within the given address space. Supports SystemMemory and 965281075SdimSystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 966281075Sdim 967281075SdimAcpiExec: Added region handler support for PCI_Config and EC spaces. This 968281075Sdimallows AcpiExec to simulate these address spaces, similar to the current 969281075Sdimsupport for SystemMemory and SystemIO. 970281075Sdim 971281075SdimDebugger: Added new command to read/write/compare all namespace objects. 972281075SdimThe command "test objects" will exercise the entire namespace by writing 973281075Sdimnew values to each data object, and ensuring that the write was 974281075Sdimsuccessful. The original value is then restored and verified. 975281075Sdim 976281075SdimDebugger: Added the "test predefined" command. This change makes this 977281075Sdimtest public and puts it under the new "test" command. The test executes 978281075Sdimeach and every predefined name within the current namespace. 979281075Sdim 980281075Sdim---------------------------------------- 981281075Sdim18 December 2013. Summary of changes for version 20131218: 982281075Sdim 983281075SdimGlobal note: The ACPI 5.0A specification was released this month. There 984281075Sdimare no changes needed for ACPICA since this release of ACPI is an 985281075Sdimerrata/clarification release. The specification is available at 986281075Sdimacpi.info. 987281075Sdim 988281075Sdim 989281075Sdim1) ACPICA kernel-resident subsystem: 990281075Sdim 991281075SdimAdded validation of the XSDT root table if it is present. Some older 992281075Sdimplatforms contain an XSDT that is ill-formed or otherwise invalid (such 993281075Sdimas containing some or all entries that are NULL pointers). This change 994281075Sdimadds a new function to validate the XSDT before actually using it. If the 995281075SdimXSDT is found to be invalid, ACPICA will now automatically fall back to 996281075Sdimusing the RSDT instead. Original implementation by Zhao Yakui. Ported to 997281075SdimACPICA and enhanced by Lv Zheng and Bob Moore. 998281075Sdim 999281075SdimAdded a runtime option to ignore the XSDT and force the use of the RSDT. 1000281075SdimThis change adds a runtime option that will force ACPICA to use the RSDT 1001281075Sdiminstead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1002281075Sdimrequires that an XSDT be used instead of the RSDT, the XSDT has been 1003281075Sdimfound to be corrupt or ill-formed on some machines. Lv Zheng. 1004281075Sdim 1005281075SdimAdded a runtime option to favor 32-bit FADT register addresses over the 1006281075Sdim64-bit addresses. This change adds an option to favor 32-bit FADT 1007281075Sdimaddresses when there is a conflict between the 32-bit and 64-bit versions 1008281075Sdimof the same register. The default behavior is to use the 64-bit version 1009281075Sdimin accordance with the ACPI specification. This can now be overridden via 1010281075Sdimthe AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1011281075Sdim 1012281075SdimDuring the change above, the internal "Convert FADT" and "Verify FADT" 1013281075Sdimfunctions have been merged to simplify the code, making it easier to 1014281075Sdimunderstand and maintain. ACPICA BZ 933. 1015281075Sdim 1016281075SdimImprove exception reporting and handling for GPE block installation. 1017281075SdimReturn an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1018281075Sdimstatus when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1019281075Sdim 1020281075SdimAdded helper macros to extract bus/segment numbers from the HEST table. 1021281075SdimThis change adds two macros to extract the encoded bus and segment 1022281075Sdimnumbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1023281075SdimBetty Dall <betty.dall@hp.com> 1024281075Sdim 1025281075SdimRemoved the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1026281075Sdimby ACPICA. It is not a public macro, so it should have no effect on 1027281075Sdimexisting OSV code. Lv Zheng. 1028281075Sdim 1029281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1030281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1031281075Sdimdebug version of the code includes the debug output trace mechanism and 1032281075Sdimhas a much larger code and data size. 1033281075Sdim 1034281075Sdim Current Release: 1035281075Sdim Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1036281075Sdim Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1037281075Sdim Previous Release: 1038281075Sdim Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1039281075Sdim Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1040281075Sdim 1041281075Sdim 1042281075Sdim2) iASL Compiler/Disassembler and Tools: 1043281075Sdim 1044281075SdimDisassembler: Improved pathname support for emitted External() 1045281075Sdimstatements. This change adds full pathname support for external names 1046281075Sdimthat have been resolved internally by the inclusion of additional ACPI 1047281075Sdimtables (via the iASL -e option). Without this change, the disassembler 1048281075Sdimcan emit multiple externals for the same object, or it become confused 1049281075Sdimwhen the Scope() operator is used on an external object. Overall, greatly 1050281075Sdimimproves the ability to actually recompile the emitted ASL code when 1051281075Sdimobjects a referenced across multiple ACPI tables. Reported by Michael 1052281075SdimTsirkin (mst@redhat.com). 1053281075Sdim 1054281075SdimTests/ASLTS: Updated functional control suite to execute with no errors. 1055281075SdimDavid Box. Fixed several errors related to the testing of the interpreter 1056281075Sdimslack mode. Lv Zheng. 1057281075Sdim 1058281075SdimiASL: Added support to detect names that are declared within a control 1059281075Sdimmethod, but are unused (these are temporary names that are only valid 1060281075Sdimduring the time the method is executing). A remark is issued for these 1061281075Sdimcases. ACPICA BZ 1022. 1062281075Sdim 1063281075SdimiASL: Added full support for the DBG2 table. Adds full disassembler, 1064281075Sdimtable compiler, and template generator support for the DBG2 table (Debug 1065281075SdimPort 2 table). 1066281075Sdim 1067281075SdimiASL: Added full support for the PCCT table, update the table definition. 1068281075SdimUpdates the PCCT table definition in the actbl3.h header and adds table 1069281075Sdimcompiler and template generator support. 1070281075Sdim 1071281075SdimiASL: Added an option to emit only error messages (no warnings/remarks). 1072281075SdimThe -ve option will enable only error messages, warnings and remarks are 1073281075Sdimsuppressed. This can simplify debugging when only the errors are 1074281075Sdimimportant, such as when an ACPI table is disassembled and there are many 1075281075Sdimwarnings and remarks -- but only the actual errors are of real interest. 1076281075Sdim 1077281075SdimExample ACPICA code (source/tools/examples): Updated the example code so 1078281075Sdimthat it builds to an actual working program, not just example code. Added 1079281075SdimACPI tables and execution of an example control method in the DSDT. Added 1080281075Sdimmakefile support for Unix generation. 1081281075Sdim 1082281075Sdim---------------------------------------- 1083281075Sdim15 November 2013. Summary of changes for version 20131115: 1084281075Sdim 1085281075SdimThis release is available at https://acpica.org/downloads 1086281075Sdim 1087281075Sdim 1088281075Sdim1) ACPICA kernel-resident subsystem: 1089281075Sdim 1090281075SdimResource Manager: Fixed loop termination for the "get AML length" 1091281075Sdimfunction. The loop previously had an error termination on a NULL resource 1092281075Sdimpointer, which can never happen since the loop simply increments a valid 1093281075Sdimresource pointer. This fix changes the loop to terminate with an error on 1094281075Sdiman invalid end-of-buffer condition. The problem can be seen as an 1095281075Sdiminfinite loop by callers to AcpiSetCurrentResources with an invalid or 1096281075Sdimcorrupted resource descriptor, or a resource descriptor that is missing 1097281075Sdiman END_TAG descriptor. Reported by Dan Carpenter 1098281075Sdim<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 1099281075Sdim 1100281075SdimTable unload and ACPICA termination: Delete all attached data objects 1101281075Sdimduring namespace node deletion. This fix updates namespace node deletion 1102281075Sdimto delete the entire list of attached objects (attached via 1103281075SdimAcpiAttachObject) instead of just one of the attached items. ACPICA BZ 1104281075Sdim1024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 1105281075Sdim 1106281075SdimACPICA termination: Added support to delete all objects attached to the 1107281075Sdimroot namespace node. This fix deletes any and all objects that have been 1108281075Sdimattached to the root node via AcpiAttachData. Previously, none of these 1109281075Sdimobjects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 1110281075Sdim 1111281075SdimDebug output: Do not emit the function nesting level for the in-kernel 1112281075Sdimbuild. The nesting level is really only useful during a single-thread 1113281075Sdimexecution. Therefore, only enable this output for the AcpiExec utility. 1114281075SdimAlso, only emit the thread ID when executing under AcpiExec (Context 1115281075Sdimswitches are still always detected and a message is emitted). ACPICA BZ 1116281075Sdim972. 1117281075Sdim 1118281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1119281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1120281075Sdimdebug version of the code includes the debug output trace mechanism and 1121281075Sdimhas a much larger code and data size. 1122281075Sdim 1123281075Sdim Current Release: 1124281075Sdim Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1125281075Sdim Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1126281075Sdim Previous Release: 1127281075Sdim Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1128281075Sdim Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1129281075Sdim 1130281075Sdim 1131281075Sdim2) iASL Compiler/Disassembler and Tools: 1132281075Sdim 1133281075SdimAcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 1134281075Sdimcorrect portable POSIX header for terminal control functions. 1135281075Sdim 1136281075SdimDisassembler: Fixed control method invocation issues related to the use 1137281075Sdimof the CondRefOf() operator. The problem is seen in the disassembly where 1138281075Sdimcontrol method invocations may not be disassembled properly if the 1139281075Sdimcontrol method name has been used previously as an argument to CondRefOf. 1140281075SdimThe solution is to not attempt to emit an external declaration for the 1141281075SdimCondRefOf target (it is not necessary in the first place). This prevents 1142281075Sdimdisassembler object type confusion. ACPICA BZ 988. 1143281075Sdim 1144281075SdimUnix Makefiles: Added an option to disable compiler optimizations and the 1145281075Sdim_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 1146281075Sdimwith optimizations (reportedly, gcc 4.4 for example). This change adds a 1147281075Sdimcommand line option for make (NOOPT) that disables all compiler 1148281075Sdimoptimizations and the _FORTIFY_SOURCE compiler flag. The default 1149281075Sdimoptimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 1150281075Sdim1034. Lv Zheng, Bob Moore. 1151281075Sdim 1152281075SdimTests/ASLTS: Added options to specify individual test cases and modes. 1153281075SdimThis allows testers running aslts.sh to optionally specify individual 1154281075Sdimtest modes and test cases. Also added an option to disable the forced 1155281075Sdimgeneration of the ACPICA tools from source if desired. Lv Zheng. 1156281075Sdim 1157281075Sdim---------------------------------------- 1158281075Sdim27 September 2013. Summary of changes for version 20130927: 1159281075Sdim 1160281075SdimThis release is available at https://acpica.org/downloads 1161281075Sdim 1162281075Sdim 1163281075Sdim1) ACPICA kernel-resident subsystem: 1164281075Sdim 1165281075SdimFixed a problem with store operations to reference objects. This change 1166281075Sdimfixes a problem where a Store operation to an ArgX object that contained 1167281075Sdima 1168281075Sdimreference to a field object did not complete the automatic dereference 1169281075Sdimand 1170281075Sdimthen write to the actual field object. Instead, the object type of the 1171281075Sdimfield object was inadvertently changed to match the type of the source 1172281075Sdimoperand. The new behavior will actually write to the field object (buffer 1173281075Sdimfield or field unit), thus matching the correct ACPI-defined behavior. 1174281075Sdim 1175281075SdimImplemented support to allow the host to redefine individual OSL 1176281075Sdimprototypes. This change enables the host to redefine OSL prototypes found 1177281075Sdimin the acpiosxf.h file. This allows the host to implement OSL interfaces 1178281075Sdimwith a macro or inlined function. Further, it allows the host to add any 1179281075Sdimadditional required modifiers such as __iomem, __init, __exit, etc., as 1180281075Sdimnecessary on a per-interface basis. Enables maximum flexibility for the 1181281075SdimOSL interfaces. Lv Zheng. 1182281075Sdim 1183281075SdimHardcoded the access width for the FADT-defined reset register. The ACPI 1184281075Sdimspecification requires the reset register width to be 8 bits. ACPICA now 1185281075Sdimhardcodes the width to 8 and ignores the FADT width value. This provides 1186281075Sdimcompatibility with other ACPI implementations that have allowed BIOS code 1187281075Sdimwith bad register width values to go unnoticed. Matthew Garett, Bob 1188281075SdimMoore, 1189281075SdimLv Zheng. 1190281075Sdim 1191281075SdimChanged the position/use of the ACPI_PRINTF_LIKE macro. This macro is 1192281075Sdimused 1193281075Sdimin the OSL header (acpiosxf). The change modifies the position of this 1194281075Sdimmacro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 1195281075Sdimbuild issues if the OSL defines the implementation of the interface to be 1196281075Sdiman inline stub function. Lv Zheng. 1197281075Sdim 1198281075SdimDeployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 1199281075Sdiminitialization interfaces. This change adds a new macro for the main init 1200281075Sdimand terminate external interfaces in order to support hosts that require 1201281075Sdimadditional or different processing for these functions. Changed from 1202281075SdimACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 1203281075SdimZheng, Bob Moore. 1204281075Sdim 1205281075SdimCleaned up the memory allocation macros for configurability. In the 1206281075Sdimcommon 1207281075Sdimcase, the ACPI_ALLOCATE and related macros now resolve directly to their 1208281075Sdimrespective AcpiOs* OSL interfaces. Two options: 1209281075Sdim1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 1210281075Sdimdefault, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 1211281075Sdim2) For AcpiExec (and for debugging), the macros can optionally be 1212281075Sdimresolved 1213281075Sdimto the local ACPICA interfaces that track each allocation (local tracking 1214281075Sdimis used to immediately detect memory leaks). 1215281075SdimLv Zheng. 1216281075Sdim 1217281075SdimSimplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 1218281075Sdimto predefine this macro to either TRUE or FALSE during the system build. 1219281075Sdim 1220281075SdimReplaced __FUNCTION_ with __func__ in the gcc-specific header. 1221281075Sdim 1222281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1223281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1224281075Sdimdebug version of the code includes the debug output trace mechanism and 1225281075Sdimhas a much larger code and data size. 1226281075Sdim 1227281075Sdim Current Release: 1228281075Sdim Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 1229281075Sdim Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 1230281075Sdim Previous Release: 1231281075Sdim Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1232281075Sdim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1233281075Sdim 1234281075Sdim 1235281075Sdim2) iASL Compiler/Disassembler and Tools: 1236281075Sdim 1237281075SdimiASL: Implemented wildcard support for the -e option. This simplifies use 1238281075Sdimwhen there are many SSDTs that must be included to resolve external 1239281075Sdimmethod 1240281075Sdimdeclarations. ACPICA BZ 1041. Example: 1241281075Sdim iasl -e ssdt*.dat -d dsdt.dat 1242281075Sdim 1243281075SdimAcpiExec: Add history/line-editing for Unix/Linux systems. This change 1244281075Sdimadds a portable module that implements full history and limited line 1245281075Sdimediting for Unix and Linux systems. It does not use readline() due to 1246281075Sdimportability issues. Instead it uses the POSIX termio interface to put the 1247281075Sdimterminal in raw input mode so that the various special keys can be 1248281075Sdimtrapped 1249281075Sdim(such as up/down-arrow for history support and left/right-arrow for line 1250281075Sdimediting). Uses the existing debugger history mechanism. ACPICA BZ 1036. 1251281075Sdim 1252281075SdimAcpiXtract: Add support to handle (ignore) "empty" lines containing only 1253281075Sdimone or more spaces. This provides compatible with early or different 1254281075Sdimversions of the AcpiDump utility. ACPICA BZ 1044. 1255281075Sdim 1256281075SdimAcpiDump: Do not ignore tables that contain only an ACPI table header. 1257281075SdimApparently, some BIOSs create SSDTs that contain an ACPI table header but 1258281075Sdimno other data. This change adds support to dump these tables. Any tables 1259281075Sdimshorter than the length of an ACPI table header remain in error (an error 1260281075Sdimmessage is emitted). Reported by Yi Li. 1261281075Sdim 1262281075SdimDebugger: Echo actual command along with the "unknown command" message. 1263281075Sdim 1264281075Sdim---------------------------------------- 1265254745Sjkim23 August 2013. Summary of changes for version 20130823: 1266254745Sjkim 1267254745Sjkim1) ACPICA kernel-resident subsystem: 1268254745Sjkim 1269254745SjkimImplemented support for host-installed System Control Interrupt (SCI) 1270254745Sjkimhandlers. Certain ACPI functionality requires the host to handle raw 1271254745SjkimSCIs. For example, the "SCI Doorbell" that is defined for memory power 1272254745Sjkimstate support requires the host device driver to handle SCIs to examine 1273254745Sjkimif the doorbell has been activated. Multiple SCI handlers can be 1274254745Sjkiminstalled to allow for future expansion. New external interfaces are 1275254745SjkimAcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 1276254745Sjkimdetails. Lv Zheng, Bob Moore. ACPICA BZ 1032. 1277254745Sjkim 1278254745SjkimOperation region support: Never locally free the handler "context" 1279254745Sjkimpointer. This change removes some dangerous code that attempts to free 1280254745Sjkimthe handler context pointer in some (rare) circumstances. The owner of 1281254745Sjkimthe handler owns this pointer and the ACPICA code should never touch it. 1282254745SjkimAlthough not seen to be an issue in any kernel, it did show up as a 1283254745Sjkimproblem (fault) under AcpiExec. Also, set the internal storage field for 1284254745Sjkimthe context pointer to zero when the region is deactivated, simply for 1285254745Sjkimsanity. David Box. ACPICA BZ 1039. 1286254745Sjkim 1287254745SjkimAcpiRead: On error, do not modify the return value target location. If an 1288254745Sjkimerror happens in the middle of a split 32/32 64-bit I/O operation, do not 1289254745Sjkimmodify the target of the return value pointer. Makes the code consistent 1290254745Sjkimwith the rest of ACPICA. Bjorn Helgaas. 1291254745Sjkim 1292254745SjkimExample Code and Data Size: These are the sizes for the OS-independent 1293254745Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1294254745Sjkimdebug version of the code includes the debug output trace mechanism and 1295254745Sjkimhas a much larger code and data size. 1296254745Sjkim 1297254745Sjkim Current Release: 1298254745Sjkim Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 1299254745Sjkim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1300254745Sjkim Previous Release: 1301254745Sjkim Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1302254745Sjkim Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 1303254745Sjkim 1304254745Sjkim 1305254745Sjkim2) iASL Compiler/Disassembler and Tools: 1306254745Sjkim 1307254745SjkimAcpiDump: Implemented several new features and fixed some problems: 1308254745Sjkim1) Added support to dump the RSDP, RSDT, and XSDT tables. 1309254745Sjkim2) Added support for multiple table instances (SSDT, UEFI). 1310254745Sjkim3) Added option to dump "customized" (overridden) tables (-c). 1311254745Sjkim4) Fixed a problem where some table filenames were improperly 1312254745Sjkimconstructed. 1313254745Sjkim5) Improved some error messages, removed some unnecessary messages. 1314254745Sjkim 1315254745SjkimiASL: Implemented additional support for disassembly of ACPI tables that 1316254745Sjkimcontain invocations of external control methods. The -fe<file> option 1317254745Sjkimallows the import of a file that specifies the external methods along 1318254745Sjkimwith the required number of arguments for each -- allowing for the 1319254745Sjkimcorrect disassembly of the table. This is a workaround for a limitation 1320254745Sjkimof AML code where the disassembler often cannot determine the number of 1321254745Sjkimarguments required for an external control method and generates incorrect 1322254745SjkimASL code. See the iASL reference for details. ACPICA BZ 1030. 1323254745Sjkim 1324254745SjkimDebugger: Implemented a new command (paths) that displays the full 1325254745Sjkimpathnames (namepaths) and object types of all objects in the namespace. 1326254745SjkimThis is an alternative to the namespace command. 1327254745Sjkim 1328254745SjkimDebugger: Implemented a new command (sci) that invokes the SCI dispatch 1329254745Sjkimmechanism and any installed handlers. 1330254745Sjkim 1331254745SjkimiASL: Fixed a possible segfault for "too many parent prefixes" condition. 1332254745SjkimThis can occur if there are too many parent prefixes in a namepath (for 1333254745Sjkimexample, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 1334254745Sjkim 1335254745SjkimApplication OSLs: Set the return value for the PCI read functions. These 1336254745Sjkimfunctions simply return AE_OK, but should set the return value to zero 1337254745Sjkimalso. This change implements this. ACPICA BZ 1038. 1338254745Sjkim 1339254745SjkimDebugger: Prevent possible command line buffer overflow. Increase the 1340254745Sjkimsize of a couple of the debugger line buffers, and ensure that overflow 1341254745Sjkimcannot happen. ACPICA BZ 1037. 1342254745Sjkim 1343254745SjkimiASL: Changed to abort immediately on serious errors during the parsing 1344254745Sjkimphase. Due to the nature of ASL, there is no point in attempting to 1345254745Sjkimcompile these types of errors, and they typically end up causing a 1346254745Sjkimcascade of hundreds of errors which obscure the original problem. 1347254745Sjkim 1348254745Sjkim---------------------------------------- 1349253690Sjkim25 July 2013. Summary of changes for version 20130725: 1350253690Sjkim 1351253690Sjkim1) ACPICA kernel-resident subsystem: 1352253690Sjkim 1353253690SjkimFixed a problem with the DerefOf operator where references to FieldUnits 1354253690Sjkimand BufferFields incorrectly returned the parent object, not the actual 1355253690Sjkimvalue of the object. After this change, a dereference of a FieldUnit 1356253690Sjkimreference results in a read operation on the field to get the value, and 1357253690Sjkimlikewise, the appropriate BufferField value is extracted from the target 1358253690Sjkimbuffer. 1359253690Sjkim 1360253690SjkimFixed a problem where the _WAK method could cause a fault under these 1361253690Sjkimcircumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 1362253690Sjkimmethod returned no value. The problem is rarely seen because most kernels 1363253690Sjkimrun ACPICA in slack mode. 1364253690Sjkim 1365253690SjkimFor the DerefOf operator, a fatal error now results if an attempt is made 1366253690Sjkimto dereference a reference (created by the Index operator) to a NULL 1367253690Sjkimpackage element. Provides compatibility with other ACPI implementations, 1368253690Sjkimand this behavior will be added to a future version of the ACPI 1369253690Sjkimspecification. 1370253690Sjkim 1371253690SjkimThe ACPI Power Management Timer (defined in the FADT) is now optional. 1372253690SjkimThis provides compatibility with other ACPI implementations and will 1373253690Sjkimappear in the next version of the ACPI specification. If there is no PM 1374253690SjkimTimer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 1375253690Sjkimzero in the FADT indicates no PM timer. 1376253690Sjkim 1377253690SjkimImplemented a new interface for _OSI support, AcpiUpdateInterfaces. This 1378253690Sjkimallows the host to globally enable/disable all vendor strings, all 1379253690Sjkimfeature strings, or both. Intended to be primarily used for debugging 1380253690Sjkimpurposes only. Lv Zheng. 1381253690Sjkim 1382253690SjkimExpose the collected _OSI data to the host via a global variable. This 1383253690Sjkimdata tracks the highest level vendor ID that has been invoked by the BIOS 1384253690Sjkimso that the host (and potentially ACPICA itself) can change behaviors 1385253690Sjkimbased upon the age of the BIOS. 1386253690Sjkim 1387253690SjkimExample Code and Data Size: These are the sizes for the OS-independent 1388253690Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1389253690Sjkimdebug version of the code includes the debug output trace mechanism and 1390253690Sjkimhas a much larger code and data size. 1391253690Sjkim 1392253690Sjkim Current Release: 1393253690Sjkim Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 1394253690Sjkim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 1395253690Sjkim Previous Release: 1396253690Sjkim Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1397253690Sjkim Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1398253690Sjkim 1399253690Sjkim 1400253690Sjkim2) iASL Compiler/Disassembler and Tools: 1401253690Sjkim 1402253690SjkimiASL: Created the following enhancements for the -so option (create 1403253690Sjkimoffset table): 1404253690Sjkim1)Add offsets for the last nameseg in each namepath for every supported 1405253690Sjkimobject type 1406253690Sjkim2)Add support for Processor, Device, Thermal Zone, and Scope objects 1407253690Sjkim3)Add the actual AML opcode for the parent object of every supported 1408253690Sjkimobject type 1409253690Sjkim4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 1410253690Sjkim 1411253690SjkimDisassembler: Emit all unresolved external symbols in a single block. 1412253690SjkimThese are external references to control methods that could not be 1413253690Sjkimresolved, and thus, the disassembler had to make a guess at the number of 1414253690Sjkimarguments to parse. 1415253690Sjkim 1416253690SjkimiASL: The argument to the -T option (create table template) is now 1417253690Sjkimoptional. If not specified, the default table is a DSDT, typically the 1418253690Sjkimmost common case. 1419253690Sjkim 1420253690Sjkim---------------------------------------- 1421252279Sjkim26 June 2013. Summary of changes for version 20130626: 1422252279Sjkim 1423252279Sjkim1) ACPICA kernel-resident subsystem: 1424252279Sjkim 1425252279SjkimFixed an issue with runtime repair of the _CST object. Null or invalid 1426252279Sjkimelements were not always removed properly. Lv Zheng. 1427252279Sjkim 1428252279SjkimRemoved an arbitrary restriction of 256 GPEs per GPE block (such as the 1429252279SjkimFADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 1430252279Sjkimthe maximum number of GPEs is 1016. Use of multiple GPE block devices 1431252279Sjkimmakes the system-wide number of GPEs essentially unlimited. 1432252279Sjkim 1433252279SjkimExample Code and Data Size: These are the sizes for the OS-independent 1434252279Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1435252279Sjkimdebug version of the code includes the debug output trace mechanism and 1436252279Sjkimhas a much larger code and data size. 1437252279Sjkim 1438252279Sjkim Current Release: 1439252279Sjkim Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 1440252279Sjkim Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 1441252279Sjkim Previous Release: 1442252279Sjkim Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1443252279Sjkim Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1444252279Sjkim 1445252279Sjkim 1446252279Sjkim2) iASL Compiler/Disassembler and Tools: 1447252279Sjkim 1448252279SjkimPortable AcpiDump: Implemented full support for the Linux and FreeBSD 1449252279Sjkimhosts. Now supports Linux, FreeBSD, and Windows. 1450252279Sjkim 1451252279SjkimDisassembler: Added some missing types for the HEST and EINJ tables: "Set 1452252279SjkimError Type With Address", "CMCI", "MCE", and "Flush Cacheline". 1453252279Sjkim 1454252279SjkimiASL/Preprocessor: Implemented full support for nested 1455252279Sjkim#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 1456252279Sjkim 1457252279SjkimDisassembler: Expanded maximum output string length to 64K. Was 256 bytes 1458252279Sjkimmax. The original purpose of this constraint was to limit the amount of 1459252279Sjkimdebug output. However, the string function in question (UtPrintString) is 1460252279Sjkimnow used for the disassembler also, where 256 bytes is insufficient. 1461252279SjkimReported by RehabMan@GitHub. 1462252279Sjkim 1463252279SjkimiASL/DataTables: Fixed some problems and issues with compilation of DMAR 1464252279Sjkimtables. ACPICA BZ 999. Lv Zheng. 1465252279Sjkim 1466252279SjkimiASL: Fixed a couple of error exit issues that could result in a "Could 1467252279Sjkimnot delete <file>" message during ASL compilation. 1468252279Sjkim 1469252279SjkimAcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 1470252279Sjkimthe actual signatures for these tables are "FACP" and "APIC", 1471252279Sjkimrespectively. 1472252279Sjkim 1473252279SjkimAcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 1474252279Sjkimtables are allowed to have multiple instances. 1475252279Sjkim 1476252279Sjkim---------------------------------------- 1477250838Sjkim17 May 2013. Summary of changes for version 20130517: 1478249663Sjkim 1479250838Sjkim1) ACPICA kernel-resident subsystem: 1480249663Sjkim 1481250838SjkimFixed a regression introduced in version 20130328 for _INI methods. This 1482250838Sjkimchange fixes a problem introduced in 20130328 where _INI methods are no 1483250838Sjkimlonger executed properly because of a memory block that was not 1484250838Sjkiminitialized correctly. ACPICA BZ 1016. Tomasz Nowicki 1485250838Sjkim<tomasz.nowicki@linaro.org>. 1486249663Sjkim 1487253690SjkimFixed a possible problem with the new extended sleep registers in the 1488253690SjkimACPI 1489250838Sjkim5.0 FADT. Do not use these registers (even if populated) unless the HW- 1490250838Sjkimreduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 1491250838Sjkim1020. Lv Zheng. 1492250838Sjkim 1493253690SjkimImplemented return value repair code for _CST predefined objects: Sort 1494253690Sjkimthe 1495250838Sjkimlist and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 1496250838Sjkim 1497250838SjkimImplemented a debug-only option to disable loading of SSDTs from the 1498250838SjkimRSDT/XSDT during ACPICA initialization. This can be useful for debugging 1499250838SjkimACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 1500250838Sjkimacglobal.h - ACPICA BZ 1005. Lv Zheng. 1501250838Sjkim 1502250838SjkimFixed some issues in the ACPICA initialization and termination code: 1503250838SjkimTomasz Nowicki <tomasz.nowicki@linaro.org> 1504250838Sjkim1) Clear events initialized flag upon event component termination. ACPICA 1505250838SjkimBZ 1013. 1506250838Sjkim2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 1507250838Sjkim3) Delete global lock pending lock during termination. ACPICA BZ 1012. 1508250838Sjkim4) Clear debug buffer global on termination to prevent possible multiple 1509250838Sjkimdelete. ACPICA BZ 1010. 1510250838Sjkim 1511253690SjkimStandardized all switch() blocks across the entire source base. After 1512253690Sjkimmany 1513250838Sjkimyears, different formatting for switch() had crept in. This change makes 1514250838Sjkimthe formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 1515250838Sjkim 1516250838SjkimSplit some files to enhance ACPICA modularity and configurability: 1517250838Sjkim1) Split buffer dump routines into utilities/utbuffer.c 1518250838Sjkim2) Split internal error message routines into utilities/uterror.c 1519250838Sjkim3) Split table print utilities into tables/tbprint.c 1520250838Sjkim4) Split iASL command-line option processing into asloptions.c 1521250838Sjkim 1522250838SjkimMakefile enhancements: 1523250838Sjkim1) Support for all new files above. 1524250838Sjkim2) Abort make on errors from any subcomponent. Chao Guan. 1525250838Sjkim3) Add build support for Apple Mac OS X. Liang Qi. 1526250838Sjkim 1527250838SjkimExample Code and Data Size: These are the sizes for the OS-independent 1528250838Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1529250838Sjkimdebug version of the code includes the debug output trace mechanism and 1530250838Sjkimhas a much larger code and data size. 1531250838Sjkim 1532250838Sjkim Current Release: 1533250838Sjkim Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1534250838Sjkim Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1535250838Sjkim Previous Release: 1536250838Sjkim Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1537250838Sjkim Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1538250838Sjkim 1539250838Sjkim 1540250838Sjkim2) iASL Compiler/Disassembler and Tools: 1541250838Sjkim 1542250838SjkimNew utility: Implemented an easily portable version of the acpidump 1543253690Sjkimutility to extract ACPI tables from the system (or a file) in an ASCII 1544253690Sjkimhex 1545250838Sjkimdump format. The top-level code implements the various command line 1546250838Sjkimoptions, file I/O, and table dump routines. To port to a new host, only 1547250838Sjkimthree functions need to be implemented to get tables -- since this 1548250838Sjkimfunctionality is OS-dependent. See the tools/acpidump/apmain.c module and 1549250838Sjkimthe ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 1550250838Sjkim1) The Windows version obtains the ACPI tables from the Registry. 1551250838Sjkim2) The Linux version is under development. 1552250838Sjkim3) Other hosts - If an OS-dependent module is submitted, it will be 1553250838Sjkimdistributed with ACPICA. 1554250838Sjkim 1555250838SjkimiASL: Fixed a regression for -D preprocessor option (define symbol). A 1556250838Sjkimrestructuring/change to the initialization sequence caused this option to 1557250838Sjkimno longer work properly. 1558250838Sjkim 1559250838SjkimiASL: Implemented a mechanism to disable specific warnings and remarks. 1560250838SjkimAdds a new command line option, "-vw <messageid> as well as "#pragma 1561250838Sjkimdisable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 1562250838Sjkim 1563250838SjkimiASL: Fix for too-strict package object validation. The package object 1564250838Sjkimvalidation for return values from the predefined names is a bit too 1565250838Sjkimstrict, it does not allow names references within the package (which will 1566250838Sjkimbe resolved at runtime.) These types of references cannot be validated at 1567250838Sjkimcompile time. This change ignores named references within package objects 1568250838Sjkimfor names that return or define static packages. 1569250838Sjkim 1570250838SjkimDebugger: Fixed the 80-character command line limitation for the History 1571250838Sjkimcommand. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 1572250838Sjkim 1573250838SjkimiASL: Added control method and package support for the -so option 1574250838Sjkim(generates AML offset table for BIOS support.) 1575250838Sjkim 1576250838SjkimiASL: issue a remark if a non-serialized method creates named objects. If 1577250838Sjkima thread blocks within the method for any reason, and another thread 1578253690Sjkimenters the method, the method will fail because an attempt will be made 1579253690Sjkimto 1580250838Sjkimcreate the same (named) object twice. In this case, issue a remark that 1581250838Sjkimthe method should be marked serialized. NOTE: may become a warning later. 1582250838SjkimACPICA BZ 909. 1583250838Sjkim 1584250838Sjkim---------------------------------------- 1585250838Sjkim18 April 2013. Summary of changes for version 20130418: 1586250838Sjkim 1587249663Sjkim1) ACPICA kernel-resident subsystem: 1588249663Sjkim 1589249663SjkimFixed a possible buffer overrun during some rare but specific field unit 1590249663Sjkimread operations. This overrun can only happen if the DSDT version is 1 -- 1591249663Sjkimmeaning that all AML integers are 32 bits -- and the field length is 1592253690Sjkimbetween 33 and 55 bits long. During the read, an internal buffer object 1593253690Sjkimis 1594253690Sjkimcreated for the field unit because the field is larger than an integer 1595253690Sjkim(32 1596249663Sjkimbits). However, in this case, the buffer will be incorrectly written 1597253690Sjkimbeyond the end because the buffer length is less than the internal 1598253690Sjkimminimum 1599249663Sjkimof 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 1600249663Sjkimlong, but a full 8 bytes will be written. 1601249663Sjkim 1602249663SjkimUpdated the Embedded Controller "orphan" _REG method support. This refers 1603249663Sjkimto _REG methods under the EC device that have no corresponding operation 1604249663Sjkimregion. This is allowed by the ACPI specification. This update removes a 1605249663Sjkimdependency on the existence an ECDT table. It will execute an orphan _REG 1606249663Sjkimmethod as long as the operation region handler for the EC is installed at 1607249663Sjkimthe EC device node and not the namespace root. Rui Zhang (original 1608249663Sjkimupdate), Bob Moore (update/integrate). 1609249663Sjkim 1610249663SjkimImplemented run-time argument typechecking for all predefined ACPI names 1611249663Sjkim(_STA, _BIF, etc.) This change performs object typechecking on all 1612249663Sjkimincoming arguments for all predefined names executed via 1613249663SjkimAcpiEvaluateObject. This ensures that ACPI-related device drivers are 1614249663Sjkimpassing correct object types as well as the correct number of arguments 1615249663Sjkim(therefore identifying any issues immediately). Also, the ASL/namespace 1616249663Sjkimdefinition of the predefined name is checked against the ACPI 1617249663Sjkimspecification for the proper argument count. Adds one new file, 1618249663Sjkimnsarguments.c 1619249663Sjkim 1620249663SjkimChanged an exception code for the ASL UnLoad() operator. Changed the 1621249663Sjkimexception code for the case where the input DdbHandle is invalid, from 1622249663SjkimAE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 1623249663Sjkim 1624249663SjkimUnix/Linux makefiles: Removed the use of the -O2 optimization flag in the 1625249663Sjkimglobal makefile. The use of this flag causes compiler errors on earlier 1626249663Sjkimversions of GCC, so it has been removed for compatibility. 1627249663Sjkim 1628249663SjkimMiscellaneous cleanup: 1629249663Sjkim1) Removed some unused/obsolete macros 1630249663Sjkim2) Fixed a possible memory leak in the _OSI support 1631249663Sjkim3) Removed an unused variable in the predefined name support 1632249663Sjkim4) Windows OSL: remove obsolete reference to a memory list field 1633249663Sjkim 1634249663SjkimExample Code and Data Size: These are the sizes for the OS-independent 1635249663Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1636249663Sjkimdebug version of the code includes the debug output trace mechanism and 1637249663Sjkimhas a much larger code and data size. 1638249663Sjkim 1639249663Sjkim Current Release: 1640249663Sjkim Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1641249663Sjkim Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1642249663Sjkim Previous Release: 1643249663Sjkim Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1644249663Sjkim Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1645249663Sjkim 1646249663Sjkim 1647249663Sjkim2) iASL Compiler/Disassembler and Tools: 1648249663Sjkim 1649249663SjkimAcpiExec: Added installation of a handler for the SystemCMOS address 1650253690Sjkimspace. This prevents control method abort if a method accesses this 1651253690Sjkimspace. 1652249663Sjkim 1653249663SjkimAcpiExec: Added support for multiple EC devices, and now install EC 1654249663Sjkimoperation region handler(s) at the actual EC device instead of the 1655249663Sjkimnamespace root. This reflects the typical behavior of host operating 1656249663Sjkimsystems. 1657249663Sjkim 1658249663SjkimAcpiExec: Updated to ensure that all operation region handlers are 1659249663Sjkiminstalled before the _REG methods are executed. This prevents a _REG 1660249663Sjkimmethod from aborting if it accesses an address space has no handler. 1661249663SjkimAcpiExec installs a handler for every possible address space. 1662249663Sjkim 1663249663SjkimDebugger: Enhanced the "handlers" command to display non-root handlers. 1664249663SjkimThis change enhances the handlers command to display handlers associated 1665249663Sjkimwith individual devices throughout the namespace, in addition to the 1666253690Sjkimcurrently supported display of handlers associated with the root 1667253690Sjkimnamespace 1668249663Sjkimnode. 1669249663Sjkim 1670249663SjkimASL Test Suite: Several test suite errors have been identified and 1671249663Sjkimresolved, reducing the total error count during execution. Chao Guan. 1672249663Sjkim 1673249663Sjkim---------------------------------------- 1674249112Sjkim28 March 2013. Summary of changes for version 20130328: 1675249112Sjkim 1676249112Sjkim1) ACPICA kernel-resident subsystem: 1677249112Sjkim 1678249112SjkimFixed several possible race conditions with the internal object reference 1679249112Sjkimcounting mechanism. Some of the external ACPICA interfaces update object 1680249112Sjkimreference counts without holding the interpreter or namespace lock. This 1681249112Sjkimchange adds a spinlock to protect reference count updates on the internal 1682249112SjkimACPICA objects. Reported by and with assistance from Andriy Gapon 1683249112Sjkim(avg@FreeBSD.org). 1684249112Sjkim 1685249112SjkimFADT support: Removed an extraneous warning for very large GPE register 1686249112Sjkimsets. This change removes a size mismatch warning if the legacy length 1687249112Sjkimfield for a GPE register set is larger than the 64-bit GAS structure can 1688249112Sjkimaccommodate. GPE register sets can be larger than the 255-bit width 1689249112Sjkimlimitation of the GAS structure. Linn Crosetto (linn@hp.com). 1690249112Sjkim 1691249112Sjkim_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 1692249112Sjkimreturn from this interface. Handles a possible timeout case if 1693249112SjkimACPI_WAIT_FOREVER is modified by the host to be a value less than 1694249112Sjkim"forever". Jung-uk Kim. 1695249112Sjkim 1696253690SjkimPredefined name support: Add allowed/required argument type information 1697253690Sjkimto 1698249112Sjkimthe master predefined info table. This change adds the infrastructure to 1699249112Sjkimenable typechecking on incoming arguments for all predefined 1700249112Sjkimmethods/objects. It does not actually contain the code that will fully 1701249112Sjkimutilize this information, this is still under development. Also condenses 1702249112Sjkimsome duplicate code for the predefined names into a new module, 1703249112Sjkimutilities/utpredef.c 1704249112Sjkim 1705249112SjkimExample Code and Data Size: These are the sizes for the OS-independent 1706249112Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1707249112Sjkimdebug version of the code includes the debug output trace mechanism and 1708249112Sjkimhas a much larger code and data size. 1709249112Sjkim 1710249112Sjkim Previous Release: 1711249112Sjkim Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1712249112Sjkim Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1713249112Sjkim Current Release: 1714249112Sjkim Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1715249112Sjkim Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1716249112Sjkim 1717249112Sjkim 1718249112Sjkim2) iASL Compiler/Disassembler and Tools: 1719249112Sjkim 1720253690SjkimiASL: Implemented a new option to simplify the development of ACPI- 1721253690Sjkimrelated 1722249112SjkimBIOS code. Adds support for a new "offset table" output file. The -so 1723249112Sjkimoption will create a C table containing the AML table offsets of various 1724253690Sjkimnamed objects in the namespace so that BIOS code can modify them easily 1725253690Sjkimat 1726249112Sjkimboot time. This can simplify BIOS runtime code by eliminating expensive 1727249112Sjkimsearches for "magic values", enhancing boot times and adding greater 1728249112Sjkimreliability. With assistance from Lee Hamel. 1729249112Sjkim 1730249112SjkimiASL: Allow additional predefined names to return zero-length packages. 1731249112SjkimNow, all predefined names that are defined by the ACPI specification to 1732249112Sjkimreturn a "variable-length package of packages" are allowed to return a 1733249112Sjkimzero length top-level package. This allows the BIOS to tell the host that 1734249112Sjkimthe requested feature is not supported, and supports existing BIOS/ASL 1735249112Sjkimcode and practices. 1736249112Sjkim 1737249112SjkimiASL: Changed the "result not used" warning to an error. This is the case 1738249112Sjkimwhere an ASL operator is effectively a NOOP because the result of the 1739249112Sjkimoperation is not stored anywhere. For example: 1740249112Sjkim Add (4, Local0) 1741249112SjkimThere is no target (missing 3rd argument), nor is the function return 1742249112Sjkimvalue used. This is potentially a very serious problem -- since the code 1743249112Sjkimwas probably intended to do something, but for whatever reason, the value 1744249112Sjkimwas not stored. Therefore, this issue has been upgraded from a warning to 1745249112Sjkiman error. 1746249112Sjkim 1747249112SjkimAcpiHelp: Added allowable/required argument types to the predefined names 1748249112Sjkiminfo display. This feature utilizes the recent update to the predefined 1749249112Sjkimnames table (above). 1750249112Sjkim 1751249112Sjkim---------------------------------------- 1752246849Sjkim14 February 2013. Summary of changes for version 20130214: 1753246849Sjkim 1754246849Sjkim1) ACPICA Kernel-resident Subsystem: 1755246849Sjkim 1756246849SjkimFixed a possible regression on some hosts: Reinstated the safe return 1757246849Sjkimmacros (return_ACPI_STATUS, etc.) that ensure that the argument is 1758246849Sjkimevaluated only once. Although these macros are not needed for the ACPICA 1759253690Sjkimcode itself, they are often used by ACPI-related host device drivers 1760253690Sjkimwhere 1761246849Sjkimthe safe feature may be necessary. 1762246849Sjkim 1763246849SjkimFixed several issues related to the ACPI 5.0 reduced hardware support 1764253690Sjkim(SOC): Now ensure that if the platform declares itself as hardware- 1765253690Sjkimreduced 1766246849Sjkimvia the FADT, the following functions become NOOPs (and always return 1767246849SjkimAE_OK) because ACPI is always enabled by definition on these machines: 1768246849Sjkim AcpiEnable 1769246849Sjkim AcpiDisable 1770246849Sjkim AcpiHwGetMode 1771246849Sjkim AcpiHwSetMode 1772246849Sjkim 1773246849SjkimDynamic Object Repair: Implemented additional runtime repairs for 1774246849Sjkimpredefined name return values. Both of these repairs can simplify code in 1775246849Sjkimthe related device drivers that invoke these methods: 1776246849Sjkim1) For the _STR and _MLS names, automatically repair/convert an ASCII 1777246849Sjkimstring to a Unicode buffer. 1778253690Sjkim2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 1779253690Sjkima 1780246849Sjkimlone end tag descriptor in the following cases: A Return(0) was executed, 1781246849Sjkima null buffer was returned, or no object at all was returned (non-slack 1782246849Sjkimmode only). Adds a new file, nsconvert.c 1783246849SjkimACPICA BZ 998. Bob Moore, Lv Zheng. 1784246849Sjkim 1785253690SjkimResource Manager: Added additional code to prevent possible infinite 1786253690Sjkimloops 1787246849Sjkimwhile traversing corrupted or ill-formed resource template buffers. Check 1788246849Sjkimfor zero-length resource descriptors in all code that loops through 1789246849Sjkimresource templates (the length field is used to index through the 1790246849Sjkimtemplate). This change also hardens the external AcpiWalkResources and 1791246849SjkimAcpiWalkResourceBuffer interfaces. 1792246849Sjkim 1793246849SjkimLocal Cache Manager: Enhanced the main data structure to eliminate an 1794246849Sjkimunnecessary mechanism to access the next object in the list. Actually 1795246849Sjkimprovides a small performance enhancement for hosts that use the local 1796246849SjkimACPICA cache manager. Jung-uk Kim. 1797246849Sjkim 1798246849SjkimExample Code and Data Size: These are the sizes for the OS-independent 1799246849Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1800246849Sjkimdebug version of the code includes the debug output trace mechanism and 1801246849Sjkimhas a much larger code and data size. 1802246849Sjkim 1803246849Sjkim Previous Release: 1804246849Sjkim Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1805246849Sjkim Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1806246849Sjkim Current Release: 1807246849Sjkim Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1808246849Sjkim Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1809246849Sjkim 1810246849Sjkim 1811246849Sjkim2) iASL Compiler/Disassembler and Tools: 1812246849Sjkim 1813246849SjkimiASL/Disassembler: Fixed several issues with the definition of the ACPI 1814246849Sjkim5.0 RASF table (RAS Feature Table). This change incorporates late changes 1815246849Sjkimthat were made to the ACPI 5.0 specification. 1816246849Sjkim 1817246849SjkimiASL/Disassembler: Added full support for the following new ACPI tables: 1818246849Sjkim 1) The MTMR table (MID Timer Table) 1819246849Sjkim 2) The VRTC table (Virtual Real Time Clock Table). 1820246849SjkimIncludes header file, disassembler, table compiler, and template support 1821246849Sjkimfor both tables. 1822246849Sjkim 1823246849SjkimiASL: Implemented compile-time validation of package objects returned by 1824246849Sjkimpredefined names. This new feature validates static package objects 1825246849Sjkimreturned by the various predefined names defined to return packages. Both 1826246849Sjkimobject types and package lengths are validated, for both parent packages 1827253690Sjkimand sub-packages, if any. The code is similar in structure and behavior 1828253690Sjkimto 1829246849Sjkimthe runtime repair mechanism within the AML interpreter and uses the 1830246849Sjkimexisting predefined name information table. Adds a new file, aslprepkg.c. 1831246849SjkimACPICA BZ 938. 1832246849Sjkim 1833246849SjkimiASL: Implemented auto-detection of binary ACPI tables for disassembly. 1834246849SjkimThis feature detects a binary file with a valid ACPI table header and 1835246849Sjkiminvokes the disassembler automatically. Eliminates the need to 1836246849Sjkimspecifically invoke the disassembler with the -d option. ACPICA BZ 862. 1837246849Sjkim 1838246849SjkimiASL/Disassembler: Added several warnings for the case where there are 1839246849Sjkimunresolved control methods during the disassembly. This can potentially 1840246849Sjkimcause errors when the output file is compiled, because the disassembler 1841246849Sjkimassumes zero method arguments in these cases (it cannot determine the 1842246849Sjkimactual number of arguments without resolution/definition of the method). 1843246849Sjkim 1844246849SjkimDebugger: Added support to display all resources with a single command. 1845253690SjkimInvocation of the resources command with no arguments will now display 1846253690Sjkimall 1847246849Sjkimresources within the current namespace. 1848246849Sjkim 1849246849SjkimAcpiHelp: Added descriptive text for each ACPICA exception code displayed 1850246849Sjkimvia the -e option. 1851246849Sjkim 1852246849Sjkim---------------------------------------- 1853245582Sjkim17 January 2013. Summary of changes for version 20130117: 1854243347Sjkim 1855243347Sjkim1) ACPICA Kernel-resident Subsystem: 1856243347Sjkim 1857245582SjkimUpdated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 1858245582Sjkimreturn either 1 or 2 integers. Although the ACPI spec defines the \_Sx 1859253690Sjkimobjects to return a package containing one integer, most BIOS code 1860253690Sjkimreturns 1861253690Sjkimtwo integers and the previous code reflects that. However, we also need 1862253690Sjkimto 1863245582Sjkimsupport BIOS code that actually implements to the ACPI spec, and this 1864245582Sjkimchange reflects this. 1865245582Sjkim 1866245582SjkimFixed two issues with the ACPI_DEBUG_PRINT macros: 1867245582Sjkim1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 1868245582SjkimC compilers that require this support. 1869245582Sjkim2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 1870245582SjkimACPI_DEBUG is already used by many of the various hosts. 1871245582Sjkim 1872245582SjkimUpdated all ACPICA copyrights and signons to 2013. Added the 2013 1873245582Sjkimcopyright to all module headers and signons, including the standard Linux 1874245582Sjkimheader. This affects virtually every file in the ACPICA core subsystem, 1875245582SjkimiASL compiler, all ACPICA utilities, and the test suites. 1876245582Sjkim 1877245582SjkimExample Code and Data Size: These are the sizes for the OS-independent 1878245582Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1879245582Sjkimdebug version of the code includes the debug output trace mechanism and 1880245582Sjkimhas a much larger code and data size. 1881245582Sjkim 1882245582Sjkim Previous Release: 1883245582Sjkim Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1884245582Sjkim Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1885245582Sjkim Current Release: 1886245582Sjkim Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1887245582Sjkim Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1888245582Sjkim 1889245582Sjkim 1890245582Sjkim2) iASL Compiler/Disassembler and Tools: 1891245582Sjkim 1892245582SjkimGeneric Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 1893245582Sjkimprevent a possible fault on some hosts. Some C libraries modify the arg 1894245582Sjkimpointer parameter to vfprintf making it difficult to call it twice in the 1895245582SjkimAcpiOsVprintf function. Use a local buffer to workaround this issue. This 1896245582Sjkimdoes not affect the Windows OSL since the Win C library does not modify 1897245582Sjkimthe arg pointer. Chao Guan, Bob Moore. 1898245582Sjkim 1899245582SjkimiASL: Fixed a possible infinite loop when the maximum error count is 1900245582Sjkimreached. If an output file other than the .AML file is specified (such as 1901245582Sjkima listing file), and the maximum number of errors is reached, do not 1902245582Sjkimattempt to flush data to the output file(s) as the compiler is aborting. 1903245582SjkimThis can cause an infinite loop as the max error count code essentially 1904245582Sjkimkeeps calling itself. 1905245582Sjkim 1906253690SjkimiASL/Disassembler: Added an option (-in) to ignore NOOP 1907253690Sjkimopcodes/operators. 1908245582SjkimImplemented for both the compiler and the disassembler. Often, the NOOP 1909253690Sjkimopcode is used as padding for packages that are changed dynamically by 1910253690Sjkimthe 1911245582SjkimBIOS. When disassembled and recompiled, these NOOPs will cause syntax 1912245582Sjkimerrors. This option causes the disassembler to ignore all NOOP opcodes 1913253690Sjkim(0xA3), and it also causes the compiler to ignore all ASL source code 1914253690SjkimNOOP 1915245582Sjkimstatements as well. 1916245582Sjkim 1917245582SjkimDebugger: Enhanced the Sleep command to execute all sleep states. This 1918245582Sjkimchange allows Sleep to be invoked with no arguments and causes the 1919245582Sjkimdebugger to execute all of the sleep states, 0-5, automatically. 1920245582Sjkim 1921245582Sjkim---------------------------------------- 1922245582Sjkim20 December 2012. Summary of changes for version 20121220: 1923245582Sjkim 1924245582Sjkim1) ACPICA Kernel-resident Subsystem: 1925245582Sjkim 1926245582SjkimImplemented a new interface, AcpiWalkResourceBuffer. This interface is an 1927245582Sjkimalternate entry point for AcpiWalkResources and improves the usability of 1928245582Sjkimthe resource manager by accepting as input a buffer containing the output 1929245582Sjkimof either a _CRS, _PRS, or _AEI method. The key functionality is that the 1930245582Sjkiminput buffer is not deleted by this interface so that it can be used by 1931245582Sjkimthe host later. See the ACPICA reference for details. 1932245582Sjkim 1933245582SjkimInterpreter: Add a warning if a 64-bit constant appears in a 32-bit table 1934245582Sjkim(DSDT version < 2). The constant will be truncated and this warning 1935245582Sjkimreflects that behavior. 1936245582Sjkim 1937245582SjkimResource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 1938245582SjkimExtendedInterrupt, and GpioInt descriptors. This change adds support to 1939245582Sjkimboth get and set the new wake bit in these descriptors, separately from 1940245582Sjkimthe existing share bit. Reported by Aaron Lu. 1941245582Sjkim 1942245582SjkimInterpreter: Fix Store() when an implicit conversion is not possible. For 1943245582Sjkimexample, in the cases such as a store of a string to an existing package 1944245582Sjkimobject, implement the store as a CopyObject(). This is a small departure 1945253690Sjkimfrom the ACPI specification which states that the control method should 1946253690Sjkimbe 1947245582Sjkimaborted in this case. However, the ASLTS suite depends on this behavior. 1948245582Sjkim 1949245582SjkimPerformance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 1950245582Sjkimmacros: check if debug output is currently enabled as soon as possible to 1951245582Sjkimminimize performance impact if debug is in fact not enabled. 1952245582Sjkim 1953245582SjkimSource code restructuring: Cleanup to improve modularity. The following 1954245582Sjkimnew files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 1955245582Sjkimpsopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 1956245582SjkimAssociated makefiles and project files have been updated. 1957245582Sjkim 1958245582SjkimChanged an exception code for LoadTable operator. For the case where one 1959245582Sjkimof the input strings is too long, change the returned exception code from 1960245582SjkimAE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 1961245582Sjkim 1962245582SjkimFixed a possible memory leak in dispatcher error path. On error, delete 1963245582Sjkimthe mutex object created during method mutex creation. Reported by 1964245582Sjkimtim.gardner@canonical.com. 1965245582Sjkim 1966245582SjkimExample Code and Data Size: These are the sizes for the OS-independent 1967245582Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1968245582Sjkimdebug version of the code includes the debug output trace mechanism and 1969245582Sjkimhas a much larger code and data size. 1970245582Sjkim 1971245582Sjkim Previous Release: 1972245582Sjkim Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1973245582Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1974245582Sjkim Current Release: 1975245582Sjkim Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1976245582Sjkim Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1977245582Sjkim 1978245582Sjkim 1979245582Sjkim2) iASL Compiler/Disassembler and Tools: 1980245582Sjkim 1981245582SjkimiASL: Disallow a method call as argument to the ObjectType ASL operator. 1982245582SjkimThis change tracks an errata to the ACPI 5.0 document. The AML grammar 1983245582Sjkimwill not allow the interpreter to differentiate between a method and a 1984245582Sjkimmethod invocation when these are used as an argument to the ObjectType 1985253690Sjkimoperator. The ACPI specification change is to disallow a method 1986253690Sjkiminvocation 1987245582Sjkim(UserTerm) for the ObjectType operator. 1988245582Sjkim 1989245582SjkimFinish support for the TPM2 and CSRT tables in the headers, table 1990245582Sjkimcompiler, and disassembler. 1991245582Sjkim 1992245582SjkimUnix user-space OSL: Fix a problem with WaitSemaphore where the timeout 1993253690Sjkimalways expires immediately if the semaphore is not available. The 1994253690Sjkimoriginal 1995253690Sjkimcode was using a relative-time timeout, but sem_timedwait requires the 1996253690Sjkimuse 1997245582Sjkimof an absolute time. 1998245582Sjkim 1999245582SjkimiASL: Added a remark if the Timer() operator is used within a 32-bit 2000245582Sjkimtable. This operator returns a 64-bit time value that will be truncated 2001245582Sjkimwithin a 32-bit table. 2002245582Sjkim 2003245582SjkimiASL Source code restructuring: Cleanup to improve modularity. The 2004245582Sjkimfollowing new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2005245582Sjkimaslmethod.c, and aslfileio.c. Associated makefiles and project files have 2006245582Sjkimbeen updated. 2007245582Sjkim 2008245582Sjkim 2009245582Sjkim---------------------------------------- 2010245582Sjkim14 November 2012. Summary of changes for version 20121114: 2011245582Sjkim 2012245582Sjkim1) ACPICA Kernel-resident Subsystem: 2013245582Sjkim 2014243347SjkimImplemented a performance enhancement for ACPI/AML Package objects. This 2015243347Sjkimchange greatly increases the performance of Package objects within the 2016253690Sjkiminterpreter. It changes the processing of reference counts for packages 2017253690Sjkimby 2018243347Sjkimoptimizing for the most common case where the package sub-objects are 2019253690Sjkimeither Integers, Strings, or Buffers. Increases the overall performance 2020253690Sjkimof 2021253690Sjkimthe ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2022253690Sjkim2X.) 2023243347SjkimChao Guan. ACPICA BZ 943. 2024243347Sjkim 2025243347SjkimImplemented and deployed common macros to extract flag bits from resource 2026253690Sjkimdescriptors. Improves readability and maintainability of the code. Fixes 2027253690Sjkima 2028243347Sjkimproblem with the UART serial bus descriptor for the number of data bits 2029243347Sjkimflags (was incorrectly 2 bits, should be 3). 2030243347Sjkim 2031243347SjkimEnhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2032243347Sjkimof the macros and changed the SETx macros to the style of (destination, 2033243347Sjkimsource). Also added ACPI_CASTx companion macros. Lv Zheng. 2034243347Sjkim 2035243347SjkimExample Code and Data Size: These are the sizes for the OS-independent 2036243347Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2037243347Sjkimdebug version of the code includes the debug output trace mechanism and 2038243347Sjkimhas a much larger code and data size. 2039243347Sjkim 2040243347Sjkim Previous Release: 2041243347Sjkim Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2042243347Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2043243347Sjkim Current Release: 2044243347Sjkim Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2045243347Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2046243347Sjkim 2047243347Sjkim 2048243347Sjkim2) iASL Compiler/Disassembler and Tools: 2049243347Sjkim 2050243347SjkimDisassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2051243347Sjkimadds the ShareAndWake and ExclusiveAndWake flags which were added to the 2052243347SjkimIrq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2053243347Sjkim 2054243347SjkimDisassembler: Fixed a problem with external declaration generation. Fixes 2055243347Sjkima problem where an incorrect pathname could be generated for an external 2056243347Sjkimdeclaration if the original reference to the object includes leading 2057243347Sjkimcarats (^). ACPICA BZ 984. 2058243347Sjkim 2059243347SjkimDebugger: Completed a major update for the Disassemble<method> command. 2060243347SjkimThis command was out-of-date and did not properly disassemble control 2061253690Sjkimmethods that had any reasonable complexity. This fix brings the command 2062253690Sjkimup 2063243347Sjkimto the same level as the rest of the disassembler. Adds one new file, 2064243347Sjkimdmdeferred.c, which is existing code that is now common with the main 2065243347Sjkimdisassembler and the debugger disassemble command. ACPICA MZ 978. 2066243347Sjkim 2067243347SjkimiASL: Moved the parser entry prototype to avoid a duplicate declaration. 2068253690SjkimNewer versions of Bison emit this prototype, so moved the prototype out 2069253690Sjkimof 2070253690Sjkimthe iASL header to where it is actually used in order to avoid a 2071253690Sjkimduplicate 2072243347Sjkimdeclaration. 2073243347Sjkim 2074243347SjkimiASL/Tools: Standardized use of the stream I/O functions: 2075243347Sjkim 1) Ensure check for I/O error after every fopen/fread/fwrite 2076243347Sjkim 2) Ensure proper order of size/count arguments for fread/fwrite 2077243347Sjkim 3) Use test of (Actual != Requested) after all fwrite, and most fread 2078243347Sjkim 4) Standardize I/O error messages 2079253690SjkimImproves reliability and maintainability of the code. Bob Moore, Lv 2080253690SjkimZheng. 2081243347SjkimACPICA BZ 981. 2082243347Sjkim 2083243347SjkimDisassembler: Prevent duplicate External() statements. During generation 2084243347Sjkimof external statements, detect similar pathnames that are actually 2085243347Sjkimduplicates such as these: 2086243347Sjkim External (\ABCD) 2087243347Sjkim External (ABCD) 2088243347SjkimRemove all leading '\' characters from pathnames during the external 2089243347Sjkimstatement generation so that duplicates will be detected and tossed. 2090243347SjkimACPICA BZ 985. 2091243347Sjkim 2092243347SjkimTools: Replace low-level I/O with stream I/O functions. Replace 2093243347Sjkimopen/read/write/close with the stream I/O equivalents 2094243347Sjkimfopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 2095243347SjkimMoore. 2096243347Sjkim 2097243347SjkimAcpiBin: Fix for the dump-to-hex function. Now correctly output the table 2098243347Sjkimname header so that AcpiXtract recognizes the output file/table. 2099243347Sjkim 2100243347SjkimiASL: Remove obsolete -2 option flag. Originally intended to force the 2101243347Sjkimcompiler/disassembler into an ACPI 2.0 mode, this was never implemented 2102243347Sjkimand the entire concept is now obsolete. 2103243347Sjkim 2104243347Sjkim---------------------------------------- 2105241973Sjkim18 October 2012. Summary of changes for version 20121018: 2106241973Sjkim 2107241973Sjkim 2108241973Sjkim1) ACPICA Kernel-resident Subsystem: 2109241973Sjkim 2110241973SjkimUpdated support for the ACPI 5.0 MPST table. Fixes some problems 2111241973Sjkimintroduced by late changes to the table as it was added to the ACPI 5.0 2112241973Sjkimspecification. Includes header, disassembler, and data table compiler 2113241973Sjkimsupport as well as a new version of the MPST template. 2114241973Sjkim 2115241973SjkimAcpiGetObjectInfo: Enhanced the device object support to include the ACPI 2116241973Sjkim5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 2117241973Sjkimmethods: _HID, _CID, and _UID. 2118241973Sjkim 2119241973SjkimChanged ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 2120241973SjkimACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 2121241973Sjkimname collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 2122241973Sjkimnames for their various drivers. Affects the AcpiGetObjectInfo external 2123241973Sjkiminterface, and other internal interfaces as well. 2124241973Sjkim 2125241973SjkimAdded and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 2126241973SjkimThis macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 2127241973Sjkimon machines that support non-aligned transfers. Optimizes for this case 2128241973Sjkimrather than using a strncpy. With assistance from Zheng Lv. 2129241973Sjkim 2130241973SjkimResource Manager: Small fix for buffer size calculation. Fixed a one byte 2131241973Sjkimerror in the output buffer calculation. Feng Tang. ACPICA BZ 849. 2132241973Sjkim 2133241973SjkimAdded a new debug print message for AML mutex objects that are force- 2134241973Sjkimreleased. At control method termination, any currently acquired mutex 2135241973Sjkimobjects are force-released. Adds a new debug-only message for each one 2136241973Sjkimthat is released. 2137241973Sjkim 2138241973SjkimAudited/updated all ACPICA return macros and the function debug depth 2139241973Sjkimcounter: 1) Ensure that all functions that use the various TRACE macros 2140241973Sjkimalso use the appropriate ACPICA return macros. 2) Ensure that all normal 2141241973Sjkimreturn statements surround the return expression (value) with parens to 2142241973Sjkimensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 2143241973SjkimZheng Lv, Bob Moore. ACPICA Bugzilla 972. 2144241973Sjkim 2145241973SjkimGlobal source code changes/maintenance: All extra lines at the start and 2146241973Sjkimend of each source file have been removed for consistency. Also, within 2147241973Sjkimcomments, all new sentences start with a single space instead of a double 2148241973Sjkimspace, again for consistency across the code base. 2149241973Sjkim 2150241973SjkimExample Code and Data Size: These are the sizes for the OS-independent 2151241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2152241973Sjkimdebug version of the code includes the debug output trace mechanism and 2153241973Sjkimhas a much larger code and data size. 2154241973Sjkim 2155241973Sjkim Previous Release: 2156241973Sjkim Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2157241973Sjkim Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2158241973Sjkim Current Release: 2159241973Sjkim Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2160241973Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2161241973Sjkim 2162241973Sjkim 2163241973Sjkim2) iASL Compiler/Disassembler and Tools: 2164241973Sjkim 2165241973SjkimAcpiExec: Improved the algorithm used for memory leak/corruption 2166241973Sjkimdetection. Added some intelligence to the code that maintains the global 2167241973Sjkimlist of allocated memory. The list is now ordered by allocated memory 2168241973Sjkimaddress, significantly improving performance. When running AcpiExec on 2169241973Sjkimthe ASLTS test suite, speed improvements of 3X to 5X are seen, depending 2170241973Sjkimon the platform and/or the environment. Note, this performance 2171241973Sjkimenhancement affects the AcpiExec utility only, not the kernel-resident 2172241973SjkimACPICA code. 2173241973Sjkim 2174241973SjkimEnhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 2175241973Sjkimthe disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 2176241973Sjkimincorrect table offset reported for invalid opcodes. Report the original 2177241973Sjkim32-bit value for bad ACPI_NAMEs (as well as the repaired name.) 2178241973Sjkim 2179241973SjkimDisassembler: Enhanced the -vt option to emit the binary table data in 2180241973Sjkimhex format to assist with debugging. 2181241973Sjkim 2182241973SjkimFixed a potential filename buffer overflow in osunixdir.c. Increased the 2183241973Sjkimsize of file structure. Colin Ian King. 2184241973Sjkim 2185241973Sjkim---------------------------------------- 2186240716Sjkim13 September 2012. Summary of changes for version 20120913: 2187240716Sjkim 2188240716Sjkim 2189240716Sjkim1) ACPICA Kernel-resident Subsystem: 2190240716Sjkim 2191240716SjkimACPI 5.0: Added two new notify types for the Hardware Error Notification 2192241973SjkimStructure within the Hardware Error Source Table (HEST) table -- CMCI(5) 2193241973Sjkimand 2194240716SjkimMCE(6). 2195240716Sjkim 2196240716SjkimTable Manager: Merged/removed duplicate code in the root table resize 2197241973Sjkimfunctions. One function is external, the other is internal. Lv Zheng, 2198241973SjkimACPICA 2199240716SjkimBZ 846. 2200240716Sjkim 2201240716SjkimMakefiles: Completely removed the obsolete "Linux" makefiles under 2202253690Sjkimacpica/generate/linux. These makefiles are obsolete and have been 2203253690Sjkimreplaced 2204241973Sjkimby 2205240716Sjkimthe generic unix makefiles under acpica/generate/unix. 2206240716Sjkim 2207241973SjkimMakefiles: Ensure that binary files always copied properly. Minor rule 2208241973Sjkimchange 2209240716Sjkimto ensure that the final binary output files are always copied up to the 2210240716Sjkimappropriate binary directory (bin32 or bin64.) 2211240716Sjkim 2212240716SjkimExample Code and Data Size: These are the sizes for the OS-independent 2213241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2214241973Sjkimdebug 2215241973Sjkimversion of the code includes the debug output trace mechanism and has a 2216241973Sjkimmuch 2217240716Sjkimlarger code and data size. 2218240716Sjkim 2219240716Sjkim Previous Release: 2220240716Sjkim Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2221240716Sjkim Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2222240716Sjkim Current Release: 2223240716Sjkim Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 2224240716Sjkim Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 2225240716Sjkim 2226240716Sjkim 2227240716Sjkim2) iASL Compiler/Disassembler and Tools: 2228240716Sjkim 2229240716SjkimDisassembler: Fixed a possible fault during the disassembly of resource 2230240716Sjkimdescriptors when a second parse is required because of the invocation of 2231240716Sjkimexternal control methods within the table. With assistance from 2232240716Sjkimadq@lidskialf.net. ACPICA BZ 976. 2233240716Sjkim 2234241973SjkimiASL: Fixed a namepath optimization problem. An error can occur if the 2235241973Sjkimparse 2236241973Sjkimnode that contains the namepath to be optimized does not have a parent 2237241973Sjkimnode 2238240716Sjkimthat is a named object. This change fixes the problem. 2239240716Sjkim 2240241973SjkimiASL: Fixed a regression where the AML file is not deleted on errors. The 2241241973SjkimAML 2242253690Sjkimoutput file should be deleted if there are any errors during the 2243253690Sjkimcompiler. 2244241973SjkimThe 2245240716Sjkimonly exception is if the -f (force output) option is used. ACPICA BZ 974. 2246240716Sjkim 2247241973SjkimiASL: Added a feature to automatically increase internal line buffer 2248241973Sjkimsizes. 2249240716SjkimVia realloc(), automatically increase the internal line buffer sizes as 2250241973Sjkimnecessary to support very long source code lines. The current version of 2251241973Sjkimthe 2252241973Sjkimpreprocessor requires a buffer long enough to contain full source code 2253241973Sjkimlines. 2254240716SjkimThis change increases the line buffer(s) if the input lines go beyond the 2255241973Sjkimcurrent buffer size. This eliminates errors that occurred when a source 2256241973Sjkimcode 2257240716Sjkimline was longer than the buffer. 2258240716Sjkim 2259240716SjkimiASL: Fixed a problem with constant folding in method declarations. The 2260241973SjkimSyncLevel term is a ByteConstExpr, and incorrect code would be generated 2261241973Sjkimif a 2262240716SjkimType3 opcode was used. 2263240716Sjkim 2264241973SjkimDebugger: Improved command help support. For incorrect argument count, 2265241973Sjkimdisplay 2266240716Sjkimfull help for the command. For help command itself, allow an argument to 2267240716Sjkimspecify a command. 2268240716Sjkim 2269240716SjkimTest Suites: Several bug fixes for the ASLTS suite reduces the number of 2270240716Sjkimerrors during execution of the suite. Guan Chao. 2271240716Sjkim 2272240716Sjkim---------------------------------------- 2273239340Sjkim16 August 2012. Summary of changes for version 20120816: 2274239340Sjkim 2275239340Sjkim 2276239340Sjkim1) ACPICA Kernel-resident Subsystem: 2277239340Sjkim 2278241973SjkimRemoved all use of the deprecated _GTS and _BFS predefined methods. The 2279241973Sjkim_GTS 2280239340Sjkim(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 2281241973Sjkimdeprecated and will probably be removed from the ACPI specification. 2282241973SjkimWindows 2283241973Sjkimdoes not invoke them, and reportedly never will. The final nail in the 2284241973Sjkimcoffin 2285239340Sjkimis that the ACPI specification states that these methods must be run with 2286241973Sjkiminterrupts off, which is not going to happen in a kernel interpreter. 2287241973SjkimNote: 2288239340SjkimLinux has removed all use of the methods also. It was discovered that 2289241973Sjkiminvoking these functions caused failures on some machines, probably 2290241973Sjkimbecause 2291241973Sjkimthey were never tested since Windows does not call them. Affects two 2292241973Sjkimexternal 2293239340Sjkiminterfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 2294239340SjkimACPICA BZ 969. 2295239340Sjkim 2296239340SjkimImplemented support for complex bit-packed buffers returned from the _PLD 2297239340Sjkim(Physical Location of Device) predefined method. Adds a new external 2298253690Sjkiminterface, AcpiDecodePldBuffer that parses the buffer into a more usable 2299253690SjkimC 2300239340Sjkimstructure. Note: C Bitfields cannot be used for this type of predefined 2301241973Sjkimstructure since the memory layout of individual bitfields is not defined 2302241973Sjkimby 2303241973Sjkimthe C language. In addition, there are endian concerns where a compiler 2304241973Sjkimwill 2305239340Sjkimchange the bitfield ordering based on the machine type. The new ACPICA 2306239340Sjkiminterface eliminates these issues, and should be called after _PLD is 2307239340Sjkimexecuted. ACPICA BZ 954. 2308239340Sjkim 2309241973SjkimImplemented a change to allow a scope change to root (via "Scope (\)") 2310241973Sjkimduring 2311239340Sjkimexecution of module-level ASL code (code that is executed at table load 2312239340Sjkimtime.) Lin Ming. 2313239340Sjkim 2314253690SjkimAdded the Windows8/Server2012 string for the _OSI method. This change 2315253690Sjkimadds 2316241973Sjkima 2317241973Sjkimnew _OSI string, "Windows 2012" for both Windows 8 and Windows Server 2318241973Sjkim2012. 2319239340Sjkim 2320241973SjkimAdded header support for the new ACPI tables DBG2 (Debug Port Table Type 2321241973Sjkim2) 2322239340Sjkimand CSRT (Core System Resource Table). 2323239340Sjkim 2324239340SjkimAdded struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 2325239340Sjkimnames. This simplifies access to the buffers returned by these predefined 2326239340Sjkimnames. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 2327239340Sjkim 2328239340SjkimGPE support: Removed an extraneous parameter from the various low-level 2329239340Sjkiminternal GPE functions. Tang Feng. 2330239340Sjkim 2331239340SjkimRemoved the linux makefiles from the unix packages. The generate/linux 2332253690Sjkimmakefiles are obsolete and have been removed from the unix tarball 2333253690Sjkimrelease 2334241973Sjkimpackages. The replacement makefiles are under generate/unix, and there is 2335241973Sjkima 2336239340Sjkimtop-level makefile under the main acpica directory. ACPICA BZ 967, 912. 2337239340Sjkim 2338239340SjkimUpdates for Unix makefiles: 2339239340Sjkim1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 2340253690Sjkim2) Update linker flags (move to end of command line) for AcpiExec 2341253690Sjkimutility. 2342239340SjkimGuan Chao. 2343239340Sjkim 2344239340SjkimSplit ACPICA initialization functions to new file, utxfinit.c. Split from 2345239340Sjkimutxface.c to improve modularity and reduce file size. 2346239340Sjkim 2347239340SjkimExample Code and Data Size: These are the sizes for the OS-independent 2348239340Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2349241973Sjkimdebug version of the code includes the debug output trace mechanism and 2350241973Sjkimhas a 2351239340Sjkimmuch larger code and data size. 2352239340Sjkim 2353239340Sjkim Previous Release: 2354239340Sjkim Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2355239340Sjkim Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2356239340Sjkim Current Release: 2357239340Sjkim Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 2358239340Sjkim Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 2359239340Sjkim 2360239340Sjkim 2361239340Sjkim2) iASL Compiler/Disassembler and Tools: 2362239340Sjkim 2363239340SjkimiASL: Fixed a problem with constant folding for fixed-length constant 2364239340Sjkimexpressions. The constant-folding code was not being invoked for constant 2365253690Sjkimexpressions that allow the use of type 3/4/5 opcodes to generate 2366253690Sjkimconstants 2367241973Sjkimfor expressions such as ByteConstExpr, WordConstExpr, etc. This could 2368241973Sjkimresult 2369239340Sjkimin the generation of invalid AML bytecode. ACPICA BZ 970. 2370239340Sjkim 2371239340SjkimiASL: Fixed a generation issue on newer versions of Bison. Newer versions 2372253690Sjkimapparently automatically emit some of the necessary externals. This 2373253690Sjkimchange 2374239340Sjkimhandles these versions in order to eliminate generation warnings. 2375239340Sjkim 2376239340SjkimDisassembler: Added support to decode the DBG2 and CSRT ACPI tables. 2377239340Sjkim 2378241973SjkimDisassembler: Add support to decode _PLD buffers. The decoded buffer 2379241973Sjkimappears 2380239340Sjkimwithin comments in the output file. 2381239340Sjkim 2382239340SjkimDebugger: Fixed a regression with the "Threads" command where 2383239340SjkimAE_BAD_PARAMETER was always returned. 2384239340Sjkim 2385239340Sjkim---------------------------------------- 2386238381Sjkim11 July 2012. Summary of changes for version 20120711: 2387238381Sjkim 2388238381Sjkim1) ACPICA Kernel-resident Subsystem: 2389238381Sjkim 2390238381SjkimFixed a possible fault in the return package object repair code. Fixes a 2391253690Sjkimproblem that can occur when a lone package object is wrapped with an 2392253690Sjkimouter 2393241973Sjkimpackage object in order to force conformance to the ACPI specification. 2394241973SjkimCan 2395241973Sjkimaffect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 2396241973Sjkim_DLM, 2397238381Sjkim_CSD, _PSD, _TSD. 2398238381Sjkim 2399238381SjkimRemoved code to disable/enable bus master arbitration (ARB_DIS bit in the 2400238381SjkimPM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 2401241973SjkimARB_DIS bit must be implemented in the host-dependent C3 processor power 2402241973Sjkimstate 2403241973Sjkimsupport. Note, ARB_DIS is obsolete and only applies to older chipsets, 2404241973Sjkimboth 2405238381SjkimIntel and other vendors. (for Intel: ICH4-M and earlier) 2406238381Sjkim 2407241973SjkimThis change removes the code to disable/enable bus master arbitration 2408241973Sjkimduring 2409241973Sjkimsuspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 2410241973Sjkimcauses 2411241973Sjkimresume problems on some machines. The change has been in use for over 2412241973Sjkimseven 2413238381Sjkimyears within Linux. 2414238381Sjkim 2415241973SjkimImplemented two new external interfaces to support host-directed dynamic 2416241973SjkimACPI 2417241973Sjkimtable load and unload. They are intended to simplify the host 2418241973Sjkimimplementation 2419238381Sjkimof hot-plug support: 2420238381Sjkim AcpiLoadTable: Load an SSDT from a buffer into the namespace. 2421241973Sjkim AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 2422241973Sjkimtable. 2423238381SjkimSee the ACPICA reference for additional details. Adds one new file, 2424238381Sjkimcomponents/tables/tbxfload.c 2425238381Sjkim 2426241973SjkimImplemented and deployed two new interfaces for errors and warnings that 2427241973Sjkimare 2428238381Sjkimknown to be caused by BIOS/firmware issues: 2429238381Sjkim AcpiBiosError: Prints "ACPI Firmware Error" message. 2430238381Sjkim AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 2431241973SjkimDeployed these new interfaces in the ACPICA Table Manager code for ACPI 2432241973Sjkimtable 2433241973Sjkimand FADT errors. Additional deployment to be completed as appropriate in 2434241973Sjkimthe 2435238381Sjkimfuture. The associated conditional macros are ACPI_BIOS_ERROR and 2436253690SjkimACPI_BIOS_WARNING. See the ACPICA reference for additional details. 2437253690SjkimACPICA 2438241973SjkimBZ 2439238381Sjkim843. 2440238381Sjkim 2441238381SjkimImplicit notify support: ensure that no memory allocation occurs within a 2442241973Sjkimcritical region. This fix moves a memory allocation outside of the time 2443241973Sjkimthat a 2444253690Sjkimspinlock is held. Fixes issues on systems that do not allow this 2445253690Sjkimbehavior. 2446238381SjkimJung-uk Kim. 2447238381Sjkim 2448241973SjkimSplit exception code utilities and tables into a new file, 2449241973Sjkimutilities/utexcep.c 2450238381Sjkim 2451238381SjkimExample Code and Data Size: These are the sizes for the OS-independent 2452241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2453241973Sjkimdebug 2454241973Sjkimversion of the code includes the debug output trace mechanism and has a 2455241973Sjkimmuch 2456238381Sjkimlarger code and data size. 2457238381Sjkim 2458238381Sjkim Previous Release: 2459238381Sjkim Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2460238381Sjkim Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2461238381Sjkim Current Release: 2462238381Sjkim Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 2463238381Sjkim Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 2464238381Sjkim 2465238381Sjkim 2466238381Sjkim2) iASL Compiler/Disassembler and Tools: 2467238381Sjkim 2468241973SjkimiASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 2469241973Sjkimof 2470238381Sjkim0. Jung-uk Kim. 2471238381Sjkim 2472241973SjkimDebugger: Enhanced the "tables" command to emit additional information 2473241973Sjkimabout 2474238381Sjkimthe current set of ACPI tables, including the owner ID and flags decode. 2475238381Sjkim 2476238381SjkimDebugger: Reimplemented the "unload" command to use the new 2477241973SjkimAcpiUnloadParentTable external interface. This command was disable 2478241973Sjkimpreviously 2479238381Sjkimdue to need for an unload interface. 2480238381Sjkim 2481241973SjkimAcpiHelp: Added a new option to decode ACPICA exception codes. The -e 2482241973Sjkimoption 2483238381Sjkimwill decode 16-bit hex status codes (ACPI_STATUS) to name strings. 2484238381Sjkim 2485238381Sjkim---------------------------------------- 2486237412Sjkim20 June 2012. Summary of changes for version 20120620: 2487237412Sjkim 2488237412Sjkim 2489237412Sjkim1) ACPICA Kernel-resident Subsystem: 2490237412Sjkim 2491241973SjkimImplemented support to expand the "implicit notify" feature to allow 2492241973Sjkimmultiple 2493241973Sjkimdevices to be notified by a single GPE. This feature automatically 2494241973Sjkimgenerates a 2495237412Sjkimruntime device notification in the absence of a BIOS-provided GPE control 2496241973Sjkimmethod (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 2497241973Sjkimnotify is 2498253690Sjkimprovided by ACPICA for Windows compatibility, and is a workaround for 2499253690SjkimBIOS 2500241973SjkimAML 2501241973Sjkimcode errors. See the description of the AcpiSetupGpeForWake interface in 2502241973Sjkimthe 2503237412SjkimAPCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 2504237412Sjkim 2505237412SjkimChanged some comments and internal function names to simplify and ensure 2506237412Sjkimcorrectness of the Linux code translation. No functional changes. 2507237412Sjkim 2508237412SjkimExample Code and Data Size: These are the sizes for the OS-independent 2509241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2510241973Sjkimdebug 2511241973Sjkimversion of the code includes the debug output trace mechanism and has a 2512241973Sjkimmuch 2513237412Sjkimlarger code and data size. 2514237412Sjkim 2515237412Sjkim Previous Release: 2516237412Sjkim Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2517237412Sjkim Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2518237412Sjkim Current Release: 2519237412Sjkim Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2520237412Sjkim Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2521237412Sjkim 2522237412Sjkim 2523237412Sjkim2) iASL Compiler/Disassembler and Tools: 2524237412Sjkim 2525241973SjkimDisassembler: Added support to emit short, commented descriptions for the 2526241973SjkimACPI 2527237412Sjkimpredefined names in order to improve the readability of the disassembled 2528237412Sjkimoutput. ACPICA BZ 959. Changes include: 2529241973Sjkim 1) Emit descriptions for all standard predefined names (_INI, _STA, 2530241973Sjkim_PRW, 2531237412Sjkimetc.) 2532237412Sjkim 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 2533241973Sjkim 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 2534241973Sjkimetc.) 2535237412Sjkim 2536241973SjkimAcpiSrc: Fixed several long-standing Linux code translation issues. 2537241973SjkimArgument 2538253690Sjkimdescriptions in function headers are now translated properly to lower 2539253690Sjkimcase 2540241973Sjkimand 2541253690Sjkimunderscores. ACPICA BZ 961. Also fixes translation problems such as 2542253690Sjkimthese: 2543237412Sjkim(old -> new) 2544237412Sjkim i_aSL -> iASL 2545237412Sjkim 00-7_f -> 00-7F 2546237412Sjkim 16_k -> 16K 2547237412Sjkim local_fADT -> local_FADT 2548237412Sjkim execute_oSI -> execute_OSI 2549237412Sjkim 2550241973SjkimiASL: Fixed a problem where null bytes were inadvertently emitted into 2551241973Sjkimsome 2552237412Sjkimlisting files. 2553237412Sjkim 2554241973SjkimiASL: Added the existing debug options to the standard help screen. There 2555241973Sjkimare 2556237412Sjkimno longer two different help screens. ACPICA BZ 957. 2557237412Sjkim 2558241973SjkimAcpiHelp: Fixed some typos in the various predefined name descriptions. 2559241973SjkimAlso 2560237412Sjkimexpand some of the descriptions where appropriate. 2561237412Sjkim 2562241973SjkimiASL: Fixed the -ot option (display compile times/statistics). Was not 2563241973Sjkimworking 2564237412Sjkimproperly for standard output; only worked for the debug file case. 2565237412Sjkim 2566237412Sjkim---------------------------------------- 2567235945Sjkim18 May 2012. Summary of changes for version 20120518: 2568235945Sjkim 2569235945Sjkim 2570235945Sjkim1) ACPICA Core Subsystem: 2571235945Sjkim 2572241973SjkimAdded a new OSL interface, AcpiOsWaitEventsComplete. This interface is 2573241973Sjkimdefined 2574241973Sjkimto block until asynchronous events such as notifies and GPEs have 2575241973Sjkimcompleted. 2576235945SjkimWithin ACPICA, it is only called before a notify or GPE handler is 2577235945Sjkimremoved/uninstalled. It also may be useful for the host OS within related 2578241973Sjkimdrivers such as the Embedded Controller driver. See the ACPICA reference 2579241973Sjkimfor 2580235945Sjkimadditional information. ACPICA BZ 868. 2581235945Sjkim 2582241973SjkimACPI Tables: Added a new error message for a possible overflow failure 2583241973Sjkimduring 2584253690Sjkimthe conversion of FADT 32-bit legacy register addresses to internal 2585253690Sjkimcommon 2586241973Sjkim64- 2587241973Sjkimbit GAS structure representation. The GAS has a one-byte "bit length" 2588241973Sjkimfield, 2589235945Sjkimthus limiting the register length to 255 bits. ACPICA BZ 953. 2590235945Sjkim 2591235945SjkimExample Code and Data Size: These are the sizes for the OS-independent 2592241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2593241973Sjkimdebug 2594241973Sjkimversion of the code includes the debug output trace mechanism and has a 2595241973Sjkimmuch 2596235945Sjkimlarger code and data size. 2597235945Sjkim 2598235945Sjkim Previous Release: 2599235945Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2600235945Sjkim Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2601235945Sjkim Current Release: 2602235945Sjkim Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2603235945Sjkim Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2604235945Sjkim 2605235945Sjkim 2606235945Sjkim2) iASL Compiler/Disassembler and Tools: 2607235945Sjkim 2608241973SjkimiASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 2609241973Sjkimmacro. 2610235945SjkimThis keyword was added late in the ACPI 5.0 release cycle and was not 2611235945Sjkimimplemented until now. 2612235945Sjkim 2613235945SjkimDisassembler: Added support for Operation Region externals. Adds missing 2614235945Sjkimsupport for operation regions that are defined in another table, and 2615241973Sjkimreferenced locally via a Field or BankField ASL operator. Now generates 2616241973Sjkimthe 2617235945Sjkimcorrect External statement. 2618235945Sjkim 2619241973SjkimDisassembler: Several additional fixes for the External() statement 2620241973Sjkimgeneration 2621235945Sjkimrelated to some ASL operators. Also, order the External() statements 2622253690Sjkimalphabetically in the disassembler output. Fixes the External() 2623253690Sjkimgeneration 2624241973Sjkimfor 2625235945Sjkimthe Create* field, Alias, and Scope operators: 2626241973Sjkim 1) Create* buffer field operators - fix type mismatch warning on 2627241973Sjkimdisassembly 2628235945Sjkim 2) Alias - implement missing External support 2629235945Sjkim 3) Scope - fix to make sure all necessary externals are emitted. 2630235945Sjkim 2631241973SjkimiASL: Improved pathname support. For include files, merge the prefix 2632241973Sjkimpathname 2633235945Sjkimwith the file pathname and eliminate unnecessary components. Convert 2634241973Sjkimbackslashes in all pathnames to forward slashes, for readability. Include 2635241973Sjkimfile 2636235945Sjkimpathname changes affect both #include and Include() type operators. 2637235945Sjkim 2638241973SjkimiASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 2639241973Sjkimend 2640241973Sjkimof a valid line by inserting a newline and then returning the EOF during 2641241973Sjkimthe 2642235945Sjkimnext call to GetNextLine. Prevents the line from being ignored due to EOF 2643235945Sjkimcondition. 2644235945Sjkim 2645241973SjkimiASL: Implemented some changes to enhance the IDE support (-vi option.) 2646241973SjkimError 2647253690Sjkimand Warning messages are now correctly recognized for both the source 2648253690Sjkimcode 2649235945Sjkimbrowser and the global error and warning counts. 2650235945Sjkim 2651235945Sjkim---------------------------------------- 2652234623Sjkim20 April 2012. Summary of changes for version 20120420: 2653234623Sjkim 2654234623Sjkim 2655234623Sjkim1) ACPICA Core Subsystem: 2656234623Sjkim 2657253690SjkimImplemented support for multiple notify handlers. This change adds 2658253690Sjkimsupport 2659241973Sjkimto 2660241973Sjkimallow multiple system and device notify handlers on Device, Thermal Zone, 2661241973Sjkimand 2662241973SjkimProcessor objects. This can simplify the host OS notification 2663241973Sjkimimplementation. 2664253690SjkimAlso re-worked and restructured the entire notify support code to 2665253690Sjkimsimplify 2666234623Sjkimhandler installation, handler removal, notify event queuing, and notify 2667234623Sjkimdispatch to handler(s). Note: there can still only be two global notify 2668241973Sjkimhandlers - one for system notifies and one for device notifies. There are 2669241973Sjkimno 2670234623Sjkimchanges to the existing handler install/remove interfaces. Lin Ming, Bob 2671234623SjkimMoore, Rafael Wysocki. 2672234623Sjkim 2673234623SjkimFixed a regression in the package repair code where the object reference 2674234623Sjkimcount was calculated incorrectly. Regression was introduced in the commit 2675234623Sjkim"Support to add Package wrappers". 2676234623Sjkim 2677241973SjkimFixed a couple possible memory leaks in the AML parser, in the error 2678241973Sjkimrecovery 2679234623Sjkimpath. Jesper Juhl, Lin Ming. 2680234623Sjkim 2681234623SjkimExample Code and Data Size: These are the sizes for the OS-independent 2682234623Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2683241973Sjkimdebug version of the code includes the debug output trace mechanism and 2684241973Sjkimhas a 2685234623Sjkimmuch larger code and data size. 2686234623Sjkim 2687234623Sjkim Previous Release: 2688234623Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2689234623Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2690234623Sjkim Current Release: 2691234623Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2692234623Sjkim Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2693234623Sjkim 2694234623Sjkim 2695234623Sjkim2) iASL Compiler/Disassembler and Tools: 2696234623Sjkim 2697241973SjkimiASL: Fixed a problem with the resource descriptor support where the 2698241973Sjkimlength 2699234623Sjkimof the StartDependentFn and StartDependentFnNoPrio descriptors were not 2700241973Sjkimincluded in cumulative descriptor offset, resulting in incorrect values 2701241973Sjkimfor 2702241973Sjkimresource tags within resource descriptors appearing after a 2703241973SjkimStartDependent* 2704234623Sjkimdescriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 2705234623Sjkim 2706253690SjkimiASL and Preprocessor: Implemented full support for the #line directive 2707253690Sjkimto 2708241973Sjkimcorrectly track original source file line numbers through the .i 2709241973Sjkimpreprocessor 2710234623Sjkimoutput file - for error and warning messages. 2711234623Sjkim 2712241973SjkimiASL: Expand the allowable byte constants for address space IDs. 2713241973SjkimPreviously, 2714234623Sjkimthe allowable range was 0x80-0xFF (user-defined spaces), now the range is 2715234623Sjkim0x0A-0xFF to allow for custom and new IDs without changing the compiler. 2716234623Sjkim 2717234623SjkimiASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 2718234623Sjkim 2719234623SjkimiASL: Add option to completely disable the preprocessor (-Pn). 2720234623Sjkim 2721234623SjkimiASL: Now emit all error/warning messages to standard error (stderr) by 2722234623Sjkimdefault (instead of the previous stdout). 2723234623Sjkim 2724241973SjkimASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 2725241973SjkimUpdate 2726234623Sjkimfor resource descriptor offset fix above. Update/cleanup error output 2727234623Sjkimroutines. Enable and send iASL errors/warnings to an error logfile 2728253690Sjkim(error.txt). Send all other iASL output to a logfile (compiler.txt). 2729253690SjkimFixed 2730234623Sjkimseveral extraneous "unrecognized operator" messages. 2731234623Sjkim 2732234623Sjkim---------------------------------------- 2733233250Sjkim20 March 2012. Summary of changes for version 20120320: 2734233250Sjkim 2735233250Sjkim 2736233250Sjkim1) ACPICA Core Subsystem: 2737233250Sjkim 2738233250SjkimEnhanced the sleep/wake interfaces to optionally execute the _GTS method 2739253690Sjkim(Going To Sleep) and the _BFS method (Back From Sleep). Windows 2740253690Sjkimapparently 2741233250Sjkimdoes not execute these methods, and therefore these methods are often 2742233250Sjkimuntested. It has been seen on some systems where the execution of these 2743241973Sjkimmethods causes errors and also prevents the machine from entering S5. It 2744241973Sjkimis 2745241973Sjkimtherefore suggested that host operating systems do not execute these 2746241973Sjkimmethods 2747241973Sjkimby default. In the future, perhaps these methods can be optionally 2748241973Sjkimexecuted 2749241973Sjkimbased on the age of the system and/or what is the newest version of 2750241973SjkimWindows 2751241973Sjkimthat the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 2752241973Sjkimand 2753233250SjkimAcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 2754233250SjkimMing. 2755233250Sjkim 2756241973SjkimFixed a problem where the length of the local/common FADT was set too 2757241973Sjkimearly. 2758233250SjkimThe local FADT table length cannot be set to the common length until the 2759241973Sjkimoriginal length has been examined. There is code that checks the table 2760241973Sjkimlength 2761253690Sjkimand sets various fields appropriately. This can affect older machines 2762253690Sjkimwith 2763253690Sjkimearly FADT versions. For example, this can cause inadvertent writes to 2764253690Sjkimthe 2765233250SjkimCST_CNT register. Julian Anastasov. 2766233250Sjkim 2767241973SjkimFixed a mapping issue related to a physical table override. Use the 2768241973Sjkimdeferred 2769241973Sjkimmapping mechanism for tables loaded via the physical override OSL 2770241973Sjkiminterface. 2771241973SjkimThis allows for early mapping before the virtual memory manager is 2772241973Sjkimavailable. 2773233250SjkimThomas Renninger, Bob Moore. 2774233250Sjkim 2775241973SjkimEnhanced the automatic return-object repair code: Repair a common problem 2776241973Sjkimwith 2777253690Sjkimpredefined methods that are defined to return a variable-length Package 2778253690Sjkimof 2779241973Sjkimsub-objects. If there is only one sub-object, some BIOS ASL code 2780241973Sjkimmistakenly 2781253690Sjkimsimply returns the single object instead of a Package with one sub- 2782253690Sjkimobject. 2783241973SjkimThis new support will repair this error by wrapping a Package object 2784241973Sjkimaround 2785241973Sjkimthe original object, creating the correct and expected Package with one 2786241973Sjkimsub- 2787241973Sjkimobject. Names that can be repaired in this manner include: _ALR, _CSD, 2788241973Sjkim_HPX, 2789241973Sjkim_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 2790241973Sjkim939. 2791233250Sjkim 2792233250SjkimChanged the exception code returned for invalid ACPI paths passed as 2793233250Sjkimparameters to external interfaces such as AcpiEvaluateObject. Was 2794233250SjkimAE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 2795233250Sjkim 2796233250SjkimExample Code and Data Size: These are the sizes for the OS-independent 2797241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2798241973Sjkimdebug 2799241973Sjkimversion of the code includes the debug output trace mechanism and has a 2800241973Sjkimmuch 2801233250Sjkimlarger code and data size. 2802233250Sjkim 2803233250Sjkim Previous Release: 2804233250Sjkim Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2805233250Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2806233250Sjkim Current Release: 2807233250Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2808233250Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2809233250Sjkim 2810233250Sjkim 2811233250Sjkim2) iASL Compiler/Disassembler and Tools: 2812233250Sjkim 2813241973SjkimiASL: Added the infrastructure and initial implementation of a integrated 2814241973SjkimC- 2815241973Sjkimlike preprocessor. This will simplify BIOS development process by 2816241973Sjkimeliminating 2817241973Sjkimthe need for a separate preprocessing step during builds. On Windows, it 2818241973Sjkimalso 2819233250Sjkimeliminates the need to install a separate C compiler. ACPICA BZ 761. Some 2820241973Sjkimfeatures including full #define() macro support are still under 2821241973Sjkimdevelopment. 2822233250SjkimThese preprocessor directives are supported: 2823233250Sjkim #define 2824233250Sjkim #elif 2825233250Sjkim #else 2826233250Sjkim #endif 2827233250Sjkim #error 2828233250Sjkim #if 2829233250Sjkim #ifdef 2830233250Sjkim #ifndef 2831233250Sjkim #include 2832233250Sjkim #pragma message 2833233250Sjkim #undef 2834233250Sjkim #warning 2835233250SjkimIn addition, these new command line options are supported: 2836233250Sjkim -D <symbol> Define symbol for preprocessor use 2837233250Sjkim -li Create preprocessed output file (*.i) 2838233250Sjkim -P Preprocess only and create preprocessor output file (*.i) 2839233250Sjkim 2840241973SjkimTable Compiler: Fixed a problem where the equals operator within an 2841241973Sjkimexpression 2842233250Sjkimdid not work properly. 2843233250Sjkim 2844241973SjkimUpdated iASL to use the current versions of Bison/Flex. Updated the 2845241973SjkimWindows 2846241973Sjkimproject file to invoke these tools from the standard location. ACPICA BZ 2847241973Sjkim904. 2848233250SjkimVersions supported: 2849233250Sjkim Flex for Windows: V2.5.4 2850233250Sjkim Bison for Windows: V2.4.1 2851233250Sjkim 2852233250Sjkim---------------------------------------- 2853231844Sjkim15 February 2012. Summary of changes for version 20120215: 2854231844Sjkim 2855231844Sjkim 2856231844Sjkim1) ACPICA Core Subsystem: 2857231844Sjkim 2858231844SjkimThere have been some major changes to the sleep/wake support code, as 2859231844Sjkimdescribed below (a - e). 2860231844Sjkim 2861231844Sjkima) The AcpiLeaveSleepState has been split into two interfaces, similar to 2862231844SjkimAcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 2863241973SjkimAcpiLeaveSleepStatePrep. This allows the host to perform actions between 2864241973Sjkimthe 2865241973Sjkimtime the _BFS method is called and the _WAK method is called. NOTE: all 2866241973Sjkimhosts 2867241973Sjkimmust update their wake/resume code or else sleep/wake will not work 2868241973Sjkimproperly. 2869231844SjkimRafael Wysocki. 2870231844Sjkim 2871241973Sjkimb) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 2872241973Sjkim_WAK 2873241973Sjkimmethod. Some machines require that the GPEs are enabled before the _WAK 2874241973Sjkimmethod 2875231844Sjkimis executed. Thomas Renninger. 2876231844Sjkim 2877253690Sjkimc) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 2878253690Sjkimbit. 2879241973SjkimSome BIOS code assumes that WAK_STS will be cleared on resume and use it 2880241973Sjkimto 2881231844Sjkimdetermine whether the system is rebooting or resuming. Matthew Garrett. 2882231844Sjkim 2883241973Sjkimd) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 2884241973SjkimSleep) to 2885231844Sjkimmatch the ACPI specification requirement. Rafael Wysocki. 2886231844Sjkim 2887231844Sjkime) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 2888231844Sjkimregisters within the V5 FADT. This support adds two new files: 2889241973Sjkimhardware/hwesleep.c implements the support for the new registers. Moved 2890241973Sjkimall 2891231844Sjkimsleep/wake external interfaces to hardware/hwxfsleep.c. 2892231844Sjkim 2893231844Sjkim 2894231844SjkimAdded a new OSL interface for ACPI table overrides, 2895231844SjkimAcpiOsPhysicalTableOverride. This interface allows the host to override a 2896231844Sjkimtable via a physical address, instead of the logical address required by 2897231844SjkimAcpiOsTableOverride. This simplifies the host implementation. Initial 2898241973Sjkimimplementation by Thomas Renninger. The ACPICA implementation creates a 2899241973Sjkimsingle 2900231844Sjkimshared function for table overrides that attempts both a logical and a 2901231844Sjkimphysical override. 2902231844Sjkim 2903231844SjkimExpanded the OSL memory read/write interfaces to 64-bit data 2904231844Sjkim(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 2905241973Sjkimtransfer support for GAS register structures passed to AcpiRead and 2906241973SjkimAcpiWrite. 2907231844Sjkim 2908241973SjkimImplemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 2909241973Sjkimcustom 2910241973Sjkimbuild of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 2911241973Sjkimmodel. 2912241973SjkimSee the ACPICA reference for details. ACPICA BZ 942. This option removes 2913241973Sjkimabout 2914253690Sjkim10% of the code and 5% of the static data, and the following hardware 2915253690SjkimACPI 2916231844Sjkimfeatures become unavailable: 2917231844Sjkim PM Event and Control registers 2918231844Sjkim SCI interrupt (and handler) 2919231844Sjkim Fixed Events 2920231844Sjkim General Purpose Events (GPEs) 2921231844Sjkim Global Lock 2922231844Sjkim ACPI PM timer 2923231844Sjkim FACS table (Waking vectors and Global Lock) 2924231844Sjkim 2925241973SjkimUpdated the unix tarball directory structure to match the ACPICA git 2926241973Sjkimsource 2927231844Sjkimtree. This ensures that the generic unix makefiles work properly (in 2928253690Sjkimgenerate/unix). Also updated the Linux makefiles to match. ACPICA BZ 2929253690Sjkim867. 2930231844Sjkim 2931241973SjkimUpdated the return value of the _REV predefined method to integer value 5 2932241973Sjkimto 2933231844Sjkimreflect ACPI 5.0 support. 2934231844Sjkim 2935241973SjkimMoved the external ACPI PM timer interface prototypes to the public 2936241973Sjkimacpixf.h 2937231844Sjkimfile where they belong. 2938231844Sjkim 2939231844SjkimExample Code and Data Size: These are the sizes for the OS-independent 2940241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2941241973Sjkimdebug 2942241973Sjkimversion of the code includes the debug output trace mechanism and has a 2943241973Sjkimmuch 2944231844Sjkimlarger code and data size. 2945231844Sjkim 2946231844Sjkim Previous Release: 2947231844Sjkim Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2948231844Sjkim Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2949231844Sjkim Current Release: 2950231844Sjkim Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2951231844Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2952231844Sjkim 2953231844Sjkim 2954231844Sjkim2) iASL Compiler/Disassembler and Tools: 2955231844Sjkim 2956231844SjkimDisassembler: Fixed a problem with the new ACPI 5.0 serial resource 2957231844Sjkimdescriptors (I2C, SPI, UART) where the resource produce/consumer bit was 2958231844Sjkimincorrectly displayed. 2959231844Sjkim 2960231844SjkimAcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 2961231844Sjkimspecification. 2962231844Sjkim 2963231844Sjkim---------------------------------------- 2964229989Sjkim11 January 2012. Summary of changes for version 20120111: 2965229989Sjkim 2966229989Sjkim 2967229989Sjkim1) ACPICA Core Subsystem: 2968229989Sjkim 2969241973SjkimImplemented a new mechanism to allow host device drivers to check for 2970241973Sjkimaddress 2971241973Sjkimrange conflicts with ACPI Operation Regions. Both SystemMemory and 2972241973SjkimSystemIO 2973241973Sjkimaddress spaces are supported. A new external interface, 2974241973SjkimAcpiCheckAddressRange, 2975241973Sjkimallows drivers to check an address range against the ACPI namespace. See 2976241973Sjkimthe 2977229989SjkimACPICA reference for additional details. Adds one new file, 2978229989Sjkimutilities/utaddress.c. Lin Ming, Bob Moore. 2979229989Sjkim 2980253690SjkimFixed several issues with the ACPI 5.0 FADT support: Add the sleep 2981253690SjkimControl 2982241973Sjkimand 2983229989SjkimStatus registers, update the ACPI 5.0 flags, and update internal data 2984241973Sjkimstructures to handle an FADT larger than 256 bytes. The size of the ACPI 2985241973Sjkim5.0 2986229989SjkimFADT is 268 bytes. 2987229989Sjkim 2988241973SjkimUpdated all ACPICA copyrights and signons to 2012. Added the 2012 2989241973Sjkimcopyright to 2990229989Sjkimall module headers and signons, including the standard Linux header. This 2991241973Sjkimaffects virtually every file in the ACPICA core subsystem, iASL compiler, 2992241973Sjkimand 2993229989Sjkimall ACPICA utilities. 2994229989Sjkim 2995229989SjkimExample Code and Data Size: These are the sizes for the OS-independent 2996241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2997241973Sjkimdebug 2998241973Sjkimversion of the code includes the debug output trace mechanism and has a 2999241973Sjkimmuch 3000229989Sjkimlarger code and data size. 3001229989Sjkim 3002229989Sjkim Previous Release: 3003229989Sjkim Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3004229989Sjkim Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3005229989Sjkim Current Release: 3006229989Sjkim Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3007229989Sjkim Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3008229989Sjkim 3009229989Sjkim 3010229989Sjkim2) iASL Compiler/Disassembler and Tools: 3011229989Sjkim 3012229989SjkimDisassembler: fixed a problem with the automatic resource tag generation 3013229989Sjkimsupport. Fixes a problem where the resource tags are inadvertently not 3014241973Sjkimconstructed if the table being disassembled contains external references 3015241973Sjkimto 3016241973Sjkimcontrol methods. Moved the actual construction of the tags to after the 3017241973Sjkimfinal 3018241973Sjkimnamespace is constructed (after 2nd parse is invoked due to external 3019241973Sjkimcontrol 3020229989Sjkimmethod references.) ACPICA BZ 941. 3021229989Sjkim 3022241973SjkimTable Compiler: Make all "generic" operators caseless. These are the 3023241973Sjkimoperators 3024241973Sjkimlike UINT8, String, etc. Making these caseless improves ease-of-use. 3025241973SjkimACPICA BZ 3026229989Sjkim934. 3027229989Sjkim 3028229989Sjkim---------------------------------------- 3029228110Sjkim23 November 2011. Summary of changes for version 20111123: 3030222544Sjkim 3031228110Sjkim0) ACPI 5.0 Support: 3032228110Sjkim 3033228110SjkimThis release contains full support for the ACPI 5.0 specification, as 3034228110Sjkimsummarized below. 3035228110Sjkim 3036228110SjkimReduced Hardware Support: 3037228110Sjkim------------------------- 3038228110Sjkim 3039253690SjkimThis support allows for ACPI systems without the usual ACPI hardware. 3040253690SjkimThis 3041241973Sjkimsupport is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3042241973Sjkimwill 3043241973Sjkimnot attempt to initialize or use any of the usual ACPI hardware. Note, 3044241973Sjkimwhen 3045228110Sjkimthis flag is set, all of the following ACPI hardware is assumed to be not 3046228110Sjkimpresent and is not initialized or accessed: 3047228110Sjkim 3048228110Sjkim General Purpose Events (GPEs) 3049228110Sjkim Fixed Events (PM1a/PM1b and PM Control) 3050228110Sjkim Power Management Timer and Console Buttons (power/sleep) 3051228110Sjkim Real-time Clock Alarm 3052228110Sjkim Global Lock 3053228110Sjkim System Control Interrupt (SCI) 3054228110Sjkim The FACS is assumed to be non-existent 3055228110Sjkim 3056228110SjkimACPI Tables: 3057228110Sjkim------------ 3058228110Sjkim 3059228110SjkimAll new tables and updates to existing tables are fully supported in the 3060253690SjkimACPICA headers (for use by device drivers), the disassembler, and the 3061253690SjkimiASL 3062228110SjkimData Table Compiler. ACPI 5.0 defines these new tables: 3063228110Sjkim 3064228110Sjkim BGRT /* Boot Graphics Resource Table */ 3065228110Sjkim DRTM /* Dynamic Root of Trust for Measurement table */ 3066228110Sjkim FPDT /* Firmware Performance Data Table */ 3067228110Sjkim GTDT /* Generic Timer Description Table */ 3068228110Sjkim MPST /* Memory Power State Table */ 3069228110Sjkim PCCT /* Platform Communications Channel Table */ 3070228110Sjkim PMTT /* Platform Memory Topology Table */ 3071228110Sjkim RASF /* RAS Feature table */ 3072228110Sjkim 3073228110SjkimOperation Regions/SpaceIDs: 3074228110Sjkim--------------------------- 3075228110Sjkim 3076228110SjkimAll new operation regions are fully supported by the iASL compiler, the 3077241973Sjkimdisassembler, and the ACPICA runtime code (for dispatch to region 3078241973Sjkimhandlers.) 3079228110SjkimThe new operation region Space IDs are: 3080228110Sjkim 3081228110Sjkim GeneralPurposeIo 3082228110Sjkim GenericSerialBus 3083228110Sjkim 3084228110SjkimResource Descriptors: 3085228110Sjkim--------------------- 3086228110Sjkim 3087253690SjkimAll new ASL resource descriptors are fully supported by the iASL 3088253690Sjkimcompiler, 3089241973Sjkimthe 3090241973SjkimASL/AML disassembler, and the ACPICA runtime Resource Manager code 3091241973Sjkim(including 3092228110Sjkimall new predefined resource tags). New descriptors are: 3093228110Sjkim 3094228110Sjkim FixedDma 3095228110Sjkim GpioIo 3096228110Sjkim GpioInt 3097228110Sjkim I2cSerialBus 3098228110Sjkim SpiSerialBus 3099228110Sjkim UartSerialBus 3100228110Sjkim 3101228110SjkimASL/AML Operators, New and Modified: 3102228110Sjkim------------------------------------ 3103228110Sjkim 3104241973SjkimOne new operator is added, the Connection operator, which is used to 3105241973Sjkimassociate 3106253690Sjkima GeneralPurposeIo or GenericSerialBus resource descriptor with 3107253690Sjkimindividual 3108241973Sjkimfield objects within an operation region. Several new protocols are 3109241973Sjkimassociated 3110228110Sjkimwith the AccessAs operator. All are fully supported by the iASL compiler, 3111228110Sjkimdisassembler, and runtime ACPICA AML interpreter: 3112228110Sjkim 3113253690Sjkim Connection // Declare Field Connection 3114253690Sjkimattributes 3115228110Sjkim AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 3116253690Sjkim AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 3117253690SjkimProtocol 3118228110Sjkim AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 3119241973Sjkim RawDataBuffer // Data type for Vendor Data 3120241973Sjkimfields 3121228110Sjkim 3122228110SjkimPredefined ASL/AML Objects: 3123228110Sjkim--------------------------- 3124228110Sjkim 3125241973SjkimAll new predefined objects/control-methods are supported by the iASL 3126241973Sjkimcompiler 3127241973Sjkimand the ACPICA runtime validation/repair (arguments and return values.) 3128241973SjkimNew 3129228110Sjkimpredefined names include the following: 3130228110Sjkim 3131228110SjkimStandard Predefined Names (Objects or Control Methods): 3132228110Sjkim _AEI, _CLS, _CPC, _CWS, _DEP, 3133228110Sjkim _DLM, _EVT, _GCP, _CRT, _GWS, 3134228110Sjkim _HRV, _PRE, _PSE, _SRT, _SUB. 3135228110Sjkim 3136228110SjkimResource Tags (Names used to access individual fields within resource 3137228110Sjkimdescriptors): 3138228110Sjkim _DBT, _DPL, _DRS, _END, _FLC, 3139228110Sjkim _IOR, _LIN, _MOD, _PAR, _PHA, 3140228110Sjkim _PIN, _PPI, _POL, _RXL, _SLV, 3141228110Sjkim _SPE, _STB, _TXL, _VEN. 3142228110Sjkim 3143228110SjkimACPICA External Interfaces: 3144228110Sjkim--------------------------- 3145228110Sjkim 3146228110SjkimSeveral new interfaces have been defined for use by ACPI-related device 3147228110Sjkimdrivers and other host OS services: 3148228110Sjkim 3149241973SjkimAcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 3150241973Sjkimto 3151228110Sjkimacquire and release AML mutexes that are defined in the DSDT/SSDT tables 3152253690Sjkimprovided by the BIOS. They are intended to be used in conjunction with 3153253690Sjkimthe 3154228110SjkimACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 3155228110Sjkimmutual exclusion with the AML code/interpreter. 3156228110Sjkim 3157241973SjkimAcpiGetEventResources: Returns the (formatted) resource descriptors as 3158241973Sjkimdefined 3159241973Sjkimby the ACPI 5.0 _AEI object (ACPI Event Information). This object 3160241973Sjkimprovides 3161241973Sjkimresource descriptors associated with hardware-reduced platform events, 3162241973Sjkimsimilar 3163228110Sjkimto the AcpiGetCurrentResources interface. 3164228110Sjkim 3165228110SjkimOperation Region Handlers: For General Purpose IO and Generic Serial Bus 3166241973Sjkimoperation regions, information about the Connection() object and any 3167241973Sjkimoptional 3168228110Sjkimlength information is passed to the region handler within the Context 3169228110Sjkimparameter. 3170228110Sjkim 3171241973SjkimAcpiBufferToResource: This interface converts a raw AML buffer containing 3172241973Sjkima 3173241973Sjkimresource template or resource descriptor to the ACPI_RESOURCE internal 3174241973Sjkimformat 3175241973Sjkimsuitable for use by device drivers. Can be used by an operation region 3176241973Sjkimhandler 3177228110Sjkimto convert the Connection() buffer object into a ACPI_RESOURCE. 3178228110Sjkim 3179228110SjkimMiscellaneous/Tools/TestSuites: 3180228110Sjkim------------------------------- 3181228110Sjkim 3182228110SjkimSupport for extended _HID names (Four alpha characters instead of three). 3183228110SjkimSupport for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 3184228110SjkimSupport for ACPI 5.0 features in the ASLTS test suite. 3185228110SjkimFully updated documentation (ACPICA and iASL reference documents.) 3186228110Sjkim 3187228110SjkimACPI Table Definition Language: 3188228110Sjkim------------------------------- 3189228110Sjkim 3190241973SjkimSupport for this language was implemented and released as a subsystem of 3191241973Sjkimthe 3192228110SjkimiASL compiler in 2010. (See the iASL compiler User Guide.) 3193228110Sjkim 3194228110Sjkim 3195228110SjkimNon-ACPI 5.0 changes for this release: 3196228110Sjkim-------------------------------------- 3197228110Sjkim 3198228110Sjkim1) ACPICA Core Subsystem: 3199228110Sjkim 3200253690SjkimFix a problem with operation region declarations where a failure can 3201253690Sjkimoccur 3202241973Sjkimif 3203228110Sjkimthe region name and an argument that evaluates to an object (such as the 3204241973Sjkimregion address) are in different namespace scopes. Lin Ming, ACPICA BZ 3205241973Sjkim937. 3206228110Sjkim 3207241973SjkimDo not abort an ACPI table load if an invalid space ID is found within. 3208241973SjkimThis 3209228110Sjkimwill be caught later if the offending method is executed. ACPICA BZ 925. 3210228110Sjkim 3211228110SjkimFixed an issue with the FFixedHW space ID where the ID was not always 3212228110Sjkimrecognized properly (Both ACPICA and iASL). ACPICA BZ 926. 3213228110Sjkim 3214228110SjkimFixed a problem with the 32-bit generation of the unix-specific OSL 3215228110Sjkim(osunixxf.c). Lin Ming, ACPICA BZ 936. 3216228110Sjkim 3217241973SjkimSeveral changes made to enable generation with the GCC 4.6 compiler. 3218241973SjkimACPICA BZ 3219228110Sjkim935. 3220228110Sjkim 3221241973SjkimNew error messages: Unsupported I/O requests (not 8/16/32 bit), and 3222241973SjkimIndex/Bank 3223228110Sjkimfield registers out-of-range. 3224228110Sjkim 3225228110Sjkim2) iASL Compiler/Disassembler and Tools: 3226228110Sjkim 3227241973SjkimiASL: Implemented the __PATH__ operator, which returns the full pathname 3228241973Sjkimof 3229228110Sjkimthe current source file. 3230228110Sjkim 3231228110SjkimAcpiHelp: Automatically display expanded keyword information for all ASL 3232228110Sjkimoperators. 3233228110Sjkim 3234228110SjkimDebugger: Add "Template" command to disassemble/dump resource template 3235228110Sjkimbuffers. 3236228110Sjkim 3237228110SjkimAdded a new master script to generate and execute the ASLTS test suite. 3238228110SjkimAutomatically handles 32- and 64-bit generation. See tests/aslts.sh 3239228110Sjkim 3240241973SjkimiASL: Fix problem with listing generation during processing of the 3241241973SjkimSwitch() 3242228110Sjkimoperator where AML listing was disabled until the entire Switch block was 3243228110Sjkimcompleted. 3244228110Sjkim 3245228110SjkimiASL: Improve support for semicolon statement terminators. Fix "invalid 3246241973Sjkimcharacter" message for some cases when the semicolon is used. Semicolons 3247241973Sjkimare 3248228110Sjkimnow allowed after every <Term> grammar element. ACPICA BZ 927. 3249228110Sjkim 3250241973SjkimiASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 3251241973Sjkim923. 3252228110Sjkim 3253253690SjkimDisassembler: Fix problem with disassembly of the DataTableRegion 3254253690Sjkimoperator 3255241973Sjkimwhere an inadvertent "Unhandled deferred opcode" message could be 3256241973Sjkimgenerated. 3257228110Sjkim 3258228110Sjkim3) Example Code and Data Size 3259228110Sjkim 3260228110SjkimThese are the sizes for the OS-independent acpica.lib produced by the 3261228110SjkimMicrosoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3262241973Sjkimincludes the debug output trace mechanism and has a much larger code and 3263241973Sjkimdata 3264228110Sjkimsize. 3265228110Sjkim 3266228110Sjkim Previous Release: 3267228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3268228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3269228110Sjkim Current Release: 3270228110Sjkim Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3271228110Sjkim Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3272228110Sjkim 3273228110Sjkim---------------------------------------- 3274228110Sjkim22 September 2011. Summary of changes for version 20110922: 3275228110Sjkim 3276228110Sjkim0) ACPI 5.0 News: 3277228110Sjkim 3278241973SjkimSupport for ACPI 5.0 in ACPICA has been underway for several months and 3279241973Sjkimwill 3280228110Sjkimbe released at the same time that ACPI 5.0 is officially released. 3281228110Sjkim 3282253690SjkimThe ACPI 5.0 specification is on track for release in the next few 3283253690Sjkimmonths. 3284228110Sjkim 3285228110Sjkim1) ACPICA Core Subsystem: 3286228110Sjkim 3287228110SjkimFixed a problem where the maximum sleep time for the Sleep() operator was 3288253690Sjkimintended to be limited to two seconds, but was inadvertently limited to 3289253690Sjkim20 3290228110Sjkimseconds instead. 3291228110Sjkim 3292253690SjkimLinux and Unix makefiles: Added header file dependencies to ensure 3293253690Sjkimcorrect 3294241973Sjkimgeneration of ACPICA core code and utilities. Also simplified the 3295241973Sjkimmakefiles 3296241973Sjkimconsiderably through the use of the vpath variable to specify search 3297241973Sjkimpaths. 3298228110SjkimACPICA BZ 924. 3299228110Sjkim 3300228110Sjkim2) iASL Compiler/Disassembler and Tools: 3301228110Sjkim 3302241973SjkimiASL: Implemented support to check the access length for all fields 3303241973Sjkimcreated to 3304241973Sjkimaccess named Resource Descriptor fields. For example, if a resource field 3305241973Sjkimis 3306253690Sjkimdefined to be two bits, a warning is issued if a CreateXxxxField() is 3307253690Sjkimused 3308253690Sjkimwith an incorrect bit length. This is implemented for all current 3309253690Sjkimresource 3310228110Sjkimdescriptor names. ACPICA BZ 930. 3311228110Sjkim 3312241973SjkimDisassembler: Fixed a byte ordering problem with the output of 24-bit and 3313241973Sjkim56- 3314228110Sjkimbit integers. 3315228110Sjkim 3316228110SjkimiASL: Fixed a couple of issues associated with variable-length package 3317241973Sjkimobjects. 1) properly handle constants like One, Ones, Zero -- do not make 3318241973Sjkima 3319241973SjkimVAR_PACKAGE when these are used as a package length. 2) Allow the 3320241973SjkimVAR_PACKAGE 3321241973Sjkimopcode (in addition to PACKAGE) when validating object types for 3322241973Sjkimpredefined 3323228110Sjkimnames. 3324228110Sjkim 3325241973SjkimiASL: Emit statistics for all output files (instead of just the ASL input 3326241973Sjkimand 3327228110SjkimAML output). Includes listings, hex files, etc. 3328228110Sjkim 3329241973SjkimiASL: Added -G option to the table compiler to allow the compilation of 3330241973Sjkimcustom 3331253690SjkimACPI tables. The only part of a table that is required is the standard 3332253690Sjkim36- 3333241973Sjkimbyte 3334228110SjkimACPI header. 3335228110Sjkim 3336241973SjkimAcpiXtract: Ported to the standard ACPICA environment (with ACPICA 3337241973Sjkimheaders), 3338253690Sjkimwhich also adds correct 64-bit support. Also, now all output filenames 3339253690Sjkimare 3340228110Sjkimcompletely lower case. 3341228110Sjkim 3342228110SjkimAcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 3343228110Sjkimloading table files. A warning is issued for any such tables. The only 3344241973Sjkimexception is an FADT. This also fixes a possible fault when attempting to 3345241973Sjkimload 3346228110Sjkimnon-AML tables. ACPICA BZ 932. 3347228110Sjkim 3348253690SjkimAcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 3349253690Sjkima 3350228110Sjkimmissing table terminator could cause a fault when using the -p option. 3351228110Sjkim 3352228110SjkimAcpiSrc: Fixed a possible divide-by-zero fault when generating file 3353228110Sjkimstatistics. 3354228110Sjkim 3355228110Sjkim3) Example Code and Data Size 3356228110Sjkim 3357228110SjkimThese are the sizes for the OS-independent acpica.lib produced by the 3358228110SjkimMicrosoft Visual C++ 9.0 32-bit compiler. The debug version of the code 3359241973Sjkimincludes the debug output trace mechanism and has a much larger code and 3360241973Sjkimdata 3361228110Sjkimsize. 3362228110Sjkim 3363228110Sjkim Previous Release (VC 9.0): 3364228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3365228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3366228110Sjkim Current Release (VC 9.0): 3367228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3368228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3369228110Sjkim 3370228110Sjkim 3371228110Sjkim---------------------------------------- 3372228110Sjkim23 June 2011. Summary of changes for version 20110623: 3373228110Sjkim 3374222544Sjkim1) ACPI CA Core Subsystem: 3375222544Sjkim 3376241973SjkimUpdated the predefined name repair mechanism to not attempt repair of a 3377241973Sjkim_TSS 3378241973Sjkimreturn object if a _PSS object is present. We can only sort the _TSS 3379241973Sjkimreturn 3380253690Sjkimpackage if there is no _PSS within the same scope. This is because if 3381253690Sjkim_PSS 3382241973Sjkimis 3383241973Sjkimpresent, the ACPI specification dictates that the _TSS Power Dissipation 3384241973Sjkimfield 3385241973Sjkimis to be ignored, and therefore some BIOSs leave garbage values in the 3386241973Sjkim_TSS 3387241973SjkimPower field(s). In this case, it is best to just return the _TSS package 3388241973Sjkimas- 3389228110Sjkimis. Reported by, and fixed with assistance from Fenghua Yu. 3390228110Sjkim 3391241973SjkimAdded an option to globally disable the control method return value 3392241973Sjkimvalidation 3393253690Sjkimand repair. This runtime option can be used to disable return value 3394253690Sjkimrepair 3395241973Sjkimif 3396253690Sjkimthis is causing a problem on a particular machine. Also added an option 3397253690Sjkimto 3398228110SjkimAcpiExec (-dr) to set this disable flag. 3399228110Sjkim 3400241973SjkimAll makefiles and project files: Major changes to improve generation of 3401241973SjkimACPICA 3402228110Sjkimtools. ACPICA BZ 912: 3403228110Sjkim Reduce default optimization levels to improve compatibility 3404228110Sjkim For Linux, add strict-aliasing=0 for gcc 4 3405228110Sjkim Cleanup and simplify use of command line defines 3406228110Sjkim Cleanup multithread library support 3407228110Sjkim Improve usage messages 3408228110Sjkim 3409241973SjkimLinux-specific header: update handling of THREAD_ID and pthread. For the 3410241973Sjkim32- 3411241973Sjkimbit case, improve casting to eliminate possible warnings, especially with 3412241973Sjkimthe 3413228110Sjkimacpica tools. 3414228110Sjkim 3415228110SjkimExample Code and Data Size: These are the sizes for the OS-independent 3416241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3417241973Sjkimdebug 3418241973Sjkimversion of the code includes the debug output trace mechanism and has a 3419241973Sjkimmuch 3420228110Sjkimlarger code and data size. 3421228110Sjkim 3422228110Sjkim Previous Release (VC 9.0): 3423228110Sjkim Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3424228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3425228110Sjkim Current Release (VC 9.0): 3426228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 3427228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3428228110Sjkim 3429228110Sjkim2) iASL Compiler/Disassembler and Tools: 3430228110Sjkim 3431241973SjkimWith this release, a new utility named "acpihelp" has been added to the 3432241973SjkimACPICA 3433241973Sjkimpackage. This utility summarizes the ACPI specification chapters for the 3434241973SjkimASL 3435228110Sjkimand AML languages. It generates under Linux/Unix as well as Windows, and 3436228110Sjkimprovides the following functionality: 3437228110Sjkim Find/display ASL operator(s) -- with description and syntax. 3438228110Sjkim Find/display ASL keyword(s) -- with exact spelling and descriptions. 3439228110Sjkim Find/display ACPI predefined name(s) -- with description, number 3440228110Sjkim of arguments, and the return value data type. 3441241973Sjkim Find/display AML opcode name(s) -- with opcode, arguments, and 3442241973Sjkimgrammar. 3443253690Sjkim Decode/display AML opcode -- with opcode name, arguments, and 3444253690Sjkimgrammar. 3445228110Sjkim 3446241973SjkimService Layers: Make multi-thread support configurable. Conditionally 3447241973Sjkimcompile 3448253690Sjkimthe multi-thread support so that threading libraries will not be linked 3449253690Sjkimif 3450241973Sjkimnot 3451228110Sjkimnecessary. The only tool that requires multi-thread support is AcpiExec. 3452228110Sjkim 3453241973SjkimiASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 3454241973Sjkimof 3455228110SjkimBison appear to want the interface to yyerror to be a const char * (or at 3456241973Sjkimleast this is a problem when generating iASL on some systems.) ACPICA BZ 3457241973Sjkim923 3458228110SjkimPierre Lejeune. 3459228110Sjkim 3460241973SjkimTools: Fix for systems where O_BINARY is not defined. Only used for 3461241973SjkimWindows 3462228110Sjkimversions of the tools. 3463228110Sjkim 3464228110Sjkim---------------------------------------- 3465228110Sjkim27 May 2011. Summary of changes for version 20110527: 3466228110Sjkim 3467228110Sjkim1) ACPI CA Core Subsystem: 3468228110Sjkim 3469241973SjkimASL Load() operator: Reinstate most restrictions on the incoming ACPI 3470241973Sjkimtable 3471222544Sjkimsignature. Now, only allow SSDT, OEMx, and a null signature. History: 3472222544Sjkim 1) Originally, we checked the table signature for "SSDT" or "PSDT". 3473222544Sjkim (PSDT is now obsolete.) 3474222544Sjkim 2) We added support for OEMx tables, signature "OEM" plus a fourth 3475222544Sjkim "don't care" character. 3476222544Sjkim 3) Valid tables were encountered with a null signature, so we just 3477222544Sjkim gave up on validating the signature, (05/2008). 3478222544Sjkim 4) We encountered non-AML tables such as the MADT, which caused 3479222544Sjkim interpreter errors and kernel faults. So now, we once again allow 3480222544Sjkim only SSDT, OEMx, and now, also a null signature. (05/2011). 3481222544Sjkim 3482253690SjkimAdded the missing _TDL predefined name to the global name list in order 3483253690Sjkimto 3484241973Sjkimenable validation. Affects both the core ACPICA code and the iASL 3485241973Sjkimcompiler. 3486222544Sjkim 3487222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 3488241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3489241973Sjkimdebug 3490241973Sjkimversion of the code includes the debug output trace mechanism and has a 3491241973Sjkimmuch 3492222544Sjkimlarger code and data size. 3493222544Sjkim 3494222544Sjkim Previous Release (VC 9.0): 3495222544Sjkim Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3496222544Sjkim Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3497222544Sjkim Current Release (VC 9.0): 3498222544Sjkim Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3499222544Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3500222544Sjkim 3501222544Sjkim2) iASL Compiler/Disassembler and Tools: 3502222544Sjkim 3503241973SjkimDebugger/AcpiExec: Implemented support for "complex" method arguments on 3504241973Sjkimthe 3505241973Sjkimdebugger command line. This adds support beyond simple integers -- 3506241973Sjkimincluding 3507222544SjkimStrings, Buffers, and Packages. Includes support for nested packages. 3508241973SjkimIncreased the default command line buffer size to accommodate these 3509241973Sjkimarguments. 3510222544SjkimSee the ACPICA reference for details and syntax. ACPICA BZ 917. 3511222544Sjkim 3512241973SjkimDebugger/AcpiExec: Implemented support for "default" method arguments for 3513241973Sjkimthe 3514241973SjkimExecute/Debug command. Now, the debugger will always invoke a control 3515241973Sjkimmethod 3516241973Sjkimwith the required number of arguments -- even if the command line 3517241973Sjkimspecifies 3518241973Sjkimnone or insufficient arguments. It uses default integer values for any 3519241973Sjkimmissing 3520222544Sjkimarguments. Also fixes a bug where only six method arguments maximum were 3521222544Sjkimsupported instead of the required seven. 3522222544Sjkim 3523241973SjkimDebugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 3524241973Sjkimand 3525222544Sjkimalso return status in order to prevent buffer overruns. See the ACPICA 3526222544Sjkimreference for details and syntax. ACPICA BZ 921 3527222544Sjkim 3528222544SjkimiASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 3529222544Sjkimmakefiles to simplify support for the two different but similar parser 3530222544Sjkimgenerators, bison and yacc. 3531222544Sjkim 3532241973SjkimUpdated the generic unix makefile for gcc 4. The default gcc version is 3533241973Sjkimnow 3534222544Sjkimexpected to be 4 or greater, since options specific to gcc 4 are used. 3535222544Sjkim 3536222544Sjkim---------------------------------------- 3537220663Sjkim13 April 2011. Summary of changes for version 20110413: 3538220663Sjkim 3539220663Sjkim1) ACPI CA Core Subsystem: 3540220663Sjkim 3541241973SjkimImplemented support to execute a so-called "orphan" _REG method under the 3542222544SjkimEC 3543241973Sjkimdevice. This change will force the execution of a _REG method underneath 3544241973Sjkimthe 3545241973SjkimEC 3546220663Sjkimdevice even if there is no corresponding operation region of type 3547220663SjkimEmbeddedControl. Fixes a problem seen on some machines and apparently is 3548220663Sjkimcompatible with Windows behavior. ACPICA BZ 875. 3549220663Sjkim 3550253690SjkimAdded more predefined methods that are eligible for automatic NULL 3551253690Sjkimpackage 3552253690Sjkimelement removal. This change adds another group of predefined names to 3553253690Sjkimthe 3554222544Sjkimlist 3555220663Sjkimof names that can be repaired by having NULL package elements dynamically 3556253690Sjkimremoved. This group are those methods that return a single variable- 3557253690Sjkimlength 3558241973Sjkimpackage containing simple data types such as integers, buffers, strings. 3559241973SjkimThis 3560241973Sjkimincludes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 3561241973Sjkim_PSL, 3562222544Sjkim_Sx, 3563220663Sjkimand _TZD. ACPICA BZ 914. 3564220663Sjkim 3565222544SjkimSplit and segregated all internal global lock functions to a new file, 3566222544Sjkimevglock.c. 3567220663Sjkim 3568241973SjkimUpdated internal address SpaceID for DataTable regions. Moved this 3569241973Sjkiminternal 3570222544Sjkimspace 3571241973Sjkimid in preparation for ACPI 5.0 changes that will include some new space 3572241973SjkimIDs. 3573222544SjkimThis 3574220663Sjkimchange should not affect user/host code. 3575220663Sjkim 3576222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 3577222544Sjkimacpica.lib 3578241973Sjkimproduced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3579241973Sjkimversion of 3580241973Sjkimthe code includes the debug output trace mechanism and has a much larger 3581241973Sjkimcode 3582222544Sjkimand 3583220663Sjkimdata size. 3584220663Sjkim 3585220663Sjkim Previous Release (VC 9.0): 3586220663Sjkim Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3587220663Sjkim Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3588220663Sjkim Current Release (VC 9.0): 3589220663Sjkim Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3590220663Sjkim Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3591220663Sjkim 3592220663Sjkim2) iASL Compiler/Disassembler and Tools: 3593220663Sjkim 3594241973SjkimiASL/DTC: Major update for new grammar features. Allow generic data types 3595241973Sjkimin 3596253690Sjkimcustom ACPI tables. Field names are now optional. Any line can be split 3597253690Sjkimto 3598241973Sjkimmultiple lines using the continuation char (\). Large buffers now use 3599241973Sjkimline- 3600222544Sjkimcontinuation character(s) and no colon on the continuation lines. See the 3601222544Sjkimgrammar 3602241973Sjkimupdate in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 3603241973SjkimMoore. 3604220663Sjkim 3605241973SjkimiASL: Mark ASL "Return()" and the simple "Return" as "Null" return 3606241973Sjkimstatements. 3607241973SjkimSince the parser stuffs a "zero" as the return value for these statements 3608241973Sjkim(due 3609222544Sjkimto 3610241973Sjkimthe underlying AML grammar), they were seen as "return with value" by the 3611241973SjkimiASL 3612241973Sjkimsemantic checking. They are now seen correctly as "null" return 3613241973Sjkimstatements. 3614220663Sjkim 3615241973SjkimiASL: Check if a_REG declaration has a corresponding Operation Region. 3616241973SjkimAdds a 3617241973Sjkimcheck for each _REG to ensure that there is in fact a corresponding 3618241973Sjkimoperation 3619222544Sjkimregion declaration in the same scope. If not, the _REG method is not very 3620222544Sjkimuseful 3621220663Sjkimsince it probably won't be executed. ACPICA BZ 915. 3622220663Sjkim 3623253690SjkimiASL/DTC: Finish support for expression evaluation. Added a new 3624253690Sjkimexpression 3625222544Sjkimparser 3626222544Sjkimthat implements c-style operator precedence and parenthesization. ACPICA 3627222544Sjkimbugzilla 3628220663Sjkim908. 3629220663Sjkim 3630241973SjkimDisassembler/DTC: Remove support for () and <> style comments in data 3631241973Sjkimtables. 3632222544SjkimNow 3633241973Sjkimthat DTC has full expression support, we don't want to have comment 3634241973Sjkimstrings 3635222544Sjkimthat 3636241973Sjkimstart with a parentheses or a less-than symbol. Now, only the standard /* 3637241973Sjkimand 3638222544Sjkim// 3639220663Sjkimcomments are supported, as well as the bracket [] comments. 3640220663Sjkim 3641222544SjkimAcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 3642222544Sjkim"unusual" 3643241973Sjkimheaders in the acpidump file. Update the header validation to support 3644241973Sjkimthese 3645253690Sjkimtables. Problem introduced in previous AcpiXtract version in the change 3646253690Sjkimto 3647220663Sjkimsupport "wrong checksum" error messages emitted by acpidump utility. 3648220663Sjkim 3649253690SjkimiASL: Add a * option to generate all template files (as a synonym for 3650253690SjkimALL) 3651241973Sjkimas 3652222544Sjkimin 3653220663Sjkim"iasl -T *" or "iasl -T ALL". 3654220663Sjkim 3655241973SjkimiASL/DTC: Do not abort compiler on fatal errors. We do not want to 3656241973Sjkimcompletely 3657241973Sjkimabort the compiler on "fatal" errors, simply should abort the current 3658241973Sjkimcompile. 3659220663SjkimThis allows multiple compiles with a single (possibly wildcard) compiler 3660220663Sjkiminvocation. 3661220663Sjkim 3662220663Sjkim---------------------------------------- 3663219707Sjkim16 March 2011. Summary of changes for version 20110316: 3664219707Sjkim 3665219707Sjkim1) ACPI CA Core Subsystem: 3666219707Sjkim 3667241973SjkimFixed a problem caused by a _PRW method appearing at the namespace root 3668241973Sjkimscope 3669241973Sjkimduring the setup of wake GPEs. A fault could occur if a _PRW directly 3670241973Sjkimunder 3671222544Sjkimthe 3672219707Sjkimroot object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 3673219707Sjkim 3674241973SjkimImplemented support for "spurious" Global Lock interrupts. On some 3675241973Sjkimsystems, a 3676253690Sjkimglobal lock interrupt can occur without the pending flag being set. Upon 3677253690Sjkima 3678241973SjkimGL 3679241973Sjkiminterrupt, we now ensure that a thread is actually waiting for the lock 3680241973Sjkimbefore 3681219707Sjkimsignaling GL availability. Rafael Wysocki, Bob Moore. 3682219707Sjkim 3683222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 3684222544Sjkimacpica.lib 3685241973Sjkimproduced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3686241973Sjkimversion of 3687241973Sjkimthe code includes the debug output trace mechanism and has a much larger 3688241973Sjkimcode 3689222544Sjkimand 3690219707Sjkimdata size. 3691219707Sjkim 3692219707Sjkim Previous Release (VC 9.0): 3693219707Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3694219707Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3695219707Sjkim Current Release (VC 9.0): 3696219707Sjkim Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3697219707Sjkim Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3698219707Sjkim 3699219707Sjkim2) iASL Compiler/Disassembler and Tools: 3700219707Sjkim 3701241973SjkimImplemented full support for the "SLIC" ACPI table. Includes support in 3702241973Sjkimthe 3703241973Sjkimheader files, disassembler, table compiler, and template generator. Bob 3704241973SjkimMoore, 3705219707SjkimLin Ming. 3706219707Sjkim 3707253690SjkimAcpiXtract: Correctly handle embedded comments and messages from 3708253690SjkimAcpiDump. 3709241973SjkimApparently some or all versions of acpidump will occasionally emit a 3710241973Sjkimcomment 3711222544Sjkimlike 3712219707Sjkim"Wrong checksum", etc., into the dump file. This was causing problems for 3713219707SjkimAcpiXtract. ACPICA BZ 905. 3714219707Sjkim 3715241973SjkimiASL: Fix the Linux makefile by removing an inadvertent double file 3716241973Sjkiminclusion. 3717219707SjkimACPICA BZ 913. 3718219707Sjkim 3719222544SjkimAcpiExec: Update installation of operation region handlers. Install one 3720222544Sjkimhandler 3721241973Sjkimfor a user-defined address space. This is used by the ASL test suite 3722241973Sjkim(ASLTS). 3723219707Sjkim 3724219707Sjkim---------------------------------------- 3725218590Sjkim11 February 2011. Summary of changes for version 20110211: 3726218590Sjkim 3727218590Sjkim1) ACPI CA Core Subsystem: 3728218590Sjkim 3729253690SjkimAdded a mechanism to defer _REG methods for some early-installed 3730253690Sjkimhandlers. 3731253690SjkimMost user handlers should be installed before call to 3732253690SjkimAcpiEnableSubsystem. 3733218590SjkimHowever, Event handlers and region handlers should be installed after 3734241973SjkimAcpiInitializeObjects. Override handlers for the "default" regions should 3735241973Sjkimbe 3736218590Sjkiminstalled early, however. This change executes all _REG methods for the 3737218590Sjkimdefault regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 3738218590Sjkimchicken/egg issues between them. ACPICA BZ 848. 3739218590Sjkim 3740241973SjkimImplemented an optimization for GPE detection. This optimization will 3741241973Sjkimsimply 3742218590Sjkimignore GPE registers that contain no enabled GPEs -- there is no need to 3743218590Sjkimread the register since this information is available internally. This 3744253690Sjkimbecomes more important on machines with a large GPE space. ACPICA 3745253690Sjkimbugzilla 3746218590Sjkim884. Lin Ming. Suggestion from Joe Liu. 3747218590Sjkim 3748253690SjkimRemoved all use of the highly unreliable FADT revision field. The 3749253690Sjkimrevision 3750241973Sjkimnumber in the FADT has been found to be completely unreliable and cannot 3751241973Sjkimbe 3752241973Sjkimtrusted. Only the actual table length can be used to infer the version. 3753241973SjkimThis 3754253690Sjkimchange updates the ACPICA core and the disassembler so that both no 3755253690Sjkimlonger 3756218590Sjkimeven look at the FADT version and instead depend solely upon the FADT 3757218590Sjkimlength. 3758218590Sjkim 3759218590SjkimFix an unresolved name issue for the no-debug and no-error-message source 3760241973Sjkimgeneration cases. The _AcpiModuleName was left undefined in these cases, 3761241973Sjkimbut 3762218590Sjkimit is actually needed as a parameter to some interfaces. Define 3763218590Sjkim_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 3764218590Sjkim 3765218590SjkimSplit several large files (makefiles and project files updated) 3766218590Sjkim utglobal.c -> utdecode.c 3767218590Sjkim dbcomds.c -> dbmethod.c dbnames.c 3768218590Sjkim dsopcode.c -> dsargs.c dscontrol.c 3769218590Sjkim dsload.c -> dsload2.c 3770218590Sjkim aslanalyze.c -> aslbtypes.c aslwalks.c 3771218590Sjkim 3772218590SjkimExample Code and Data Size: These are the sizes for the OS-independent 3773218590Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3774241973Sjkimdebug version of the code includes the debug output trace mechanism and 3775241973Sjkimhas 3776218590Sjkima much larger code and data size. 3777218590Sjkim 3778218590Sjkim Previous Release (VC 9.0): 3779218590Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3780218590Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3781218590Sjkim Current Release (VC 9.0): 3782218590Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3783218590Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3784218590Sjkim 3785218590Sjkim2) iASL Compiler/Disassembler and Tools: 3786218590Sjkim 3787218590SjkimiASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 3788218590SjkimThese are useful C-style macros with the standard definitions. ACPICA 3789218590Sjkimbugzilla 898. 3790218590Sjkim 3791241973SjkimiASL/DTC: Added support for integer expressions and labels. Support for 3792241973Sjkimfull 3793241973Sjkimexpressions for all integer fields in all ACPI tables. Support for labels 3794241973Sjkimin 3795218590Sjkim"generic" portions of tables such as UEFI. See the iASL reference manual. 3796218590Sjkim 3797218590SjkimDebugger: Added a command to display the status of global handlers. The 3798218590Sjkim"handlers" command will display op region, fixed event, and miscellaneous 3799241973Sjkimglobal handlers. installation status -- and for op regions, whether 3800241973Sjkimdefault 3801218590Sjkimor user-installed handler will be used. 3802218590Sjkim 3803253690SjkimiASL: Warn if reserved method incorrectly returns a value. Many 3804253690Sjkimpredefined 3805241973Sjkimnames are defined such that they do not return a value. If implemented as 3806241973Sjkima 3807218590Sjkimmethod, issue a warning if such a name explicitly returns a value. ACPICA 3808218590SjkimBugzilla 855. 3809218590Sjkim 3810241973SjkimiASL: Added detection of GPE method name conflicts. Detects a conflict 3811241973Sjkimwhere 3812241973Sjkimthere are two GPE methods of the form _Lxy and _Exy in the same scope. 3813241973Sjkim(For 3814218590Sjkimexample, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 3815218590Sjkim 3816218590SjkimiASL/DTC: Fixed a couple input scanner issues with comments and line 3817241973Sjkimnumbers. Comment remover could get confused and miss a comment ending. 3818241973SjkimFixed 3819218590Sjkima problem with line counter maintenance. 3820218590Sjkim 3821241973SjkimiASL/DTC: Reduced the severity of some errors from fatal to error. There 3822241973Sjkimis 3823218590Sjkimno need to abort on simple errors within a field definition. 3824218590Sjkim 3825241973SjkimDebugger: Simplified the output of the help command. All help output now 3826241973Sjkimin 3827218590Sjkima single screen, instead of help subcommands. ACPICA Bugzilla 897. 3828218590Sjkim 3829218590Sjkim---------------------------------------- 3830217365Sjkim12 January 2011. Summary of changes for version 20110112: 3831217365Sjkim 3832217365Sjkim1) ACPI CA Core Subsystem: 3833217365Sjkim 3834241973SjkimFixed a race condition between method execution and namespace walks that 3835241973Sjkimcan 3836217365Sjkimpossibly cause a fault. The problem was apparently introduced in version 3837253690Sjkim20100528 as a result of a performance optimization that reduces the 3838253690Sjkimnumber 3839241973Sjkimof 3840217365Sjkimnamespace walks upon method exit by using the delete_namespace_subtree 3841241973Sjkimfunction instead of the delete_namespace_by_owner function used 3842241973Sjkimpreviously. 3843217365SjkimBug is a missing namespace lock in the delete_namespace_subtree function. 3844217365Sjkimdana.myers@oracle.com 3845217365Sjkim 3846217365SjkimFixed several issues and a possible fault with the automatic "serialized" 3847241973Sjkimmethod support. History: This support changes a method to "serialized" on 3848241973Sjkimthe 3849217365Sjkimfly if the method generates an AE_ALREADY_EXISTS error, indicating the 3850253690Sjkimpossibility that it cannot handle reentrancy. This fix repairs a couple 3851253690Sjkimof 3852217365Sjkimissues seen in the field, especially on machines with many cores: 3853217365Sjkim 3854217365Sjkim 1) Delete method children only upon the exit of the last thread, 3855217365Sjkim so as to not delete objects out from under other running threads 3856217365Sjkim (and possibly causing a fault.) 3857217365Sjkim 2) Set the "serialized" bit for the method only upon the exit of the 3858217365Sjkim Last thread, so as to not cause deadlock when running threads 3859217365Sjkim attempt to exit. 3860217365Sjkim 3) Cleanup the use of the AML "MethodFlags" and internal method flags 3861217365Sjkim so that there is no longer any confusion between the two. 3862217365Sjkim 3863217365Sjkim Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 3864217365Sjkim 3865241973SjkimDebugger: Now lock the namespace for duration of a namespace dump. 3866241973SjkimPrevents 3867217365Sjkimissues if the namespace is changing dynamically underneath the debugger. 3868217365SjkimEspecially affects temporary namespace nodes, since the debugger displays 3869217365Sjkimthese also. 3870217365Sjkim 3871217365SjkimUpdated the ordering of include files. The ACPICA headers should appear 3872241973Sjkimbefore any compiler-specific headers (stdio.h, etc.) so that acenv.h can 3873241973Sjkimset 3874241973Sjkimany necessary compiler-specific defines, etc. Affects the ACPI-related 3875241973Sjkimtools 3876217365Sjkimand utilities. 3877217365Sjkim 3878241973SjkimUpdated all ACPICA copyrights and signons to 2011. Added the 2011 3879241973Sjkimcopyright 3880241973Sjkimto all module headers and signons, including the Linux header. This 3881241973Sjkimaffects 3882217365Sjkimvirtually every file in the ACPICA core subsystem, iASL compiler, and all 3883217365Sjkimutilities. 3884217365Sjkim 3885217365SjkimAdded project files for MS Visual Studio 2008 (VC++ 9.0). The original 3886241973Sjkimproject files for VC++ 6.0 are now obsolete. New project files can be 3887241973Sjkimfound 3888217365Sjkimunder acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 3889217365Sjkimdetails. 3890217365Sjkim 3891217365SjkimExample Code and Data Size: These are the sizes for the OS-independent 3892217365Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3893241973Sjkimdebug version of the code includes the debug output trace mechanism and 3894241973Sjkimhas a 3895217365Sjkimmuch larger code and data size. 3896217365Sjkim 3897217365Sjkim Previous Release (VC 6.0): 3898217365Sjkim Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3899217365Sjkim Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3900217365Sjkim Current Release (VC 9.0): 3901217365Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3902217365Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3903217365Sjkim 3904217365Sjkim2) iASL Compiler/Disassembler and Tools: 3905217365Sjkim 3906241973SjkimiASL: Added generic data types to the Data Table compiler. Add "generic" 3907241973Sjkimdata 3908253690Sjkimtypes such as UINT32, String, Unicode, etc., to simplify the generation 3909253690Sjkimof 3910217365Sjkimplatform-defined tables such as UEFI. Lin Ming. 3911217365Sjkim 3912241973SjkimiASL: Added listing support for the Data Table Compiler. Adds listing 3913241973Sjkimsupport 3914217365Sjkim(-l) to display actual binary output for each line of input code. 3915217365Sjkim 3916217365Sjkim---------------------------------------- 3917216471Sjkim09 December 2010. Summary of changes for version 20101209: 3918216471Sjkim 3919216471Sjkim1) ACPI CA Core Subsystem: 3920216471Sjkim 3921241973SjkimCompleted the major overhaul of the GPE support code that was begun in 3922241973SjkimJuly 3923216471Sjkim2010. Major features include: removal of _PRW execution in ACPICA (host 3924216471Sjkimexecutes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 3925241973Sjkimchanges to existing interfaces, simplification of GPE handler operation, 3926241973Sjkimand 3927216471Sjkima handful of new interfaces: 3928216471Sjkim 3929216471Sjkim AcpiUpdateAllGpes 3930216471Sjkim AcpiFinishGpe 3931216471Sjkim AcpiSetupGpeForWake 3932216471Sjkim AcpiSetGpeWakeMask 3933216471Sjkim One new file, evxfgpe.c to consolidate all external GPE interfaces. 3934216471Sjkim 3935216471SjkimSee the ACPICA Programmer Reference for full details and programming 3936253690Sjkiminformation. See the new section 4.4 "General Purpose Event (GPE) 3937253690SjkimSupport" 3938241973Sjkimfor a full overview, and section 8.7 "ACPI General Purpose Event 3939241973SjkimManagement" 3940253690Sjkimfor programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 3941253690SjkimMing, 3942216471SjkimBob Moore, Rafael Wysocki. 3943216471Sjkim 3944241973SjkimImplemented a new GPE feature for Windows compatibility, the "Implicit 3945241973SjkimWake 3946253690SjkimGPE Notify". This feature will automatically issue a Notify(2) on a 3947253690Sjkimdevice 3948216471Sjkimwhen a Wake GPE is received if there is no corresponding GPE method or 3949216471Sjkimhandler. ACPICA BZ 870. 3950216471Sjkim 3951241973SjkimFixed a problem with the Scope() operator during table parse and load 3952241973Sjkimphase. 3953241973SjkimDuring load phase (table load or method execution), the scope operator 3954241973Sjkimshould 3955241973Sjkimnot enter the target into the namespace. Instead, it should open a new 3956241973Sjkimscope 3957216471Sjkimat the target location. Linux BZ 19462, ACPICA BZ 882. 3958216471Sjkim 3959216471SjkimExample Code and Data Size: These are the sizes for the OS-independent 3960216471Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3961241973Sjkimdebug version of the code includes the debug output trace mechanism and 3962241973Sjkimhas a 3963216471Sjkimmuch larger code and data size. 3964216471Sjkim 3965216471Sjkim Previous Release: 3966216471Sjkim Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3967216471Sjkim Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3968216471Sjkim Current Release: 3969216471Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3970216471Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3971216471Sjkim 3972216471Sjkim2) iASL Compiler/Disassembler and Tools: 3973216471Sjkim 3974241973SjkimiASL: Relax the alphanumeric restriction on _CID strings. These strings 3975241973Sjkimare 3976241973Sjkim"bus-specific" per the ACPI specification, and therefore any characters 3977241973Sjkimare 3978241973Sjkimacceptable. The only checks that can be performed are for a null string 3979241973Sjkimand 3980216471Sjkimperhaps for a leading asterisk. ACPICA BZ 886. 3981216471Sjkim 3982216471SjkimiASL: Fixed a problem where a syntax error that caused a premature EOF 3983216471Sjkimcondition on the source file emitted a very confusing error message. The 3984216471Sjkimpremature EOF is now detected correctly. ACPICA BZ 891. 3985216471Sjkim 3986241973SjkimDisassembler: Decode the AccessSize within a Generic Address Structure 3987241973Sjkim(byte 3988216471Sjkimaccess, word access, etc.) Note, this field does not allow arbitrary bit 3989216471Sjkimaccess, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 3990216471Sjkim 3991241973SjkimNew: AcpiNames utility - Example namespace dump utility. Shows an example 3992241973Sjkimof 3993216471SjkimACPICA configuration for a minimal namespace dump utility. Uses table and 3994253690Sjkimnamespace managers, but no AML interpreter. Does not add any 3995253690Sjkimfunctionality 3996216471Sjkimover AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 3997216471Sjkimpartition and configure ACPICA. ACPICA BZ 883. 3998216471Sjkim 3999241973SjkimAML Debugger: Increased the debugger buffer size for method return 4000241973Sjkimobjects. 4001253690SjkimWas 4K, increased to 16K. Also enhanced error messages for debugger 4002253690Sjkimmethod 4003216471Sjkimexecution, including the buffer overflow case. 4004216471Sjkim 4005216471Sjkim---------------------------------------- 4006213806Sjkim13 October 2010. Summary of changes for version 20101013: 4007213806Sjkim 4008213806Sjkim1) ACPI CA Core Subsystem: 4009213806Sjkim 4010241973SjkimAdded support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4011241973Sjkimnow 4012213806Sjkimclear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4013213806SjkimHwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4014213806Sjkim 4015241973SjkimChanged the type of the predefined namespace object _TZ from ThermalZone 4016241973Sjkimto 4017253690SjkimDevice. This was found to be confusing to the host software that 4018253690Sjkimprocesses 4019253690Sjkimthe various thermal zones, since _TZ is not really a ThermalZone. 4020253690SjkimHowever, 4021241973Sjkima 4022213806SjkimNotify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4023213806SjkimZhang. 4024213806Sjkim 4025213806SjkimAdded Windows Vista SP2 to the list of supported _OSI strings. The actual 4026213806Sjkimstring is "Windows 2006 SP2". 4027213806Sjkim 4028241973SjkimEliminated duplicate code in AcpiUtExecute* functions. Now that the 4029241973Sjkimnsrepair 4030213806Sjkimcode automatically repairs _HID-related strings, this type of code is no 4031253690Sjkimlonger needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4032253690Sjkim878. 4033213806Sjkim 4034213806SjkimExample Code and Data Size: These are the sizes for the OS-independent 4035213806Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4036241973Sjkimdebug version of the code includes the debug output trace mechanism and 4037241973Sjkimhas a 4038213806Sjkimmuch larger code and data size. 4039213806Sjkim 4040213806Sjkim Previous Release: 4041213806Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4042213806Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4043213806Sjkim Current Release: 4044213806Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4045213806Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4046213806Sjkim 4047213806Sjkim2) iASL Compiler/Disassembler and Tools: 4048213806Sjkim 4049253690SjkimiASL: Implemented additional compile-time validation for _HID strings. 4050253690SjkimThe 4051253690Sjkimnon-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4052253690Sjkimlength 4053241973Sjkimof 4054241973Sjkimthe string must be exactly seven or eight characters. For both _HID and 4055241973Sjkim_CID 4056213806Sjkimstrings, all characters must be alphanumeric. ACPICA BZ 874. 4057213806Sjkim 4058213806SjkimiASL: Allow certain "null" resource descriptors. Some BIOS code creates 4059241973Sjkimdescriptors that are mostly or all zeros, with the expectation that they 4060241973Sjkimwill 4061241973Sjkimbe filled in at runtime. iASL now allows this as long as there is a 4062241973Sjkim"resource 4063213806Sjkimtag" (name) associated with the descriptor, which gives the ASL a handle 4064213806Sjkimneeded to modify the descriptor. ACPICA BZ 873. 4065213806Sjkim 4066253690SjkimAdded single-thread support to the generic Unix application OSL. 4067253690SjkimPrimarily 4068253690Sjkimfor iASL support, this change removes the use of semaphores in the 4069253690Sjkimsingle- 4070213806Sjkimthreaded ACPICA tools/applications - increasing performance. The 4071213806Sjkim_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 4072213806Sjkimoption. ACPICA BZ 879. 4073213806Sjkim 4074241973SjkimAcpiExec: several fixes for the 64-bit version. Adds XSDT support and 4075241973Sjkimsupport 4076213806Sjkimfor 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 4077213806Sjkim 4078213806SjkimiASL: Moved all compiler messages to a new file, aslmessages.h. 4079213806Sjkim 4080213806Sjkim---------------------------------------- 4081212761Sjkim15 September 2010. Summary of changes for version 20100915: 4082212761Sjkim 4083212761Sjkim1) ACPI CA Core Subsystem: 4084212761Sjkim 4085241973SjkimRemoved the AcpiOsDerivePciId OSL interface. The various host 4086241973Sjkimimplementations 4087212761Sjkimof this function were not OS-dependent and are now obsolete and can be 4088212761Sjkimremoved from all host OSLs. This function has been replaced by 4089212761SjkimAcpiHwDerivePciId, which is now part of the ACPICA core code. 4090212761SjkimAcpiHwDerivePciId has been implemented without recursion. Adds one new 4091212761Sjkimmodule, hwpci.c. ACPICA BZ 857. 4092212761Sjkim 4093212761SjkimImplemented a dynamic repair for _HID and _CID strings. The following 4094212761Sjkimproblems are now repaired at runtime: 1) Remove a leading asterisk in the 4095212761Sjkimstring, and 2) the entire string is uppercased. Both repairs are in 4096253690Sjkimaccordance with the ACPI specification and will simplify host driver 4097253690Sjkimcode. 4098212761SjkimACPICA BZ 871. 4099212761Sjkim 4100212761SjkimThe ACPI_THREAD_ID type is no longer configurable, internally it is now 4101241973Sjkimalways UINT64. This simplifies the ACPICA code, especially any printf 4102241973Sjkimoutput. 4103212761SjkimUINT64 is the only common data type for all thread_id types across all 4104241973Sjkimoperating systems. It is now up to the host OSL to cast the native 4105241973Sjkimthread_id 4106241973Sjkimtype to UINT64 before returning the value to ACPICA (via 4107241973SjkimAcpiOsGetThreadId). 4108212761SjkimLin Ming, Bob Moore. 4109212761Sjkim 4110241973SjkimAdded the ACPI_INLINE type to enhance the ACPICA configuration. The 4111241973Sjkim"inline" 4112241973Sjkimkeyword is not standard across compilers, and this type allows inline to 4113241973Sjkimbe 4114212761Sjkimconfigured on a per-compiler basis. Lin Ming. 4115212761Sjkim 4116253690SjkimMade the system global AcpiGbl_SystemAwakeAndRunning publically 4117253690Sjkimavailable. 4118241973SjkimAdded an extern for this boolean in acpixf.h. Some hosts utilize this 4119241973Sjkimvalue 4120212761Sjkimduring suspend/restore operations. ACPICA BZ 869. 4121212761Sjkim 4122241973SjkimAll code that implements error/warning messages with the "ACPI:" prefix 4123241973Sjkimhas 4124212761Sjkimbeen moved to a new module, utxferror.c. 4125212761Sjkim 4126241973SjkimThe UINT64_OVERLAY was moved to utmath.c, which is the only module where 4127241973Sjkimit 4128212761Sjkimis used. ACPICA BZ 829. Lin Ming, Bob Moore. 4129212761Sjkim 4130212761SjkimExample Code and Data Size: These are the sizes for the OS-independent 4131212761Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4132241973Sjkimdebug version of the code includes the debug output trace mechanism and 4133241973Sjkimhas a 4134212761Sjkimmuch larger code and data size. 4135212761Sjkim 4136212761Sjkim Previous Release: 4137212761Sjkim Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4138212761Sjkim Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4139212761Sjkim Current Release: 4140212761Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4141212761Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4142212761Sjkim 4143212761Sjkim2) iASL Compiler/Disassembler and Tools: 4144212761Sjkim 4145253690SjkimiASL/Disassembler: Write ACPI errors to stderr instead of the output 4146253690Sjkimfile. 4147241973SjkimThis keeps the output files free of random error messages that may 4148241973Sjkimoriginate 4149253690Sjkimfrom within the namespace/interpreter code. Used this opportunity to 4150253690Sjkimmerge 4151212761Sjkimall ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 4152212761Sjkim866. Lin Ming, Bob Moore. 4153212761Sjkim 4154241973SjkimTools: update some printfs for ansi warnings on size_t. Handle width 4155241973Sjkimchange 4156212761Sjkimof size_t on 32-bit versus 64-bit generations. Lin Ming. 4157212761Sjkim 4158212761Sjkim---------------------------------------- 4159210976Sjkim06 August 2010. Summary of changes for version 20100806: 4160210976Sjkim 4161210976Sjkim1) ACPI CA Core Subsystem: 4162210976Sjkim 4163241973SjkimDesigned and implemented a new host interface to the _OSI support code. 4164241973SjkimThis 4165253690Sjkimwill allow the host to dynamically add or remove multiple _OSI strings, 4166253690Sjkimas 4167241973Sjkimwell as install an optional handler that is called for each _OSI 4168241973Sjkiminvocation. 4169241973SjkimAlso added a new AML debugger command, 'osi' to display and modify the 4170241973Sjkimglobal 4171241973Sjkim_OSI string table, and test support in the AcpiExec utility. See the 4172241973SjkimACPICA 4173210976Sjkimreference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 4174210976SjkimNew Functions: 4175210976Sjkim AcpiInstallInterface - Add an _OSI string. 4176210976Sjkim AcpiRemoveInterface - Delete an _OSI string. 4177210976Sjkim AcpiInstallInterfaceHandler - Install optional _OSI handler. 4178210976SjkimObsolete Functions: 4179210976Sjkim AcpiOsValidateInterface - no longer used. 4180210976SjkimNew Files: 4181210976Sjkim source/components/utilities/utosi.c 4182210976Sjkim 4183210976SjkimRe-introduced the support to enable multi-byte transfers for Embedded 4184241973SjkimController (EC) operation regions. A reported problem was found to be a 4185241973Sjkimbug 4186241973Sjkimin the host OS, not in the multi-byte support. Previously, the maximum 4187241973Sjkimdata 4188241973Sjkimsize passed to the EC operation region handler was a single byte. There 4189241973Sjkimare 4190241973Sjkimoften EC Fields larger than one byte that need to be transferred, and it 4191241973Sjkimis 4192241973Sjkimuseful for the EC driver to lock these as a single transaction. This 4193241973Sjkimchange 4194210976Sjkimenables single transfers larger than 8 bits. This effectively changes the 4195210976Sjkimaccess to the EC space from ByteAcc to AnyAcc, and will probably require 4196241973Sjkimchanges to the host OS Embedded Controller driver to enable 16/32/64/256- 4197241973Sjkimbit 4198210976Sjkimtransfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 4199210976Sjkim 4200210976SjkimFixed a problem with the prototype for AcpiOsReadPciConfiguration. The 4201210976Sjkimprototype in acpiosxf.h had the output value pointer as a (void *). 4202210976SjkimIt should be a (UINT64 *). This may affect some host OSL code. 4203210976Sjkim 4204241973SjkimFixed a couple problems with the recently modified Linux makefiles for 4205241973SjkimiASL 4206210976Sjkimand AcpiExec. These new makefiles place the generated object files in the 4207241973Sjkimlocal directory so that there can be no collisions between the files that 4208241973Sjkimare 4209210976Sjkimshared between them that are compiled with different options. 4210210976Sjkim 4211210976SjkimExample Code and Data Size: These are the sizes for the OS-independent 4212210976Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4213241973Sjkimdebug version of the code includes the debug output trace mechanism and 4214241973Sjkimhas a 4215210976Sjkimmuch larger code and data size. 4216210976Sjkim 4217210976Sjkim Previous Release: 4218210976Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4219210976Sjkim Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4220210976Sjkim Current Release: 4221210976Sjkim Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 4222210976Sjkim Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 4223210976Sjkim 4224210976Sjkim2) iASL Compiler/Disassembler and Tools: 4225210976Sjkim 4226253690SjkimiASL/Disassembler: Added a new option (-da, "disassemble all") to load 4227253690Sjkimthe 4228210976Sjkimnamespace from and disassemble an entire group of AML files. Useful for 4229241973Sjkimloading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 4230241973Sjkimand 4231210976Sjkimdisassembling with one simple command. ACPICA BZ 865. Lin Ming. 4232210976Sjkim 4233253690SjkimiASL: Allow multiple invocations of -e option. This change allows 4234253690Sjkimmultiple 4235241973Sjkimuses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 4236241973Sjkim834. 4237210976SjkimLin Ming. 4238210976Sjkim 4239210976Sjkim---------------------------------------- 4240209746Sjkim02 July 2010. Summary of changes for version 20100702: 4241209746Sjkim 4242209746Sjkim1) ACPI CA Core Subsystem: 4243209746Sjkim 4244209746SjkimImplemented several updates to the recently added GPE reference count 4245241973Sjkimsupport. The model for "wake" GPEs is changing to give the host OS 4246241973Sjkimcomplete 4247241973Sjkimcontrol of these GPEs. Eventually, the ACPICA core will not execute any 4248241973Sjkim_PRW 4249241973Sjkimmethods, since the host already must execute them. Also, additional 4250241973Sjkimchanges 4251209746Sjkimwere made to help ensure that the reference counts are kept in proper 4252209746Sjkimsynchronization with reality. Rafael J. Wysocki. 4253209746Sjkim 4254209746Sjkim1) Ensure that GPEs are not enabled twice during initialization. 4255209746Sjkim2) Ensure that GPE enable masks stay in sync with the reference count. 4256209746Sjkim3) Do not inadvertently enable GPEs when writing GPE registers. 4257209746Sjkim4) Remove the internal wake reference counter and add new AcpiGpeWakeup 4258209746Sjkiminterface. This interface will set or clear individual GPEs for wakeup. 4259241973Sjkim5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 4260241973Sjkiminterfaces 4261209746Sjkimare now used for "runtime" GPEs only. 4262209746Sjkim 4263253690SjkimChanged the behavior of the GPE install/remove handler interfaces. The 4264253690SjkimGPE 4265241973Sjkimis 4266241973Sjkimno longer disabled during this process, as it was found to cause problems 4267241973Sjkimon 4268209746Sjkimsome machines. Rafael J. Wysocki. 4269209746Sjkim 4270209746SjkimReverted a change introduced in version 20100528 to enable Embedded 4271241973SjkimController multi-byte transfers. This change was found to cause problems 4272241973Sjkimwith 4273209746SjkimIndex Fields and possibly Bank Fields. It will be reintroduced when these 4274209746Sjkimproblems have been resolved. 4275209746Sjkim 4276253690SjkimFixed a problem with references to Alias objects within Package Objects. 4277253690SjkimA 4278209746Sjkimreference to an Alias within the definition of a Package was not always 4279253690Sjkimresolved properly. Aliases to objects like Processors, Thermal zones, 4280253690Sjkimetc. 4281253690Sjkimwere resolved to the actual object instead of a reference to the object 4282253690Sjkimas 4283241973Sjkimit 4284209746Sjkimshould be. Package objects are only allowed to contain integer, string, 4285209746Sjkimbuffer, package, and reference objects. Redhat bugzilla 608648. 4286209746Sjkim 4287209746SjkimExample Code and Data Size: These are the sizes for the OS-independent 4288209746Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4289241973Sjkimdebug version of the code includes the debug output trace mechanism and 4290241973Sjkimhas a 4291209746Sjkimmuch larger code and data size. 4292209746Sjkim 4293209746Sjkim Previous Release: 4294209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4295209746Sjkim Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4296209746Sjkim Current Release: 4297209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4298209746Sjkim Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 4299209746Sjkim 4300209746Sjkim2) iASL Compiler/Disassembler and Tools: 4301209746Sjkim 4302209746SjkimiASL: Implemented a new compiler subsystem to allow definition and 4303241973Sjkimcompilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 4304241973SjkimThese 4305209746Sjkimare called "ACPI Data Tables", and the new compiler is the "Data Table 4306209746SjkimCompiler". This compiler is intended to simplify the existing error-prone 4307209746Sjkimprocess of creating these tables for the BIOS, as well as allowing the 4308241973Sjkimdisassembly, modification, recompilation, and override of existing ACPI 4309241973Sjkimdata 4310209746Sjkimtables. See the iASL User Guide for detailed information. 4311209746Sjkim 4312241973SjkimiASL: Implemented a new Template Generator option in support of the new 4313241973SjkimData 4314209746SjkimTable Compiler. This option will create examples of all known ACPI tables 4315209746Sjkimthat can be used as the basis for table development. See the iASL 4316209746Sjkimdocumentation and the -T option. 4317209746Sjkim 4318209746SjkimDisassembler and headers: Added support for the WDDT ACPI table (Watchdog 4319209746SjkimDescriptor Table). 4320209746Sjkim 4321209746SjkimUpdated the Linux makefiles for iASL and AcpiExec to place the generated 4322209746Sjkimobject files in the local directory so that there can be no collisions 4323209746Sjkimbetween the shared files between them that are generated with different 4324209746Sjkimoptions. 4325209746Sjkim 4326253690SjkimAdded support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 4327253690SjkimUse 4328209746Sjkimthe #define __APPLE__ to enable this support. 4329209746Sjkim 4330209746Sjkim---------------------------------------- 4331209746Sjkim28 May 2010. Summary of changes for version 20100528: 4332209746Sjkim 4333209746SjkimNote: The ACPI 4.0a specification was released on April 5, 2010 and is 4334209746Sjkimavailable at www.acpi.info. This is primarily an errata release. 4335209746Sjkim 4336209746Sjkim1) ACPI CA Core Subsystem: 4337209746Sjkim 4338241973SjkimUndefined ACPI tables: We are looking for the definitions for the 4339241973Sjkimfollowing 4340209746SjkimACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 4341209746Sjkim 4342253690SjkimImplemented support to enable multi-byte transfers for Embedded 4343253690SjkimController 4344253690Sjkim(EC) operation regions. Previously, the maximum data size passed to the 4345253690SjkimEC 4346241973Sjkimoperation region handler was a single byte. There are often EC Fields 4347241973Sjkimlarger 4348241973Sjkimthan one byte that need to be transferred, and it is useful for the EC 4349241973Sjkimdriver 4350241973Sjkimto lock these as a single transaction. This change enables single 4351241973Sjkimtransfers 4352241973Sjkimlarger than 8 bits. This effectively changes the access to the EC space 4353241973Sjkimfrom 4354241973SjkimByteAcc to AnyAcc, and will probably require changes to the host OS 4355241973SjkimEmbedded 4356241973SjkimController driver to enable 16/32/64/256-bit transfers in addition to 8- 4357241973Sjkimbit 4358209746Sjkimtransfers. Alexey Starikovskiy, Lin Ming 4359209746Sjkim 4360241973SjkimImplemented a performance enhancement for namespace search and access. 4361241973SjkimThis 4362241973Sjkimchange enhances the performance of namespace searches and walks by adding 4363241973Sjkima 4364241973Sjkimbackpointer to the parent in each namespace node. On large namespaces, 4365241973Sjkimthis 4366241973Sjkimchange can improve overall ACPI performance by up to 9X. Adding a pointer 4367241973Sjkimto 4368241973Sjkimeach namespace node increases the overall size of the internal namespace 4369241973Sjkimby 4370209746Sjkimabout 5%, since each namespace entry usually consists of both a namespace 4371209746Sjkimnode and an ACPI operand object. However, this is the first growth of the 4372209746Sjkimnamespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 4373209746Sjkim 4374241973SjkimImplemented a performance optimization that reduces the number of 4375241973Sjkimnamespace 4376241973Sjkimwalks. On control method exit, only walk the namespace if the method is 4377241973Sjkimknown 4378241973Sjkimto have created namespace objects outside of its local scope. Previously, 4379241973Sjkimthe 4380241973Sjkimentire namespace was traversed on each control method exit. This change 4381241973Sjkimcan 4382241973Sjkimimprove overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 4383241973SjkimMoore. 4384209746Sjkim 4385241973SjkimAdded support to truncate I/O addresses to 16 bits for Windows 4386241973Sjkimcompatibility. 4387209746SjkimSome ASL code has been seen in the field that inadvertently has bits set 4388253690Sjkimabove bit 15. This feature is optional and is enabled if the BIOS 4389253690Sjkimrequests 4390209746Sjkimany Windows OSI strings. It can also be enabled by the host OS. Matthew 4391209746SjkimGarrett, Bob Moore. 4392209746Sjkim 4393209746SjkimAdded support to limit the maximum time for the ASL Sleep() operator. To 4394209746Sjkimprevent accidental deep sleeps, limit the maximum time that Sleep() will 4395209746Sjkimactually sleep. Configurable, the default maximum is two seconds. ACPICA 4396209746Sjkimbugzilla 854. 4397209746Sjkim 4398241973SjkimAdded run-time validation support for the _WDG and_WED Microsoft 4399241973Sjkimpredefined 4400241973Sjkimmethods. These objects are defined by "Windows Instrumentation", and are 4401241973Sjkimnot 4402209746Sjkimpart of the ACPI spec. ACPICA BZ 860. 4403209746Sjkim 4404209746SjkimExpanded all statistic counters used during namespace and device 4405241973Sjkiminitialization from 16 to 32 bits in order to support very large 4406241973Sjkimnamespaces. 4407209746Sjkim 4408241973SjkimReplaced all instances of %d in printf format specifiers with %u since 4409241973Sjkimnearly 4410209746Sjkimall integers in ACPICA are unsigned. 4411209746Sjkim 4412241973SjkimFixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 4413241973Sjkimreturned 4414209746Sjkimas AE_NO_HANDLER. 4415209746Sjkim 4416209746SjkimExample Code and Data Size: These are the sizes for the OS-independent 4417209746Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4418241973Sjkimdebug version of the code includes the debug output trace mechanism and 4419241973Sjkimhas a 4420209746Sjkimmuch larger code and data size. 4421209746Sjkim 4422209746Sjkim Previous Release: 4423209746Sjkim Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4424209746Sjkim Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4425209746Sjkim Current Release: 4426209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 4427209746Sjkim Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 4428209746Sjkim 4429209746Sjkim2) iASL Compiler/Disassembler and Tools: 4430209746Sjkim 4431209746SjkimiASL: Added compiler support for the _WDG and_WED Microsoft predefined 4432241973Sjkimmethods. These objects are defined by "Windows Instrumentation", and are 4433241973Sjkimnot 4434209746Sjkimpart of the ACPI spec. ACPICA BZ 860. 4435209746Sjkim 4436209746SjkimAcpiExec: added option to disable the memory tracking mechanism. The -dt 4437209746Sjkimoption will disable the tracking mechanism, which improves performance 4438209746Sjkimconsiderably. 4439209746Sjkim 4440209746SjkimAcpiExec: Restructured the command line options into -d (disable) and -e 4441209746Sjkim(enable) options. 4442209746Sjkim 4443209746Sjkim---------------------------------------- 4444207344Sjkim28 April 2010. Summary of changes for version 20100428: 4445207344Sjkim 4446207344Sjkim1) ACPI CA Core Subsystem: 4447207344Sjkim 4448207344SjkimImplemented GPE support for dynamically loaded ACPI tables. For all GPEs, 4449241973Sjkimincluding FADT-based and GPE Block Devices, execute any _PRW methods in 4450241973Sjkimthe 4451207344Sjkimnew table, and process any _Lxx/_Exx GPE methods in the new table. Any 4452207344Sjkimruntime GPE that is referenced by an _Lxx/_Exx method in the new table is 4453207344Sjkimimmediately enabled. Handles the FADT-defined GPEs as well as GPE Block 4454207344SjkimDevices. Provides compatibility with other ACPI implementations. Two new 4455241973Sjkimfiles added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 4456241973SjkimMoore. 4457207344Sjkim 4458253690SjkimFixed a regression introduced in version 20100331 within the table 4459253690Sjkimmanager 4460253690Sjkimwhere initial table loading could fail. This was introduced in the fix 4461253690Sjkimfor 4462253690SjkimAcpiReallocateRootTable. Also, renamed some of fields in the table 4463253690Sjkimmanager 4464207344Sjkimdata structures to clarify their meaning and use. 4465207344Sjkim 4466207344SjkimFixed a possible allocation overrun during internal object copy in 4467241973SjkimAcpiUtCopySimpleObject. The original code did not correctly handle the 4468241973Sjkimcase 4469241973Sjkimwhere the object to be copied was a namespace node. Lin Ming. ACPICA BZ 4470241973Sjkim847. 4471207344Sjkim 4472207344SjkimUpdated the allocation dump routine, AcpiUtDumpAllocation and fixed a 4473241973Sjkimpossible access beyond end-of-allocation. Also, now fully validate 4474241973Sjkimdescriptor 4475207344Sjkim(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 4476207344Sjkim 4477207344SjkimExample Code and Data Size: These are the sizes for the OS-independent 4478207344Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4479241973Sjkimdebug version of the code includes the debug output trace mechanism and 4480241973Sjkimhas a 4481207344Sjkimmuch larger code and data size. 4482207344Sjkim 4483207344Sjkim Previous Release: 4484207344Sjkim Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4485207344Sjkim Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4486207344Sjkim Current Release: 4487207344Sjkim Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 4488207344Sjkim Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4489207344Sjkim 4490207344Sjkim2) iASL Compiler/Disassembler and Tools: 4491207344Sjkim 4492207344SjkimiASL: Implemented Min/Max/Len/Gran validation for address resource 4493253690Sjkimdescriptors. This change implements validation for the address fields 4494253690Sjkimthat 4495207344Sjkimare common to all address-type resource descriptors. These checks are 4496207344Sjkimimplemented: Checks for valid Min/Max, length within the Min/Max window, 4497253690Sjkimvalid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 4498253690Sjkimper 4499241973Sjkimtable 6-40 in the ACPI 4.0a specification. Also split the large 4500241973Sjkimaslrestype1.c 4501207344Sjkimand aslrestype2.c files into five new files. ACPICA BZ 840. 4502207344Sjkim 4503241973SjkimiASL: Added support for the _Wxx predefined names. This support was 4504241973Sjkimmissing 4505207344Sjkimand these names were not recognized by the compiler as valid predefined 4506207344Sjkimnames. ACPICA BZ 851. 4507207344Sjkim 4508241973SjkimiASL: Added an error for all predefined names that are defined to return 4509241973Sjkimno 4510241973Sjkimvalue and thus must be implemented as Control Methods. These include all 4511241973Sjkimof 4512207344Sjkimthe _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 4513207344Sjkimnames such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 4514207344Sjkim 4515253690SjkimiASL: Implemented the -ts option to emit hex AML data in ASL format, as 4516253690Sjkiman 4517241973SjkimASL Buffer. Allows ACPI tables to be easily included within ASL files, to 4518241973Sjkimbe 4519253690Sjkimdynamically loaded via the Load() operator. Also cleaned up output for 4520253690Sjkimthe 4521241973Sjkim- 4522207344Sjkimta and -tc options. ACPICA BZ 853. 4523207344Sjkim 4524207344SjkimTests: Added a new file with examples of extended iASL error checking. 4525207344SjkimDemonstrates the advanced error checking ability of the iASL compiler. 4526207344SjkimAvailable at tests/misc/badcode.asl. 4527207344Sjkim 4528207344Sjkim---------------------------------------- 4529206117Sjkim31 March 2010. Summary of changes for version 20100331: 4530206117Sjkim 4531206117Sjkim1) ACPI CA Core Subsystem: 4532206117Sjkim 4533241973SjkimCompleted a major update for the GPE support in order to improve support 4534241973Sjkimfor 4535241973Sjkimshared GPEs and to simplify both host OS and ACPICA code. Added a 4536241973Sjkimreference 4537241973Sjkimcount mechanism to support shared GPEs that require multiple device 4538241973Sjkimdrivers. 4539206117SjkimSeveral external interfaces have changed. One external interface has been 4540206117Sjkimremoved. One new external interface was added. Most of the GPE external 4541206117Sjkiminterfaces now use the GPE spinlock instead of the events mutex (and the 4542253690SjkimFlags parameter for many GPE interfaces has been removed.) See the 4543253690Sjkimupdated 4544241973SjkimACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 4545241973SjkimRafael 4546206117SjkimWysocki. ACPICA BZ 831. 4547206117Sjkim 4548206117SjkimChanged: 4549206117Sjkim AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 4550206117SjkimRemoved: 4551206117Sjkim AcpiSetGpeType 4552206117SjkimNew: 4553206117Sjkim AcpiSetGpe 4554206117Sjkim 4555241973SjkimImplemented write support for DataTable operation regions. These regions 4556241973Sjkimare 4557241973Sjkimdefined via the DataTableRegion() operator. Previously, only read support 4558241973Sjkimwas 4559241973Sjkimimplemented. The ACPI specification allows DataTableRegions to be 4560241973Sjkimread/write, 4561206117Sjkimhowever. 4562206117Sjkim 4563206117SjkimImplemented a new subsystem option to force a copy of the DSDT to local 4564253690Sjkimmemory. Optionally copy the entire DSDT to local memory (instead of 4565253690Sjkimsimply 4566241973Sjkimmapping it.) There are some (albeit very rare) BIOSs that corrupt or 4567241973Sjkimreplace 4568253690Sjkimthe original DSDT, creating the need for this option. Default is FALSE, 4569253690Sjkimdo 4570206117Sjkimnot copy the DSDT. 4571206117Sjkim 4572206117SjkimImplemented detection of a corrupted or replaced DSDT. This change adds 4573241973Sjkimsupport to detect a DSDT that has been corrupted and/or replaced from 4574241973Sjkimoutside 4575241973Sjkimthe OS (by firmware). This is typically catastrophic for the system, but 4576241973Sjkimhas 4577206117Sjkimbeen seen on some machines. Once this problem has been detected, the DSDT 4578206117Sjkimcopy option can be enabled via system configuration. Lin Ming, Bob Moore. 4579206117Sjkim 4580241973SjkimFixed two problems with AcpiReallocateRootTable during the root table 4581241973Sjkimcopy. 4582206117SjkimWhen copying the root table to the new allocation, the length used was 4583241973Sjkimincorrect. The new size was used instead of the current table size, 4584241973Sjkimmeaning 4585241973Sjkimtoo much data was copied. Also, the count of available slots for ACPI 4586241973Sjkimtables 4587206117Sjkimwas not set correctly. Alexey Starikovskiy, Bob Moore. 4588206117Sjkim 4589206117SjkimExample Code and Data Size: These are the sizes for the OS-independent 4590206117Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4591241973Sjkimdebug version of the code includes the debug output trace mechanism and 4592241973Sjkimhas a 4593206117Sjkimmuch larger code and data size. 4594206117Sjkim 4595206117Sjkim Previous Release: 4596206117Sjkim Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4597206117Sjkim Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4598206117Sjkim Current Release: 4599206117Sjkim Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4600206117Sjkim Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4601206117Sjkim 4602206117Sjkim2) iASL Compiler/Disassembler and Tools: 4603206117Sjkim 4604206117SjkimiASL: Implement limited typechecking for values returned from predefined 4605206117Sjkimcontrol methods. The type of any returned static (unnamed) object is now 4606206117Sjkimvalidated. For example, Return(1). ACPICA BZ 786. 4607206117Sjkim 4608241973SjkimiASL: Fixed a predefined name object verification regression. Fixes a 4609241973Sjkimproblem 4610206117Sjkimintroduced in version 20100304. An error is incorrectly generated if a 4611206117Sjkimpredefined name is declared as a static named object with a value defined 4612206117Sjkimusing the keywords "Zero", "One", or "Ones". Lin Ming. 4613206117Sjkim 4614253690SjkimiASL: Added Windows 7 support for the -g option (get local ACPI tables) 4615253690Sjkimby 4616206117Sjkimreducing the requested registry access rights. ACPICA BZ 842. 4617206117Sjkim 4618241973SjkimDisassembler: fixed a possible fault when generating External() 4619241973Sjkimstatements. 4620253690SjkimIntroduced in commit ae7d6fd: Properly handle externals with parent- 4621253690Sjkimprefix 4622206117Sjkim(carat). Fixes a string length allocation calculation. Lin Ming. 4623206117Sjkim 4624206117Sjkim---------------------------------------- 4625204773Sjkim04 March 2010. Summary of changes for version 20100304: 4626204773Sjkim 4627204773Sjkim1) ACPI CA Core Subsystem: 4628204773Sjkim 4629204773SjkimFixed a possible problem with the AML Mutex handling function 4630204773SjkimAcpiExReleaseMutex where the function could fault under the very rare 4631241973Sjkimcondition when the interpreter has blocked, the interpreter lock is 4632241973Sjkimreleased, 4633204773Sjkimthe interpreter is then reentered via the same thread, and attempts to 4634241973Sjkimacquire an AML mutex that was previously acquired. FreeBSD report 140979. 4635241973SjkimLin 4636204773SjkimMing. 4637204773Sjkim 4638204773SjkimImplemented additional configuration support for the AML "Debug Object". 4639204773SjkimOutput from the debug object can now be enabled via a global variable, 4640241973SjkimAcpiGbl_EnableAmlDebugObject. This will assist with remote machine 4641241973Sjkimdebugging. 4642241973SjkimThis debug output is now available in the release version of ACPICA 4643241973Sjkiminstead 4644253690Sjkimof just the debug version. Also, the entire debug output module can now 4645253690Sjkimbe 4646204773Sjkimconfigured out of the ACPICA build if desired. One new file added, 4647204773Sjkimexecuter/exdebug.c. Lin Ming, Bob Moore. 4648204773Sjkim 4649204773SjkimAdded header support for the ACPI MCHI table (Management Controller Host 4650241973SjkimInterface Table). This table was added in ACPI 4.0, but the defining 4651241973Sjkimdocument 4652204773Sjkimhas only recently become available. 4653204773Sjkim 4654241973SjkimStandardized output of integer values for ACPICA warnings/errors. Always 4655241973Sjkimuse 4656241973Sjkim0x prefix for hex output, always use %u for unsigned integer decimal 4657241973Sjkimoutput. 4658253690SjkimAffects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 4659253690Sjkim400 4660204773Sjkiminvocations.) These invocations were converted from the original 4661204773SjkimACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 4662204773Sjkim 4663204773SjkimExample Code and Data Size: These are the sizes for the OS-independent 4664204773Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4665241973Sjkimdebug version of the code includes the debug output trace mechanism and 4666241973Sjkimhas a 4667204773Sjkimmuch larger code and data size. 4668204773Sjkim 4669204773Sjkim Previous Release: 4670204773Sjkim Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4671204773Sjkim Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4672204773Sjkim Current Release: 4673204773Sjkim Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4674204773Sjkim Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4675204773Sjkim 4676204773Sjkim2) iASL Compiler/Disassembler and Tools: 4677204773Sjkim 4678204773SjkimiASL: Implemented typechecking support for static (non-control method) 4679204773Sjkimpredefined named objects that are declared with the Name() operator. For 4680204773Sjkimexample, the type of this object is now validated to be of type Integer: 4681241973SjkimName(_BBN, 1). This change migrates the compiler to using the core 4682241973Sjkimpredefined 4683204773Sjkimname table instead of maintaining a local version. Added a new file, 4684204773Sjkimaslpredef.c. ACPICA BZ 832. 4685204773Sjkim 4686204773SjkimDisassembler: Added support for the ACPI 4.0 MCHI table. 4687204773Sjkim 4688204773Sjkim---------------------------------------- 4689202771Sjkim21 January 2010. Summary of changes for version 20100121: 4690202771Sjkim 4691202771Sjkim1) ACPI CA Core Subsystem: 4692202771Sjkim 4693202771SjkimAdded the 2010 copyright to all module headers and signons. This affects 4694202771Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, the 4695202771Sjkimtools/utilities, and the test suites. 4696202771Sjkim 4697241973SjkimImplemented a change to the AcpiGetDevices interface to eliminate 4698241973Sjkimunnecessary 4699202771Sjkiminvocations of the _STA method. In the case where a specific _HID is 4700202771Sjkimrequested, do not run _STA until a _HID match is found. This eliminates 4701241973Sjkimpotentially dozens of _STA calls during a search for a particular 4702241973Sjkimdevice/HID, 4703202771Sjkimwhich in turn can improve boot times. ACPICA BZ 828. Lin Ming. 4704202771Sjkim 4705241973SjkimImplemented an additional repair for predefined method return values. 4706241973SjkimAttempt 4707253690Sjkimto repair unexpected NULL elements within returned Package objects. 4708253690SjkimCreate 4709241973Sjkiman 4710241973SjkimInteger of value zero, a NULL String, or a zero-length Buffer as 4711241973Sjkimappropriate. 4712202771SjkimACPICA BZ 818. Lin Ming, Bob Moore. 4713202771Sjkim 4714241973SjkimRemoved the obsolete ACPI_INTEGER data type. This type was introduced as 4715241973Sjkimthe 4716241973Sjkimcode was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 4717241973Sjkim(with 4718241973Sjkim64-bit AML integers). It is now obsolete and this change removes it from 4719241973Sjkimthe 4720241973SjkimACPICA code base, replaced by UINT64. The original typedef has been 4721241973Sjkimretained 4722253690Sjkimfor now for compatibility with existing device driver code. ACPICA BZ 4723253690Sjkim824. 4724202771Sjkim 4725253690SjkimRemoved the unused UINT32_STRUCT type, and the obsolete Integer64 field 4726253690Sjkimin 4727202771Sjkimthe parse tree object. 4728202771Sjkim 4729241973SjkimAdded additional warning options for the gcc-4 generation. Updated the 4730241973Sjkimsource 4731241973Sjkimaccordingly. This includes some code restructuring to eliminate 4732241973Sjkimunreachable 4733253690Sjkimcode, elimination of some gotos, elimination of unused return values, 4734253690Sjkimsome 4735202771Sjkimadditional casting, and removal of redundant declarations. 4736202771Sjkim 4737202771SjkimExample Code and Data Size: These are the sizes for the OS-independent 4738202771Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4739241973Sjkimdebug version of the code includes the debug output trace mechanism and 4740241973Sjkimhas a 4741202771Sjkimmuch larger code and data size. 4742202771Sjkim 4743202771Sjkim Previous Release: 4744202771Sjkim Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4745202771Sjkim Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4746202771Sjkim Current Release: 4747202771Sjkim Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4748202771Sjkim Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4749202771Sjkim 4750202771Sjkim2) iASL Compiler/Disassembler and Tools: 4751202771Sjkim 4752202771SjkimNo functional changes for this release. 4753202771Sjkim 4754202771Sjkim---------------------------------------- 4755200553Sjkim14 December 2009. Summary of changes for version 20091214: 4756200553Sjkim 4757200553Sjkim1) ACPI CA Core Subsystem: 4758200553Sjkim 4759253690SjkimEnhanced automatic data type conversions for predefined name repairs. 4760253690SjkimThis 4761241973Sjkimchange expands the automatic repairs/conversions for predefined name 4762241973Sjkimreturn 4763253690Sjkimvalues to make Integers, Strings, and Buffers fully interchangeable. 4764253690SjkimAlso, 4765241973Sjkima 4766241973SjkimBuffer can be converted to a Package of Integers if necessary. The 4767241973Sjkimnsrepair.c 4768200553Sjkimmodule was completely restructured. Lin Ming, Bob Moore. 4769200553Sjkim 4770241973SjkimImplemented automatic removal of null package elements during predefined 4771241973Sjkimname 4772200553Sjkimrepairs. This change will automatically remove embedded and trailing NULL 4773253690Sjkimpackage elements from returned package objects that are defined to 4774253690Sjkimcontain 4775241973Sjkima 4776241973Sjkimvariable number of sub-packages. The driver is then presented with a 4777241973Sjkimpackage 4778200553Sjkimwith no null elements to deal with. ACPICA BZ 819. 4779200553Sjkim 4780200553SjkimImplemented a repair for the predefined _FDE and _GTM names. The expected 4781253690Sjkimreturn value for both names is a Buffer of 5 DWORDs. This repair fixes 4782253690Sjkimtwo 4783253690Sjkimpossible problems (both seen in the field), where a package of integers 4784253690Sjkimis 4785241973Sjkimreturned, or a buffer of BYTEs is returned. With assistance from Jung-uk 4786241973SjkimKim. 4787200553Sjkim 4788241973SjkimImplemented additional module-level code support. This change will 4789241973Sjkimproperly 4790241973Sjkimexecute module-level code that is not at the root of the namespace (under 4791241973Sjkima 4792241973SjkimDevice object, etc.). Now executes the code within the current scope 4793241973Sjkiminstead 4794200553Sjkimof the root. ACPICA BZ 762. Lin Ming. 4795200553Sjkim 4796253690SjkimFixed possible mutex acquisition errors when running _REG methods. Fixes 4797253690Sjkima 4798253690Sjkimproblem where mutex errors can occur when running a _REG method that is 4799253690Sjkimin 4800253690Sjkimthe same scope as a method-defined operation region or an operation 4801253690Sjkimregion 4802241973Sjkimunder a module-level IF block. This type of code is rare, so the problem 4803241973Sjkimhas 4804200553Sjkimnot been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 4805200553Sjkim 4806253690SjkimFixed a possible memory leak during module-level code execution. An 4807253690Sjkimobject 4808200553Sjkimcould be leaked for each block of executed module-level code if the 4809241973Sjkiminterpreter slack mode is enabled This change deletes any implicitly 4810241973Sjkimreturned 4811200553Sjkimobject from the module-level code block. Lin Ming. 4812200553Sjkim 4813253690SjkimRemoved messages for successful predefined repair(s). The repair 4814253690Sjkimmechanism 4815241973Sjkimwas considered too wordy. Now, messages are only unconditionally emitted 4816241973Sjkimif 4817200553Sjkimthe return object cannot be repaired. Existing messages for successful 4818241973Sjkimrepairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 4819241973Sjkim827. 4820200553Sjkim 4821200553SjkimExample Code and Data Size: These are the sizes for the OS-independent 4822200553Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4823241973Sjkimdebug version of the code includes the debug output trace mechanism and 4824241973Sjkimhas a 4825200553Sjkimmuch larger code and data size. 4826200553Sjkim 4827200553Sjkim Previous Release: 4828200553Sjkim Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4829200553Sjkim Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4830200553Sjkim Current Release: 4831200553Sjkim Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4832200553Sjkim Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4833200553Sjkim 4834200553Sjkim2) iASL Compiler/Disassembler and Tools: 4835200553Sjkim 4836241973SjkimiASL: Fixed a regression introduced in 20091112 where intermediate .SRC 4837241973Sjkimfiles 4838200553Sjkimwere no longer automatically removed at the termination of the compile. 4839200553Sjkim 4840200553Sjkimacpiexec: Implemented the -f option to specify default region fill value. 4841200553SjkimThis option specifies the value used to initialize buffers that simulate 4842241973Sjkimoperation regions. Default value is zero. Useful for debugging problems 4843241973Sjkimthat 4844200553Sjkimdepend on a specific initial value for a region or field. 4845200553Sjkim 4846200553Sjkim---------------------------------------- 4847199337Sjkim12 November 2009. Summary of changes for version 20091112: 4848199337Sjkim 4849199337Sjkim1) ACPI CA Core Subsystem: 4850199337Sjkim 4851199337SjkimImplemented a post-order callback to AcpiWalkNamespace. The existing 4852199337Sjkiminterface only has a pre-order callback. This change adds an additional 4853241973Sjkimparameter for a post-order callback which will be more useful for bus 4854241973Sjkimscans. 4855199337SjkimACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 4856199337Sjkim 4857199337SjkimModified the behavior of the operation region memory mapping cache for 4858241973SjkimSystemMemory. Ensure that the memory mappings created for operation 4859241973Sjkimregions 4860199337Sjkimdo not cross 4K page boundaries. Crossing a page boundary while mapping 4861241973Sjkimregions can cause kernel warnings on some hosts if the pages have 4862241973Sjkimdifferent 4863241973Sjkimattributes. Such regions are probably BIOS bugs, and this is the 4864241973Sjkimworkaround. 4865199337SjkimLinux BZ 14445. Lin Ming. 4866199337Sjkim 4867199337SjkimImplemented an automatic repair for predefined methods that must return 4868241973Sjkimsorted lists. This change will repair (by sorting) packages returned by 4869241973Sjkim_ALR, 4870241973Sjkim_PSS, and _TSS. Drivers can now assume that the packages are correctly 4871241973Sjkimsorted 4872199337Sjkimand do not contain NULL package elements. Adds one new file, 4873199337Sjkimnamespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 4874199337Sjkim 4875241973SjkimFixed a possible fault during predefined name validation if a return 4876241973SjkimPackage 4877199337Sjkimobject contains NULL elements. Also adds a warning if a NULL element is 4878241973Sjkimfollowed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 4879241973Sjkimmay 4880199337Sjkiminclude repair or removal of all such NULL elements where possible. 4881199337Sjkim 4882241973SjkimImplemented additional module-level executable AML code support. This 4883241973Sjkimchange 4884199337Sjkimwill execute module-level code that is not at the root of the namespace 4885241973Sjkim(under a Device object, etc.) at table load time. Module-level executable 4886241973SjkimAML 4887199337Sjkimcode has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 4888199337Sjkim 4889241973SjkimImplemented a new internal function to create Integer objects. This 4890241973Sjkimfunction 4891199337Sjkimsimplifies miscellaneous object creation code. ACPICA BZ 823. 4892199337Sjkim 4893253690SjkimReduced the severity of predefined repair messages, Warning to Info. 4894253690SjkimSince 4895241973Sjkimthe object was successfully repaired, a warning is too severe. Reduced to 4896241973Sjkiman 4897241973Sjkiminfo message for now. These messages may eventually be changed to debug- 4898241973Sjkimonly. 4899199337SjkimACPICA BZ 812. 4900199337Sjkim 4901199337SjkimExample Code and Data Size: These are the sizes for the OS-independent 4902199337Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4903241973Sjkimdebug version of the code includes the debug output trace mechanism and 4904241973Sjkimhas a 4905199337Sjkimmuch larger code and data size. 4906199337Sjkim 4907199337Sjkim Previous Release: 4908199337Sjkim Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4909199337Sjkim Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4910199337Sjkim Current Release: 4911199337Sjkim Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4912199337Sjkim Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4913199337Sjkim 4914199337Sjkim2) iASL Compiler/Disassembler and Tools: 4915199337Sjkim 4916241973SjkimiASL: Implemented Switch() with While(1) so that Break works correctly. 4917241973SjkimThis 4918241973Sjkimchange correctly implements the Switch operator with a surrounding 4919241973SjkimWhile(1) 4920199337Sjkimso that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 4921199337Sjkim 4922241973SjkimiASL: Added a message if a package initializer list is shorter than 4923241973Sjkimpackage 4924241973Sjkimlength. Adds a new remark for a Package() declaration if an initializer 4925241973Sjkimlist 4926199337Sjkimexists, but is shorter than the declared length of the package. Although 4927199337Sjkimtechnically legal, this is probably a coding error and it is seen in the 4928199337Sjkimfield. ACPICA BZ 815. Lin Ming, Bob Moore. 4929199337Sjkim 4930241973SjkimiASL: Fixed a problem where the compiler could fault after the maximum 4931241973Sjkimnumber 4932199337Sjkimof errors was reached (200). 4933199337Sjkim 4934241973Sjkimacpixtract: Fixed a possible warning for pointer cast if the compiler 4935241973Sjkimwarning 4936199337Sjkimlevel set very high. 4937199337Sjkim 4938199337Sjkim---------------------------------------- 4939198237Sjkim13 October 2009. Summary of changes for version 20091013: 4940197104Sjkim 4941197104Sjkim1) ACPI CA Core Subsystem: 4942197104Sjkim 4943241973SjkimFixed a problem where an Operation Region _REG method could be executed 4944241973Sjkimmore 4945241973Sjkimthan once. If a custom address space handler is installed by the host 4946241973Sjkimbefore 4947253690Sjkimthe "initialize operation regions" phase of the ACPICA initialization, 4948253690Sjkimany 4949198237Sjkim_REG methods for that address space could be executed twice. This change 4950198237Sjkimfixes the problem. ACPICA BZ 427. Lin Ming. 4951198237Sjkim 4952198237SjkimFixed a possible memory leak for the Scope() ASL operator. When the exact 4953198237Sjkiminvocation of "Scope(\)" is executed (change scope to root), one internal 4954198237Sjkimoperand object was leaked. Lin Ming. 4955198237Sjkim 4956198237SjkimImplemented a run-time repair for the _MAT predefined method. If the _MAT 4957198237Sjkimreturn value is defined as a Field object in the AML, and the field 4958241973Sjkimsize is less than or equal to the default width of an integer (32 or 4959241973Sjkim64),_MAT 4960198237Sjkimcan incorrectly return an Integer instead of a Buffer. ACPICA now 4961198237Sjkimautomatically repairs this problem. ACPICA BZ 810. 4962198237Sjkim 4963241973SjkimImplemented a run-time repair for the _BIF and _BIX predefined methods. 4964241973SjkimThe 4965198237Sjkim"OEM Information" field is often incorrectly returned as an Integer with 4966241973Sjkimvalue zero if the field is not supported by the platform. This is due to 4967241973Sjkiman 4968198237Sjkimambiguity in the ACPI specification. The field should always be a string. 4969198237SjkimACPICA now automatically repairs this problem by returning a NULL string 4970198237Sjkimwithin the returned Package. ACPICA BZ 807. 4971198237Sjkim 4972198237SjkimExample Code and Data Size: These are the sizes for the OS-independent 4973198237Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4974241973Sjkimdebug version of the code includes the debug output trace mechanism and 4975241973Sjkimhas a 4976198237Sjkimmuch larger code and data size. 4977198237Sjkim 4978198237Sjkim Previous Release: 4979198237Sjkim Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4980198237Sjkim Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4981198237Sjkim Current Release: 4982198237Sjkim Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4983198237Sjkim Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4984198237Sjkim 4985198237Sjkim2) iASL Compiler/Disassembler and Tools: 4986198237Sjkim 4987198237SjkimDisassembler: Fixed a problem where references to external symbols that 4988253690Sjkimcontained one or more parent-prefixes (carats) were not handled 4989253690Sjkimcorrectly, 4990198237Sjkimpossibly causing a fault. ACPICA BZ 806. Lin Ming. 4991198237Sjkim 4992198237SjkimDisassembler: Restructured the code so that all functions that handle 4993198237Sjkimexternal symbols are in a single module. One new file is added, 4994198237Sjkimcommon/dmextern.c. 4995198237Sjkim 4996198237SjkimAML Debugger: Added a max count argument for the Batch command (which 4997198237Sjkimexecutes multiple predefined methods within the namespace.) 4998198237Sjkim 4999198237SjkimiASL: Updated the compiler documentation (User Reference.) Available at 5000198237Sjkimhttp://www.acpica.org/documentation/. ACPICA BZ 750. 5001198237Sjkim 5002198237SjkimAcpiXtract: Updated for Lint and other formatting changes. Close all open 5003198237Sjkimfiles. 5004198237Sjkim 5005198237Sjkim---------------------------------------- 5006198237Sjkim03 September 2009. Summary of changes for version 20090903: 5007198237Sjkim 5008198237Sjkim1) ACPI CA Core Subsystem: 5009198237Sjkim 5010197104SjkimFor Windows Vista compatibility, added the automatic execution of an _INI 5011197104Sjkimmethod located at the namespace root (\_INI). This method is executed at 5012253690Sjkimtable load time. This support is in addition to the automatic execution 5013253690Sjkimof 5014197104Sjkim\_SB._INI. Lin Ming. 5015197104Sjkim 5016253690SjkimFixed a possible memory leak in the interpreter for AML package objects 5017253690Sjkimif 5018241973Sjkimthe package initializer list is longer than the defined size of the 5019241973Sjkimpackage. 5020241973SjkimThis apparently can only happen if the BIOS changes the package size on 5021241973Sjkimthe 5022197104Sjkimfly (seen in a _PSS object), as ASL compilers do not allow this. The 5023241973Sjkiminterpreter will truncate the package to the defined size (and issue an 5024241973Sjkimerror 5025241973Sjkimmessage), but previously could leave the extra objects undeleted if they 5026241973Sjkimwere 5027241973Sjkimpre-created during the argument processing (such is the case if the 5028241973Sjkimpackage 5029197104Sjkimconsists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5030197104Sjkim 5031197104SjkimFixed a problem seen when a Buffer or String is stored to itself via ASL. 5032253690SjkimThis has been reported in the field. Previously, ACPICA would zero out 5033253690Sjkimthe 5034197104Sjkimbuffer/string. Now, the operation is treated as a noop. Provides Windows 5035197104Sjkimcompatibility. ACPICA BZ 803. Lin Ming. 5036197104Sjkim 5037197104SjkimRemoved an extraneous error message for ASL constructs of the form 5038241973SjkimStore(LocalX,LocalX) when LocalX is uninitialized. These curious 5039241973Sjkimstatements 5040253690Sjkimare seen in many BIOSs and are once again treated as NOOPs and no error 5041253690Sjkimis 5042197104Sjkimemitted when they are encountered. ACPICA BZ 785. 5043197104Sjkim 5044197104SjkimFixed an extraneous warning message if a _DSM reserved method returns a 5045197104SjkimPackage object. _DSM can return any type of object, so validation on the 5046197104Sjkimreturn type cannot be performed. ACPICA BZ 802. 5047197104Sjkim 5048197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 5049197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5050241973Sjkimdebug version of the code includes the debug output trace mechanism and 5051241973Sjkimhas a 5052197104Sjkimmuch larger code and data size. 5053197104Sjkim 5054197104Sjkim Previous Release: 5055197104Sjkim Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5056197104Sjkim Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5057197104Sjkim Current Release: 5058197104Sjkim Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5059197104Sjkim Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5060197104Sjkim 5061197104Sjkim2) iASL Compiler/Disassembler and Tools: 5062197104Sjkim 5063197104SjkimiASL: Fixed a problem with the use of the Alias operator and Resource 5064197104SjkimTemplates. The correct alias is now constructed and no error is emitted. 5065197104SjkimACPICA BZ 738. 5066197104Sjkim 5067241973SjkimiASL: Implemented the -I option to specify additional search directories 5068241973Sjkimfor 5069197104Sjkiminclude files. Allows multiple additional search paths for include files. 5070253690SjkimDirectories are searched in the order specified on the command line 5071253690Sjkim(after 5072197104Sjkimthe local directory is searched.) ACPICA BZ 800. 5073197104Sjkim 5074197104SjkimiASL: Fixed a problem where the full pathname for include files was not 5075197104Sjkimemitted for warnings/errors. This caused the IDE support to not work 5076197104Sjkimproperly. ACPICA BZ 765. 5077197104Sjkim 5078197104SjkimiASL: Implemented the -@ option to specify a Windows-style response file 5079197104Sjkimcontaining additional command line options. ACPICA BZ 801. 5080197104Sjkim 5081253690SjkimAcpiExec: Added support to load multiple AML files simultaneously (such 5082253690Sjkimas 5083241973Sjkima 5084197104SjkimDSDT and multiple SSDTs). Also added support for wildcards within the AML 5085197104Sjkimpathname. These features allow all machine tables to be easily loaded and 5086197104Sjkimdebugged together. ACPICA BZ 804. 5087197104Sjkim 5088241973SjkimDisassembler: Added missing support for disassembly of HEST table Error 5089241973SjkimBank 5090197104Sjkimsubtables. 5091197104Sjkim 5092197104Sjkim---------------------------------------- 5093197104Sjkim30 July 2009. Summary of changes for version 20090730: 5094197104Sjkim 5095197104SjkimThe ACPI 4.0 implementation for ACPICA is complete with this release. 5096197104Sjkim 5097197104Sjkim1) ACPI CA Core Subsystem: 5098197104Sjkim 5099197104SjkimACPI 4.0: Added header file support for all new and changed ACPI tables. 5100253690SjkimCompletely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 5101253690Sjkimnew 5102241973Sjkimfor ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 5103241973SjkimBERT, 5104241973SjkimEINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 5105241973SjkimThere 5106197104Sjkimhave been some ACPI 4.0 changes to other existing tables. Split the large 5107197104Sjkimactbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 5108197104Sjkim 5109241973SjkimACPI 4.0: Implemented predefined name validation for all new names. There 5110241973Sjkimare 5111241973Sjkim31 new names in ACPI 4.0. The predefined validation module was split into 5112241973Sjkimtwo 5113197104Sjkimfiles. The new file is namespace/nsrepair.c. ACPICA BZ 770. 5114197104Sjkim 5115197104SjkimImplemented support for so-called "module-level executable code". This is 5116241973Sjkimexecutable AML code that exists outside of any control method and is 5117241973Sjkimintended 5118241973Sjkimto be executed at table load time. Although illegal since ACPI 2.0, this 5119241973Sjkimtype 5120253690Sjkimof code still exists and is apparently still being created. Blocks of 5121253690Sjkimthis 5122253690Sjkimcode are now detected and executed as intended. Currently, the code 5123253690Sjkimblocks 5124197104Sjkimmust exist under either an If, Else, or While construct; these are the 5125197104Sjkimtypical cases seen in the field. ACPICA BZ 762. Lin Ming. 5126197104Sjkim 5127197104SjkimImplemented an automatic dynamic repair for predefined names that return 5128241973Sjkimnested Package objects. This applies to predefined names that are defined 5129241973Sjkimto 5130197104Sjkimreturn a variable-length Package of sub-packages. If the number of sub- 5131241973Sjkimpackages is one, BIOS code is occasionally seen that creates a simple 5132241973Sjkimsingle 5133197104Sjkimpackage with no sub-packages. This code attempts to fix the problem by 5134241973Sjkimwrapping a new package object around the existing package. These methods 5135241973Sjkimcan 5136253690Sjkimbe repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 5137253690SjkimBZ 5138197104Sjkim790. 5139197104Sjkim 5140241973SjkimFixed a regression introduced in 20090625 for the AcpiGetDevices 5141241973Sjkiminterface. 5142241973SjkimThe _HID/_CID matching was broken and no longer matched IDs correctly. 5143241973SjkimACPICA 5144197104SjkimBZ 793. 5145197104Sjkim 5146197104SjkimFixed a problem with AcpiReset where the reset would silently fail if the 5147241973Sjkimregister was one of the protected I/O ports. AcpiReset now bypasses the 5148241973Sjkimport 5149241973Sjkimvalidation mechanism. This may eventually be driven into the 5150241973SjkimAcpiRead/Write 5151197104Sjkiminterfaces. 5152197104Sjkim 5153197104SjkimFixed a regression related to the recent update of the AcpiRead/Write 5154241973Sjkiminterfaces. A sleep/suspend could fail if the optional PM2 Control 5155241973Sjkimregister 5156197104Sjkimdoes not exist during an attempt to write the Bus Master Arbitration bit. 5157253690Sjkim(However, some hosts already delete the code that writes this bit, and 5158253690Sjkimthe 5159197104Sjkimcode may in fact be obsolete at this date.) ACPICA BZ 799. 5160197104Sjkim 5161241973SjkimFixed a problem where AcpiTerminate could fault if inadvertently called 5162241973Sjkimtwice 5163197104Sjkimin succession. ACPICA BZ 795. 5164197104Sjkim 5165197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 5166197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5167241973Sjkimdebug version of the code includes the debug output trace mechanism and 5168241973Sjkimhas a 5169197104Sjkimmuch larger code and data size. 5170197104Sjkim 5171197104Sjkim Previous Release: 5172197104Sjkim Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5173197104Sjkim Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5174197104Sjkim Current Release: 5175197104Sjkim Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5176197104Sjkim Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5177197104Sjkim 5178197104Sjkim2) iASL Compiler/Disassembler and Tools: 5179197104Sjkim 5180197104SjkimACPI 4.0: Implemented disassembler support for all new ACPI tables and 5181197104Sjkimchanges to existing tables. ACPICA BZ 775. 5182197104Sjkim 5183197104Sjkim---------------------------------------- 5184197104Sjkim25 June 2009. Summary of changes for version 20090625: 5185197104Sjkim 5186197104SjkimThe ACPI 4.0 Specification was released on June 16 and is available at 5187197104Sjkimwww.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 5188197104Sjkimcontinue for the next few releases. 5189197104Sjkim 5190197104Sjkim1) ACPI CA Core Subsystem: 5191197104Sjkim 5192197104SjkimACPI 4.0: Implemented interpreter support for the IPMI operation region 5193241973Sjkimaddress space. Includes support for bi-directional data buffers and an 5194241973SjkimIPMI 5195241973Sjkimaddress space handler (to be installed by an IPMI device driver.) ACPICA 5196241973SjkimBZ 5197197104Sjkim773. Lin Ming. 5198197104Sjkim 5199253690SjkimACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 5200253690SjkimIncludes 5201197104Sjkimsupport in both the header files and the disassembler. 5202197104Sjkim 5203197104SjkimCompleted a major update for the AcpiGetObjectInfo external interface. 5204197104SjkimChanges include: 5205197104Sjkim - Support for variable, unlimited length HID, UID, and CID strings. 5206241973Sjkim - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 5207241973Sjkimetc.) 5208197104Sjkim - Call the _SxW power methods on behalf of a device object. 5209197104Sjkim - Determine if a device is a PCI root bridge. 5210197104Sjkim - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 5211253690SjkimThese changes will require an update to all callers of this interface. 5212253690SjkimSee 5213241973Sjkimthe updated ACPICA Programmer Reference for details. One new source file 5214241973Sjkimhas 5215197104Sjkimbeen added - utilities/utids.c. ACPICA BZ 368, 780. 5216197104Sjkim 5217197104SjkimUpdated the AcpiRead and AcpiWrite external interfaces to support 64-bit 5218241973Sjkimtransfers. The Value parameter has been extended from 32 bits to 64 bits 5219241973Sjkimin 5220253690Sjkimorder to support new ACPI 4.0 tables. These changes will require an 5221253690Sjkimupdate 5222241973Sjkimto 5223197104Sjkimall callers of these interfaces. See the ACPICA Programmer Reference for 5224197104Sjkimdetails. ACPICA BZ 768. 5225197104Sjkim 5226241973SjkimFixed several problems with AcpiAttachData. The handler was not invoked 5227241973Sjkimwhen 5228241973Sjkimthe host node was deleted. The data sub-object was not automatically 5229241973Sjkimdeleted 5230253690Sjkimwhen the host node was deleted. The interface to the handler had an 5231253690Sjkimunused 5232197104Sjkimparameter, this was removed. ACPICA BZ 778. 5233197104Sjkim 5234197104SjkimEnhanced the function that dumps ACPI table headers. All non-printable 5235241973Sjkimcharacters in the string fields are now replaced with '?' (Signature, 5236241973SjkimOemId, 5237197104SjkimOemTableId, and CompilerId.) ACPI tables with non-printable characters in 5238197104Sjkimthese fields are occasionally seen in the field. ACPICA BZ 788. 5239197104Sjkim 5240197104SjkimFixed a problem with predefined method repair code where the code that 5241253690Sjkimattempts to repair/convert an object of incorrect type is only executed 5242253690Sjkimon 5243241973Sjkimthe first time the predefined method is called. The mechanism that 5244241973Sjkimdisables 5245197104Sjkimwarnings on subsequent calls was interfering with the repair mechanism. 5246197104SjkimACPICA BZ 781. 5247197104Sjkim 5248253690SjkimFixed a possible memory leak in the predefined validation/repair code 5249253690Sjkimwhen 5250241973Sjkima 5251197104Sjkimbuffer is automatically converted to an expected string object. 5252197104Sjkim 5253241973SjkimRemoved obsolete 16-bit files from the distribution and from the current 5254241973Sjkimgit 5255197104Sjkimtree head. ACPICA BZ 776. 5256197104Sjkim 5257197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 5258197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5259241973Sjkimdebug version of the code includes the debug output trace mechanism and 5260241973Sjkimhas a 5261197104Sjkimmuch larger code and data size. 5262197104Sjkim 5263197104Sjkim Previous Release: 5264197104Sjkim Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5265197104Sjkim Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5266197104Sjkim Current Release: 5267197104Sjkim Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 5268197104Sjkim Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 5269197104Sjkim 5270197104Sjkim2) iASL Compiler/Disassembler and Tools: 5271197104Sjkim 5272197104SjkimACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 5273197104Sjkimoperation region keyword. ACPICA BZ 771, 772. Lin Ming. 5274197104Sjkim 5275197104SjkimACPI 4.0: iASL - implemented compile-time validation support for all new 5276197104Sjkimpredefined names and control methods (31 total). ACPICA BZ 769. 5277197104Sjkim 5278197104Sjkim---------------------------------------- 5279193267Sjkim21 May 2009. Summary of changes for version 20090521: 5280193267Sjkim 5281193267Sjkim1) ACPI CA Core Subsystem: 5282193267Sjkim 5283241973SjkimDisabled the preservation of the SCI enable bit in the PM1 control 5284241973Sjkimregister. 5285253690SjkimThe SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 5286253690Sjkimto 5287241973Sjkimbe 5288193267Sjkima "preserved" bit - "OSPM always preserves this bit position", section 5289193267Sjkim4.7.3.2.1. However, some machines fail if this bit is in fact preserved 5290193267Sjkimbecause the bit needs to be explicitly set by the OS as a workaround. No 5291193267Sjkimmachines fail if the bit is not preserved. Therefore, ACPICA no longer 5292193267Sjkimattempts to preserve this bit. 5293193267Sjkim 5294193267SjkimFixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 5295193267Sjkimincorrectly formed _PRT package could cause a fault. Added validation to 5296193267Sjkimensure that each package element is actually a sub-package. 5297193267Sjkim 5298241973SjkimImplemented a new interface to install or override a single control 5299241973Sjkimmethod, 5300241973SjkimAcpiInstallMethod. This interface is useful when debugging in order to 5301241973Sjkimrepair 5302241973Sjkiman existing method or to install a missing method without having to 5303241973Sjkimoverride 5304193267Sjkimthe entire ACPI table. See the ACPICA Programmer Reference for use and 5305193267Sjkimexamples. Lin Ming, Bob Moore. 5306193267Sjkim 5307193267SjkimFixed several reference count issues with the DdbHandle object that is 5308241973Sjkimcreated from a Load or LoadTable operator. Prevent premature deletion of 5309241973Sjkimthe 5310253690Sjkimobject. Also, mark the object as invalid once the table has been 5311253690Sjkimunloaded. 5312241973SjkimThis is needed because the handle itself may not be deleted after the 5313241973Sjkimtable 5314193267Sjkimunload, depending on whether it has been stored in a named object by the 5315193267Sjkimcaller. Lin Ming. 5316193267Sjkim 5317193267SjkimFixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 5318241973Sjkimmutexes of the same sync level are acquired but then not released in 5319241973Sjkimstrict 5320241973Sjkimopposite order, the internally maintained Current Sync Level becomes 5321241973Sjkimconfused 5322193267Sjkimand can cause subsequent execution errors. ACPICA BZ 471. 5323193267Sjkim 5324193267SjkimChanged the allowable release order for ASL mutex objects. The ACPI 4.0 5325241973Sjkimspecification has been changed to make the SyncLevel for mutex objects 5326241973Sjkimmore 5327253690Sjkimuseful. When releasing a mutex, the SyncLevel of the mutex must now be 5328253690Sjkimthe 5329241973Sjkimsame as the current sync level. This makes more sense than the previous 5330241973Sjkimrule 5331193267Sjkim(SyncLevel less than or equal). This change updates the code to match the 5332193267Sjkimspecification. 5333193267Sjkim 5334241973SjkimFixed a problem with the local version of the AcpiOsPurgeCache function. 5335241973SjkimThe 5336193267Sjkim(local) cache must be locked during all cache object deletions. Andrew 5337193267SjkimBaumann. 5338193267Sjkim 5339241973SjkimUpdated the Load operator to use operation region interfaces. This 5340241973Sjkimreplaces 5341241973Sjkimdirect memory mapping with region access calls. Now, all region accesses 5342241973Sjkimgo 5343193267Sjkimthrough the installed region handler as they should. 5344193267Sjkim 5345241973SjkimSimplified and optimized the NsGetNextNode function. Reduced parameter 5346241973Sjkimcount 5347193267Sjkimand reduced code for this frequently used function. 5348193267Sjkim 5349193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5350193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5351241973Sjkimdebug version of the code includes the debug output trace mechanism and 5352241973Sjkimhas a 5353193267Sjkimmuch larger code and data size. 5354193267Sjkim 5355193267Sjkim Previous Release: 5356193267Sjkim Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5357193267Sjkim Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5358193267Sjkim Current Release: 5359193267Sjkim Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 5360193267Sjkim Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 5361193267Sjkim 5362193267Sjkim2) iASL Compiler/Disassembler and Tools: 5363193267Sjkim 5364241973SjkimDisassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 5365241973Sjkimproblems 5366241973Sjkimwith sub-table disassembly and handling invalid sub-tables. Attempt 5367241973Sjkimrecovery 5368193267Sjkimafter an invalid sub-table ID. 5369193267Sjkim 5370193267Sjkim---------------------------------------- 5371193267Sjkim22 April 2009. Summary of changes for version 20090422: 5372193267Sjkim 5373193267Sjkim1) ACPI CA Core Subsystem: 5374193267Sjkim 5375253690SjkimFixed a compatibility issue with the recently released I/O port 5376253690Sjkimprotection 5377193267Sjkimmechanism. For windows compatibility, 1) On a port protection violation, 5378241973Sjkimsimply ignore the request and do not return an exception (allow the 5379241973Sjkimcontrol 5380193267Sjkimmethod to continue execution.) 2) If only part of the request overlaps a 5381241973Sjkimprotected port, read/write the individual ports that are not protected. 5382241973SjkimLinux 5383193267SjkimBZ 13036. Lin Ming 5384193267Sjkim 5385241973SjkimEnhanced the execution of the ASL/AML BreakPoint operator so that it 5386241973Sjkimactually 5387193267Sjkimbreaks into the AML debugger if the debugger is present. This matches the 5388193267SjkimACPI-defined behavior. 5389193267Sjkim 5390193267SjkimFixed several possible warnings related to the use of the configurable 5391193267SjkimACPI_THREAD_ID. This type can now be configured as either an integer or a 5392193267Sjkimpointer with no warnings. Also fixes several warnings in printf-like 5393193267Sjkimstatements for the 64-bit build when the type is configured as a pointer. 5394193267SjkimACPICA BZ 766, 767. 5395193267Sjkim 5396241973SjkimFixed a number of possible warnings when compiling with gcc 4+ (depending 5397241973Sjkimon 5398241973Sjkimwarning options.) Examples include printf formats, aliasing, unused 5399241973Sjkimglobals, 5400193267Sjkimmissing prototypes, missing switch default statements, use of non-ANSI 5401241973Sjkimlibrary functions, use of non-ANSI constructs. See generate/unix/Makefile 5402241973Sjkimfor 5403193267Sjkima list of warning options used with gcc 3 and 4. ACPICA BZ 735. 5404193267Sjkim 5405193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5406193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5407241973Sjkimdebug version of the code includes the debug output trace mechanism and 5408241973Sjkimhas a 5409193267Sjkimmuch larger code and data size. 5410193267Sjkim 5411193267Sjkim Previous Release: 5412193267Sjkim Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5413193267Sjkim Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5414193267Sjkim Current Release: 5415193267Sjkim Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 5416193267Sjkim Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 5417193267Sjkim 5418193267Sjkim2) iASL Compiler/Disassembler and Tools: 5419193267Sjkim 5420253690SjkimiASL: Fixed a generation warning from Bison 2.3 and fixed several 5421253690Sjkimwarnings 5422241973Sjkimon 5423193267Sjkimthe 64-bit build. 5424193267Sjkim 5425241973SjkimiASL: Fixed a problem where the Unix/Linux versions of the compiler could 5426241973Sjkimnot 5427193267Sjkimcorrectly digest Windows/DOS formatted files (with CR/LF). 5428193267Sjkim 5429193267SjkimiASL: Added a new option for "quiet mode" (-va) that produces only the 5430193267Sjkimcompilation summary, not individual errors and warnings. Useful for large 5431193267Sjkimbatch compilations. 5432193267Sjkim 5433253690SjkimAcpiExec: Implemented a new option (-z) to enable a forced 5434253690Sjkimsemaphore/mutex 5435253690Sjkimtimeout that can be used to detect hang conditions during execution of 5436253690SjkimAML 5437241973Sjkimcode (includes both internal semaphores and AML-defined mutexes and 5438241973Sjkimevents.) 5439193267Sjkim 5440193267SjkimAdded new makefiles for the generation of acpica in a generic unix-like 5441253690Sjkimenvironment. These makefiles are intended to generate the acpica tools 5442253690Sjkimand 5443193267Sjkimutilities from the original acpica git source tree structure. 5444193267Sjkim 5445193267SjkimTest Suites: Updated and cleaned up the documentation files. Updated the 5446241973Sjkimcopyrights to 2009, affecting all source files. Use the new version of 5447241973SjkimiASL 5448241973Sjkimwith quiet mode. Increased the number of available semaphores in the 5449241973SjkimWindows 5450241973SjkimOSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 5451241973Sjkimadded 5452193267Sjkiman alternate implementation of the semaphore timeout to allow aslts to 5453193267Sjkimexecute fully on Cygwin. 5454193267Sjkim 5455193267Sjkim---------------------------------------- 5456193267Sjkim20 March 2009. Summary of changes for version 20090320: 5457193267Sjkim 5458193267Sjkim1) ACPI CA Core Subsystem: 5459193267Sjkim 5460241973SjkimFixed a possible race condition between AcpiWalkNamespace and dynamic 5461241973Sjkimtable 5462241973Sjkimunloads. Added a reader/writer locking mechanism to allow multiple 5463241973Sjkimconcurrent 5464241973Sjkimnamespace walks (readers), but block a dynamic table unload until it can 5465241973Sjkimgain 5466241973Sjkimexclusive write access to the namespace. This fixes a problem where a 5467241973Sjkimtable 5468241973Sjkimunload could (possibly catastrophically) delete the portion of the 5469241973Sjkimnamespace 5470241973Sjkimthat is currently being examined by a walk. Adds a new file, utlock.c, 5471241973Sjkimthat 5472193267Sjkimimplements the reader/writer lock mechanism. ACPICA BZ 749. 5473193267Sjkim 5474241973SjkimFixed a regression introduced in version 20090220 where a change to the 5475241973SjkimFADT 5476241973Sjkimhandling could cause the ACPICA subsystem to access non-existent I/O 5477241973Sjkimports. 5478193267Sjkim 5479241973SjkimModified the handling of FADT register and table (FACS/DSDT) addresses. 5480241973SjkimThe 5481193267SjkimFADT can contain both 32-bit and 64-bit versions of these addresses. 5482241973SjkimPreviously, the 64-bit versions were favored, meaning that if both 32 and 5483241973Sjkim64 5484193267Sjkimversions were valid, but not equal, the 64-bit version was used. This was 5485241973Sjkimfound to cause some machines to fail. Now, in this case, the 32-bit 5486241973Sjkimversion 5487193267Sjkimis used instead. This now matches the Windows behavior. 5488193267Sjkim 5489241973SjkimImplemented a new mechanism to protect certain I/O ports. Provides 5490241973SjkimMicrosoft 5491193267Sjkimcompatibility and protects the standard PC I/O ports from access via AML 5492193267Sjkimcode. Adds a new file, hwvalid.c 5493193267Sjkim 5494193267SjkimFixed a possible extraneous warning message from the FADT support. The 5495193267Sjkimmessage warns of a 32/64 length mismatch between the legacy and GAS 5496193267Sjkimdefinitions for a register. 5497193267Sjkim 5498241973SjkimRemoved the obsolete AcpiOsValidateAddress OSL interface. This interface 5499241973Sjkimis 5500241973Sjkimmade obsolete by the port protection mechanism above. It was previously 5501241973Sjkimused 5502241973Sjkimto validate the entire address range of an operation region, which could 5503241973Sjkimbe 5504193267Sjkimincorrect if the range included illegal ports, but fields within the 5505193267Sjkimoperation region did not actually access those ports. Validation is now 5506193267Sjkimperformed on a per-field basis instead of the entire region. 5507193267Sjkim 5508193267SjkimModified the handling of the PM1 Status Register ignored bit (bit 11.) 5509253690SjkimIgnored bits must be "preserved" according to the ACPI spec. Usually, 5510253690Sjkimthis 5511241973Sjkimmeans a read/modify/write when writing to the register. However, for 5512241973Sjkimstatus 5513241973Sjkimregisters, writing a one means clear the event. Writing a zero means 5514241973Sjkimpreserve 5515253690Sjkimthe event (do not clear.) This behavior is clarified in the ACPI 4.0 5516253690Sjkimspec, 5517193267Sjkimand the ACPICA code now simply always writes a zero to the ignored bit. 5518193267Sjkim 5519241973SjkimModified the handling of ignored bits for the PM1 A/B Control Registers. 5520241973SjkimAs 5521193267Sjkimper the ACPI specification, for the control registers, preserve 5522241973Sjkim(read/modify/write) all bits that are defined as either reserved or 5523241973Sjkimignored. 5524193267Sjkim 5525193267SjkimUpdated the handling of write-only bits in the PM1 A/B Control Registers. 5526193267SjkimWhen reading the register, zero the write-only bits as per the ACPI spec. 5527193267SjkimACPICA BZ 443. Lin Ming. 5528193267Sjkim 5529193267SjkimRemoved "Linux" from the list of supported _OSI strings. Linux no longer 5530241973Sjkimwants to reply true to this request. The Windows strings are the only 5531241973Sjkimpaths 5532193267Sjkimthrough the AML that are tested and known to work properly. 5533193267Sjkim 5534193267Sjkim Previous Release: 5535193267Sjkim Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5536193267Sjkim Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5537193267Sjkim Current Release: 5538193267Sjkim Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5539193267Sjkim Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5540193267Sjkim 5541193267Sjkim2) iASL Compiler/Disassembler and Tools: 5542193267Sjkim 5543241973SjkimAcpiexec: Split the large aeexec.c file into two new files, aehandlers.c 5544241973Sjkimand 5545193267Sjkimaetables.c 5546193267Sjkim 5547193267Sjkim---------------------------------------- 5548193267Sjkim20 February 2009. Summary of changes for version 20090220: 5549193267Sjkim 5550193267Sjkim1) ACPI CA Core Subsystem: 5551193267Sjkim 5552241973SjkimOptimized the ACPI register locking. Removed locking for reads from the 5553241973SjkimACPI 5554253690Sjkimbit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 5555253690Sjkimis 5556193267Sjkimnot required when reading the single-bit registers. The 5557253690SjkimAcpiGetRegisterUnlocked function is no longer needed and has been 5558253690Sjkimremoved. 5559253690SjkimThis will improve performance for reads on these registers. ACPICA BZ 5560253690Sjkim760. 5561193267Sjkim 5562193267SjkimFixed the parameter validation for AcpiRead/Write. Now return 5563253690SjkimAE_BAD_PARAMETER if the input register pointer is null, and 5564253690SjkimAE_BAD_ADDRESS 5565241973Sjkimif 5566241973Sjkimthe register has an address of zero. Previously, these cases simply 5567241973Sjkimreturned 5568241973SjkimAE_OK. For optional registers such as PM1B status/enable/control, the 5569241973Sjkimcaller 5570193267Sjkimshould check for a valid register address before calling. ACPICA BZ 748. 5571193267Sjkim 5572193267SjkimRenamed the external ACPI bit register access functions. Renamed 5573193267SjkimAcpiGetRegister and AcpiSetRegister to clarify the purpose of these 5574253690Sjkimfunctions. The new names are AcpiReadBitRegister and 5575253690SjkimAcpiWriteBitRegister. 5576241973SjkimAlso, restructured the code for these functions by simplifying the code 5577241973Sjkimpath 5578193267Sjkimand condensing duplicate code to reduce code size. 5579193267Sjkim 5580193267SjkimAdded new functions to transparently handle the possibly split PM1 A/B 5581253690Sjkimregisters. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 5582253690Sjkimfunctions 5583253690Sjkimnow handle the split registers for PM1 Status, Enable, and Control. 5584253690SjkimACPICA 5585241973SjkimBZ 5586193267Sjkim746. 5587193267Sjkim 5588241973SjkimAdded a function to handle the PM1 control registers, 5589241973SjkimAcpiHwWritePm1Control. 5590241973SjkimThis function writes both of the PM1 control registers (A/B). These 5591241973Sjkimregisters 5592241973Sjkimare different than the PM1 A/B status and enable registers in that 5593241973Sjkimdifferent 5594253690Sjkimvalues can be written to the A/B registers. Most notably, the SLP_TYP 5595253690Sjkimbits 5596241973Sjkimcan be different, as per the values returned from the _Sx predefined 5597241973Sjkimmethods. 5598193267Sjkim 5599241973SjkimRemoved an extra register write within AcpiHwClearAcpiStatus. This 5600241973Sjkimfunction 5601241973Sjkimwas writing an optional PM1B status register twice. The existing call to 5602241973Sjkimthe 5603241973Sjkimlow-level AcpiHwRegisterWrite automatically handles a possibly split PM1 5604241973SjkimA/B 5605193267Sjkimregister. ACPICA BZ 751. 5606193267Sjkim 5607241973SjkimSplit out the PM1 Status registers from the FADT. Added new globals for 5608241973Sjkimthese 5609193267Sjkimregisters (A/B), similar to the way the PM1 Enable registers are handled. 5610253690SjkimInstead of overloading the FADT Event Register blocks. This makes the 5611253690Sjkimcode 5612193267Sjkimclearer and less prone to error. 5613193267Sjkim 5614241973SjkimFixed the warning message for when the platform contains too many ACPI 5615241973Sjkimtables 5616241973Sjkimfor the default size of the global root table data structure. The 5617241973Sjkimcalculation 5618193267Sjkimfor the truncation value was incorrect. 5619193267Sjkim 5620193267SjkimRemoved the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 5621253690Sjkimobsolete macro, since it is now a simple reference to ->common.type. 5622253690SjkimThere 5623193267Sjkimwere about 150 invocations of the macro across 41 files. ACPICA BZ 755. 5624193267Sjkim 5625193267SjkimRemoved the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 5626193267SjkimTYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 5627193267Sjkimsimply SLEEP_TYPE. ACPICA BZ 754. 5628193267Sjkim 5629193267SjkimConditionally compile the AcpiSetFirmwareWakingVector64 function. This 5630193267Sjkimfunction is only needed on 64-bit host operating systems and is thus not 5631193267Sjkimincluded for 32-bit hosts. 5632193267Sjkim 5633241973SjkimDebug output: print the input and result for invocations of the _OSI 5634241973Sjkimreserved 5635253690Sjkimcontrol method via the ACPI_LV_INFO debug level. Also, reduced some of 5636253690Sjkimthe 5637193267Sjkimverbosity of this debug level. Len Brown. 5638193267Sjkim 5639193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5640193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5641241973Sjkimdebug version of the code includes the debug output trace mechanism and 5642241973Sjkimhas a 5643193267Sjkimmuch larger code and data size. 5644193267Sjkim 5645193267Sjkim Previous Release: 5646193267Sjkim Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5647193267Sjkim Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5648193267Sjkim Current Release: 5649193267Sjkim Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5650193267Sjkim Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5651193267Sjkim 5652193267Sjkim2) iASL Compiler/Disassembler and Tools: 5653193267Sjkim 5654193267SjkimDisassembler: Decode the FADT PM_Profile field. Emit ascii names for the 5655193267Sjkimvarious legal performance profiles. 5656193267Sjkim 5657193267Sjkim---------------------------------------- 5658193267Sjkim23 January 2009. Summary of changes for version 20090123: 5659193267Sjkim 5660193267Sjkim1) ACPI CA Core Subsystem: 5661193267Sjkim 5662193267SjkimAdded the 2009 copyright to all module headers and signons. This affects 5663193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 5664193267Sjkimthe tools/utilities. 5665193267Sjkim 5666241973SjkimImplemented a change to allow the host to override any ACPI table, 5667241973Sjkimincluding 5668241973Sjkimdynamically loaded tables. Previously, only the DSDT could be replaced by 5669241973Sjkimthe 5670241973Sjkimhost. With this change, the AcpiOsTableOverride interface is called for 5671241973Sjkimeach 5672241973Sjkimtable found in the RSDT/XSDT during ACPICA initialization, and also 5673241973Sjkimwhenever 5674193267Sjkima table is dynamically loaded via the AML Load operator. 5675193267Sjkim 5676193267SjkimUpdated FADT flag definitions, especially the Boot Architecture flags. 5677193267Sjkim 5678253690SjkimDebugger: For the Find command, automatically pad the input ACPI name 5679253690Sjkimwith 5680253690Sjkimunderscores if the name is shorter than 4 characters. This enables a 5681253690Sjkimmatch 5682193267Sjkimwith the actual namespace entry which is itself padded with underscores. 5683193267Sjkim 5684193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5685193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5686241973Sjkimdebug version of the code includes the debug output trace mechanism and 5687241973Sjkimhas a 5688193267Sjkimmuch larger code and data size. 5689193267Sjkim 5690193267Sjkim Previous Release: 5691193267Sjkim Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5692193267Sjkim Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5693193267Sjkim Current Release: 5694193267Sjkim Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5695193267Sjkim Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5696193267Sjkim 5697193267Sjkim2) iASL Compiler/Disassembler and Tools: 5698193267Sjkim 5699193267SjkimFix build error under Bison-2.4. 5700193267Sjkim 5701241973SjkimDissasembler: Enhanced FADT support. Added decoding of the Boot 5702241973SjkimArchitecture 5703193267Sjkimflags. Now decode all flags, regardless of the FADT version. Flag output 5704193267Sjkimincludes the FADT version which first defined each flag. 5705193267Sjkim 5706241973SjkimThe iASL -g option now dumps the RSDT to a file (in addition to the FADT 5707241973Sjkimand 5708193267SjkimDSDT). Windows only. 5709193267Sjkim 5710193267Sjkim---------------------------------------- 5711193267Sjkim04 December 2008. Summary of changes for version 20081204: 5712193267Sjkim 5713193267Sjkim1) ACPI CA Core Subsystem: 5714193267Sjkim 5715241973SjkimThe ACPICA Programmer Reference has been completely updated and revamped 5716241973Sjkimfor 5717193267Sjkimthis release. This includes updates to the external interfaces, OSL 5718193267Sjkiminterfaces, the overview sections, and the debugger reference. 5719193267Sjkim 5720193267SjkimSeveral new ACPICA interfaces have been implemented and documented in the 5721193267Sjkimprogrammer reference: 5722193267SjkimAcpiReset - Writes the reset value to the FADT-defined reset register. 5723193267SjkimAcpiDisableAllGpes - Disable all available GPEs. 5724193267SjkimAcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 5725193267SjkimAcpiGetGpeDevice - Get the GPE block device associated with a GPE. 5726193267SjkimAcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 5727193267SjkimAcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 5728193267SjkimAcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 5729193267Sjkim 5730241973SjkimMost of the public ACPI hardware-related interfaces have been moved to a 5731241973Sjkimnew 5732193267Sjkimfile, components/hardware/hwxface.c 5733193267Sjkim 5734193267SjkimEnhanced the FADT parsing and low-level ACPI register access: The ACPI 5735193267Sjkimregister lengths within the FADT are now used, and the low level ACPI 5736193267Sjkimregister access no longer hardcodes the ACPI register lengths. Given that 5737241973Sjkimthere may be some risk in actually trusting the FADT register lengths, a 5738241973Sjkimrun- 5739253690Sjkimtime option was added to fall back to the default hardcoded lengths if 5740253690Sjkimthe 5741193267SjkimFADT proves to contain incorrect values - UseDefaultRegisterWidths. This 5742241973Sjkimoption is set to true for now, and a warning is issued if a suspicious 5743241973SjkimFADT 5744193267Sjkimregister length is overridden with the default value. 5745193267Sjkim 5746241973SjkimFixed a reference count issue in NsRepairObject. This problem was 5747241973Sjkimintroduced 5748193267Sjkimin version 20081031 as part of a fix to repair Buffer objects within 5749193267SjkimPackages. Lin Ming. 5750193267Sjkim 5751193267SjkimAdded semaphore support to the Linux/Unix application OS-services layer 5752193267Sjkim(OSL). ACPICA BZ 448. Lin Ming. 5753193267Sjkim 5754241973SjkimAdded the ACPI_MUTEX_TYPE configuration option to select whether mutexes 5755241973Sjkimwill 5756193267Sjkimbe implemented in the OSL, or will binary semaphores be used instead. 5757193267Sjkim 5758193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5759193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5760241973Sjkimdebug version of the code includes the debug output trace mechanism and 5761241973Sjkimhas a 5762193267Sjkimmuch larger code and data size. 5763193267Sjkim 5764193267Sjkim Previous Release: 5765193267Sjkim Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5766193267Sjkim Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5767193267Sjkim Current Release: 5768193267Sjkim Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5769193267Sjkim Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5770193267Sjkim 5771193267Sjkim2) iASL Compiler/Disassembler and Tools: 5772193267Sjkim 5773253690SjkimiASL: Completed the '-e' option to include additional ACPI tables in 5774253690Sjkimorder 5775241973Sjkimto 5776253690Sjkimaid with disassembly and External statement generation. ACPICA BZ 742. 5777253690SjkimLin 5778193267SjkimMing. 5779193267Sjkim 5780193267SjkimiASL: Removed the "named object in while loop" error. The compiler cannot 5781193267Sjkimdetermine how many times a loop will execute. ACPICA BZ 730. 5782193267Sjkim 5783241973SjkimDisassembler: Implemented support for FADT revision 2 (MS extension). 5784241973SjkimACPICA 5785193267SjkimBZ 743. 5786193267Sjkim 5787253690SjkimDisassembler: Updates for several ACPI data tables (HEST, EINJ, and 5788253690SjkimMCFG). 5789193267Sjkim 5790193267Sjkim---------------------------------------- 5791193267Sjkim31 October 2008. Summary of changes for version 20081031: 5792193267Sjkim 5793193267Sjkim1) ACPI CA Core Subsystem: 5794193267Sjkim 5795241973SjkimRestructured the ACPICA header files into public/private. acpi.h now 5796241973Sjkimincludes 5797241973Sjkimonly the "public" acpica headers. All other acpica headers are "private" 5798241973Sjkimand 5799241973Sjkimshould not be included by acpica users. One new file, accommon.h is used 5800241973Sjkimto 5801241973Sjkiminclude the commonly used private headers for acpica code generation. 5802241973SjkimFuture 5803193267Sjkimplans include moving all private headers to a new subdirectory. 5804193267Sjkim 5805193267SjkimImplemented an automatic Buffer->String return value conversion for 5806253690Sjkimpredefined ACPI methods. For these methods (such as _BIF), added 5807253690Sjkimautomatic 5808241973Sjkimconversion for return objects that are required to be a String, but a 5809241973SjkimBuffer 5810241973Sjkimwas found instead. This can happen when reading string battery data from 5811241973Sjkiman 5812253690Sjkimoperation region, because it used to be difficult to convert the data 5813253690Sjkimfrom 5814253690Sjkimbuffer to string from within the ASL. Ensures that the host OS is 5815253690Sjkimprovided 5816193267Sjkimwith a valid null-terminated string. Linux BZ 11822. 5817193267Sjkim 5818241973SjkimUpdated the FACS waking vector interfaces. Split 5819241973SjkimAcpiSetFirmwareWakingVector 5820241973Sjkiminto two: one for the 32-bit vector, another for the 64-bit vector. This 5821241973Sjkimis 5822253690Sjkimrequired because the host OS must setup the wake much differently for 5823253690Sjkimeach 5824253690Sjkimvector (real vs. protected mode, etc.) and the interface itself should 5825253690Sjkimnot 5826241973Sjkimbe 5827253690Sjkimdeciding which vector to use. Also, eliminated the 5828253690SjkimGetFirmwareWakingVector 5829253690Sjkiminterface, as it served no purpose (only the firmware reads the vector, 5830253690SjkimOS 5831193267Sjkimonly writes the vector.) ACPICA BZ 731. 5832193267Sjkim 5833253690SjkimImplemented a mechanism to escape infinite AML While() loops. Added a 5834253690Sjkimloop 5835253690Sjkimcounter to force exit from AML While loops if the count becomes too 5836253690Sjkimlarge. 5837193267SjkimThis can occur in poorly written AML when the hardware does not respond 5838253690Sjkimwithin a while loop and the loop does not implement a timeout. The 5839253690Sjkimmaximum 5840241973Sjkimloop count is configurable. A new exception code is returned when a loop 5841241973Sjkimis 5842193267Sjkimbroken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 5843193267Sjkim 5844193267SjkimOptimized the execution of AML While loops. Previously, a control state 5845193267Sjkimobject was allocated and freed for each execution of the loop. The 5846253690Sjkimoptimization is to simply reuse the control state for each iteration. 5847253690SjkimThis 5848193267Sjkimspeeds up the raw loop execution time by about 5%. 5849193267Sjkim 5850241973SjkimEnhanced the implicit return mechanism. For Windows compatibility, return 5851241973Sjkiman 5852241973Sjkimimplicit integer of value zero for methods that contain no executable 5853241973Sjkimcode. 5854193267SjkimSuch methods are seen in the field as stubs (presumably), and can cause 5855193267Sjkimdrivers to fail if they expect a return value. Lin Ming. 5856193267Sjkim 5857193267SjkimAllow multiple backslashes as root prefixes in namepaths. In a fully 5858241973Sjkimqualified namepath, allow multiple backslash prefixes. This can happen 5859241973Sjkim(and 5860193267Sjkimis seen in the field) because of the use of a double-backslash in strings 5861253690Sjkim(since backslash is the escape character) causing confusion. ACPICA BZ 5862253690Sjkim739 5863193267SjkimLin Ming. 5864193267Sjkim 5865193267SjkimEmit a warning if two different FACS or DSDT tables are discovered in the 5866241973SjkimFADT. Checks if there are two valid but different addresses for the FACS 5867241973Sjkimand 5868193267SjkimDSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 5869193267Sjkim 5870241973SjkimConsolidated the method argument count validation code. Merged the code 5871241973Sjkimthat 5872193267Sjkimvalidates control method argument counts into the predefined validation 5873241973Sjkimmodule. Eliminates possible multiple warnings for incorrect argument 5874241973Sjkimcounts. 5875193267Sjkim 5876193267SjkimImplemented ACPICA example code. Includes code for ACPICA initialization, 5877193267Sjkimhandler installation, and calling a control method. Available at 5878193267Sjkimsource/tools/examples. 5879193267Sjkim 5880241973SjkimAdded a global pointer for FACS table to simplify internal FACS access. 5881241973SjkimUse 5882241973Sjkimthe global pointer instead of using AcpiGetTableByIndex for each FACS 5883241973Sjkimaccess. 5884193267SjkimThis simplifies the code for the Global Lock and the Firmware Waking 5885193267SjkimVector(s). 5886193267Sjkim 5887193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5888193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5889241973Sjkimdebug version of the code includes the debug output trace mechanism and 5890241973Sjkimhas a 5891193267Sjkimmuch larger code and data size. 5892193267Sjkim 5893193267Sjkim Previous Release: 5894193267Sjkim Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5895193267Sjkim Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5896193267Sjkim Current Release: 5897193267Sjkim Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5898193267Sjkim Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5899193267Sjkim 5900193267Sjkim2) iASL Compiler/Disassembler and Tools: 5901193267Sjkim 5902241973SjkimiASL: Improved disassembly of external method calls. Added the -e option 5903241973Sjkimto 5904253690Sjkimallow the inclusion of additional ACPI tables to help with the 5905253690Sjkimdisassembly 5906241973Sjkimof 5907193267Sjkimmethod invocations and the generation of external declarations during the 5908193267Sjkimdisassembly. Certain external method invocations cannot be disassembled 5909241973Sjkimproperly without the actual declaration of the method. Use the -e option 5910241973Sjkimto 5911253690Sjkiminclude the table where the external method(s) are actually declared. 5912253690SjkimMost 5913193267Sjkimuseful for disassembling SSDTs that make method calls back to the master 5914241973SjkimDSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 5915241973Sjkim-d 5916193267Sjkim-e dsdt.aml ssdt1.aml 5917193267Sjkim 5918193267SjkimiASL: Fix to allow references to aliases within ASL namepaths. Fixes a 5919193267Sjkimproblem where the use of an alias within a namepath would result in a not 5920193267Sjkimfound error or cause the compiler to fault. Also now allows forward 5921193267Sjkimreferences from the Alias operator itself. ACPICA BZ 738. 5922193267Sjkim 5923193267Sjkim---------------------------------------- 5924193267Sjkim26 September 2008. Summary of changes for version 20080926: 5925193267Sjkim 5926193267Sjkim1) ACPI CA Core Subsystem: 5927193267Sjkim 5928241973SjkimDesigned and implemented a mechanism to validate predefined ACPI methods 5929241973Sjkimand 5930241973Sjkimobjects. This code validates the predefined ACPI objects (objects whose 5931241973Sjkimnames 5932193267Sjkimstart with underscore) that appear in the namespace, at the time they are 5933193267Sjkimevaluated. The argument count and the type of the returned object are 5934241973Sjkimvalidated against the ACPI specification. The purpose of this validation 5935241973Sjkimis 5936241973Sjkimto detect problems with the BIOS-implemented predefined ACPI objects 5937241973Sjkimbefore 5938241973Sjkimthe results are returned to the ACPI-related drivers. Future enhancements 5939241973Sjkimmay 5940193267Sjkiminclude actual repair of incorrect return objects where possible. Two new 5941193267Sjkimfiles are nspredef.c and acpredef.h. 5942193267Sjkim 5943253690SjkimFixed a fault in the AML parser if a memory allocation fails during the 5944253690SjkimOp 5945193267Sjkimcompletion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 5946193267Sjkim 5947241973SjkimFixed an issue with implicit return compatibility. This change improves 5948241973Sjkimthe 5949241973Sjkimimplicit return mechanism to be more compatible with the MS interpreter. 5950241973SjkimLin 5951193267SjkimMing, ACPICA BZ 349. 5952193267Sjkim 5953241973SjkimImplemented support for zero-length buffer-to-string conversions. Allow 5954241973Sjkimzero 5955241973Sjkimlength strings during interpreter buffer-to-string conversions. For 5956241973Sjkimexample, 5957193267Sjkimduring the ToDecimalString and ToHexString operators, as well as implicit 5958193267Sjkimconversions. Fiodor Suietov, ACPICA BZ 585. 5959193267Sjkim 5960193267SjkimFixed two possible memory leaks in the error exit paths of 5961253690SjkimAcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 5962253690Sjkimare 5963193267Sjkimsimilar in that they use a stack of state objects in order to eliminate 5964193267Sjkimrecursion. The stack must be fully unwound and deallocated if an error 5965193267Sjkimoccurs. Lin Ming. ACPICA BZ 383. 5966193267Sjkim 5967241973SjkimRemoved the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 5968241973Sjkimglobal 5969193267SjkimACPI register table. This bit does not exist and is unused. Lin Ming, Bob 5970193267SjkimMoore ACPICA BZ 442. 5971193267Sjkim 5972193267SjkimRemoved the obsolete version number in module headers. Removed the 5973241973Sjkim"$Revision" number that appeared in each module header. This version 5974241973Sjkimnumber 5975241973Sjkimwas useful under SourceSafe and CVS, but has no meaning under git. It is 5976241973Sjkimnot 5977193267Sjkimonly incorrect, it could also be misleading. 5978193267Sjkim 5979193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 5980193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5981241973Sjkimdebug version of the code includes the debug output trace mechanism and 5982241973Sjkimhas a 5983193267Sjkimmuch larger code and data size. 5984193267Sjkim 5985193267Sjkim Previous Release: 5986193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5987193267Sjkim Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5988193267Sjkim Current Release: 5989193267Sjkim Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5990193267Sjkim Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5991193267Sjkim 5992193267Sjkim---------------------------------------- 5993193267Sjkim29 August 2008. Summary of changes for version 20080829: 5994193267Sjkim 5995193267Sjkim1) ACPI CA Core Subsystem: 5996193267Sjkim 5997193267SjkimCompleted a major cleanup of the internal ACPI_OPERAND_OBJECT of type 5998253690SjkimReference. Changes include the elimination of cheating on the Object 5999253690Sjkimfield 6000193267Sjkimfor the DdbHandle subtype, addition of a reference class field to 6001241973Sjkimdifferentiate the various reference types (instead of an AML opcode), and 6002241973Sjkimthe 6003193267Sjkimcleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6004193267Sjkim 6005193267SjkimReduce an error to a warning for an incorrect method argument count. 6006193267SjkimPreviously aborted with an error if too few arguments were passed to a 6007241973Sjkimcontrol method via the external ACPICA interface. Now issue a warning 6008241973Sjkiminstead 6009253690Sjkimand continue. Handles the case where the method inadvertently declares 6010253690Sjkimtoo 6011241973Sjkimmany arguments, but does not actually use the extra ones. Applies mainly 6012241973Sjkimto 6013193267Sjkimthe predefined methods. Lin Ming. Linux BZ 11032. 6014193267Sjkim 6015241973SjkimDisallow the evaluation of named object types with no intrinsic value. 6016241973SjkimReturn 6017241973SjkimAE_TYPE for objects that have no value and therefore evaluation is 6018241973Sjkimundefined: 6019241973SjkimDevice, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6020241973Sjkimof 6021241973Sjkimthese types were allowed, but an exception would be generated at some 6022241973Sjkimpoint 6023193267Sjkimduring the evaluation. Now, the error is generated up front. 6024193267Sjkim 6025193267SjkimFixed a possible memory leak in the AcpiNsGetExternalPathname function 6026193267Sjkim(nsnames.c). Fixes a leak in the error exit path. 6027193267Sjkim 6028241973SjkimRemoved the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6029241973Sjkimdebug 6030241973Sjkimlevels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6031241973SjkimACPI_EXCEPTION 6032193267Sjkiminterfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6033193267SjkimACPI_LV_EVENTS. 6034193267Sjkim 6035193267SjkimRemoved obsolete and/or unused exception codes from the acexcep.h header. 6036241973SjkimThere is the possibility that certain device drivers may be affected if 6037241973Sjkimthey 6038193267Sjkimuse any of these exceptions. 6039193267Sjkim 6040241973SjkimThe ACPICA documentation has been added to the public git source tree, 6041241973Sjkimunder 6042193267Sjkimacpica/documents. Included are the ACPICA programmer reference, the iASL 6043193267Sjkimcompiler reference, and the changes.txt release logfile. 6044193267Sjkim 6045193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6046193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6047241973Sjkimdebug version of the code includes the debug output trace mechanism and 6048241973Sjkimhas a 6049193267Sjkimmuch larger code and data size. 6050193267Sjkim 6051193267Sjkim Previous Release: 6052193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6053193267Sjkim Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6054193267Sjkim Current Release: 6055193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6056193267Sjkim Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6057193267Sjkim 6058193267Sjkim2) iASL Compiler/Disassembler and Tools: 6059193267Sjkim 6060193267SjkimAllow multiple argument counts for the predefined _SCP method. ACPI 3.0 6061193267Sjkimdefines _SCP with 3 arguments. Previous versions defined it with only 1 6062193267Sjkimargument. iASL now allows both definitions. 6063193267Sjkim 6064253690SjkimiASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 6065253690Sjkimzero- 6066193267Sjkimlength subtables when disassembling ACPI tables. Also fixed a couple of 6067241973Sjkimerrors where a full 16-bit table type field was not extracted from the 6068241973Sjkiminput 6069193267Sjkimproperly. 6070193267Sjkim 6071193267Sjkimacpisrc: Improve comment counting mechanism for generating source code 6072241973Sjkimstatistics. Count first and last lines of multi-line comments as 6073241973Sjkimwhitespace, 6074241973Sjkimnot comment lines. Handle Linux legal header in addition to standard 6075241973Sjkimacpica 6076193267Sjkimheader. 6077193267Sjkim 6078193267Sjkim---------------------------------------- 6079193267Sjkim 6080193267Sjkim29 July 2008. Summary of changes for version 20080729: 6081193267Sjkim 6082193267Sjkim1) ACPI CA Core Subsystem: 6083193267Sjkim 6084193267SjkimFix a possible deadlock in the GPE dispatch. Remove call to 6085241973SjkimAcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 6086241973Sjkimattempt 6087241973Sjkimto acquire the GPE lock but can deadlock since the GPE lock is already 6088241973Sjkimheld 6089241973Sjkimat dispatch time. This code was introduced in version 20060831 as a 6090241973Sjkimresponse 6091193267Sjkimto Linux BZ 6881 and has since been removed from Linux. 6092193267Sjkim 6093241973SjkimAdd a function to dereference returned reference objects. Examines the 6094241973Sjkimreturn 6095241973Sjkimobject from a call to AcpiEvaluateObject. Any Index or RefOf references 6096241973Sjkimare 6097253690Sjkimautomatically dereferenced in an attempt to return something useful 6098253690Sjkim(these 6099241973Sjkimreference types cannot be converted into an external ACPI_OBJECT.) 6100241973SjkimProvides 6101193267SjkimMS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 6102193267Sjkim 6103193267Sjkimx2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 6104193267Sjkimsubtables for the MADT and one new subtable for the SRAT. Includes 6105241973Sjkimdisassembler and AcpiSrc support. Data from the Intel 64 Architecture 6106241973Sjkimx2APIC 6107193267SjkimSpecification, June 2008. 6108193267Sjkim 6109241973SjkimAdditional error checking for pathname utilities. Add error check after 6110241973Sjkimall 6111193267Sjkimcalls to AcpiNsGetPathnameLength. Add status return from 6112241973SjkimAcpiNsBuildExternalPath and check after all calls. Add parameter 6113241973Sjkimvalidation 6114193267Sjkimto AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 6115193267Sjkim 6116241973SjkimReturn status from the global init function AcpiUtGlobalInitialize. This 6117241973Sjkimis 6118253690Sjkimused by both the kernel subsystem and the utilities such as iASL 6119253690Sjkimcompiler. 6120253690SjkimThe function could possibly fail when the caches are initialized. Yang 6121253690SjkimYi. 6122193267Sjkim 6123193267SjkimAdd a function to decode reference object types to strings. Created for 6124193267Sjkimimproved error messages. 6125193267Sjkim 6126241973SjkimImprove object conversion error messages. Better error messages during 6127241973Sjkimobject 6128241973Sjkimconversion from internal to the external ACPI_OBJECT. Used for external 6129241973Sjkimcalls 6130193267Sjkimto AcpiEvaluateObject. 6131193267Sjkim 6132193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6133193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6134241973Sjkimdebug version of the code includes the debug output trace mechanism and 6135241973Sjkimhas a 6136193267Sjkimmuch larger code and data size. 6137193267Sjkim 6138193267Sjkim Previous Release: 6139193267Sjkim Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6140193267Sjkim Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6141193267Sjkim Current Release: 6142193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6143193267Sjkim Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6144193267Sjkim 6145193267Sjkim2) iASL Compiler/Disassembler and Tools: 6146193267Sjkim 6147253690SjkimDebugger: fix a possible hang when evaluating non-methods. Fixes a 6148253690Sjkimproblem 6149253690Sjkimintroduced in version 20080701. If the object being evaluated (via 6150253690Sjkimexecute 6151241973Sjkimcommand) is not a method, the debugger can hang while trying to obtain 6152241973Sjkimnon- 6153193267Sjkimexistent parameters. 6154193267Sjkim 6155193267SjkimiASL: relax error for using reserved "_T_x" identifiers. These names can 6156193267Sjkimappear in a disassembled ASL file if they were emitted by the original 6157193267Sjkimcompiler. Instead of issuing an error or warning and forcing the user to 6158193267Sjkimmanually change these names, issue a remark instead. 6159193267Sjkim 6160241973SjkimiASL: error if named object created in while loop. Emit an error if any 6161241973Sjkimnamed 6162253690Sjkimobject is created within a While loop. If allowed, this code will 6163253690Sjkimgenerate 6164241973Sjkima 6165253690Sjkimrun-time error on the second iteration of the loop when an attempt is 6166253690Sjkimmade 6167241973Sjkimto 6168193267Sjkimcreate the same named object twice. ACPICA bugzilla 730. 6169193267Sjkim 6170241973SjkimiASL: Support absolute pathnames for include files. Add support for 6171241973Sjkimabsolute 6172253690Sjkimpathnames within the Include operator. previously, only relative 6173253690Sjkimpathnames 6174193267Sjkimwere supported. 6175193267Sjkim 6176241973SjkimiASL: Enforce minimum 1 interrupt in interrupt macro and Resource 6177241973SjkimDescriptor. 6178193267SjkimThe ACPI spec requires one interrupt minimum. BZ 423 6179193267Sjkim 6180193267SjkimiASL: Handle a missing ResourceSource arg, with a present SourceIndex. 6181193267SjkimHandles the case for the Interrupt Resource Descriptor where 6182193267Sjkimthe ResourceSource argument is omitted but ResourceSourceIndex 6183193267Sjkimis present. Now leave room for the Index. BZ 426 6184193267Sjkim 6185241973SjkimiASL: Prevent error message if CondRefOf target does not exist. Fixes 6186241973Sjkimcases 6187193267Sjkimwhere an error message is emitted if the target does not exist. BZ 516 6188193267Sjkim 6189193267SjkimiASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 6190241973Sjkim(get ACPI tables on Windows). This was apparently broken in version 6191241973Sjkim20070919. 6192193267Sjkim 6193241973SjkimAcpiXtract: Handle EOF while extracting data. Correctly handle the case 6194241973Sjkimwhere 6195193267Sjkimthe EOF happens immediately after the last table in the input file. Print 6196193267Sjkimcompletion message. Previously, no message was displayed in this case. 6197193267Sjkim 6198193267Sjkim---------------------------------------- 6199193267Sjkim01 July 2008. Summary of changes for version 20080701: 6200193267Sjkim 6201193267Sjkim0) Git source tree / acpica.org 6202193267Sjkim 6203193267SjkimFixed a problem where a git-clone from http would not transfer the entire 6204193267Sjkimsource tree. 6205193267Sjkim 6206193267Sjkim1) ACPI CA Core Subsystem: 6207193267Sjkim 6208193267SjkimImplemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 6209241973Sjkimenable bit. Now performs a read-change-write of the enable register 6210241973Sjkiminstead 6211241973Sjkimof simply writing out the cached enable mask. This will prevent 6212241973Sjkiminadvertent 6213241973Sjkimenabling of GPEs if a rogue GPE is received during initialization (before 6214241973SjkimGPE 6215193267Sjkimhandlers are installed.) 6216193267Sjkim 6217193267SjkimImplemented a copy for dynamically loaded tables. Previously, dynamically 6218193267Sjkimloaded tables were simply mapped - but on some machines this memory is 6219193267Sjkimcorrupted after suspend. Now copy the table to a local buffer. For the 6220193267SjkimOpRegion case, added checksum verify. Use the table length from the table 6221193267Sjkimheader, not the region length. For the Buffer case, use the table length 6222193267Sjkimalso. Dennis Noordsij, Bob Moore. BZ 10734 6223193267Sjkim 6224241973SjkimFixed a problem where the same ACPI table could not be dynamically loaded 6225241973Sjkimand 6226241973Sjkimunloaded more than once. Without this change, a table cannot be loaded 6227241973Sjkimagain 6228193267Sjkimonce it has been loaded/unloaded one time. The current mechanism does not 6229241973Sjkimunregister a table upon an unload. During a load, if the same table is 6230241973Sjkimfound, 6231193267Sjkimthis no longer returns an exception. BZ 722 6232193267Sjkim 6233193267SjkimFixed a problem where the wrong descriptor length was calculated for the 6234253690SjkimEndTag descriptor in 64-bit mode. The "minimal" descriptors such as 6235253690SjkimEndTag 6236193267Sjkimare calculated as 12 bytes long, but the actual length in the internal 6237241973Sjkimdescriptor is 16 because of the round-up to 8 on the 64-bit build. 6238241973SjkimReported 6239193267Sjkimby Linn Crosetto. BZ 728 6240193267Sjkim 6241241973SjkimFixed a possible memory leak in the Unload operator. The DdbHandle 6242241973Sjkimreturned 6243241973Sjkimby Load() did not have its reference count decremented during unload, 6244241973Sjkimleading 6245193267Sjkimto a memory leak. Lin Ming. BZ 727 6246193267Sjkim 6247193267SjkimFixed a possible memory leak when deleting thermal/processor objects. Any 6248193267Sjkimassociated notify handlers (and objects) were not being deleted. Fiodor 6249193267SjkimSuietov. BZ 506 6250193267Sjkim 6251241973SjkimFixed the ordering of the ASCII names in the global mutex table to match 6252241973Sjkimthe 6253241973Sjkimactual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 6254241973Sjkimonly. 6255193267SjkimVegard Nossum. BZ 726 6256193267Sjkim 6257193267SjkimEnhanced the AcpiGetObjectInfo interface to return the number of required 6258241973Sjkimarguments if the object is a control method. Added this call to the 6259241973Sjkimdebugger 6260193267Sjkimso the proper number of default arguments are passed to a method. This 6261193267Sjkimprevents a warning when executing methods from AcpiExec. 6262193267Sjkim 6263193267SjkimAdded a check for an invalid handle in AcpiGetObjectInfo. Return 6264193267SjkimAE_BAD_PARAMETER if input handle is invalid. BZ 474 6265193267Sjkim 6266193267SjkimFixed an extraneous warning from exconfig.c on the 64-bit build. 6267193267Sjkim 6268193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6269193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6270241973Sjkimdebug version of the code includes the debug output trace mechanism and 6271241973Sjkimhas a 6272193267Sjkimmuch larger code and data size. 6273193267Sjkim 6274193267Sjkim Previous Release: 6275193267Sjkim Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6276193267Sjkim Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6277193267Sjkim Current Release: 6278193267Sjkim Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 6279193267Sjkim Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 6280193267Sjkim 6281193267Sjkim2) iASL Compiler/Disassembler and Tools: 6282193267Sjkim 6283193267SjkimiASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 6284193267Sjkimresource descriptor names. 6285193267Sjkim 6286241973SjkimiASL: Detect invalid ASCII characters in input (windows version). Removed 6287241973Sjkimthe 6288193267Sjkim"-CF" flag from the flex compile, enables correct detection of non-ASCII 6289193267Sjkimcharacters in the input. BZ 441 6290193267Sjkim 6291241973SjkimiASL: Eliminate warning when result of LoadTable is not used. Eliminate 6292241973Sjkimthe 6293193267Sjkim"result of operation not used" warning when the DDB handle returned from 6294193267SjkimLoadTable is not used. The warning is not needed. BZ 590 6295193267Sjkim 6296253690SjkimAcpiExec: Add support for dynamic table load/unload. Now calls _CFG 6297253690Sjkimmethod 6298241973Sjkimto 6299241973Sjkimpass address of table to the AML. Added option to disable OpRegion 6300241973Sjkimsimulation 6301241973Sjkimto allow creation of an OpRegion with a real address that was passed to 6302241973Sjkim_CFG. 6303253690SjkimAll of this allows testing of the Load and Unload operators from 6304253690SjkimAcpiExec. 6305193267Sjkim 6306241973SjkimDebugger: update tables command for unloaded tables. Handle unloaded 6307241973Sjkimtables 6308193267Sjkimand use the standard table header output routine. 6309193267Sjkim 6310193267Sjkim---------------------------------------- 6311193267Sjkim09 June 2008. Summary of changes for version 20080609: 6312193267Sjkim 6313193267Sjkim1) ACPI CA Core Subsystem: 6314193267Sjkim 6315241973SjkimImplemented a workaround for reversed _PRT entries. A significant number 6316241973Sjkimof 6317193267SjkimBIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 6318241973Sjkimchange dynamically detects and repairs this problem. Provides 6319241973Sjkimcompatibility 6320193267Sjkimwith MS ACPI. BZ 6859 6321193267Sjkim 6322193267SjkimSimplified the internal ACPI hardware interfaces to eliminate the locking 6323193267Sjkimflag parameter from Register Read/Write. Added a new external interface, 6324193267SjkimAcpiGetRegisterUnlocked. 6325193267Sjkim 6326241973SjkimFixed a problem where the invocation of a GPE control method could hang. 6327241973SjkimThis 6328193267Sjkimwas a regression introduced in 20080514. The new method argument count 6329193267Sjkimvalidation mechanism can enter an infinite loop when a GPE method is 6330241973Sjkimdispatched. Problem fixed by removing the obsolete code that passed GPE 6331241973Sjkimblock 6332241973Sjkiminformation to the notify handler via the control method parameter 6333241973Sjkimpointer. 6334193267Sjkim 6335241973SjkimFixed a problem where the _SST execution status was incorrectly returned 6336241973Sjkimto 6337253690Sjkimthe caller of AcpiEnterSleepStatePrep. This was a regression introduced 6338253690Sjkimin 6339193267Sjkim20080514. _SST is optional and a NOT_FOUND exception should never be 6340193267Sjkimreturned. BZ 716 6341193267Sjkim 6342241973SjkimFixed a problem where a deleted object could be accessed from within the 6343241973SjkimAML 6344241973Sjkimparser. This was a regression introduced in version 20080123 as a fix for 6345241973Sjkimthe 6346193267SjkimUnload operator. Lin Ming. BZ 10669 6347193267Sjkim 6348241973SjkimCleaned up the debug operand dump mechanism. Eliminated unnecessary 6349241973Sjkimoperands 6350193267Sjkimand eliminated the use of a negative index in a loop. Operands are now 6351241973Sjkimdisplayed in the correct order, not backwards. This also fixes a 6352241973Sjkimregression 6353193267Sjkimintroduced in 20080514 on 64-bit systems where the elimination of 6354241973SjkimACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 6355241973Sjkim715 6356193267Sjkim 6357241973SjkimFixed a possible memory leak in EvPciConfigRegionSetup where the error 6358241973Sjkimexit 6359193267Sjkimpath did not delete a locally allocated structure. 6360193267Sjkim 6361193267SjkimUpdated definitions for the DMAR and SRAT tables to synchronize with the 6362193267Sjkimcurrent specifications. Includes disassembler support. 6363193267Sjkim 6364193267SjkimFixed a problem in the mutex debug code (in utmutex.c) where an incorrect 6365241973Sjkimloop termination value was used. Loop terminated on iteration early, 6366241973Sjkimmissing 6367193267Sjkimone mutex. Linn Crosetto 6368193267Sjkim 6369193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6370193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6371241973Sjkimdebug version of the code includes the debug output trace mechanism and 6372241973Sjkimhas a 6373193267Sjkimmuch larger code and data size. 6374193267Sjkim 6375193267Sjkim Previous Release: 6376193267Sjkim Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6377193267Sjkim Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6378193267Sjkim Current Release: 6379193267Sjkim Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 6380193267Sjkim Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 6381193267Sjkim 6382193267Sjkim2) iASL Compiler/Disassembler and Tools: 6383193267Sjkim 6384193267SjkimDisassembler: Implemented support for EisaId() within _CID objects. Now 6385193267Sjkimdisassemble integer _CID objects back to EisaId invocations, including 6386193267Sjkimmultiple integers within _CID packages. Includes single-step support for 6387193267Sjkimdebugger also. 6388193267Sjkim 6389193267SjkimDisassembler: Added support for DMAR and SRAT table definition changes. 6390193267Sjkim 6391193267Sjkim---------------------------------------- 6392193267Sjkim14 May 2008. Summary of changes for version 20080514: 6393193267Sjkim 6394193267Sjkim1) ACPI CA Core Subsystem: 6395193267Sjkim 6396193267SjkimFixed a problem where GPEs were enabled too early during the ACPICA 6397193267Sjkiminitialization. This could lead to "handler not installed" errors on some 6398241973Sjkimmachines. Moved GPE enable until after _REG/_STA/_INI methods are run. 6399241973SjkimThis 6400241973Sjkimensures that all operation regions and devices throughout the namespace 6401241973Sjkimhave 6402193267Sjkimbeen initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 6403193267Sjkim 6404193267SjkimImplemented a change to the enter sleep code. Moved execution of the _GTS 6405241973Sjkimmethod to just before setting sleep enable bit. The execution was moved 6406241973Sjkimfrom 6407193267SjkimAcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 6408193267Sjkimimmediately before the SLP_EN bit is set, as per the ACPI specification. 6409193267SjkimLuming Yu, BZ 1653. 6410193267Sjkim 6411241973SjkimImplemented a fix to disable unknown GPEs (2nd version). Now always 6412241973Sjkimdisable 6413193267Sjkimthe GPE, even if ACPICA thinks that that it is already disabled. It is 6414241973Sjkimpossible that the AML or some other code has enabled the GPE unbeknownst 6415241973Sjkimto 6416193267Sjkimthe ACPICA code. 6417193267Sjkim 6418241973SjkimFixed a problem with the Field operator where zero-length fields would 6419241973Sjkimreturn 6420241973Sjkiman AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 6421241973SjkimASL 6422193267Sjkimfield declarations in Field(), BankField(), and IndexField(). BZ 10606. 6423193267Sjkim 6424241973SjkimImplemented a fix for the Load operator, now load the table at the 6425241973Sjkimnamespace 6426241973Sjkimroot. This reverts a change introduced in version 20071019. The table is 6427241973Sjkimnow 6428193267Sjkimloaded at the namespace root even though this goes against the ACPI 6429241973Sjkimspecification. This provides compatibility with other ACPI 6430241973Sjkimimplementations. 6431241973SjkimThe ACPI specification will be updated to reflect this in ACPI 4.0. Lin 6432241973SjkimMing. 6433193267Sjkim 6434241973SjkimFixed a problem where ACPICA would not Load() tables with unusual 6435241973Sjkimsignatures. 6436193267SjkimNow ignore ACPI table signature for Load() operator. Only "SSDT" is 6437193267Sjkimacceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 6438241973SjkimTherefore, signature validation is worthless. Apparently MS ACPI accepts 6439241973Sjkimsuch 6440193267Sjkimsignatures, ACPICA must be compatible. BZ 10454. 6441193267Sjkim 6442241973SjkimFixed a possible negative array index in AcpiUtValidateException. Added 6443241973SjkimNULL 6444253690Sjkimfields to the exception string arrays to eliminate a -1 subtraction on 6445253690Sjkimthe 6446193267SjkimSubStatus field. 6447193267Sjkim 6448193267SjkimUpdated the debug tracking macros to reduce overall code and data size. 6449193267SjkimChanged ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 6450193267Sjkiminstead of pointers to static strings. Jan Beulich and Bob Moore. 6451193267Sjkim 6452193267SjkimImplemented argument count checking in control method invocation via 6453253690SjkimAcpiEvaluateObject. Now emit an error if too few arguments, warning if 6454253690Sjkimtoo 6455241973Sjkimmany. This applies only to extern programmatic control method execution, 6456241973Sjkimnot 6457193267Sjkimmethod-to-method calls within the AML. Lin Ming. 6458193267Sjkim 6459241973SjkimEliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 6460241973Sjkimno 6461241973Sjkimlonger needed, especially with the removal of 16-bit support. It was 6462241973Sjkimreplaced 6463253690Sjkimmostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 6464253690Sjkimbit 6465241973Sjkimon 6466193267Sjkim32/64-bit platforms is required. 6467193267Sjkim 6468193267SjkimAdded the C const qualifier for appropriate string constants -- mostly 6469193267SjkimMODULE_NAME and printf format strings. Jan Beulich. 6470193267Sjkim 6471193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6472193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6473241973Sjkimdebug version of the code includes the debug output trace mechanism and 6474241973Sjkimhas a 6475193267Sjkimmuch larger code and data size. 6476193267Sjkim 6477193267Sjkim Previous Release: 6478193267Sjkim Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6479193267Sjkim Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6480193267Sjkim Current Release: 6481193267Sjkim Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 6482193267Sjkim Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 6483193267Sjkim 6484193267Sjkim2) iASL Compiler/Disassembler and Tools: 6485193267Sjkim 6486253690SjkimImplemented ACPI table revision ID validation in the disassembler. Zero 6487253690Sjkimis 6488241973Sjkimalways invalid. For DSDTs, the ID controls the interpreter integer width. 6489241973Sjkim1 6490193267Sjkimmeans 32-bit and this is unusual. 2 or greater is 64-bit. 6491193267Sjkim 6492193267Sjkim---------------------------------------- 6493193267Sjkim21 March 2008. Summary of changes for version 20080321: 6494193267Sjkim 6495193267Sjkim1) ACPI CA Core Subsystem: 6496193267Sjkim 6497193267SjkimImplemented an additional change to the GPE support in order to suppress 6498253690Sjkimspurious or stray GPEs. The AcpiEvDisableGpe function will now 6499253690Sjkimpermanently 6500241973Sjkimdisable incoming GPEs that are neither enabled nor disabled -- meaning 6501241973Sjkimthat 6502241973Sjkimthe GPE is unknown to the system. This should prevent future interrupt 6503241973Sjkimfloods 6504193267Sjkimfrom that GPE. BZ 6217 (Zhang Rui) 6505193267Sjkim 6506193267SjkimFixed a problem where NULL package elements were not returned to the 6507193267SjkimAcpiEvaluateObject interface correctly. The element was simply ignored 6508241973Sjkiminstead of returning a NULL ACPI_OBJECT package element, potentially 6509241973Sjkimcausing 6510241973Sjkima buffer overflow and/or confusing the caller who expected a fixed number 6511241973Sjkimof 6512193267Sjkimelements. BZ 10132 (Lin Ming, Bob Moore) 6513193267Sjkim 6514241973SjkimFixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 6515241973SjkimDword, 6516241973SjkimQword), Field, BankField, and IndexField operators when invoked from 6517241973Sjkiminside 6518241973Sjkiman executing control method. In this case, these operators created 6519241973Sjkimnamespace 6520193267Sjkimnodes that were incorrectly left marked as permanent nodes instead of 6521193267Sjkimtemporary nodes. This could cause a problem if there is race condition 6522241973Sjkimbetween an exiting control method and a running namespace walk. (Reported 6523241973Sjkimby 6524193267SjkimLinn Crosetto) 6525193267Sjkim 6526193267SjkimFixed a problem where the CreateField and CreateXXXField operators would 6527241973Sjkimincorrectly allow duplicate names (the name of the field) with no 6528241973Sjkimexception 6529193267Sjkimgenerated. 6530193267Sjkim 6531241973SjkimImplemented several changes for Notify handling. Added support for new 6532241973SjkimNotify 6533193267Sjkimvalues (ACPI 2.0+) and improved the Notify debug output. Notify on 6534253690SjkimPowerResource objects is no longer allowed, as per the ACPI 6535253690Sjkimspecification. 6536193267Sjkim(Bob Moore, Zhang Rui) 6537193267Sjkim 6538241973SjkimAll Reference Objects returned via the AcpiEvaluateObject interface are 6539241973Sjkimnow 6540241973Sjkimmarked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 6541241973Sjkimfor 6542241973SjkimNULL objects - either NULL package elements or unresolved named 6543241973Sjkimreferences. 6544193267Sjkim 6545253690SjkimFixed a problem where an extraneous debug message was produced for 6546253690Sjkimpackage 6547193267Sjkimobjects (when debugging enabled). The message "Package List length larger 6548253690Sjkimthan NumElements count" is now produced in the correct case, and is now 6549253690Sjkiman 6550193267Sjkimerror message rather than a debug message. Added a debug message for the 6551241973Sjkimopposite case, where NumElements is larger than the Package List (the 6552241973Sjkimpackage 6553193267Sjkimwill be padded out with NULL elements as per the ACPI spec.) 6554193267Sjkim 6555241973SjkimImplemented several improvements for the output of the ASL "Debug" object 6556241973Sjkimto 6557193267Sjkimclarify and keep all data for a given object on one output line. 6558193267Sjkim 6559253690SjkimFixed two size calculation issues with the variable-length Start 6560253690SjkimDependent 6561193267Sjkimresource descriptor. 6562193267Sjkim 6563193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6564193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6565241973Sjkimdebug version of the code includes the debug output trace mechanism and 6566241973Sjkimhas 6567193267Sjkima much larger code and data size. 6568193267Sjkim 6569193267Sjkim Previous Release: 6570193267Sjkim Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6571193267Sjkim Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6572193267Sjkim Current Release: 6573193267Sjkim Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6574193267Sjkim Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6575193267Sjkim 6576193267Sjkim2) iASL Compiler/Disassembler and Tools: 6577193267Sjkim 6578253690SjkimFixed a problem with the use of the Switch operator where execution of 6579253690Sjkimthe 6580193267Sjkimcontaining method by multiple concurrent threads could cause an 6581193267SjkimAE_ALREADY_EXISTS exception. This is caused by the fact that there is no 6582193267Sjkimactual Switch opcode, it must be simulated with local named temporary 6583241973Sjkimvariables and if/else pairs. The solution chosen was to mark any method 6584241973Sjkimthat 6585241973Sjkimuses Switch as Serialized, thus preventing multiple thread entries. BZ 6586241973Sjkim469. 6587193267Sjkim 6588193267Sjkim---------------------------------------- 6589193267Sjkim13 February 2008. Summary of changes for version 20080213: 6590193267Sjkim 6591193267Sjkim1) ACPI CA Core Subsystem: 6592193267Sjkim 6593241973SjkimImplemented another MS compatibility design change for GPE/Notify 6594241973Sjkimhandling. 6595241973SjkimGPEs are now cleared/enabled asynchronously to allow all pending notifies 6596241973Sjkimto 6597193267Sjkimcomplete first. It is expected that the OSL will queue the enable request 6598241973Sjkimbehind all pending notify requests (may require changes to the local host 6599241973SjkimOSL 6600193267Sjkimin AcpiOsExecute). Alexey Starikovskiy. 6601193267Sjkim 6602193267SjkimFixed a problem where buffer and package objects passed as arguments to a 6603241973Sjkimcontrol method via the external AcpiEvaluateObject interface could cause 6604241973Sjkiman 6605193267SjkimAE_AML_INTERNAL exception depending on the order and type of operators 6606193267Sjkimexecuted by the target control method. 6607193267Sjkim 6608193267SjkimFixed a problem where resource descriptor size optimization could cause a 6609253690Sjkimproblem when a _CRS resource template is passed to a _SRS method. The 6610253690Sjkim_SRS 6611193267Sjkimresource template must use the same descriptors (with the same size) as 6612241973Sjkimreturned from _CRS. This change affects the following resource 6613241973Sjkimdescriptors: 6614241973SjkimIRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 6615241973Sjkim9487) 6616193267Sjkim 6617241973SjkimFixed a problem where a CopyObject to RegionField, BankField, and 6618241973SjkimIndexField 6619241973Sjkimobjects did not perform an implicit conversion as it should. These types 6620241973Sjkimmust 6621241973Sjkimretain their initial type permanently as per the ACPI specification. 6622241973SjkimHowever, 6623193267Sjkima CopyObject to all other object types should not perform an implicit 6624193267Sjkimconversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 6625193267Sjkim 6626193267SjkimFixed a problem with the AcpiGetDevices interface where the mechanism to 6627193267Sjkimmatch device CIDs did not examine the entire list of available CIDs, but 6628193267Sjkiminstead aborted on the first non-matching CID. Andrew Patterson. 6629193267Sjkim 6630241973SjkimFixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 6631241973Sjkimwas 6632193267Sjkiminadvertently changed to return a 16-bit value instead of a 32-bit value, 6633193267Sjkimtruncating the upper dword of a 64-bit value. This macro is only used to 6634193267Sjkimdisplay debug output, so no incorrect calculations were made. Also, 6635193267Sjkimreimplemented the macro so that a 64-bit shift is not performed by 6636193267Sjkiminefficient compilers. 6637193267Sjkim 6638193267SjkimAdded missing va_end statements that should correspond with each va_start 6639193267Sjkimstatement. 6640193267Sjkim 6641193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6642193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6643241973Sjkimdebug version of the code includes the debug output trace mechanism and 6644241973Sjkimhas 6645193267Sjkima much larger code and data size. 6646193267Sjkim 6647193267Sjkim Previous Release: 6648193267Sjkim Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6649193267Sjkim Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6650193267Sjkim Current Release: 6651193267Sjkim Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6652193267Sjkim Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6653193267Sjkim 6654193267Sjkim2) iASL Compiler/Disassembler and Tools: 6655193267Sjkim 6656193267SjkimImplemented full disassembler support for the following new ACPI tables: 6657193267SjkimBERT, EINJ, and ERST. Implemented partial disassembler support for the 6658193267Sjkimcomplicated HEST table. These tables support the Windows Hardware Error 6659193267SjkimArchitecture (WHEA). 6660193267Sjkim 6661193267Sjkim---------------------------------------- 6662193267Sjkim23 January 2008. Summary of changes for version 20080123: 6663193267Sjkim 6664193267Sjkim1) ACPI CA Core Subsystem: 6665193267Sjkim 6666193267SjkimAdded the 2008 copyright to all module headers and signons. This affects 6667193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 6668193267Sjkimthe tools/utilities. 6669193267Sjkim 6670253690SjkimFixed a problem with the SizeOf operator when used with Package and 6671253690SjkimBuffer 6672253690Sjkimobjects. These objects have deferred execution for some arguments, and 6673253690Sjkimthe 6674241973Sjkimexecution is now completed before the SizeOf is executed. This problem 6675241973Sjkimcaused 6676241973Sjkimunexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 6677241973SjkimBZ 6678193267Sjkim9558 6679193267Sjkim 6680253690SjkimImplemented an enhancement to the interpreter "slack mode". In the 6681253690Sjkimabsence 6682241973Sjkimof 6683253690Sjkiman explicit return or an implicitly returned object from the last 6684253690Sjkimexecuted 6685241973Sjkimopcode, a control method will now implicitly return an integer of value 0 6686241973Sjkimfor 6687193267SjkimMicrosoft compatibility. (Lin Ming) BZ 392 6688193267Sjkim 6689253690SjkimFixed a problem with the Load operator where an exception was not 6690253690Sjkimreturned 6691241973Sjkimin 6692193267Sjkimthe case where the table is already loaded. (Lin Ming) BZ 463 6693193267Sjkim 6694241973SjkimImplemented support for the use of DDBHandles as an Indexed Reference, as 6695241973Sjkimper 6696193267Sjkimthe ACPI spec. (Lin Ming) BZ 486 6697193267Sjkim 6698241973SjkimImplemented support for UserTerm (Method invocation) for the Unload 6699241973Sjkimoperator 6700193267Sjkimas per the ACPI spec. (Lin Ming) BZ 580 6701193267Sjkim 6702253690SjkimFixed a problem with the LoadTable operator where the OemId and 6703253690SjkimOemTableId 6704241973Sjkiminput strings could cause unexpected failures if they were shorter than 6705241973Sjkimthe 6706193267Sjkimmaximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 6707193267Sjkim 6708241973SjkimImplemented support for UserTerm (Method invocation) for the Unload 6709241973Sjkimoperator 6710193267Sjkimas per the ACPI spec. (Lin Ming) BZ 580 6711193267Sjkim 6712241973SjkimImplemented header file support for new ACPI tables - BERT, ERST, EINJ, 6713241973SjkimHEST, 6714193267SjkimIBFT, UEFI, WDAT. Disassembler support is forthcoming. 6715193267Sjkim 6716193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6717193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6718241973Sjkimdebug version of the code includes the debug output trace mechanism and 6719241973Sjkimhas 6720193267Sjkima much larger code and data size. 6721193267Sjkim 6722193267Sjkim Previous Release: 6723193267Sjkim Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6724193267Sjkim Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6725193267Sjkim Current Release: 6726193267Sjkim Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6727193267Sjkim Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6728193267Sjkim 6729193267Sjkim2) iASL Compiler/Disassembler and Tools: 6730193267Sjkim 6731241973SjkimImplemented support in the disassembler for checksum validation on 6732241973Sjkimincoming 6733241973Sjkimbinary DSDTs and SSDTs. If incorrect, a message is displayed within the 6734241973Sjkimtable 6735193267Sjkimheader dump at the start of the disassembly. 6736193267Sjkim 6737253690SjkimImplemented additional debugging information in the namespace listing 6738253690Sjkimfile 6739241973Sjkimcreated during compilation. In addition to the namespace hierarchy, the 6740241973Sjkimfull 6741193267Sjkimpathname to each namespace object is displayed. 6742193267Sjkim 6743241973SjkimFixed a problem with the disassembler where invalid ACPI tables could 6744241973Sjkimcause 6745193267Sjkimfaults or infinite loops. 6746193267Sjkim 6747193267SjkimFixed an unexpected parse error when using the optional "parameter types" 6748193267Sjkimlist in a control method declaration. (Lin Ming) BZ 397 6749193267Sjkim 6750253690SjkimFixed a problem where two External declarations with the same name did 6751253690Sjkimnot 6752193267Sjkimcause an error (Lin Ming) BZ 509 6753193267Sjkim 6754193267SjkimImplemented support for full TermArgs (adding Argx, Localx and method 6755241973Sjkiminvocation) for the ParameterData parameter to the LoadTable operator. 6756241973Sjkim(Lin 6757193267SjkimMing) BZ 583,587 6758193267Sjkim 6759193267Sjkim---------------------------------------- 6760193267Sjkim19 December 2007. Summary of changes for version 20071219: 6761193267Sjkim 6762193267Sjkim1) ACPI CA Core Subsystem: 6763193267Sjkim 6764193267SjkimImplemented full support for deferred execution for the TermArg string 6765193267Sjkimarguments for DataTableRegion. This enables forward references and full 6766241973Sjkimoperand resolution for the three string arguments. Similar to 6767241973SjkimOperationRegion 6768193267Sjkimdeferred argument execution.) Lin Ming. BZ 430 6769193267Sjkim 6770253690SjkimImplemented full argument resolution support for the BankValue argument 6771253690Sjkimto 6772241973SjkimBankField. Previously, only constants were supported, now any TermArg may 6773241973Sjkimbe 6774193267Sjkimused. Lin Ming BZ 387, 393 6775193267Sjkim 6776193267SjkimFixed a problem with AcpiGetDevices where the search of a branch of the 6777193267Sjkimdevice tree could be terminated prematurely. In accordance with the ACPI 6778241973Sjkimspecification, the search down the current branch is terminated if a 6779241973Sjkimdevice 6780241973Sjkimis both not present and not functional (instead of just not present.) 6781241973SjkimYakui 6782193267SjkimZhao. 6783193267Sjkim 6784241973SjkimFixed a problem where "unknown" GPEs could be allowed to fire repeatedly 6785241973Sjkimif 6786253690Sjkimthe underlying AML code changed the GPE enable registers. Now, any 6787253690Sjkimunknown 6788241973Sjkimincoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 6789241973Sjkimdisabled 6790193267Sjkiminstead of simply ignored. Rui Zhang. 6791193267Sjkim 6792253690SjkimFixed a problem with Index Fields where the Index register was 6793253690Sjkimincorrectly 6794193267Sjkimlimited to a maximum of 32 bits. Now any size may be used. 6795193267Sjkim 6796253690SjkimFixed a couple memory leaks associated with "implicit return" objects 6797253690Sjkimwhen 6798193267Sjkimthe AML Interpreter slack mode is enabled. Lin Ming BZ 349 6799193267Sjkim 6800193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6801193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6802241973Sjkimdebug version of the code includes the debug output trace mechanism and 6803241973Sjkimhas 6804193267Sjkima much larger code and data size. 6805193267Sjkim 6806193267Sjkim Previous Release: 6807193267Sjkim Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6808193267Sjkim Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6809193267Sjkim Current Release: 6810193267Sjkim Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6811193267Sjkim Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6812193267Sjkim 6813193267Sjkim---------------------------------------- 6814193267Sjkim14 November 2007. Summary of changes for version 20071114: 6815193267Sjkim 6816193267Sjkim1) ACPI CA Core Subsystem: 6817193267Sjkim 6818193267SjkimImplemented event counters for each of the Fixed Events, the ACPI SCI 6819193267Sjkim(interrupt) itself, and control methods executed. Named 6820241973SjkimAcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 6821241973SjkimThese 6822193267Sjkimshould be useful for debugging and statistics. 6823193267Sjkim 6824193267SjkimImplemented a new external interface, AcpiGetStatistics, to retrieve the 6825193267Sjkimcontents of the various event counters. Returns the current values for 6826193267SjkimAcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 6827241973SjkimAcpiMethodCount. The interface can be expanded in the future if new 6828241973Sjkimcounters 6829253690Sjkimare added. Device drivers should use this interface rather than access 6830253690Sjkimthe 6831193267Sjkimcounters directly. 6832193267Sjkim 6833253690SjkimFixed a problem with the FromBCD and ToBCD operators. With some 6834253690Sjkimcompilers, 6835253690Sjkimthe ShortDivide function worked incorrectly, causing problems with the 6836253690SjkimBCD 6837193267Sjkimfunctions with large input values. A truncation from 64-bit to 32-bit 6838193267Sjkiminadvertently occurred. Internal BZ 435. Lin Ming 6839193267Sjkim 6840241973SjkimFixed a problem with Index references passed as method arguments. 6841241973SjkimReferences 6842241973Sjkimpassed as arguments to control methods were dereferenced immediately 6843241973Sjkim(before 6844253690Sjkimcontrol was passed to the called method). The references are now 6845253690Sjkimcorrectly 6846193267Sjkimpassed directly to the called method. BZ 5389. Lin Ming 6847193267Sjkim 6848241973SjkimFixed a problem with CopyObject used in conjunction with the Index 6849241973Sjkimoperator. 6850241973SjkimThe reference was incorrectly dereferenced before the copy. The reference 6851241973Sjkimis 6852193267Sjkimnow correctly copied. BZ 5391. Lin Ming 6853193267Sjkim 6854241973SjkimFixed a problem with Control Method references within Package objects. 6855241973SjkimThese 6856193267Sjkimreferences are now correctly generated. This completes the package 6857193267Sjkimconstruction overhaul that began in version 20071019. 6858193267Sjkim 6859193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6860193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6861241973Sjkimdebug version of the code includes the debug output trace mechanism and 6862241973Sjkimhas 6863193267Sjkima much larger code and data size. 6864193267Sjkim 6865193267Sjkim Previous Release: 6866193267Sjkim Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6867193267Sjkim Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6868193267Sjkim Current Release: 6869193267Sjkim Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6870193267Sjkim Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6871193267Sjkim 6872193267Sjkim 6873193267Sjkim2) iASL Compiler/Disassembler and Tools: 6874193267Sjkim 6875193267SjkimThe AcpiExec utility now installs handlers for all of the predefined 6876193267SjkimOperation Region types. New types supported are: PCI_Config, CMOS, and 6877193267SjkimPCIBARTarget. 6878193267Sjkim 6879241973SjkimFixed a problem with the 64-bit version of AcpiExec where the extended 6880241973Sjkim(64- 6881193267Sjkimbit) address fields for the DSDT and FACS within the FADT were not being 6882253690Sjkimused, causing truncation of the upper 32-bits of these addresses. Lin 6883253690SjkimMing 6884193267Sjkimand Bob Moore 6885193267Sjkim 6886193267Sjkim---------------------------------------- 6887193267Sjkim19 October 2007. Summary of changes for version 20071019: 6888193267Sjkim 6889193267Sjkim1) ACPI CA Core Subsystem: 6890193267Sjkim 6891193267SjkimFixed a problem with the Alias operator when the target of the alias is a 6892253690Sjkimnamed ASL operator that opens a new scope -- Scope, Device, 6893253690SjkimPowerResource, 6894193267SjkimProcessor, and ThermalZone. In these cases, any children of the original 6895241973Sjkimoperator could not be accessed via the alias, potentially causing 6896241973Sjkimunexpected 6897193267SjkimAE_NOT_FOUND exceptions. (BZ 9067) 6898193267Sjkim 6899193267SjkimFixed a problem with the Package operator where all named references were 6900241973Sjkimcreated as object references and left otherwise unresolved. According to 6901241973Sjkimthe 6902241973SjkimACPI specification, a Package can only contain Data Objects or references 6903241973Sjkimto 6904193267Sjkimcontrol methods. The implication is that named references to Data Objects 6905193267Sjkim(Integer, Buffer, String, Package, BufferField, Field) should be resolved 6906193267Sjkimimmediately upon package creation. This is the approach taken with this 6907193267Sjkimchange. References to all other named objects (Methods, Devices, Scopes, 6908193267Sjkimetc.) are all now properly created as reference objects. (BZ 5328) 6909193267Sjkim 6910193267SjkimReverted a change to Notify handling that was introduced in version 6911193267Sjkim20070508. This version changed the Notify handling from asynchronous to 6912241973Sjkimfully synchronous (Device driver Notify handling with respect to the 6913241973SjkimNotify 6914193267SjkimASL operator). It was found that this change caused more problems than it 6915193267Sjkimsolved and was removed by most users. 6916193267Sjkim 6917241973SjkimFixed a problem with the Increment and Decrement operators where the type 6918241973Sjkimof 6919193267Sjkimthe target object could be unexpectedly and incorrectly changed. (BZ 353) 6920193267SjkimLin Ming. 6921193267Sjkim 6922193267SjkimFixed a problem with the Load and LoadTable operators where the table 6923193267Sjkimlocation within the namespace was ignored. Instead, the table was always 6924193267Sjkimloaded into the root or current scope. Lin Ming. 6925193267Sjkim 6926193267SjkimFixed a problem with the Load operator when loading a table from a buffer 6927193267Sjkimobject. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 6928193267Sjkim 6929241973SjkimFixed a problem with the Debug object where a store of a DdbHandle 6930241973Sjkimreference 6931193267Sjkimobject to the Debug object could cause a fault. 6932193267Sjkim 6933241973SjkimAdded a table checksum verification for the Load operator, in the case 6934241973Sjkimwhere 6935193267Sjkimthe load is from a buffer. (BZ 578). 6936193267Sjkim 6937241973SjkimImplemented additional parameter validation for the LoadTable operator. 6938241973SjkimThe 6939241973Sjkimlength of the input strings SignatureString, OemIdString, and OemTableId 6940241973Sjkimare 6941193267Sjkimnow checked for maximum lengths. (BZ 582) Lin Ming. 6942193267Sjkim 6943193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6944193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6945241973Sjkimdebug version of the code includes the debug output trace mechanism and 6946241973Sjkimhas 6947193267Sjkima much larger code and data size. 6948193267Sjkim 6949193267Sjkim Previous Release: 6950193267Sjkim Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6951193267Sjkim Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6952193267Sjkim Current Release: 6953193267Sjkim Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6954193267Sjkim Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6955193267Sjkim 6956193267Sjkim 6957193267Sjkim2) iASL Compiler/Disassembler: 6958193267Sjkim 6959193267SjkimFixed a problem where if a single file was specified and the file did not 6960193267Sjkimexist, no error message was emitted. (Introduced with wildcard support in 6961193267Sjkimversion 20070917.) 6962193267Sjkim 6963193267Sjkim---------------------------------------- 6964193267Sjkim19 September 2007. Summary of changes for version 20070919: 6965193267Sjkim 6966193267Sjkim1) ACPI CA Core Subsystem: 6967193267Sjkim 6968193267SjkimDesigned and implemented new external interfaces to install and remove 6969241973Sjkimhandlers for ACPI table-related events. Current events that are defined 6970241973Sjkimare 6971193267SjkimLOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 6972193267Sjkimthey are dynamically loaded and unloaded. See AcpiInstallTableHandler and 6973193267SjkimAcpiRemoveTableHandler. (Lin Ming and Bob Moore) 6974193267Sjkim 6975193267SjkimFixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 6976193267Sjkim(acpi_serialized option on Linux) could cause some systems to hang during 6977193267Sjkiminitialization. (Bob Moore) BZ 8171 6978193267Sjkim 6979193267SjkimFixed a problem where objects of certain types (Device, ThermalZone, 6980193267SjkimProcessor, PowerResource) can be not found if they are declared and 6981193267Sjkimreferenced from within the same control method (Lin Ming) BZ 341 6982193267Sjkim 6983193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6984193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6985241973Sjkimdebug version of the code includes the debug output trace mechanism and 6986241973Sjkimhas 6987193267Sjkima much larger code and data size. 6988193267Sjkim 6989193267Sjkim Previous Release: 6990193267Sjkim Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6991193267Sjkim Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6992193267Sjkim Current Release: 6993193267Sjkim Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6994193267Sjkim Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6995193267Sjkim 6996193267Sjkim 6997193267Sjkim2) iASL Compiler/Disassembler: 6998193267Sjkim 6999253690SjkimImplemented support to allow multiple files to be compiled/disassembled 7000253690Sjkimin 7001241973Sjkima 7002241973Sjkimsingle invocation. This includes command line wildcard support for both 7003241973Sjkimthe 7004193267SjkimWindows and Unix versions of the compiler. This feature simplifies the 7005253690Sjkimdisassembly and compilation of multiple ACPI tables in a single 7006253690Sjkimdirectory. 7007193267Sjkim 7008193267Sjkim---------------------------------------- 7009193267Sjkim08 May 2007. Summary of changes for version 20070508: 7010193267Sjkim 7011193267Sjkim1) ACPI CA Core Subsystem: 7012193267Sjkim 7013241973SjkimImplemented a Microsoft compatibility design change for the handling of 7014241973Sjkimthe 7015193267SjkimNotify AML operator. Previously, notify handlers were dispatched and 7016193267Sjkimexecuted completely asynchronously in a deferred thread. The new design 7017253690Sjkimstill executes the notify handlers in a different thread, but the 7018253690Sjkimoriginal 7019253690Sjkimthread that executed the Notify() now waits at a synchronization point 7020253690Sjkimfor 7021241973Sjkimthe notify handler to complete. Some machines depend on a synchronous 7022241973SjkimNotify 7023193267Sjkimoperator in order to operate correctly. 7024193267Sjkim 7025193267SjkimImplemented support to allow Package objects to be passed as method 7026193267Sjkimarguments to the external AcpiEvaluateObject interface. Previously, this 7027193267Sjkimwould return the AE_NOT_IMPLEMENTED exception. This feature had not been 7028193267Sjkimimplemented since there were no reserved control methods that required it 7029193267Sjkimuntil recently. 7030193267Sjkim 7031241973SjkimFixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7032241973Sjkimthat 7033193267Sjkimcontained invalid non-zero values in reserved fields could cause later 7034253690Sjkimfailures because these fields have meaning in later revisions of the 7035253690SjkimFADT. 7036241973SjkimFor incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7037241973Sjkimfields 7038193267Sjkimare: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7039193267Sjkim 7040253690SjkimFixed a problem where the Global Lock handle was not properly updated if 7041253690Sjkima 7042253690Sjkimthread that acquired the Global Lock via executing AML code then 7043253690Sjkimattempted 7044241973Sjkimto acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7045241973SjkimJoe 7046193267SjkimLiu. 7047193267Sjkim 7048193267SjkimFixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7049193267Sjkimcould be corrupted if the interrupt being removed was at the head of the 7050193267Sjkimlist. Reported by Linn Crosetto. 7051193267Sjkim 7052193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7053193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7054241973Sjkimdebug version of the code includes the debug output trace mechanism and 7055241973Sjkimhas 7056193267Sjkima much larger code and data size. 7057193267Sjkim 7058193267Sjkim Previous Release: 7059193267Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7060193267Sjkim Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7061193267Sjkim Current Release: 7062193267Sjkim Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7063193267Sjkim Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7064193267Sjkim 7065193267Sjkim---------------------------------------- 7066167802Sjkim20 March 2007. Summary of changes for version 20070320: 7067167802Sjkim 7068167802Sjkim1) ACPI CA Core Subsystem: 7069167802Sjkim 7070193267SjkimImplemented a change to the order of interpretation and evaluation of AML 7071193267Sjkimoperand objects within the AML interpreter. The interpreter now evaluates 7072193267Sjkimoperands in the order that they appear in the AML stream (and the 7073253690Sjkimcorresponding ASL code), instead of in the reverse order (after the 7074253690Sjkimentire 7075253690Sjkimoperand list has been parsed). The previous behavior caused several 7076253690Sjkimsubtle 7077193267Sjkimincompatibilities with the Microsoft AML interpreter as well as being 7078193267Sjkimsomewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 7079167802Sjkim 7080241973SjkimImplemented a change to the ACPI Global Lock support. All interfaces to 7081241973Sjkimthe 7082193267Sjkimglobal lock now allow the same thread to acquire the lock multiple times. 7083241973SjkimThis affects the AcpiAcquireGlobalLock external interface to the global 7084241973Sjkimlock 7085193267Sjkimas well as the internal use of the global lock to support AML fields -- a 7086241973Sjkimcontrol method that is holding the global lock can now simultaneously 7087241973Sjkimaccess 7088253690SjkimAML fields that require global lock protection. Previously, in both 7089253690Sjkimcases, 7090241973Sjkimthis would have resulted in an AE_ALREADY_ACQUIRED exception. The change 7091241973Sjkimto 7092193267SjkimAcpiAcquireGlobalLock is of special interest to drivers for the Embedded 7093241973SjkimController. There is no change to the behavior of the AML Acquire 7094241973Sjkimoperator, 7095193267Sjkimas this can already be used to acquire a mutex multiple times by the same 7096193267Sjkimthread. BZ 8066. With assistance from Alexey Starikovskiy. 7097167802Sjkim 7098193267SjkimFixed a problem where invalid objects could be referenced in the AML 7099253690SjkimInterpreter after error conditions. During operand evaluation, ensure 7100253690Sjkimthat 7101193267Sjkimthe internal "Return Object" field is cleared on error and only valid 7102241973Sjkimpointers are stored there. Caused occasional access to deleted objects 7103241973Sjkimthat 7104193267Sjkimresulted in "large reference count" warning messages. Valery Podrezov. 7105167802Sjkim 7106241973SjkimFixed a problem where an AE_STACK_OVERFLOW internal exception could occur 7107241973Sjkimon 7108193267Sjkimdeeply nested control method invocations. BZ 7873, local BZ 487. Valery 7109193267SjkimPodrezov. 7110167802Sjkim 7111193267SjkimFixed an internal problem with the handling of result objects on the 7112193267Sjkiminterpreter result stack. BZ 7872. Valery Podrezov. 7113167802Sjkim 7114241973SjkimRemoved obsolete code that handled the case where AML_NAME_OP is the 7115241973Sjkimtarget 7116193267Sjkimof a reference (Reference.Opcode). This code was no longer necessary. BZ 7117193267Sjkim7874. Valery Podrezov. 7118167802Sjkim 7119253690SjkimRemoved obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 7120253690Sjkimwas 7121241973Sjkima 7122193267Sjkimremnant from the previously discontinued 16-bit support. 7123167802Sjkim 7124193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7125193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7126241973Sjkimdebug version of the code includes the debug output trace mechanism and 7127241973Sjkimhas 7128193267Sjkima much larger code and data size. 7129167802Sjkim 7130167802Sjkim Previous Release: 7131167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7132167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7133167802Sjkim Current Release: 7134167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7135167802Sjkim Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7136167802Sjkim 7137167802Sjkim---------------------------------------- 7138167802Sjkim26 January 2007. Summary of changes for version 20070126: 7139167802Sjkim 7140167802Sjkim1) ACPI CA Core Subsystem: 7141167802Sjkim 7142193267SjkimAdded the 2007 copyright to all module headers and signons. This affects 7143193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 7144193267Sjkimthe utilities. 7145167802Sjkim 7146193267SjkimImplemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 7147241973Sjkimduring a table load. A bad pointer was passed in the case where the DSDT 7148241973Sjkimis 7149193267Sjkimoverridden, causing a fault in this case. 7150167802Sjkim 7151193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7152193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7153241973Sjkimdebug version of the code includes the debug output trace mechanism and 7154241973Sjkimhas 7155193267Sjkima much larger code and data size. 7156167802Sjkim 7157167802Sjkim Previous Release: 7158167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7159167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7160167802Sjkim Current Release: 7161167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7162167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7163167802Sjkim 7164167802Sjkim---------------------------------------- 7165167802Sjkim15 December 2006. Summary of changes for version 20061215: 7166167802Sjkim 7167167802Sjkim1) ACPI CA Core Subsystem: 7168167802Sjkim 7169241973SjkimSupport for 16-bit ACPICA has been completely removed since it is no 7170241973Sjkimlonger 7171193267Sjkimnecessary and it clutters the code. All 16-bit macros, types, and 7172241973Sjkimconditional compiles have been removed, cleaning up and simplifying the 7173241973Sjkimcode 7174193267Sjkimacross the entire subsystem. DOS support is no longer needed since the 7175193267Sjkimbootable Linux firmware kit is now available. 7176167802Sjkim 7177193267SjkimThe handler for the Global Lock is now removed during AcpiTerminate to 7178193267Sjkimenable a clean subsystem restart, via the implementation of the 7179193267SjkimAcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 7180193267SjkimHP) 7181167802Sjkim 7182253690SjkimImplemented enhancements to the multithreading support within the 7183253690Sjkimdebugger 7184241973Sjkimto enable improved multithreading debugging and evaluation of the 7185241973Sjkimsubsystem. 7186167802Sjkim(Valery Podrezov) 7187167802Sjkim 7188241973SjkimDebugger: Enhanced the Statistics/Memory command to emit the total 7189241973Sjkim(maximum) 7190241973Sjkimmemory used during the execution, as well as the maximum memory consumed 7191241973Sjkimby 7192193267Sjkimeach of the various object types. (Valery Podrezov) 7193167802Sjkim 7194193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7195193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7196241973Sjkimdebug version of the code includes the debug output trace mechanism and 7197241973Sjkimhas 7198193267Sjkima much larger code and data size. 7199193267Sjkim 7200167802Sjkim Previous Release: 7201167802Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7202167802Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7203167802Sjkim Current Release: 7204167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7205167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 7206167802Sjkim 7207167802Sjkim 7208167802Sjkim2) iASL Compiler/Disassembler and Tools: 7209167802Sjkim 7210193267SjkimAcpiExec: Implemented a new option (-m) to display full memory use 7211193267Sjkimstatistics upon subsystem/program termination. (Valery Podrezov) 7212167802Sjkim 7213167802Sjkim---------------------------------------- 7214167802Sjkim09 November 2006. Summary of changes for version 20061109: 7215167802Sjkim 7216167802Sjkim1) ACPI CA Core Subsystem: 7217167802Sjkim 7218253690SjkimOptimized the Load ASL operator in the case where the source operand is 7219253690Sjkiman 7220193267Sjkimoperation region. Simply map the operation region memory, instead of 7221193267Sjkimperforming a bytewise read. (Region must be of type SystemMemory, see 7222193267Sjkimbelow.) 7223167802Sjkim 7224193267SjkimFixed the Load ASL operator for the case where the source operand is a 7225241973Sjkimregion field. A buffer object is also allowed as the source operand. BZ 7226241973Sjkim480 7227167802Sjkim 7228241973SjkimFixed a problem where the Load ASL operator allowed the source operand to 7229241973Sjkimbe 7230193267Sjkiman operation region of any type. It is now restricted to regions of type 7231193267SjkimSystemMemory, as per the ACPI specification. BZ 481 7232167802Sjkim 7233193267SjkimAdditional cleanup and optimizations for the new Table Manager code. 7234167802Sjkim 7235253690SjkimAcpiEnable will now fail if all of the required ACPI tables are not 7236253690Sjkimloaded 7237193267Sjkim(FADT, FACS, DSDT). BZ 477 7238167802Sjkim 7239241973SjkimAdded #pragma pack(8/4) to acobject.h to ensure that the structures in 7240241973Sjkimthis 7241193267Sjkimheader are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 7242193267Sjkimmanually optimized to be aligned and will not work if it is byte-packed. 7243167802Sjkim 7244193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7245193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7246241973Sjkimdebug version of the code includes the debug output trace mechanism and 7247241973Sjkimhas 7248193267Sjkima much larger code and data size. 7249167802Sjkim 7250167802Sjkim Previous Release: 7251167802Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7252167802Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7253167802Sjkim Current Release: 7254167802Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 7255167802Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 7256167802Sjkim 7257167802Sjkim 7258167802Sjkim2) iASL Compiler/Disassembler and Tools: 7259167802Sjkim 7260193267SjkimFixed a problem where the presence of the _OSI predefined control method 7261193267Sjkimwithin complex expressions could cause an internal compiler error. 7262167802Sjkim 7263193267SjkimAcpiExec: Implemented full region support for multiple address spaces. 7264193267SjkimSpaceId is now part of the REGION object. BZ 429 7265167802Sjkim 7266167802Sjkim---------------------------------------- 7267167802Sjkim11 October 2006. Summary of changes for version 20061011: 7268167802Sjkim 7269167802Sjkim1) ACPI CA Core Subsystem: 7270167802Sjkim 7271193267SjkimCompleted an AML interpreter performance enhancement for control method 7272193267Sjkimexecution. Previously a 2-pass parse/execution, control methods are now 7273193267Sjkimcompletely parsed and executed in a single pass. This improves overall 7274193267Sjkiminterpreter performance by ~25%, reduces code size, and reduces CPU stack 7275193267Sjkimuse. (Valery Podrezov + interpreter changes in version 20051202 that 7276193267Sjkimeliminated namespace loading during the pass one parse.) 7277167802Sjkim 7278241973SjkimImplemented _CID support for PCI Root Bridge detection. If the _HID does 7279241973Sjkimnot 7280241973Sjkimmatch the predefined PCI Root Bridge IDs, the _CID list (if present) is 7281241973Sjkimnow 7282193267Sjkimobtained and also checked for an ID match. 7283167802Sjkim 7284241973SjkimImplemented additional support for the PCI _ADR execution: upsearch until 7285241973Sjkima 7286193267Sjkimdevice scope is found before executing _ADR. This allows PCI_Config 7287253690Sjkimoperation regions to be declared locally within control methods 7288253690Sjkimunderneath 7289193267SjkimPCI device objects. 7290167802Sjkim 7291193267SjkimFixed a problem with a possible race condition between threads executing 7292193267SjkimAcpiWalkNamespace and the AML interpreter. This condition was removed by 7293253690Sjkimmodifying AcpiWalkNamespace to (by default) ignore all temporary 7294253690Sjkimnamespace 7295193267Sjkimentries created during any concurrent control method execution. An 7296193267Sjkimadditional namespace race condition is known to exist between 7297193267SjkimAcpiWalkNamespace and the Load/Unload ASL operators and is still under 7298193267Sjkiminvestigation. 7299167802Sjkim 7300193267SjkimRestructured the AML ParseLoop function, breaking it into several 7301253690Sjkimsubfunctions in order to reduce CPU stack use and improve 7302253690Sjkimmaintainability. 7303193267Sjkim(Mikhail Kouzmich) 7304167802Sjkim 7305253690SjkimAcpiGetHandle: Fix for parameter validation to detect invalid 7306253690Sjkimcombinations 7307193267Sjkimof prefix handle and pathname. BZ 478 7308167802Sjkim 7309193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7310193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7311241973Sjkimdebug version of the code includes the debug output trace mechanism and 7312241973Sjkimhas 7313193267Sjkima much larger code and data size. 7314167802Sjkim 7315167802Sjkim Previous Release: 7316167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7317167802Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7318167802Sjkim Current Release: 7319167802Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 7320167802Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 7321167802Sjkim 7322167802Sjkim2) iASL Compiler/Disassembler and Tools: 7323167802Sjkim 7324241973SjkimPorted the -g option (get local ACPI tables) to the new ACPICA Table 7325241973SjkimManager 7326193267Sjkimto restore original behavior. 7327167802Sjkim 7328167802Sjkim---------------------------------------- 7329167802Sjkim27 September 2006. Summary of changes for version 20060927: 7330167802Sjkim 7331167802Sjkim1) ACPI CA Core Subsystem: 7332167802Sjkim 7333193267SjkimRemoved the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 7334193267SjkimThese functions now use a spinlock for mutual exclusion and the interrupt 7335193267Sjkimlevel indication flag is not needed. 7336167802Sjkim 7337193267SjkimFixed a problem with the Global Lock where the lock could appear to be 7338193267Sjkimobtained before it is actually obtained. The global lock semaphore was 7339253690Sjkiminadvertently created with one unit instead of zero units. (BZ 464) 7340253690SjkimFiodor 7341193267SjkimSuietov. 7342167802Sjkim 7343241973SjkimFixed a possible memory leak and fault in AcpiExResolveObjectToValue 7344241973Sjkimduring 7345193267Sjkima read from a buffer or region field. (BZ 458) Fiodor Suietov. 7346167802Sjkim 7347193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7348193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7349241973Sjkimdebug version of the code includes the debug output trace mechanism and 7350241973Sjkimhas 7351193267Sjkima much larger code and data size. 7352167802Sjkim 7353167802Sjkim Previous Release: 7354167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7355167802Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7356167802Sjkim Current Release: 7357167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7358167802Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 7359167802Sjkim 7360167802Sjkim 7361167802Sjkim2) iASL Compiler/Disassembler and Tools: 7362167802Sjkim 7363253690SjkimFixed a compilation problem with the pre-defined Resource Descriptor 7364253690Sjkimfield 7365241973Sjkimnames where an "object does not exist" error could be incorrectly 7366241973Sjkimgenerated 7367193267Sjkimif the parent ResourceTemplate pathname places the template within a 7368193267Sjkimdifferent namespace scope than the current scope. (BZ 7212) 7369167802Sjkim 7370253690SjkimFixed a problem where the compiler could hang after syntax errors 7371253690Sjkimdetected 7372193267Sjkimin an ElseIf construct. (BZ 453) 7373167802Sjkim 7374193267SjkimFixed a problem with the AmlFilename parameter to the DefinitionBlock() 7375241973Sjkimoperator. An incorrect output filename was produced when this parameter 7376241973Sjkimwas 7377193267Sjkima null string (""). Now, the original input filename is used as the AML 7378193267Sjkimoutput filename, with an ".aml" extension. 7379167802Sjkim 7380253690SjkimImplemented a generic batch command mode for the AcpiExec utility 7381253690Sjkim(execute 7382193267Sjkimany AML debugger command) (Valery Podrezov). 7383167802Sjkim 7384167802Sjkim---------------------------------------- 7385167802Sjkim12 September 2006. Summary of changes for version 20060912: 7386167802Sjkim 7387167802Sjkim1) ACPI CA Core Subsystem: 7388167802Sjkim 7389193267SjkimEnhanced the implementation of the "serialized mode" of the interpreter 7390193267Sjkim(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 7391241973Sjkimspecified, instead of creating a serialization semaphore per control 7392241973Sjkimmethod, 7393193267Sjkimthe interpreter lock is simply no longer released before a blocking 7394193267Sjkimoperation during control method execution. This effectively makes the AML 7395193267SjkimInterpreter single-threaded. The overhead of a semaphore per-method is 7396193267Sjkimeliminated. 7397167802Sjkim 7398241973SjkimFixed a regression where an error was no longer emitted if a control 7399241973Sjkimmethod 7400193267Sjkimattempts to create 2 objects of the same name. This once again returns 7401241973SjkimAE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 7402241973Sjkimthat 7403193267Sjkimwill dynamically serialize the control method to possible prevent future 7404193267Sjkimerrors. (BZ 440) 7405167802Sjkim 7406193267SjkimIntegrated a fix for a problem with PCI Express HID detection in the PCI 7407193267SjkimConfig Space setup procedure. (BZ 7145) 7408167802Sjkim 7409193267SjkimMoved all FADT-related functions to a new file, tbfadt.c. Eliminated the 7410193267SjkimAcpiHwInitialize function - the FADT registers are now validated when the 7411193267Sjkimtable is loaded. 7412167802Sjkim 7413253690SjkimAdded two new warnings during FADT verification - 1) if the FADT is 7414253690Sjkimlarger 7415253690Sjkimthan the largest known FADT version, and 2) if there is a mismatch 7416253690Sjkimbetween 7417241973Sjkima 7418241973Sjkim32-bit block address and the 64-bit X counterpart (when both are non- 7419241973Sjkimzero.) 7420167802Sjkim 7421193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7422193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7423241973Sjkimdebug version of the code includes the debug output trace mechanism and 7424241973Sjkimhas 7425193267Sjkima much larger code and data size. 7426167802Sjkim 7427167802Sjkim Previous Release: 7428167802Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7429167802Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7430167802Sjkim Current Release: 7431167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 7432167802Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 7433167802Sjkim 7434167802Sjkim 7435167802Sjkim2) iASL Compiler/Disassembler and Tools: 7436167802Sjkim 7437253690SjkimFixed a problem with the implementation of the Switch() operator where 7438253690Sjkimthe 7439253690Sjkimtemporary variable was declared too close to the actual Switch, instead 7440253690Sjkimof 7441193267Sjkimat method level. This could cause a problem if the Switch() operator is 7442193267Sjkimwithin a while loop, causing an error on the second iteration. (BZ 460) 7443167802Sjkim 7444193267SjkimDisassembler - fix for error emitted for unknown type for target of scope 7445193267Sjkimoperator. Now, ignore it and continue. 7446167802Sjkim 7447193267SjkimDisassembly of an FADT now verifies the input FADT and reports any errors 7448193267Sjkimfound. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 7449167802Sjkim 7450253690SjkimDisassembly of raw data buffers with byte initialization data now 7451253690Sjkimprefixes 7452193267Sjkimeach output line with the current buffer offset. 7453167802Sjkim 7454193267SjkimDisassembly of ASF! table now includes all variable-length data fields at 7455193267Sjkimthe end of some of the subtables. 7456167802Sjkim 7457193267SjkimThe disassembler now emits a comment if a buffer appears to be a 7458241973SjkimResourceTemplate, but cannot be disassembled as such because the EndTag 7459241973Sjkimdoes 7460193267Sjkimnot appear at the very end of the buffer. 7461167802Sjkim 7462241973SjkimAcpiExec - Added the "-t" command line option to enable the serialized 7463241973Sjkimmode 7464193267Sjkimof the AML interpreter. 7465167802Sjkim 7466167802Sjkim---------------------------------------- 7467167802Sjkim31 August 2006. Summary of changes for version 20060831: 7468167802Sjkim 7469167802Sjkim1) ACPI CA Core Subsystem: 7470167802Sjkim 7471167802SjkimMiscellaneous fixes for the Table Manager: 7472193267Sjkim- Correctly initialize internal common FADT for all 64-bit "X" fields 7473167802Sjkim- Fixed a couple table mapping issues during table load 7474167802Sjkim- Fixed a couple alignment issues for IA64 7475167802Sjkim- Initialize input array to zero in AcpiInitializeTables 7476193267Sjkim- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 7477193267SjkimAcpiGetTableByIndex 7478167802Sjkim 7479241973SjkimChange for GPE support: when a "wake" GPE is received, all wake GPEs are 7480241973Sjkimnow 7481193267Sjkimimmediately disabled to prevent the waking GPE from firing again and to 7482193267Sjkimprevent other wake GPEs from interrupting the wake process. 7483167802Sjkim 7484253690SjkimAdded the AcpiGpeCount global that tracks the number of processed GPEs, 7485253690Sjkimto 7486193267Sjkimbe used for debugging systems with a large number of ACPI interrupts. 7487167802Sjkim 7488193267SjkimImplemented support for the "DMAR" ACPI table (DMA Redirection Table) in 7489193267Sjkimboth the ACPICA headers and the disassembler. 7490167802Sjkim 7491193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7492193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7493241973Sjkimdebug version of the code includes the debug output trace mechanism and 7494241973Sjkimhas 7495193267Sjkima much larger code and data size. 7496167802Sjkim 7497167802Sjkim Previous Release: 7498167802Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7499167802Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7500167802Sjkim Current Release: 7501167802Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7502167802Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7503167802Sjkim 7504167802Sjkim 7505167802Sjkim2) iASL Compiler/Disassembler and Tools: 7506167802Sjkim 7507167802SjkimDisassembler support for the DMAR ACPI table. 7508167802Sjkim 7509167802Sjkim---------------------------------------- 7510167802Sjkim23 August 2006. Summary of changes for version 20060823: 7511167802Sjkim 7512167802Sjkim1) ACPI CA Core Subsystem: 7513167802Sjkim 7514193267SjkimThe Table Manager component has been completely redesigned and 7515241973Sjkimreimplemented. The new design is much simpler, and reduces the overall 7516241973Sjkimcode 7517241973Sjkimand data size of the kernel-resident ACPICA by approximately 5%. Also, it 7518241973Sjkimis 7519193267Sjkimnow possible to obtain the ACPI tables very early during kernel 7520193267Sjkiminitialization, even before dynamic memory management is initialized. 7521193267Sjkim(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 7522167802Sjkim 7523167802SjkimObsolete ACPICA interfaces: 7524167802Sjkim 7525241973Sjkim- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 7526241973Sjkiminit 7527193267Sjkimtime). 7528167802Sjkim- AcpiLoadTable: Not needed. 7529167802Sjkim- AcpiUnloadTable: Not needed. 7530167802Sjkim 7531167802SjkimNew ACPICA interfaces: 7532167802Sjkim 7533241973Sjkim- AcpiInitializeTables: Must be called before the table manager can be 7534241973Sjkimused. 7535193267Sjkim- AcpiReallocateRootTable: Used to transfer the root table to dynamically 7536193267Sjkimallocated memory after it becomes available. 7537253690Sjkim- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 7538253690Sjkimtables 7539193267Sjkimin the RSDT/XSDT. 7540167802Sjkim 7541167802SjkimOther ACPICA changes: 7542167802Sjkim 7543241973Sjkim- AcpiGetTableHeader returns the actual mapped table header, not a copy. 7544241973SjkimUse 7545193267SjkimAcpiOsUnmapMemory to free this mapping. 7546193267Sjkim- AcpiGetTable returns the actual mapped table. The mapping is managed 7547193267Sjkiminternally and must not be deleted by the caller. Use of this interface 7548193267Sjkimcauses no additional dynamic memory allocation. 7549241973Sjkim- AcpiFindRootPointer: Support for physical addressing has been 7550241973Sjkimeliminated, 7551193267Sjkimit appeared to be unused. 7552193267Sjkim- The interface to AcpiOsMapMemory has changed to be consistent with the 7553193267Sjkimother allocation interfaces. 7554241973Sjkim- The interface to AcpiOsGetRootPointer has changed to eliminate 7555241973Sjkimunnecessary 7556193267Sjkimparameters. 7557253690Sjkim- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 7558253690Sjkim64- 7559193267Sjkimbit platforms. Was previously 64 bits on all platforms. 7560241973Sjkim- The interface to the ACPI Global Lock acquire/release macros have 7561241973Sjkimchanged 7562193267Sjkimslightly since ACPICA no longer keeps a local copy of the FACS with a 7563193267Sjkimconstructed pointer to the actual global lock. 7564167802Sjkim 7565167802SjkimPorting to the new table manager: 7566167802Sjkim 7567193267Sjkim- AcpiInitializeTables: Must be called once, and can be called anytime 7568241973Sjkimduring the OS initialization process. It allows the host to specify an 7569241973Sjkimarea 7570193267Sjkimof memory to be used to store the internal version of the RSDT/XSDT (root 7571241973Sjkimtable). This allows the host to access ACPI tables before memory 7572241973Sjkimmanagement 7573193267Sjkimis initialized and running. 7574241973Sjkim- AcpiReallocateRootTable: Can be called after memory management is 7575241973Sjkimrunning 7576193267Sjkimto copy the root table to a dynamically allocated array, freeing up the 7577193267Sjkimscratch memory specified in the call to AcpiInitializeTables. 7578193267Sjkim- AcpiSubsystemInitialize: This existing interface is independent of the 7579253690SjkimTable Manager, and does not have to be called before the Table Manager 7580253690Sjkimcan 7581193267Sjkimbe used, it only must be called before the rest of ACPICA can be used. 7582241973Sjkim- ACPI Tables: Some changes have been made to the names and structure of 7583241973Sjkimthe 7584241973Sjkimactbl.h and actbl1.h header files and may require changes to existing 7585241973Sjkimcode. 7586241973SjkimFor example, bitfields have been completely removed because of their lack 7587241973Sjkimof 7588193267Sjkimportability across C compilers. 7589193267Sjkim- Update interfaces to the Global Lock acquire/release macros if local 7590193267Sjkimversions are used. (see acwin.h) 7591167802Sjkim 7592167802SjkimObsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 7593167802Sjkim 7594167802SjkimNew files: tbfind.c 7595167802Sjkim 7596193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7597193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7598241973Sjkimdebug version of the code includes the debug output trace mechanism and 7599241973Sjkimhas 7600193267Sjkima much larger code and data size. 7601167802Sjkim 7602167802Sjkim Previous Release: 7603167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7604167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7605167802Sjkim Current Release: 7606167802Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7607167802Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7608167802Sjkim 7609167802Sjkim 7610167802Sjkim2) iASL Compiler/Disassembler and Tools: 7611167802Sjkim 7612167802SjkimNo changes for this release. 7613167802Sjkim 7614167802Sjkim---------------------------------------- 7615167802Sjkim21 July 2006. Summary of changes for version 20060721: 7616167802Sjkim 7617167802Sjkim1) ACPI CA Core Subsystem: 7618167802Sjkim 7619193267SjkimThe full source code for the ASL test suite used to validate the iASL 7620193267Sjkimcompiler and the ACPICA core subsystem is being released with the ACPICA 7621241973Sjkimsource for the first time. The source is contained in a separate package 7622241973Sjkimand 7623241973Sjkimconsists of over 1100 files that exercise all ASL/AML operators. The 7624241973Sjkimpackage 7625253690Sjkimshould appear on the Intel/ACPI web site shortly. (Valery Podrezov, 7626253690SjkimFiodor 7627167802SjkimSuietov) 7628167802Sjkim 7629193267SjkimCompleted a new design and implementation for support of the ACPI Global 7630193267SjkimLock. On the OS side, the global lock is now treated as a standard AML 7631193267Sjkimmutex. Previously, multiple OS threads could "acquire" the global lock 7632241973Sjkimsimultaneously. However, this could cause the BIOS to be starved out of 7633241973Sjkimthe 7634193267Sjkimlock - especially in cases such as the Embedded Controller driver where 7635193267Sjkimthere is a tight coupling between the OS and the BIOS. 7636167802Sjkim 7637193267SjkimImplemented an optimization for the ACPI Global Lock interrupt mechanism. 7638193267SjkimThe Global Lock interrupt handler no longer queues the execution of a 7639241973Sjkimseparate thread to signal the global lock semaphore. Instead, the 7640241973Sjkimsemaphore 7641193267Sjkimis signaled directly from the interrupt handler. 7642167802Sjkim 7643193267SjkimImplemented support within the AML interpreter for package objects that 7644253690Sjkimcontain a larger AML length (package list length) than the package 7645253690Sjkimelement 7646193267Sjkimcount. In this case, the length of the package is truncated to match the 7647241973Sjkimpackage element count. Some BIOS code apparently modifies the package 7648241973Sjkimlength 7649253690Sjkimon the fly, and this change supports this behavior. Provides 7650253690Sjkimcompatibility 7651193267Sjkimwith the MS AML interpreter. (With assistance from Fiodor Suietov) 7652167802Sjkim 7653253690SjkimImplemented a temporary fix for the BankValue parameter of a Bank Field 7654253690Sjkimto 7655193267Sjkimsupport all constant values, now including the Zero and One opcodes. 7656241973SjkimEvaluation of this parameter must eventually be converted to a full 7657241973SjkimTermArg 7658253690Sjkimevaluation. A not-implemented error is now returned (temporarily) for 7659253690Sjkimnon- 7660193267Sjkimconstant values for this parameter. 7661167802Sjkim 7662167802SjkimFixed problem reports (Fiodor Suietov) integrated: 7663241973Sjkim- Fix for premature object deletion after CopyObject on Operation Region 7664241973Sjkim(BZ 7665193267Sjkim350) 7666167802Sjkim 7667193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7668193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7669241973Sjkimdebug version of the code includes the debug output trace mechanism and 7670241973Sjkimhas 7671193267Sjkima much larger code and data size. 7672167802Sjkim 7673167802Sjkim Previous Release: 7674167802Sjkim Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 7675167802Sjkim Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 7676167802Sjkim Current Release: 7677167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7678167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7679167802Sjkim 7680167802Sjkim 7681167802Sjkim2) iASL Compiler/Disassembler and Tools: 7682167802Sjkim 7683167802SjkimNo changes for this release. 7684167802Sjkim 7685167802Sjkim---------------------------------------- 7686167802Sjkim07 July 2006. Summary of changes for version 20060707: 7687167802Sjkim 7688167802Sjkim1) ACPI CA Core Subsystem: 7689167802Sjkim 7690193267SjkimAdded the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 7691193267Sjkimthat do not allow the initialization of address pointers within packed 7692193267Sjkimstructures - even though the hardware itself may support misaligned 7693193267Sjkimtransfers. Some of the debug data structures are packed by default to 7694193267Sjkimminimize size. 7695167802Sjkim 7696241973SjkimAdded an error message for the case where AcpiOsGetThreadId() returns 7697241973Sjkimzero. 7698193267SjkimA non-zero value is required by the core ACPICA code to ensure the proper 7699193267Sjkimoperation of AML mutexes and recursive control methods. 7700167802Sjkim 7701193267SjkimThe DSDT is now the only ACPI table that determines whether the AML 7702241973Sjkiminterpreter is in 32-bit or 64-bit mode. Not really a functional change, 7703241973Sjkimbut 7704253690Sjkimthe hooks for per-table 32/64 switching have been removed from the code. 7705253690SjkimA 7706193267Sjkimclarification to the ACPI specification is forthcoming in ACPI 3.0B. 7707167802Sjkim 7708193267SjkimFixed a possible leak of an OwnerID in the error path of 7709193267SjkimAcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 7710241973Sjkimdeletion to a single place in AcpiTbUninstallTable to correct possible 7711241973Sjkimleaks 7712193267Sjkimwhen using the AcpiTbDeleteTablesByType interface (with assistance from 7713193267SjkimLance Ortiz.) 7714167802Sjkim 7715193267SjkimFixed a problem with Serialized control methods where the semaphore 7716193267Sjkimassociated with the method could be over-signaled after multiple method 7717193267Sjkiminvocations. 7718167802Sjkim 7719241973SjkimFixed two issues with the locking of the internal namespace data 7720241973Sjkimstructure. 7721193267SjkimBoth the Unload() operator and AcpiUnloadTable interface now lock the 7722193267Sjkimnamespace during the namespace deletion associated with the table unload 7723193267Sjkim(with assistance from Linn Crosetto.) 7724167802Sjkim 7725167802SjkimFixed problem reports (Valery Podrezov) integrated: 7726193267Sjkim- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 7727167802Sjkim 7728167802SjkimFixed problem reports (Fiodor Suietov) integrated: 7729167802Sjkim- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 7730193267Sjkim- On Address Space handler deletion, needless deactivation call (BZ 374) 7731253690Sjkim- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 7732253690Sjkim375) 7733241973Sjkim- Possible memory leak, Notify sub-objects of Processor, Power, 7734241973SjkimThermalZone 7735193267Sjkim(BZ 376) 7736193267Sjkim- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 7737167802Sjkim- Minimum Length of RSDT should be validated (BZ 379) 7738193267Sjkim- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 7739193267SjkimHandler (BZ (380) 7740241973Sjkim- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 7741241973Sjkimloaded 7742193267Sjkim(BZ 381) 7743167802Sjkim 7744193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7745193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7746241973Sjkimdebug version of the code includes the debug output trace mechanism and 7747241973Sjkimhas 7748193267Sjkima much larger code and data size. 7749167802Sjkim 7750167802Sjkim Previous Release: 7751167802Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7752167802Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7753167802Sjkim Current Release: 7754167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7755167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7756167802Sjkim 7757167802Sjkim 7758167802Sjkim2) iASL Compiler/Disassembler and Tools: 7759167802Sjkim 7760167802SjkimFixed problem reports: 7761193267SjkimCompiler segfault when ASL contains a long (>1024) String declaration (BZ 7762193267Sjkim436) 7763167802Sjkim 7764167802Sjkim---------------------------------------- 7765167802Sjkim23 June 2006. Summary of changes for version 20060623: 7766167802Sjkim 7767167802Sjkim1) ACPI CA Core Subsystem: 7768167802Sjkim 7769193267SjkimImplemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 7770193267Sjkimallows the type to be customized to the host OS for improved efficiency 7771193267Sjkim(since a spinlock is usually a very small object.) 7772167802Sjkim 7773253690SjkimImplemented support for "ignored" bits in the ACPI registers. According 7774253690Sjkimto 7775193267Sjkimthe ACPI specification, these bits should be preserved when writing the 7776241973Sjkimregisters via a read/modify/write cycle. There are 3 bits preserved in 7777241973Sjkimthis 7778193267Sjkimmanner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 7779167802Sjkim 7780253690SjkimImplemented the initial deployment of new OSL mutex interfaces. Since 7781253690Sjkimsome 7782193267Sjkimhost operating systems have separate mutex and semaphore objects, this 7783193267Sjkimfeature was requested. The base code now uses mutexes (and the new mutex 7784193267Sjkiminterfaces) wherever a binary semaphore was used previously. However, for 7785241973Sjkimthe current release, the mutex interfaces are defined as macros to map 7786241973Sjkimthem 7787241973Sjkimto the existing semaphore interfaces. Therefore, no OSL changes are 7788241973Sjkimrequired 7789193267Sjkimat this time. (See acpiosxf.h) 7790167802Sjkim 7791193267SjkimFixed several problems with the support for the control method SyncLevel 7792253690Sjkimparameter. The SyncLevel now works according to the ACPI specification 7793253690Sjkimand 7794253690Sjkimin concert with the Mutex SyncLevel parameter, since the current 7795253690SjkimSyncLevel 7796241973Sjkimis a property of the executing thread. Mutual exclusion for control 7797241973Sjkimmethods 7798193267Sjkimis now implemented with a mutex instead of a semaphore. 7799167802Sjkim 7800193267SjkimFixed three instances of the use of the C shift operator in the bitfield 7801253690Sjkimsupport code (exfldio.c) to avoid the use of a shift value larger than 7802253690Sjkimthe 7803241973Sjkimtarget data width. The behavior of C compilers is undefined in this case 7804241973Sjkimand 7805241973Sjkimcan cause unpredictable results, and therefore the case must be detected 7806241973Sjkimand 7807193267Sjkimavoided. (Fiodor Suietov) 7808167802Sjkim 7809193267SjkimAdded an info message whenever an SSDT or OEM table is loaded dynamically 7810253690Sjkimvia the Load() or LoadTable() ASL operators. This should improve 7811253690Sjkimdebugging 7812253690Sjkimcapability since it will show exactly what tables have been loaded 7813253690Sjkim(beyond 7814193267Sjkimthe tables present in the RSDT/XSDT.) 7815167802Sjkim 7816193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7817193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7818241973Sjkimdebug version of the code includes the debug output trace mechanism and 7819241973Sjkimhas 7820193267Sjkima much larger code and data size. 7821167802Sjkim 7822167802Sjkim Previous Release: 7823167802Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7824167802Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7825167802Sjkim Current Release: 7826167802Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7827167802Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7828167802Sjkim 7829167802Sjkim 7830167802Sjkim2) iASL Compiler/Disassembler and Tools: 7831167802Sjkim 7832167802SjkimNo changes for this release. 7833167802Sjkim 7834167802Sjkim---------------------------------------- 7835167802Sjkim08 June 2006. Summary of changes for version 20060608: 7836167802Sjkim 7837167802Sjkim1) ACPI CA Core Subsystem: 7838167802Sjkim 7839253690SjkimConverted the locking mutex used for the ACPI hardware to a spinlock. 7840253690SjkimThis 7841193267Sjkimchange should eliminate all problems caused by attempting to acquire a 7842193267Sjkimsemaphore at interrupt level, and it means that all ACPICA external 7843241973Sjkiminterfaces that directly access the ACPI hardware can be safely called 7844241973Sjkimfrom 7845241973Sjkiminterrupt level. OSL code that implements the semaphore interfaces should 7846241973Sjkimbe 7847193267Sjkimable to eliminate any workarounds for being called at interrupt level. 7848167802Sjkim 7849193267SjkimFixed a regression introduced in 20060526 where the ACPI device 7850241973Sjkiminitialization could be prematurely aborted with an AE_NOT_FOUND if a 7851241973Sjkimdevice 7852193267Sjkimdid not have an optional _INI method. 7853167802Sjkim 7854193267SjkimFixed an IndexField issue where a write to the Data Register should be 7855241973Sjkimlimited in size to the AccessSize (width) of the IndexField itself. (BZ 7856241973Sjkim433, 7857193267SjkimFiodor Suietov) 7858167802Sjkim 7859167802SjkimFixed problem reports (Valery Podrezov) integrated: 7860193267Sjkim- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 7861167802Sjkim 7862167802SjkimFixed problem reports (Fiodor Suietov) integrated: 7863193267Sjkim- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 7864167802Sjkim 7865193267SjkimRemoved four global mutexes that were obsolete and were no longer being 7866193267Sjkimused. 7867167802Sjkim 7868193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7869193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7870241973Sjkimdebug version of the code includes the debug output trace mechanism and 7871241973Sjkimhas 7872193267Sjkima much larger code and data size. 7873167802Sjkim 7874167802Sjkim Previous Release: 7875167802Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7876167802Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7877167802Sjkim Current Release: 7878167802Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7879167802Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7880167802Sjkim 7881167802Sjkim 7882167802Sjkim2) iASL Compiler/Disassembler and Tools: 7883167802Sjkim 7884193267SjkimFixed a fault when using -g option (get tables from registry) on Windows 7885193267Sjkimmachines. 7886167802Sjkim 7887167802SjkimFixed problem reports integrated: 7888193267Sjkim- Generate error if CreateField NumBits parameter is zero. (BZ 405) 7889193267Sjkim- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 7890193267SjkimSuietov) 7891167802Sjkim- Global table revision override (-r) is ignored (BZ 413) 7892167802Sjkim 7893167802Sjkim---------------------------------------- 7894167802Sjkim26 May 2006. Summary of changes for version 20060526: 7895167802Sjkim 7896167802Sjkim1) ACPI CA Core Subsystem: 7897167802Sjkim 7898193267SjkimRestructured, flattened, and simplified the internal interfaces for 7899241973Sjkimnamespace object evaluation - resulting in smaller code, less CPU stack 7900241973Sjkimuse, 7901193267Sjkimand fewer interfaces. (With assistance from Mikhail Kouzmich) 7902167802Sjkim 7903253690SjkimFixed a problem with the CopyObject operator where the first parameter 7904253690Sjkimwas 7905241973Sjkimnot typed correctly for the parser, interpreter, compiler, and 7906241973Sjkimdisassembler. 7907193267SjkimCaused various errors and unexpected behavior. 7908167802Sjkim 7909193267SjkimFixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 7910193267Sjkimproduced incorrect results with some C compilers. Since the behavior of C 7911193267Sjkimcompilers when the shift value is larger than the datatype width is 7912241973Sjkimapparently not well defined, the interpreter now detects this condition 7913241973Sjkimand 7914193267Sjkimsimply returns zero as expected in all such cases. (BZ 395) 7915167802Sjkim 7916167802SjkimFixed problem reports (Valery Podrezov) integrated: 7917193267Sjkim- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 7918193267Sjkim- Allow interpreter to handle nested method declarations (BZ 5361) 7919167802Sjkim 7920167802SjkimFixed problem reports (Fiodor Suietov) integrated: 7921253690Sjkim- AcpiTerminate doesn't free debug memory allocation list objects (BZ 7922253690Sjkim355) 7923241973Sjkim- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 7924241973Sjkim356) 7925193267Sjkim- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 7926193267Sjkim- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 7927167802Sjkim- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 7928193267Sjkim- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 7929167802Sjkim- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 7930167802Sjkim- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 7931241973Sjkim- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 7932241973Sjkim365) 7933193267Sjkim- Status of the Global Initialization Handler call not used (BZ 366) 7934193267Sjkim- Incorrect object parameter to Global Initialization Handler (BZ 367) 7935167802Sjkim 7936193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7937193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7938241973Sjkimdebug version of the code includes the debug output trace mechanism and 7939241973Sjkimhas 7940193267Sjkima much larger code and data size. 7941167802Sjkim 7942167802Sjkim Previous Release: 7943167802Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7944167802Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7945167802Sjkim Current Release: 7946167802Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7947167802Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7948167802Sjkim 7949167802Sjkim 7950167802Sjkim2) iASL Compiler/Disassembler and Tools: 7951167802Sjkim 7952193267SjkimModified the parser to allow the names IO, DMA, and IRQ to be used as 7953193267Sjkimnamespace identifiers with no collision with existing resource descriptor 7954193267Sjkimmacro names. This provides compatibility with other ASL compilers and is 7955253690Sjkimmost useful for disassembly/recompilation of existing tables without 7956253690Sjkimparse 7957167802Sjkimerrors. (With assistance from Thomas Renninger) 7958167802Sjkim 7959193267SjkimDisassembler: fixed an incorrect disassembly problem with the 7960193267SjkimDataTableRegion and CopyObject operators. Fixed a possible fault during 7961193267Sjkimdisassembly of some Alias operators. 7962167802Sjkim 7963167802Sjkim---------------------------------------- 7964167802Sjkim12 May 2006. Summary of changes for version 20060512: 7965167802Sjkim 7966167802Sjkim1) ACPI CA Core Subsystem: 7967167802Sjkim 7968193267SjkimReplaced the AcpiOsQueueForExecution interface with a new interface named 7969241973SjkimAcpiOsExecute. The major difference is that the new interface does not 7970241973Sjkimhave 7971253690Sjkima Priority parameter, this appeared to be useless and has been replaced 7972253690Sjkimby 7973241973Sjkima 7974193267SjkimType parameter. The Type tells the host what type of execution is being 7975193267Sjkimrequested, such as global lock handler, notify handler, GPE handler, etc. 7976241973SjkimThis allows the host to queue and execute the request as appropriate for 7977241973Sjkimthe 7978241973Sjkimrequest type, possibly using different work queues and different 7979241973Sjkimpriorities 7980193267Sjkimfor the various request types. This enables fixes for multithreading 7981241973Sjkimdeadlock problems such as BZ #5534, and will require changes to all 7982241973Sjkimexisting 7983193267SjkimOS interface layers. (Alexey Starikovskiy and Bob Moore) 7984167802Sjkim 7985253690SjkimFixed a possible memory leak associated with the support for the so- 7986253690Sjkimcalled 7987193267Sjkim"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 7988193267SjkimSuietov) 7989167802Sjkim 7990193267SjkimFixed a problem with the Load() operator where a table load from an 7991253690Sjkimoperation region could overwrite an internal table buffer by up to 7 7992253690Sjkimbytes 7993241973Sjkimand cause alignment faults on IPF systems. (With assistance from Luming 7994241973SjkimYu) 7995167802Sjkim 7996193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7997193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7998241973Sjkimdebug version of the code includes the debug output trace mechanism and 7999241973Sjkimhas 8000193267Sjkima much larger code and data size. 8001167802Sjkim 8002167802Sjkim Previous Release: 8003167802Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8004167802Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8005167802Sjkim Current Release: 8006167802Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8007167802Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8008167802Sjkim 8009167802Sjkim 8010167802Sjkim 8011167802Sjkim2) iASL Compiler/Disassembler and Tools: 8012167802Sjkim 8013241973SjkimDisassembler: Implemented support to cross reference the internal 8014241973Sjkimnamespace 8015241973Sjkimand automatically generate ASL External() statements for symbols not 8016241973Sjkimdefined 8017193267Sjkimwithin the current table being disassembled. This will simplify the 8018253690Sjkimdisassembly and recompilation of interdependent tables such as SSDTs 8019253690Sjkimsince 8020193267Sjkimthese statements will no longer have to be added manually. 8021167802Sjkim 8022193267SjkimDisassembler: Implemented experimental support to automatically detect 8023241973Sjkiminvocations of external control methods and generate appropriate 8024241973SjkimExternal() 8025253690Sjkimstatements. This is problematic because the AML cannot be correctly 8026253690Sjkimparsed 8027253690Sjkimuntil the number of arguments for each control method is known. 8028253690SjkimCurrently, 8029193267Sjkimstandalone method invocations and invocations as the source operand of a 8030193267SjkimStore() statement are supported. 8031167802Sjkim 8032193267SjkimDisassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8033193267SjkimLLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8034193267SjkimLNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8035193267Sjkimmore readable and likely closer to the original ASL source. 8036167802Sjkim 8037167802Sjkim---------------------------------------- 8038167802Sjkim21 April 2006. Summary of changes for version 20060421: 8039167802Sjkim 8040167802Sjkim1) ACPI CA Core Subsystem: 8041167802Sjkim 8042193267SjkimRemoved a device initialization optimization introduced in 20051216 where 8043193267Sjkimthe _STA method was not run unless an _INI was also present for the same 8044253690Sjkimdevice. This optimization could cause problems because it could allow 8045253690Sjkim_INI 8046193267Sjkimmethods to be run within a not-present device subtree. (If a not-present 8047241973Sjkimdevice had no _INI, _STA would not be run, the not-present status would 8048241973Sjkimnot 8049193267Sjkimbe discovered, and the children of the device would be incorrectly 8050167802Sjkimtraversed.) 8051167802Sjkim 8052193267SjkimImplemented a new _STA optimization where namespace subtrees that do not 8053193267Sjkimcontain _INI are identified and ignored during device initialization. 8054193267SjkimSelectively running _STA can significantly improve boot time on large 8055193267Sjkimmachines (with assistance from Len Brown.) 8056167802Sjkim 8057193267SjkimImplemented support for the device initialization case where the returned 8058241973Sjkim_STA flags indicate a device not-present but functioning. In this case, 8059241973Sjkim_INI 8060193267Sjkimis not run, but the device children are examined for presence, as per the 8061193267SjkimACPI specification. 8062167802Sjkim 8063193267SjkimImplemented an additional change to the IndexField support in order to 8064193267Sjkimconform to MS behavior. The value written to the Index Register is not 8065193267Sjkimsimply a byte offset, it is a byte offset in units of the access width of 8066193267Sjkimthe parent Index Field. (Fiodor Suietov) 8067167802Sjkim 8068193267SjkimDefined and deployed a new OSL interface, AcpiOsValidateAddress. This 8069193267Sjkiminterface is called during the creation of all AML operation regions, and 8070193267Sjkimallows the host OS to exert control over what addresses it will allow the 8071193267SjkimAML code to access. Operation Regions whose addresses are disallowed will 8072253690Sjkimcause a runtime exception when they are actually accessed (will not 8073253690Sjkimaffect 8074193267Sjkimor abort table loading.) See oswinxf or osunixxf for an example 8075167802Sjkimimplementation. 8076167802Sjkim 8077193267SjkimDefined and deployed a new OSL interface, AcpiOsValidateInterface. This 8078193267Sjkiminterface allows the host OS to match the various "optional" 8079193267Sjkiminterface/behavior strings for the _OSI predefined control method as 8080193267Sjkimappropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 8081193267Sjkimfor an example implementation. 8082167802Sjkim 8083253690SjkimRestructured and corrected various problems in the exception handling 8084253690Sjkimcode 8085193267Sjkimpaths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 8086193267Sjkim(with assistance from Takayoshi Kochi.) 8087167802Sjkim 8088253690SjkimModified the Linux source converter to ignore quoted string literals 8089253690Sjkimwhile 8090241973Sjkimconverting identifiers from mixed to lower case. This will correct 8091241973Sjkimproblems 8092193267Sjkimwith the disassembler and other areas where such strings must not be 8093193267Sjkimmodified. 8094167802Sjkim 8095193267SjkimThe ACPI_FUNCTION_* macros no longer require quotes around the function 8096241973Sjkimname. This allows the Linux source converter to convert the names, now 8097241973Sjkimthat 8098193267Sjkimthe converter ignores quoted strings. 8099167802Sjkim 8100193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8101193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8102241973Sjkimdebug version of the code includes the debug output trace mechanism and 8103241973Sjkimhas 8104193267Sjkima much larger code and data size. 8105193267Sjkim 8106167802Sjkim Previous Release: 8107167802Sjkim 8108167802Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8109167802Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8110167802Sjkim Current Release: 8111167802Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8112167802Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8113167802Sjkim 8114167802Sjkim 8115167802Sjkim2) iASL Compiler/Disassembler and Tools: 8116167802Sjkim 8117241973SjkimImplemented 3 new warnings for iASL, and implemented multiple warning 8118241973Sjkimlevels 8119193267Sjkim(w2 flag). 8120167802Sjkim 8121241973Sjkim1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 8122241973Sjkimnot 8123193267SjkimWAIT_FOREVER (0xFFFF) and the code does not examine the return value to 8124193267Sjkimcheck for the possible timeout, a warning is issued. 8125167802Sjkim 8126241973Sjkim2) Useless operators: If an ASL operator does not specify an optional 8127241973Sjkimtarget 8128193267Sjkimoperand and it also does not use the function return value from the 8129253690Sjkimoperator, a warning is issued since the operator effectively does 8130253690Sjkimnothing. 8131167802Sjkim 8132193267Sjkim3) Unreferenced objects: If a namespace object is created, but never 8133253690Sjkimreferenced, a warning is issued. This is a warning level 2 since there 8134253690Sjkimare 8135253690Sjkimcases where this is ok, such as when a secondary table is loaded that 8136253690Sjkimuses 8137253690Sjkimthe unreferenced objects. Even so, care is taken to only flag objects 8138253690Sjkimthat 8139193267Sjkimdon't look like they will ever be used. For example, the reserved methods 8140193267Sjkim(starting with an underscore) are usually not referenced because it is 8141193267Sjkimexpected that the OS will invoke them. 8142167802Sjkim 8143167802Sjkim---------------------------------------- 8144167802Sjkim31 March 2006. Summary of changes for version 20060331: 8145167802Sjkim 8146167802Sjkim1) ACPI CA Core Subsystem: 8147167802Sjkim 8148193267SjkimImplemented header file support for the following additional ACPI tables: 8149241973SjkimASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 8150241973Sjkimsupport, 8151241973Sjkimall current and known ACPI tables are now defined in the ACPICA headers 8152241973Sjkimand 8153193267Sjkimare available for use by device drivers and other software. 8154167802Sjkim 8155193267SjkimImplemented support to allow tables that contain ACPI names with invalid 8156193267Sjkimcharacters to be loaded. Previously, this would cause the table load to 8157193267Sjkimfail, but since there are several known cases of such tables on existing 8158253690Sjkimmachines, this change was made to enable ACPI support for them. Also, 8159253690Sjkimthis 8160193267Sjkimmatches the behavior of the Microsoft ACPI implementation. 8161167802Sjkim 8162241973SjkimFixed a couple regressions introduced during the memory optimization in 8163241973Sjkimthe 8164193267Sjkim20060317 release. The namespace node definition required additional 8165253690Sjkimreorganization and an internal datatype that had been changed to 8-bit 8166253690Sjkimwas 8167193267Sjkimrestored to 32-bit. (Valery Podrezov) 8168167802Sjkim 8169193267SjkimFixed a problem where a null pointer passed to AcpiUtDeleteGenericState 8170193267Sjkimcould be passed through to AcpiOsReleaseObject which is unexpected. Such 8171193267Sjkimnull pointers are now trapped and ignored, matching the behavior of the 8172193267Sjkimprevious implementation before the deployment of AcpiOsReleaseObject. 8173167802Sjkim(Valery Podrezov, Fiodor Suietov) 8174167802Sjkim 8175241973SjkimFixed a memory mapping leak during the deletion of a SystemMemory 8176241973Sjkimoperation 8177193267Sjkimregion where a cached memory mapping was not deleted. This became a 8178241973Sjkimnoticeable problem for operation regions that are defined within 8179241973Sjkimfrequently 8180193267Sjkimused control methods. (Dana Meyers) 8181167802Sjkim 8182193267SjkimReorganized the ACPI table header files into two main files: one for the 8183253690SjkimACPI tables consumed by the ACPICA core, and another for the 8184253690Sjkimmiscellaneous 8185241973SjkimACPI tables that are consumed by the drivers and other software. The 8186241973Sjkimvarious 8187193267SjkimFADT definitions were merged into one common section and three different 8188193267Sjkimtables (ACPI 1.0, 1.0+, and 2.0) 8189167802Sjkim 8190193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8191193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8192241973Sjkimdebug version of the code includes the debug output trace mechanism and 8193241973Sjkimhas 8194193267Sjkima much larger code and data size. 8195167802Sjkim 8196167802Sjkim Previous Release: 8197167802Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8198167802Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8199167802Sjkim Current Release: 8200167802Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 8201167802Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 8202167802Sjkim 8203167802Sjkim 8204167802Sjkim2) iASL Compiler/Disassembler and Tools: 8205167802Sjkim 8206193267SjkimDisassembler: Implemented support to decode and format all non-AML ACPI 8207193267Sjkimtables (tables other than DSDTs and SSDTs.) This includes the new tables 8208241973Sjkimadded to the ACPICA headers, therefore all current and known ACPI tables 8209241973Sjkimare 8210193267Sjkimsupported. 8211167802Sjkim 8212193267SjkimDisassembler: The change to allow ACPI names with invalid characters also 8213241973Sjkimenables the disassembly of such tables. Invalid characters within names 8214241973Sjkimare 8215193267Sjkimchanged to '*' to make the name printable; the iASL compiler will still 8216193267Sjkimgenerate an error for such names, however, since this is an invalid ACPI 8217193267Sjkimcharacter. 8218167802Sjkim 8219241973SjkimImplemented an option for AcpiXtract (-a) to extract all tables found in 8220241973Sjkimthe 8221193267Sjkiminput file. The default invocation extracts only the DSDTs and SSDTs. 8222167802Sjkim 8223193267SjkimFixed a couple of gcc generation issues for iASL and AcpiExec and added a 8224193267Sjkimmakefile for the AcpiXtract utility. 8225167802Sjkim 8226167802Sjkim---------------------------------------- 8227167802Sjkim17 March 2006. Summary of changes for version 20060317: 8228167802Sjkim 8229167802Sjkim1) ACPI CA Core Subsystem: 8230167802Sjkim 8231193267SjkimImplemented the use of a cache object for all internal namespace nodes. 8232193267SjkimSince there are about 1000 static nodes in a typical system, this will 8233253690Sjkimdecrease memory use for cache implementations that minimize per- 8234253690Sjkimallocation 8235193267Sjkimoverhead (such as a slab allocator.) 8236167802Sjkim 8237241973SjkimRemoved the reference count mechanism for internal namespace nodes, since 8238241973Sjkimit 8239193267Sjkimwas deemed unnecessary. This reduces the size of each namespace node by 8240253690Sjkimabout 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 8241253690Sjkimcase, 8242193267Sjkimand 32 bytes for the 64-bit case. 8243167802Sjkim 8244253690SjkimOptimized several internal data structures to reduce object size on 64- 8245253690Sjkimbit 8246193267Sjkimplatforms by packing data within the 64-bit alignment. This includes the 8247193267Sjkimfrequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 8248193267Sjkiminstances corresponding to the namespace objects. 8249167802Sjkim 8250253690SjkimAdded two new strings for the predefined _OSI method: "Windows 2001.1 8251253690SjkimSP1" 8252193267Sjkimand "Windows 2006". 8253167802Sjkim 8254193267SjkimSplit the allocation tracking mechanism out to a separate file, from 8255193267Sjkimutalloc.c to uttrack.c. This mechanism appears to be only useful for 8256193267Sjkimapplication-level code. Kernels may wish to not include uttrack.c in 8257193267Sjkimdistributions. 8258167802Sjkim 8259241973SjkimRemoved all remnants of the obsolete ACPI_REPORT_* macros and the 8260241973Sjkimassociated 8261193267Sjkimcode. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 8262193267Sjkimmacros.) 8263167802Sjkim 8264253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 8265253690Sjkimthe 8266241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 8267241973SjkimACPI 8268241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 8269241973Sjkimoutput 8270193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 8271193267Sjkimvalues will vary depending on the efficiency of the compiler and the 8272193267Sjkimcompiler options used during generation. 8273167802Sjkim 8274167802Sjkim Previous Release: 8275167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8276167802Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8277167802Sjkim Current Release: 8278167802Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 8279167802Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 8280167802Sjkim 8281167802Sjkim 8282167802Sjkim2) iASL Compiler/Disassembler and Tools: 8283167802Sjkim 8284253690SjkimImplemented an ANSI C version of the acpixtract utility. This version 8285253690Sjkimwill 8286193267Sjkimautomatically extract the DSDT and all SSDTs from the input acpidump text 8287193267Sjkimfile and dump the binary output to separate files. It can also display a 8288193267Sjkimsummary of the input file including the headers for each table found and 8289193267Sjkimwill extract any single ACPI table, with any signature. (See 8290167802Sjkimsource/tools/acpixtract) 8291167802Sjkim 8292167802Sjkim---------------------------------------- 8293167802Sjkim10 March 2006. Summary of changes for version 20060310: 8294167802Sjkim 8295167802Sjkim1) ACPI CA Core Subsystem: 8296167802Sjkim 8297193267SjkimTagged all external interfaces to the subsystem with the new 8298253690SjkimACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 8299253690Sjkimassist 8300193267Sjkimkernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 8301193267Sjkimmacro. The default definition is NULL. 8302167802Sjkim 8303253690SjkimAdded the ACPI_THREAD_ID type for the return value from 8304253690SjkimAcpiOsGetThreadId. 8305193267SjkimThis allows the host to define this as necessary to simplify kernel 8306193267Sjkimintegration. The default definition is ACPI_NATIVE_UINT. 8307167802Sjkim 8308241973SjkimFixed two interpreter problems related to error processing, the deletion 8309241973Sjkimof 8310193267Sjkimobjects, and placing invalid pointers onto the internal operator result 8311193267Sjkimstack. BZ 6028, 6151 (Valery Podrezov) 8312167802Sjkim 8313241973SjkimIncreased the reference count threshold where a warning is emitted for 8314241973Sjkimlarge 8315241973Sjkimreference counts in order to eliminate unnecessary warnings on systems 8316241973Sjkimwith 8317193267Sjkimlarge namespaces (especially 64-bit.) Increased the value from 0x400 to 8318193267Sjkim0x800. 8319167802Sjkim 8320253690SjkimDue to universal disagreement as to the meaning of the 'c' in the 8321253690Sjkimcalloc() 8322193267Sjkimfunction, the ACPI_MEM_CALLOCATE macro has been renamed to 8323193267SjkimACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 8324193267SjkimACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 8325193267SjkimACPI_FREE. 8326167802Sjkim 8327253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 8328253690Sjkimthe 8329241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 8330241973SjkimACPI 8331241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 8332241973Sjkimoutput 8333193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 8334193267Sjkimvalues will vary depending on the efficiency of the compiler and the 8335193267Sjkimcompiler options used during generation. 8336167802Sjkim 8337167802Sjkim Previous Release: 8338167802Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8339167802Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8340167802Sjkim Current Release: 8341167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8342167802Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 8343167802Sjkim 8344167802Sjkim 8345167802Sjkim2) iASL Compiler/Disassembler: 8346167802Sjkim 8347193267SjkimDisassembler: implemented support for symbolic resource descriptor 8348253690Sjkimreferences. If a CreateXxxxField operator references a fixed offset 8349253690Sjkimwithin 8350241973Sjkima 8351241973Sjkimresource descriptor, a name is assigned to the descriptor and the offset 8352241973Sjkimis 8353193267Sjkimtranslated to the appropriate resource tag and pathname. The addition of 8354193267Sjkimthis support brings the disassembled code very close to the original ASL 8355253690Sjkimsource code and helps eliminate run-time errors when the disassembled 8356253690Sjkimcode 8357193267Sjkimis modified (and recompiled) in such a way as to invalidate the original 8358193267Sjkimfixed offsets. 8359167802Sjkim 8360253690SjkimImplemented support for a Descriptor Name as the last parameter to the 8361253690SjkimASL 8362193267SjkimRegister() macro. This parameter was inadvertently left out of the ACPI 8363193267Sjkimspecification, and will be added for ACPI 3.0b. 8364167802Sjkim 8365193267SjkimFixed a problem where the use of the "_OSI" string (versus the full path 8366193267Sjkim"\_OSI") caused an internal compiler error. ("No back ptr to op") 8367167802Sjkim 8368241973SjkimFixed a problem with the error message that occurs when an invalid string 8369241973Sjkimis 8370241973Sjkimused for a _HID object (such as one with an embedded asterisk: 8371241973Sjkim"*PNP010A".) 8372193267SjkimThe correct message is now displayed. 8373167802Sjkim 8374167802Sjkim---------------------------------------- 8375167802Sjkim17 February 2006. Summary of changes for version 20060217: 8376167802Sjkim 8377167802Sjkim1) ACPI CA Core Subsystem: 8378167802Sjkim 8379241973SjkimImplemented a change to the IndexField support to match the behavior of 8380241973Sjkimthe 8381241973SjkimMicrosoft AML interpreter. The value written to the Index register is now 8382241973Sjkima 8383253690Sjkimbyte offset, no longer an index based upon the width of the Data 8384253690Sjkimregister. 8385193267SjkimThis should fix IndexField problems seen on some machines where the Data 8386193267Sjkimregister is not exactly one byte wide. The ACPI specification will be 8387193267Sjkimclarified on this point. 8388167802Sjkim 8389193267SjkimFixed a problem where several resource descriptor types could overrun the 8390193267Sjkiminternal descriptor buffer due to size miscalculation: VendorShort, 8391193267SjkimVendorLong, and Interrupt. This was noticed on IA64 machines, but could 8392193267Sjkimaffect all platforms. 8393167802Sjkim 8394241973SjkimFixed a problem where individual resource descriptors were misaligned 8395241973Sjkimwithin 8396193267Sjkimthe internal buffer, causing alignment faults on IA64 platforms. 8397167802Sjkim 8398253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 8399253690Sjkimthe 8400241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 8401241973SjkimACPI 8402241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 8403241973Sjkimoutput 8404193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 8405193267Sjkimvalues will vary depending on the efficiency of the compiler and the 8406193267Sjkimcompiler options used during generation. 8407167802Sjkim 8408167802Sjkim Previous Release: 8409167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8410167802Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8411167802Sjkim Current Release: 8412167802Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 8413167802Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 8414167802Sjkim 8415167802Sjkim 8416167802Sjkim2) iASL Compiler/Disassembler: 8417167802Sjkim 8418193267SjkimImplemented support for new reserved names: _WDG and _WED are Microsoft 8419193267Sjkimextensions for Windows Instrumentation Management, _TDL is a new ACPI- 8420193267Sjkimdefined method (Throttling Depth Limit.) 8421167802Sjkim 8422193267SjkimFixed a problem where a zero-length VendorShort or VendorLong resource 8423193267Sjkimdescriptor was incorrectly emitted as a descriptor of length one. 8424167802Sjkim 8425167802Sjkim---------------------------------------- 8426167802Sjkim10 February 2006. Summary of changes for version 20060210: 8427167802Sjkim 8428167802Sjkim1) ACPI CA Core Subsystem: 8429167802Sjkim 8430193267SjkimRemoved a couple of extraneous ACPI_ERROR messages that appeared during 8431193267Sjkimnormal execution. These became apparent after the conversion from 8432193267SjkimACPI_DEBUG_PRINT. 8433167802Sjkim 8434241973SjkimFixed a problem where the CreateField operator could hang if the BitIndex 8435241973Sjkimor 8436193267SjkimNumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 8437167802Sjkim 8438193267SjkimFixed a problem where a DeRefOf operation on a buffer object incorrectly 8439193267Sjkimfailed with an exception. This also fixes a couple of related RefOf and 8440193267SjkimDeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 8441167802Sjkim 8442241973SjkimFixed a problem where the AE_BUFFER_LIMIT exception was returned instead 8443241973Sjkimof 8444241973SjkimAE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 8445241973SjkimBZ 8446193267Sjkim5480) 8447167802Sjkim 8448253690SjkimImplemented a memory cleanup at the end of the execution of each 8449253690Sjkimiteration 8450241973Sjkimof an AML While() loop, preventing the accumulation of outstanding 8451241973Sjkimobjects. 8452193267Sjkim(Valery Podrezov, BZ 5427) 8453167802Sjkim 8454241973SjkimEliminated a chunk of duplicate code in the object resolution code. 8455241973Sjkim(Valery 8456193267SjkimPodrezov, BZ 5336) 8457167802Sjkim 8458167802SjkimFixed several warnings during the 64-bit code generation. 8459167802Sjkim 8460253690SjkimThe AcpiSrc source code conversion tool now inserts one line of 8461253690Sjkimwhitespace 8462241973Sjkimafter an if() statement that is followed immediately by a comment, 8463241973Sjkimimproving 8464193267Sjkimreadability of the Linux code. 8465167802Sjkim 8466193267SjkimCode and Data Size: The current and previous library sizes for the core 8467193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8468253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8469253690SjkimThese 8470241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8471241973Sjkimthe 8472193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8473241973Sjkimand data size. Note that these values will vary depending on the 8474241973Sjkimefficiency 8475193267Sjkimof the compiler and the compiler options used during generation. 8476167802Sjkim 8477167802Sjkim Previous Release: 8478167802Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8479167802Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8480167802Sjkim Current Release: 8481167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 8482167802Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 8483167802Sjkim 8484167802Sjkim 8485167802Sjkim2) iASL Compiler/Disassembler: 8486167802Sjkim 8487241973SjkimFixed a problem with the disassembly of a BankField operator with a 8488241973Sjkimcomplex 8489193267Sjkimexpression for the BankValue parameter. 8490167802Sjkim 8491167802Sjkim---------------------------------------- 8492167802Sjkim27 January 2006. Summary of changes for version 20060127: 8493167802Sjkim 8494167802Sjkim1) ACPI CA Core Subsystem: 8495167802Sjkim 8496253690SjkimImplemented support in the Resource Manager to allow unresolved 8497253690Sjkimnamestring 8498241973Sjkimreferences within resource package objects for the _PRT method. This 8499241973Sjkimsupport 8500193267Sjkimis in addition to the previously implemented unresolved reference support 8501193267Sjkimwithin the AML parser. If the interpreter slack mode is enabled, these 8502241973Sjkimunresolved references will be passed through to the caller as a NULL 8503241973Sjkimpackage 8504167802Sjkimentry. 8505167802Sjkim 8506193267SjkimImplemented and deployed new macros and functions for error and warning 8507193267Sjkimmessages across the subsystem. These macros are simpler and generate less 8508193267Sjkimcode than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 8509193267SjkimACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 8510193267Sjkimmacros remain defined to allow ACPI drivers time to migrate to the new 8511193267Sjkimmacros. 8512167802Sjkim 8513253690SjkimImplemented the ACPI_CPU_FLAGS type to simplify host OS integration of 8514253690Sjkimthe 8515193267SjkimAcquire/Release Lock OSL interfaces. 8516167802Sjkim 8517193267SjkimFixed a problem where Alias ASL operators are sometimes not correctly 8518193267Sjkimresolved, in both the interpreter and the iASL compiler. 8519167802Sjkim 8520241973SjkimFixed several problems with the implementation of the 8521241973SjkimConcatenateResTemplate 8522193267SjkimASL operator. As per the ACPI specification, zero length buffers are now 8523193267Sjkimtreated as a single EndTag. One-length buffers always cause a fatal 8524241973Sjkimexception. Non-zero length buffers that do not end with a full 2-byte 8525241973SjkimEndTag 8526167802Sjkimcause a fatal exception. 8527167802Sjkim 8528193267SjkimFixed a possible structure overwrite in the AcpiGetObjectInfo external 8529193267Sjkiminterface. (With assistance from Thomas Renninger) 8530167802Sjkim 8531193267SjkimCode and Data Size: The current and previous library sizes for the core 8532193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8533253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8534253690SjkimThese 8535241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8536241973Sjkimthe 8537193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8538241973Sjkimand data size. Note that these values will vary depending on the 8539241973Sjkimefficiency 8540193267Sjkimof the compiler and the compiler options used during generation. 8541167802Sjkim 8542167802Sjkim Previous Release: 8543167802Sjkim Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8544167802Sjkim Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8545167802Sjkim Current Release: 8546167802Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8547167802Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8548167802Sjkim 8549167802Sjkim 8550167802Sjkim2) iASL Compiler/Disassembler: 8551167802Sjkim 8552241973SjkimFixed an internal error that was generated for any forward references to 8553241973SjkimASL 8554193267SjkimAlias objects. 8555167802Sjkim 8556167802Sjkim---------------------------------------- 8557167802Sjkim13 January 2006. Summary of changes for version 20060113: 8558167802Sjkim 8559167802Sjkim1) ACPI CA Core Subsystem: 8560167802Sjkim 8561193267SjkimAdded 2006 copyright to all module headers and signons. This affects 8562193267Sjkimvirtually every file in the ACPICA core subsystem, iASL compiler, and the 8563193267Sjkimutilities. 8564193267Sjkim 8565253690SjkimEnhanced the ACPICA error reporting in order to simplify user migration 8566253690Sjkimto 8567193267Sjkimthe non-debug version of ACPICA. Replaced all instances of the 8568253690SjkimACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 8569253690Sjkimdebug 8570193267Sjkimlevels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 8571241973Sjkimrespectively. This preserves all error and warning messages in the non- 8572241973Sjkimdebug 8573193267Sjkimversion of the ACPICA code (this has been referred to as the "debug lite" 8574193267Sjkimoption.) Over 200 cases were converted to create a total of over 380 8575253690Sjkimerror/warning messages across the ACPICA code. This increases the code 8576253690Sjkimand 8577241973Sjkimdata size of the default non-debug version of the code somewhat (about 8578241973Sjkim13K), 8579193267Sjkimbut all error/warning reporting may be disabled if desired (and code 8580193267Sjkimeliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 8581241973Sjkimconfiguration option. The size of the debug version of ACPICA remains 8582241973Sjkimabout 8583193267Sjkimthe same. 8584167802Sjkim 8585193267SjkimFixed a memory leak within the AML Debugger "Set" command. One object was 8586193267Sjkimnot properly deleted for every successful invocation of the command. 8587167802Sjkim 8588193267SjkimCode and Data Size: The current and previous library sizes for the core 8589193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8590253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8591253690SjkimThese 8592241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8593241973Sjkimthe 8594193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8595241973Sjkimand data size. Note that these values will vary depending on the 8596241973Sjkimefficiency 8597193267Sjkimof the compiler and the compiler options used during generation. 8598167802Sjkim 8599167802Sjkim Previous Release: 8600167802Sjkim Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8601167802Sjkim Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8602167802Sjkim Current Release: 8603167802Sjkim Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8604167802Sjkim Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8605167802Sjkim 8606167802Sjkim 8607167802Sjkim2) iASL Compiler/Disassembler: 8608167802Sjkim 8609193267SjkimThe compiler now officially supports the ACPI 3.0a specification that was 8610241973Sjkimreleased on December 30, 2005. (Specification is available at 8611241973Sjkimwww.acpi.info) 8612167802Sjkim 8613167802Sjkim---------------------------------------- 8614167802Sjkim16 December 2005. Summary of changes for version 20051216: 8615167802Sjkim 8616167802Sjkim1) ACPI CA Core Subsystem: 8617167802Sjkim 8618193267SjkimImplemented optional support to allow unresolved names within ASL Package 8619193267Sjkimobjects. A null object is inserted in the package when a named reference 8620193267Sjkimcannot be located in the current namespace. Enabled via the interpreter 8621253690Sjkimslack flag, this should eliminate AE_NOT_FOUND exceptions seen on 8622253690Sjkimmachines 8623193267Sjkimthat contain such code. 8624167802Sjkim 8625241973SjkimImplemented an optimization to the initialization sequence that can 8626241973Sjkimimprove 8627241973Sjkimboot time. During ACPI device initialization, the _STA method is now run 8628241973Sjkimif 8629241973Sjkimand only if the _INI method exists. The _STA method is used to determine 8630241973Sjkimif 8631241973Sjkimthe device is present; An _INI can only be run if _STA returns present, 8632241973Sjkimbut 8633193267Sjkimit is a waste of time to run the _STA method if the _INI does not exist. 8634167802Sjkim(Prototype and assistance from Dong Wei) 8635167802Sjkim 8636241973SjkimImplemented use of the C99 uintptr_t for the pointer casting macros if it 8637241973Sjkimis 8638253690Sjkimavailable in the current compiler. Otherwise, the default (void *) cast 8639253690Sjkimis 8640193267Sjkimused as before. 8641167802Sjkim 8642193267SjkimFixed some possible memory leaks found within the execution path of the 8643193267SjkimBreak, Continue, If, and CreateField operators. (Valery Podrezov) 8644167802Sjkim 8645193267SjkimFixed a problem introduced in the 20051202 release where an exception is 8646193267Sjkimgenerated during method execution if a control method attempts to declare 8647193267Sjkimanother method. 8648167802Sjkim 8649193267SjkimMoved resource descriptor string constants that are used by both the AML 8650193267Sjkimdisassembler and AML debugger to the common utilities directory so that 8651193267Sjkimthese components are independent. 8652167802Sjkim 8653253690SjkimImplemented support in the AcpiExec utility (-e switch) to globally 8654253690Sjkimignore 8655193267Sjkimexceptions during control method execution (method is not aborted.) 8656167802Sjkim 8657193267SjkimAdded the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 8658193267Sjkimgeneration. 8659167802Sjkim 8660193267SjkimCode and Data Size: The current and previous library sizes for the core 8661193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8662253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8663253690SjkimThese 8664241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8665241973Sjkimthe 8666193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8667241973Sjkimand data size. Note that these values will vary depending on the 8668241973Sjkimefficiency 8669193267Sjkimof the compiler and the compiler options used during generation. 8670167802Sjkim 8671167802Sjkim Previous Release: 8672167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8673167802Sjkim Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8674167802Sjkim Current Release: 8675167802Sjkim Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8676167802Sjkim Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8677167802Sjkim 8678167802Sjkim 8679167802Sjkim2) iASL Compiler/Disassembler: 8680167802Sjkim 8681241973SjkimFixed a problem where a CPU stack overflow fault could occur if a 8682241973Sjkimrecursive 8683193267Sjkimmethod call was made from within a Return statement. 8684167802Sjkim 8685167802Sjkim---------------------------------------- 8686167802Sjkim02 December 2005. Summary of changes for version 20051202: 8687167802Sjkim 8688167802Sjkim1) ACPI CA Core Subsystem: 8689167802Sjkim 8690193267SjkimModified the parsing of control methods to no longer create namespace 8691193267Sjkimobjects during the first pass of the parse. Objects are now created only 8692253690Sjkimduring the execute phase, at the moment the namespace creation operator 8693253690Sjkimis 8694253690Sjkimencountered in the AML (Name, OperationRegion, CreateByteField, etc.) 8695253690SjkimThis 8696193267Sjkimshould eliminate ALREADY_EXISTS exceptions seen on some machines where 8697241973Sjkimreentrant control methods are protected by an AML mutex. The mutex will 8698241973Sjkimnow 8699253690Sjkimcorrectly block multiple threads from attempting to create the same 8700253690Sjkimobject 8701193267Sjkimmore than once. 8702167802Sjkim 8703193267SjkimIncreased the number of available Owner Ids for namespace object tracking 8704241973Sjkimfrom 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 8705241973Sjkimon 8706241973Sjkimsome machines with a large number of ACPI tables (either static or 8707241973Sjkimdynamic). 8708167802Sjkim 8709241973SjkimFixed a problem with the AcpiExec utility where a fault could occur when 8710241973Sjkimthe 8711193267Sjkim-b switch (batch mode) is used. 8712167802Sjkim 8713193267SjkimEnhanced the namespace dump routine to output the owner ID for each 8714193267Sjkimnamespace object. 8715167802Sjkim 8716193267SjkimCode and Data Size: The current and previous library sizes for the core 8717193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8718253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8719253690SjkimThese 8720241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8721241973Sjkimthe 8722193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8723241973Sjkimand data size. Note that these values will vary depending on the 8724241973Sjkimefficiency 8725193267Sjkimof the compiler and the compiler options used during generation. 8726167802Sjkim 8727167802Sjkim Previous Release: 8728167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8729167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8730167802Sjkim Current Release: 8731167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8732167802Sjkim Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8733167802Sjkim 8734167802Sjkim 8735167802Sjkim2) iASL Compiler/Disassembler: 8736167802Sjkim 8737241973SjkimFixed a parse error during compilation of certain Switch/Case constructs. 8738241973SjkimTo 8739253690Sjkimsimplify the parse, the grammar now allows for multiple Default 8740253690Sjkimstatements 8741193267Sjkimand this error is now detected and flagged during the analysis phase. 8742167802Sjkim 8743193267SjkimDisassembler: The disassembly now includes the contents of the original 8744193267Sjkimtable header within a comment at the start of the file. This includes the 8745193267Sjkimname and version of the original ASL compiler. 8746167802Sjkim 8747167802Sjkim---------------------------------------- 8748167802Sjkim17 November 2005. Summary of changes for version 20051117: 8749167802Sjkim 8750167802Sjkim1) ACPI CA Core Subsystem: 8751167802Sjkim 8752193267SjkimFixed a problem in the AML parser where the method thread count could be 8753241973Sjkimdecremented below zero if any errors occurred during the method parse 8754241973Sjkimphase. 8755241973SjkimThis should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 8756241973Sjkimmachines. 8757193267SjkimThis also fixed a related regression with the mechanism that detects and 8758193267Sjkimcorrects methods that cannot properly handle reentrancy (related to the 8759193267Sjkimdeployment of the new OwnerId mechanism.) 8760167802Sjkim 8761193267SjkimEliminated the pre-parsing of control methods (to detect errors) during 8762241973Sjkimtable load. Related to the problem above, this was causing unwind issues 8763241973Sjkimif 8764241973Sjkimany errors occurred during the parse, and it seemed to be overkill. A 8765241973Sjkimtable 8766193267Sjkimload should not be aborted if there are problems with any single control 8767193267Sjkimmethod, thus rendering this feature rather pointless. 8768167802Sjkim 8769241973SjkimFixed a problem with the new table-driven resource manager where an 8770241973Sjkiminternal 8771193267Sjkimbuffer overflow could occur for small resource templates. 8772167802Sjkim 8773241973SjkimImplemented a new external interface, AcpiGetVendorResource. This 8774241973Sjkiminterface 8775253690Sjkimwill find and return a vendor-defined resource descriptor within a _CRS 8776253690Sjkimor 8777241973Sjkim_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 8778241973SjkimHelgaas. 8779167802Sjkim 8780193267SjkimRemoved the length limit (200) on string objects as per the upcoming ACPI 8781241973Sjkim3.0A specification. This affects the following areas of the interpreter: 8782241973Sjkim1) 8783253690Sjkimany implicit conversion of a Buffer to a String, 2) a String object 8784253690Sjkimresult 8785193267Sjkimof the ASL Concatentate operator, 3) the String object result of the ASL 8786193267SjkimToString operator. 8787167802Sjkim 8788241973SjkimFixed a problem in the Windows OS interface layer (OSL) where a 8789241973SjkimWAIT_FOREVER 8790193267Sjkimon a semaphore object would incorrectly timeout. This allows the 8791193267Sjkimmultithreading features of the AcpiExec utility to work properly under 8792193267SjkimWindows. 8793167802Sjkim 8794193267SjkimUpdated the Linux makefiles for the iASL compiler and AcpiExec to include 8795193267Sjkimthe recently added file named "utresrc.c". 8796167802Sjkim 8797193267SjkimCode and Data Size: The current and previous library sizes for the core 8798193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8799253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8800253690SjkimThese 8801241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8802241973Sjkimthe 8803193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8804241973Sjkimand data size. Note that these values will vary depending on the 8805241973Sjkimefficiency 8806193267Sjkimof the compiler and the compiler options used during generation. 8807167802Sjkim 8808167802Sjkim Previous Release: 8809167802Sjkim Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8810167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8811167802Sjkim Current Release: 8812167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8813167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8814167802Sjkim 8815167802Sjkim 8816167802Sjkim2) iASL Compiler/Disassembler: 8817167802Sjkim 8818193267SjkimRemoved the limit (200) on string objects as per the upcoming ACPI 3.0A 8819241973Sjkimspecification. For the iASL compiler, this means that string literals 8820241973Sjkimwithin 8821193267Sjkimthe source ASL can be of any length. 8822167802Sjkim 8823193267SjkimEnhanced the listing output to dump the AML code for resource descriptors 8824241973Sjkimimmediately after the ASL code for each descriptor, instead of in a block 8825241973Sjkimat 8826193267Sjkimthe end of the entire resource template. 8827167802Sjkim 8828193267SjkimEnhanced the compiler debug output to dump the entire original parse tree 8829241973Sjkimconstructed during the parse phase, before any transforms are applied to 8830241973Sjkimthe 8831193267Sjkimtree. The transformed tree is dumped also. 8832167802Sjkim 8833167802Sjkim---------------------------------------- 8834167802Sjkim02 November 2005. Summary of changes for version 20051102: 8835167802Sjkim 8836167802Sjkim1) ACPI CA Core Subsystem: 8837167802Sjkim 8838253690SjkimModified the subsystem initialization sequence to improve GPE support. 8839253690SjkimThe 8840241973SjkimGPE initialization has been split into two parts in order to defer 8841241973Sjkimexecution 8842253690Sjkimof the _PRW methods (Power Resources for Wake) until after the hardware 8843253690Sjkimis 8844193267Sjkimfully initialized and the SCI handler is installed. This allows the _PRW 8845241973Sjkimmethods to access fields protected by the Global Lock. This will fix 8846241973Sjkimsystems 8847193267Sjkimwhere a NO_GLOBAL_LOCK exception has been seen during initialization. 8848167802Sjkim 8849253690SjkimConverted the ACPI internal object disassemble and display code within 8850253690Sjkimthe 8851193267SjkimAML debugger to fully table-driven operation, reducing code size and 8852193267Sjkimincreasing maintainability. 8853167802Sjkim 8854241973SjkimFixed a regression with the ConcatenateResTemplate() ASL operator 8855241973Sjkimintroduced 8856193267Sjkimin the 20051021 release. 8857167802Sjkim 8858193267SjkimImplemented support for "local" internal ACPI object types within the 8859193267Sjkimdebugger "Object" command and the AcpiWalkNamespace external interfaces. 8860241973SjkimThese local types include RegionFields, BankFields, IndexFields, Alias, 8861241973Sjkimand 8862193267Sjkimreference objects. 8863167802Sjkim 8864253690SjkimMoved common AML resource handling code into a new file, "utresrc.c". 8865253690SjkimThis 8866193267Sjkimcode is shared by both the Resource Manager and the AML Debugger. 8867167802Sjkim 8868193267SjkimCode and Data Size: The current and previous library sizes for the core 8869193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8870253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8871253690SjkimThese 8872241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8873241973Sjkimthe 8874193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8875241973Sjkimand data size. Note that these values will vary depending on the 8876241973Sjkimefficiency 8877193267Sjkimof the compiler and the compiler options used during generation. 8878167802Sjkim 8879167802Sjkim Previous Release: 8880167802Sjkim Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8881167802Sjkim Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8882167802Sjkim Current Release: 8883167802Sjkim Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8884167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8885167802Sjkim 8886167802Sjkim 8887167802Sjkim2) iASL Compiler/Disassembler: 8888167802Sjkim 8889241973SjkimFixed a problem with very large initializer lists (more than 4000 8890241973Sjkimelements) 8891193267Sjkimfor both Buffer and Package objects where the parse stack could overflow. 8892167802Sjkim 8893241973SjkimEnhanced the pre-compile source code scan for non-ASCII characters to 8894241973Sjkimignore 8895241973Sjkimcharacters within comment fields. The scan is now always performed and is 8896241973Sjkimno 8897193267Sjkimlonger optional, detecting invalid characters within a source file 8898193267Sjkimimmediately rather than during the parse phase or later. 8899167802Sjkim 8900253690SjkimEnhanced the ASL grammar definition to force early reductions on all 8901253690Sjkimlist- 8902193267Sjkimstyle grammar elements so that the overall parse stack usage is greatly 8903241973Sjkimreduced. This should improve performance and reduce the possibility of 8904241973Sjkimparse 8905193267Sjkimstack overflow. 8906167802Sjkim 8907241973SjkimEliminated all reduce/reduce conflicts in the iASL parser generation. 8908241973SjkimAlso, 8909193267Sjkimwith the addition of a %expected statement, the compiler generates from 8910193267Sjkimsource with no warnings. 8911167802Sjkim 8912193267SjkimFixed a possible segment fault in the disassembler if the input filename 8913193267Sjkimdoes not contain a "dot" extension (Thomas Renninger). 8914167802Sjkim 8915167802Sjkim---------------------------------------- 8916151937Sjkim21 October 2005. Summary of changes for version 20051021: 8917151937Sjkim 8918151937Sjkim1) ACPI CA Core Subsystem: 8919151937Sjkim 8920193267SjkimImplemented support for the EM64T and other x86-64 processors. This 8921193267Sjkimessentially entails recognizing that these processors support non-aligned 8922193267Sjkimmemory transfers. Previously, all 64-bit processors were assumed to lack 8923193267Sjkimhardware support for non-aligned transfers. 8924151937Sjkim 8925193267SjkimCompleted conversion of the Resource Manager to nearly full table-driven 8926193267Sjkimoperation. Specifically, the resource conversion code (convert AML to 8927193267Sjkiminternal format and the reverse) and the debug code to dump internal 8928241973Sjkimresource descriptors are fully table-driven, reducing code and data size 8929241973Sjkimand 8930193267Sjkimimproving maintainability. 8931151937Sjkim 8932253690SjkimThe OSL interfaces for Acquire and Release Lock now use a 64-bit flag 8933253690Sjkimword 8934253690Sjkimon 64-bit processors instead of a fixed 32-bit word. (With assistance 8935253690Sjkimfrom 8936193267SjkimAlexey Starikovskiy) 8937151937Sjkim 8938193267SjkimImplemented support within the resource conversion code for the Type- 8939193267SjkimSpecific byte within the various ACPI 3.0 *WordSpace macros. 8940151937Sjkim 8941241973SjkimFixed some issues within the resource conversion code for the type- 8942241973Sjkimspecific 8943193267Sjkimflags for both Memory and I/O address resource descriptors. For Memory, 8944193267Sjkimimplemented support for the MTP and TTP flags. For I/O, split the TRS and 8945193267SjkimTTP flags into two separate fields. 8946151937Sjkim 8947193267SjkimCode and Data Size: The current and previous library sizes for the core 8948193267Sjkimsubsystem are shown below. These are the code and data sizes for the 8949253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8950253690SjkimThese 8951241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 8952241973Sjkimthe 8953193267Sjkimcode includes the debug output trace mechanism and has a much larger code 8954241973Sjkimand data size. Note that these values will vary depending on the 8955241973Sjkimefficiency 8956193267Sjkimof the compiler and the compiler options used during generation. 8957151937Sjkim 8958151937Sjkim Previous Release: 8959151937Sjkim Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8960151937Sjkim Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8961151937Sjkim Current Release: 8962151937Sjkim Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8963151937Sjkim Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8964151937Sjkim 8965151937Sjkim 8966167802Sjkim 8967151937Sjkim2) iASL Compiler/Disassembler: 8968151937Sjkim 8969253690SjkimRelaxed a compiler restriction that disallowed a ResourceIndex byte if 8970253690Sjkimthe 8971193267Sjkimcorresponding ResourceSource string was not also present in a resource 8972193267Sjkimdescriptor declaration. This restriction caused problems with existing 8973241973SjkimAML/ASL code that includes the Index byte without the string. When such 8974241973SjkimAML 8975193267Sjkimwas disassembled, it could not be compiled without modification. Further, 8976241973Sjkimthe modified code created a resource template with a different size than 8977241973Sjkimthe 8978253690Sjkimoriginal, breaking code that used fixed offsets into the resource 8979253690Sjkimtemplate 8980193267Sjkimbuffer. 8981151937Sjkim 8982241973SjkimRemoved a recent feature of the disassembler to ignore a lone 8983241973SjkimResourceIndex 8984193267Sjkimbyte. This byte is now emitted if present so that the exact AML can be 8985193267Sjkimreproduced when the disassembled code is recompiled. 8986151937Sjkim 8987193267SjkimImproved comments and text alignment for the resource descriptor code 8988193267Sjkimemitted by the disassembler. 8989151937Sjkim 8990241973SjkimImplemented disassembler support for the ACPI 3.0 AccessSize field within 8991241973Sjkima 8992193267SjkimRegister() resource descriptor. 8993151937Sjkim 8994151937Sjkim---------------------------------------- 8995151937Sjkim30 September 2005. Summary of changes for version 20050930: 8996151937Sjkim 8997151937Sjkim1) ACPI CA Core Subsystem: 8998151937Sjkim 8999193267SjkimCompleted a major overhaul of the Resource Manager code - specifically, 9000241973Sjkimoptimizations in the area of the AML/internal resource conversion code. 9001241973SjkimThe 9002241973Sjkimcode has been optimized to simplify and eliminate duplicated code, CPU 9003241973Sjkimstack 9004193267Sjkimuse has been decreased by optimizing function parameters and local 9005241973Sjkimvariables, and naming conventions across the manager have been 9006241973Sjkimstandardized 9007193267Sjkimfor clarity and ease of maintenance (this includes function, parameter, 9008193267Sjkimvariable, and struct/typedef names.) The update may force changes in some 9009193267Sjkimdriver code, depending on how resources are handled by the host OS. 9010151937Sjkim 9011193267SjkimAll Resource Manager dispatch and information tables have been moved to a 9012193267Sjkimsingle location for clarity and ease of maintenance. One new file was 9013193267Sjkimcreated, named "rsinfo.c". 9014151937Sjkim 9015193267SjkimThe ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9016253690Sjkimguarantee that the argument is not evaluated twice, making them less 9017253690Sjkimprone 9018193267Sjkimto macro side-effects. However, since there exists the possibility of 9019241973Sjkimadditional stack use if a particular compiler cannot optimize them (such 9020241973Sjkimas 9021241973Sjkimin the debug generation case), the original macros are optionally 9022241973Sjkimavailable. 9023193267SjkimNote that some invocations of the return_VALUE macro may now cause size 9024241973Sjkimmismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9025241973Sjkimto 9026193267Sjkimeliminate these. (From Randy Dunlap) 9027151937Sjkim 9028253690SjkimImplemented a new mechanism to enable debug tracing for individual 9029253690Sjkimcontrol 9030193267Sjkimmethods. A new external interface, AcpiDebugTrace, is provided to enable 9031193267Sjkimthis mechanism. The intent is to allow the host OS to easily enable and 9032193267Sjkimdisable tracing for problematic control methods. This interface can be 9033193267Sjkimeasily exposed to a user or debugger interface if desired. See the file 9034151937Sjkimpsxface.c for details. 9035151937Sjkim 9036193267SjkimAcpiUtCallocate will now return a valid pointer if a length of zero is 9037193267Sjkimspecified - a length of one is used and a warning is issued. This matches 9038193267Sjkimthe behavior of AcpiUtAllocate. 9039151937Sjkim 9040193267SjkimCode and Data Size: The current and previous library sizes for the core 9041193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9042253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9043253690SjkimThese 9044241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9045241973Sjkimthe 9046193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9047241973Sjkimand data size. Note that these values will vary depending on the 9048241973Sjkimefficiency 9049193267Sjkimof the compiler and the compiler options used during generation. 9050151937Sjkim 9051151937Sjkim Previous Release: 9052151937Sjkim Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9053151937Sjkim Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9054151937Sjkim Current Release: 9055151937Sjkim Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9056151937Sjkim Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9057151937Sjkim 9058151937Sjkim 9059151937Sjkim2) iASL Compiler/Disassembler: 9060151937Sjkim 9061193267SjkimA remark is issued if the effective compile-time length of a package or 9062193267Sjkimbuffer is zero. Previously, this was a warning. 9063151937Sjkim 9064151937Sjkim---------------------------------------- 9065151937Sjkim16 September 2005. Summary of changes for version 20050916: 9066151937Sjkim 9067151937Sjkim1) ACPI CA Core Subsystem: 9068151937Sjkim 9069193267SjkimFixed a problem within the Resource Manager where support for the Generic 9070241973SjkimRegister descriptor was not fully implemented. This descriptor is now 9071241973Sjkimfully 9072193267Sjkimrecognized, parsed, disassembled, and displayed. 9073151937Sjkim 9074193267SjkimCompletely restructured the Resource Manager code to utilize table-driven 9075241973Sjkimdispatch and lookup, eliminating many of the large switch() statements. 9076241973SjkimThis 9077193267Sjkimreduces overall subsystem code size and code complexity. Affects the 9078193267Sjkimresource parsing and construction, disassembly, and debug dump output. 9079151937Sjkim 9080193267SjkimCleaned up and restructured the debug dump output for all resource 9081193267Sjkimdescriptors. Improved readability of the output and reduced code size. 9082151937Sjkim 9083193267SjkimFixed a problem where changes to internal data structures caused the 9084193267Sjkimoptional ACPI_MUTEX_DEBUG code to fail compilation if specified. 9085151937Sjkim 9086193267SjkimCode and Data Size: The current and previous library sizes for the core 9087193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9088253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9089253690SjkimThese 9090241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9091241973Sjkimthe 9092193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9093241973Sjkimand data size. Note that these values will vary depending on the 9094241973Sjkimefficiency 9095193267Sjkimof the compiler and the compiler options used during generation. 9096151937Sjkim 9097151937Sjkim Previous Release: 9098151937Sjkim Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9099151937Sjkim Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9100151937Sjkim Current Release: 9101151937Sjkim Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9102151937Sjkim Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9103151937Sjkim 9104151937Sjkim 9105151937Sjkim2) iASL Compiler/Disassembler: 9106151937Sjkim 9107253690SjkimUpdated the disassembler to automatically insert an EndDependentFn() 9108253690Sjkimmacro 9109193267Sjkiminto the ASL stream if this macro is missing in the original AML code, 9110193267Sjkimsimplifying compilation of the resulting ASL module. 9111151937Sjkim 9112193267SjkimFixed a problem in the disassembler where a disassembled ResourceSource 9113241973Sjkimstring (within a large resource descriptor) was not surrounded by quotes 9114241973Sjkimand 9115193267Sjkimnot followed by a comma, causing errors when the resulting ASL module was 9116193267Sjkimcompiled. Also, escape sequences within a ResourceSource string are now 9117193267Sjkimhandled correctly (especially "\\") 9118151937Sjkim 9119151937Sjkim---------------------------------------- 9120151937Sjkim02 September 2005. Summary of changes for version 20050902: 9121151937Sjkim 9122151937Sjkim1) ACPI CA Core Subsystem: 9123151937Sjkim 9124193267SjkimFixed a problem with the internal Owner ID allocation and deallocation 9125193267Sjkimmechanisms for control method execution and recursive method invocation. 9126193267SjkimThis should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 9127193267Sjkimmessages seen on some systems. Recursive method invocation depth is 9128193267Sjkimcurrently limited to 255. (Alexey Starikovskiy) 9129151937Sjkim 9130193267SjkimCompletely eliminated all vestiges of support for the "module-level 9131241973Sjkimexecutable code" until this support is fully implemented and debugged. 9132241973SjkimThis 9133193267Sjkimshould eliminate the NO_RETURN_VALUE exceptions seen during table load on 9134193267Sjkimsome systems that invoke this support. 9135151937Sjkim 9136241973SjkimFixed a problem within the resource manager code where the transaction 9137241973Sjkimflags 9138193267Sjkimfor a 64-bit address descriptor were handled incorrectly in the type- 9139193267Sjkimspecific flag byte. 9140151937Sjkim 9141253690SjkimConsolidated duplicate code within the address descriptor resource 9142253690Sjkimmanager 9143193267Sjkimcode, reducing overall subsystem code size. 9144151937Sjkim 9145193267SjkimFixed a fault when using the AML debugger "disassemble" command to 9146193267Sjkimdisassemble individual control methods. 9147151937Sjkim 9148193267SjkimRemoved references to the "release_current" directory within the Unix 9149193267Sjkimrelease package. 9150151937Sjkim 9151193267SjkimCode and Data Size: The current and previous core subsystem library sizes 9152193267Sjkimare shown below. These are the code and data sizes for the acpica.lib 9153193267Sjkimproduced by the Microsoft Visual C++ 6.0 compiler. These values do not 9154241973Sjkiminclude any ACPI driver or OSPM code. The debug version of the code 9155241973Sjkimincludes 9156253690Sjkimthe debug output trace mechanism and has a much larger code and data 9157253690Sjkimsize. 9158241973SjkimNote that these values will vary depending on the efficiency of the 9159241973Sjkimcompiler 9160193267Sjkimand the compiler options used during generation. 9161151937Sjkim 9162151937Sjkim Previous Release: 9163151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9164151937Sjkim Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9165151937Sjkim Current Release: 9166151937Sjkim Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 9167151937Sjkim Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 9168151937Sjkim 9169151937Sjkim 9170151937Sjkim2) iASL Compiler/Disassembler: 9171151937Sjkim 9172241973SjkimImplemented an error check for illegal duplicate values in the interrupt 9173241973Sjkimand 9174193267Sjkimdma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 9175193267SjkimInterrupt(). 9176151937Sjkim 9177253690SjkimImplemented error checking for the Irq() and IrqNoFlags() macros to 9178253690Sjkimdetect 9179193267Sjkimtoo many values in the interrupt list (16 max) and invalid values in the 9180193267Sjkimlist (range 0 - 15) 9181151937Sjkim 9182193267SjkimThe maximum length string literal within an ASL file is now restricted to 9183193267Sjkim200 characters as per the ACPI specification. 9184151937Sjkim 9185193267SjkimFixed a fault when using the -ln option (generate namespace listing). 9186151937Sjkim 9187193267SjkimImplemented an error check to determine if a DescriptorName within a 9188193267Sjkimresource descriptor has already been used within the current scope. 9189151937Sjkim 9190151937Sjkim---------------------------------------- 9191151937Sjkim15 August 2005. Summary of changes for version 20050815: 9192193267Sjkim 9193151937Sjkim1) ACPI CA Core Subsystem: 9194193267Sjkim 9195241973SjkimImplemented a full bytewise compare to determine if a table load request 9196241973Sjkimis 9197241973Sjkimattempting to load a duplicate table. The compare is performed if the 9198241973Sjkimtable 9199193267Sjkimsignatures and table lengths match. This will allow different tables with 9200241973Sjkimthe same OEM Table ID and revision to be loaded - probably against the 9201241973SjkimACPI 9202193267Sjkimspecification, but discovered in the field nonetheless. 9203193267Sjkim 9204193267SjkimAdded the changes.txt logfile to each of the zipped release packages. 9205193267Sjkim 9206193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9207253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9208253690Sjkimproduced 9209193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9210193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9211241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9212241973SjkimNote 9213241973Sjkimthat these values will vary depending on the efficiency of the compiler 9214241973Sjkimand 9215193267Sjkimthe compiler options used during generation. 9216193267Sjkim 9217151937Sjkim Previous Release: 9218151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9219151937Sjkim Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9220151937Sjkim Current Release: 9221151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9222151937Sjkim Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 9223193267Sjkim 9224193267Sjkim 9225151937Sjkim2) iASL Compiler/Disassembler: 9226193267Sjkim 9227193267SjkimFixed a problem where incorrect AML code could be generated for Package 9228193267Sjkimobjects if optimization is disabled (via the -oa switch). 9229193267Sjkim 9230193267SjkimFixed a problem with where incorrect AML code is generated for variable- 9231253690Sjkimlength packages when the package length is not specified and the number 9232253690Sjkimof 9233193267Sjkiminitializer values is greater than 255. 9234193267Sjkim 9235151937Sjkim 9236151937Sjkim---------------------------------------- 9237151937Sjkim29 July 2005. Summary of changes for version 20050729: 9238151937Sjkim 9239151937Sjkim1) ACPI CA Core Subsystem: 9240151937Sjkim 9241253690SjkimImplemented support to ignore an attempt to install/load a particular 9242253690SjkimACPI 9243193267Sjkimtable more than once. Apparently there exists BIOS code that repeatedly 9244193267Sjkimattempts to load the same SSDT upon certain events. With assistance from 9245193267SjkimVenkatesh Pallipadi. 9246151937Sjkim 9247193267SjkimRestructured the main interface to the AML parser in order to correctly 9248241973Sjkimhandle all exceptional conditions. This will prevent leakage of the 9249241973SjkimOwnerId 9250241973Sjkimresource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 9251241973Sjkimsome 9252193267Sjkimmachines. With assistance from Alexey Starikovskiy. 9253151937Sjkim 9254253690SjkimSupport for "module level code" has been disabled in this version due to 9255253690Sjkima 9256241973Sjkimnumber of issues that have appeared on various machines. The support can 9257241973Sjkimbe 9258193267Sjkimenabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 9259241973Sjkimcompilation. When the issues are fully resolved, the code will be enabled 9260241973Sjkimby 9261151937Sjkimdefault again. 9262151937Sjkim 9263193267SjkimModified the internal functions for debug print support to define the 9264253690SjkimFunctionName parameter as a (const char *) for compatibility with 9265253690Sjkimcompiler 9266193267Sjkimbuilt-in macros such as __FUNCTION__, etc. 9267151937Sjkim 9268151937SjkimLinted the entire ACPICA source tree for both 32-bit and 64-bit. 9269151937Sjkim 9270241973SjkimImplemented support to display an object count summary for the AML 9271241973SjkimDebugger 9272193267Sjkimcommands Object and Methods. 9273151937Sjkim 9274193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9275253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9276253690Sjkimproduced 9277193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9278193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9279241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9280241973SjkimNote 9281241973Sjkimthat these values will vary depending on the efficiency of the compiler 9282241973Sjkimand 9283193267Sjkimthe compiler options used during generation. 9284151937Sjkim 9285151937Sjkim Previous Release: 9286151937Sjkim Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9287151937Sjkim Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9288151937Sjkim Current Release: 9289151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 9290151937Sjkim Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 9291151937Sjkim 9292151937Sjkim 9293151937Sjkim2) iASL Compiler/Disassembler: 9294151937Sjkim 9295193267SjkimFixed a regression that appeared in the 20050708 version of the compiler 9296241973Sjkimwhere an error message was inadvertently emitted for invocations of the 9297241973Sjkim_OSI 9298193267Sjkimreserved control method. 9299151937Sjkim 9300151937Sjkim---------------------------------------- 9301151937Sjkim08 July 2005. Summary of changes for version 20050708: 9302151937Sjkim 9303151937Sjkim1) ACPI CA Core Subsystem: 9304151937Sjkim 9305193267SjkimThe use of the CPU stack in the debug version of the subsystem has been 9306193267Sjkimconsiderably reduced. Previously, a debug structure was declared in every 9307193267Sjkimfunction that used the debug macros. This structure has been removed in 9308193267Sjkimfavor of declaring the individual elements as parameters to the debug 9309241973Sjkimfunctions. This reduces the cumulative stack use during nested execution 9310241973Sjkimof 9311241973SjkimACPI function calls at the cost of a small increase in the code size of 9312241973Sjkimthe 9313241973Sjkimdebug version of the subsystem. With assistance from Alexey Starikovskiy 9314241973Sjkimand 9315193267SjkimLen Brown. 9316151937Sjkim 9317193267SjkimAdded the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 9318193267Sjkimheaders to define a macro that will return the current function name at 9319241973Sjkimruntime (such as __FUNCTION__ or _func_, etc.) The function name is used 9320241973Sjkimby 9321193267Sjkimthe debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 9322241973Sjkimcompiler-dependent header, the function name is saved on the CPU stack 9323241973Sjkim(one 9324193267Sjkimpointer per function.) This mechanism is used because apparently there 9325241973Sjkimexists no standard ANSI-C defined macro that that returns the function 9326241973Sjkimname. 9327151937Sjkim 9328193267SjkimRedesigned and reimplemented the "Owner ID" mechanism used to track 9329193267Sjkimnamespace objects created/deleted by ACPI tables and control method 9330253690Sjkimexecution. A bitmap is now used to allocate and free the IDs, thus 9331253690Sjkimsolving 9332253690Sjkimthe wraparound problem present in the previous implementation. The size 9333253690Sjkimof 9334193267Sjkimthe namespace node descriptor was reduced by 2 bytes as a result (Alexey 9335151937SjkimStarikovskiy). 9336151937Sjkim 9337241973SjkimRemoved the UINT32_BIT and UINT16_BIT types that were used for the 9338241973Sjkimbitfield 9339193267Sjkimflag definitions within the headers for the predefined ACPI tables. These 9340241973Sjkimhave been replaced by UINT8_BIT in order to increase the code portability 9341241973Sjkimof 9342193267Sjkimthe subsystem. If the use of UINT8 remains a problem, we may be forced to 9343193267Sjkimeliminate bitfields entirely because of a lack of portability. 9344151937Sjkim 9345241973SjkimEnhanced the performance of the AcpiUtUpdateObjectReference procedure. 9346241973SjkimThis 9347241973Sjkimis a frequently used function and this improvement increases the 9348241973Sjkimperformance 9349193267Sjkimof the entire subsystem (Alexey Starikovskiy). 9350151937Sjkim 9351193267SjkimFixed several possible memory leaks and the inverse - premature object 9352193267Sjkimdeletion (Alexey Starikovskiy). 9353151937Sjkim 9354193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9355253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9356253690Sjkimproduced 9357193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9358193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9359241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9360241973SjkimNote 9361241973Sjkimthat these values will vary depending on the efficiency of the compiler 9362241973Sjkimand 9363193267Sjkimthe compiler options used during generation. 9364151937Sjkim 9365151937Sjkim Previous Release: 9366151937Sjkim Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9367151937Sjkim Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9368151937Sjkim Current Release: 9369151937Sjkim Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 9370151937Sjkim Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 9371151937Sjkim 9372151937Sjkim---------------------------------------- 9373151937Sjkim24 June 2005. Summary of changes for version 20050624: 9374151937Sjkim 9375151937Sjkim1) ACPI CA Core Subsystem: 9376151937Sjkim 9377193267SjkimModified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 9378241973Sjkimthe host-defined cache object. This allows the OSL implementation to 9379241973Sjkimdefine 9380193267Sjkimand type this object in any manner desired, simplifying the OSL 9381193267Sjkimimplementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 9382193267SjkimLinux, and should be defined in the OS-specific header file for other 9383193267Sjkimoperating systems as required. 9384151937Sjkim 9385193267SjkimChanged the interface to AcpiOsAcquireObject to directly return the 9386193267Sjkimrequested object as the function return (instead of ACPI_STATUS.) This 9387193267Sjkimchange was made for performance reasons, since this is the purpose of the 9388193267Sjkiminterface in the first place. AcpiOsAcquireObject is now similar to the 9389193267SjkimAcpiOsAllocate interface. 9390151937Sjkim 9391241973SjkimImplemented a new AML debugger command named Businfo. This command 9392241973Sjkimdisplays 9393241973Sjkiminformation about all devices that have an associate _PRT object. The 9394241973Sjkim_ADR, 9395193267Sjkim_HID, _UID, and _CID are displayed for these devices. 9396151937Sjkim 9397241973SjkimModified the initialization sequence in AcpiInitializeSubsystem to call 9398241973Sjkimthe 9399241973SjkimOSL interface AcpiOslInitialize first, before any local initialization. 9400241973SjkimThis 9401193267Sjkimchange was required because the global initialization now calls OSL 9402193267Sjkiminterfaces. 9403151937Sjkim 9404241973SjkimEnhanced the Dump command to display the entire contents of Package 9405241973Sjkimobjects 9406193267Sjkim(including all sub-objects and their values.) 9407151937Sjkim 9408193267SjkimRestructured the code base to split some files because of size and/or 9409241973Sjkimbecause the code logically belonged in a separate file. New files are 9410241973Sjkimlisted 9411241973Sjkimbelow. All makefiles and project files included in the ACPI CA release 9412241973Sjkimhave 9413193267Sjkimbeen updated. 9414151937Sjkim utilities/utcache.c /* Local cache interfaces */ 9415151937Sjkim utilities/utmutex.c /* Local mutex support */ 9416151937Sjkim utilities/utstate.c /* State object support */ 9417151937Sjkim interpreter/parser/psloop.c /* Main AML parse loop */ 9418151937Sjkim 9419193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9420253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9421253690Sjkimproduced 9422193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9423193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9424241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9425241973SjkimNote 9426241973Sjkimthat these values will vary depending on the efficiency of the compiler 9427241973Sjkimand 9428193267Sjkimthe compiler options used during generation. 9429151937Sjkim 9430151937Sjkim Previous Release: 9431151937Sjkim Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9432151937Sjkim Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9433151937Sjkim Current Release: 9434151937Sjkim Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 9435151937Sjkim Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 9436151937Sjkim 9437151937Sjkim 9438151937Sjkim2) iASL Compiler/Disassembler: 9439151937Sjkim 9440241973SjkimFixed a regression introduced in version 20050513 where the use of a 9441241973SjkimPackage 9442193267Sjkimobject within a Case() statement caused a compile time exception. The 9443193267Sjkimoriginal behavior has been restored (a Match() operator is emitted.) 9444151937Sjkim 9445151937Sjkim---------------------------------------- 9446151937Sjkim17 June 2005. Summary of changes for version 20050617: 9447151937Sjkim 9448151937Sjkim1) ACPI CA Core Subsystem: 9449151937Sjkim 9450241973SjkimMoved the object cache operations into the OS interface layer (OSL) to 9451241973Sjkimallow 9452193267Sjkimthe host OS to handle these operations if desired (for example, the Linux 9453253690SjkimOSL will invoke the slab allocator). This support is optional; the 9454253690Sjkimcompile 9455253690Sjkimtime define ACPI_USE_LOCAL_CACHE may be used to utilize the original 9456253690Sjkimcache 9457193267Sjkimcode in the ACPI CA core. The new OSL interfaces are shown below. See 9458193267Sjkimutalloc.c for an example implementation, and acpiosxf.h for the exact 9459193267Sjkiminterface definitions. With assistance from Alexey Starikovskiy. 9460151937Sjkim AcpiOsCreateCache 9461151937Sjkim AcpiOsDeleteCache 9462151937Sjkim AcpiOsPurgeCache 9463151937Sjkim AcpiOsAcquireObject 9464151937Sjkim AcpiOsReleaseObject 9465151937Sjkim 9466241973SjkimModified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 9467241973Sjkimreturn 9468193267Sjkimand restore a flags parameter. This fits better with many OS lock models. 9469193267SjkimNote: the current execution state (interrupt handler or not) is no longer 9470241973Sjkimpassed to these interfaces. If necessary, the OSL must determine this 9471241973Sjkimstate 9472193267Sjkimby itself, a simple and fast operation. With assistance from Alexey 9473151937SjkimStarikovskiy. 9474151937Sjkim 9475193267SjkimFixed a problem in the ACPI table handling where a valid XSDT was assumed 9476241973Sjkimpresent if the revision of the RSDP was 2 or greater. According to the 9477241973SjkimACPI 9478193267Sjkimspecification, the XSDT is optional in all cases, and the table manager 9479193267Sjkimtherefore now checks for both an RSDP >=2 and a valid XSDT pointer. 9480253690SjkimOtherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 9481253690Sjkimcontain 9482193267Sjkimonly the RSDT. 9483151937Sjkim 9484241973SjkimFixed an interpreter problem with the Mid() operator in the case of an 9485241973Sjkiminput 9486241973Sjkimstring where the resulting output string is of zero length. It now 9487241973Sjkimcorrectly 9488193267Sjkimreturns a valid, null terminated string object instead of a string object 9489193267Sjkimwith a null pointer. 9490151937Sjkim 9491253690SjkimFixed a problem with the control method argument handling to allow a 9492253690Sjkimstore 9493241973Sjkimto an Arg object that already contains an object of type Device. The 9494241973SjkimDevice 9495193267Sjkimobject is now correctly overwritten. Previously, an error was returned. 9496151937Sjkim 9497167802Sjkim 9498241973SjkimEnhanced the debugger Find command to emit object values in addition to 9499241973Sjkimthe 9500241973Sjkimfound object pathnames. The output format is the same as the dump 9501241973Sjkimnamespace 9502193267Sjkimcommand. 9503151937Sjkim 9504253690SjkimEnhanced the debugger Set command. It now has the ability to set the 9505253690Sjkimvalue 9506241973Sjkimof any Named integer object in the namespace (Previously, only method 9507241973Sjkimlocals 9508193267Sjkimand args could be set.) 9509151937Sjkim 9510193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9511253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9512253690Sjkimproduced 9513193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9514193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9515241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9516241973SjkimNote 9517241973Sjkimthat these values will vary depending on the efficiency of the compiler 9518241973Sjkimand 9519193267Sjkimthe compiler options used during generation. 9520151937Sjkim 9521151937Sjkim Previous Release: 9522151937Sjkim Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9523151937Sjkim Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9524151937Sjkim Current Release: 9525151937Sjkim Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9526151937Sjkim Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9527151937Sjkim 9528151937Sjkim 9529151937Sjkim2) iASL Compiler/Disassembler: 9530151937Sjkim 9531253690SjkimFixed a regression in the disassembler where if/else/while constructs 9532253690Sjkimwere 9533193267Sjkimoutput incorrectly. This problem was introduced in the previous release 9534193267Sjkim(20050526). This problem also affected the single-step disassembly in the 9535193267Sjkimdebugger. 9536151937Sjkim 9537241973SjkimFixed a problem where compiling the reserved _OSI method would randomly 9538241973Sjkim(but 9539193267Sjkimrarely) produce compile errors. 9540151937Sjkim 9541253690SjkimEnhanced the disassembler to emit compilable code in the face of 9542253690Sjkimincorrect 9543193267SjkimAML resource descriptors. If the optional ResourceSourceIndex is present, 9544193267Sjkimbut the ResourceSource is not, do not emit the ResourceSourceIndex in the 9545193267Sjkimdisassembly. Otherwise, the resulting code cannot be compiled without 9546193267Sjkimerrors. 9547151937Sjkim 9548151937Sjkim---------------------------------------- 9549151937Sjkim26 May 2005. Summary of changes for version 20050526: 9550151937Sjkim 9551151937Sjkim1) ACPI CA Core Subsystem: 9552151937Sjkim 9553193267SjkimImplemented support to execute Type 1 and Type 2 AML opcodes appearing at 9554253690Sjkimthe module level (not within a control method.) These opcodes are 9555253690Sjkimexecuted 9556241973Sjkimexactly once at the time the table is loaded. This type of code was legal 9557241973Sjkimup 9558241973Sjkimuntil the release of ACPI 2.0B (2002) and is now supported within ACPI CA 9559241973Sjkimin 9560241973Sjkimorder to provide backwards compatibility with earlier BIOS 9561241973Sjkimimplementations. 9562193267SjkimThis eliminates the "Encountered executable code at module level" warning 9563193267Sjkimthat was previously generated upon detection of such code. 9564151937Sjkim 9565193267SjkimFixed a problem in the interpreter where an AE_NOT_FOUND exception could 9566193267Sjkiminadvertently be generated during the lookup of namespace objects in the 9567253690Sjkimsecond pass parse of ACPI tables and control methods. It appears that 9568253690Sjkimthis 9569241973Sjkimproblem could occur during the resolution of forward references to 9570241973Sjkimnamespace 9571193267Sjkimobjects. 9572151937Sjkim 9573193267SjkimAdded the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 9574193267Sjkimcorresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 9575193267Sjkimallows the deadlock detection debug code to be compiled out in the normal 9576193267Sjkimcase, improving mutex performance (and overall subsystem performance) 9577193267Sjkimconsiderably. 9578151937Sjkim 9579193267SjkimImplemented a handful of miscellaneous fixes for possible memory leaks on 9580193267Sjkimerror conditions and error handling control paths. These fixes were 9581193267Sjkimsuggested by FreeBSD and the Coverity Prevent source code analysis tool. 9582151937Sjkim 9583253690SjkimAdded a check for a null RSDT pointer in AcpiGetFirmwareTable 9584253690Sjkim(tbxfroot.c) 9585193267Sjkimto prevent a fault in this error case. 9586151937Sjkim 9587193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9588253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9589253690Sjkimproduced 9590193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9591193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9592241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9593241973SjkimNote 9594241973Sjkimthat these values will vary depending on the efficiency of the compiler 9595241973Sjkimand 9596193267Sjkimthe compiler options used during generation. 9597151937Sjkim 9598151937Sjkim Previous Release: 9599151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9600151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9601151937Sjkim Current Release: 9602151937Sjkim Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9603151937Sjkim Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9604151937Sjkim 9605151937Sjkim 9606151937Sjkim2) iASL Compiler/Disassembler: 9607151937Sjkim 9608193267SjkimImplemented support to allow Type 1 and Type 2 ASL operators to appear at 9609193267Sjkimthe module level (not within a control method.) These operators will be 9610253690Sjkimexecuted once at the time the table is loaded. This type of code was 9611253690Sjkimlegal 9612193267Sjkimup until the release of ACPI 2.0B (2002) and is now supported by the iASL 9613253690Sjkimcompiler in order to provide backwards compatibility with earlier BIOS 9614253690SjkimASL 9615193267Sjkimcode. 9616151937Sjkim 9617193267SjkimThe ACPI integer width (specified via the table revision ID or the -r 9618241973Sjkimoverride, 32 or 64 bits) is now used internally during compile-time 9619241973Sjkimconstant 9620193267Sjkimfolding to ensure that constants are truncated to 32 bits if necessary. 9621241973SjkimPreviously, the revision ID value was only emitted in the AML table 9622241973Sjkimheader. 9623151937Sjkim 9624241973SjkimAn error message is now generated for the Mutex and Method operators if 9625241973Sjkimthe 9626193267SjkimSyncLevel parameter is outside the legal range of 0 through 15. 9627151937Sjkim 9628241973SjkimFixed a problem with the Method operator ParameterTypes list handling 9629241973Sjkim(ACPI 9630241973Sjkim3.0). Previously, more than 2 types or 2 arguments generated a syntax 9631241973Sjkimerror. 9632193267SjkimThe actual underlying implementation of method argument typechecking is 9633193267Sjkimstill under development, however. 9634151937Sjkim 9635151937Sjkim---------------------------------------- 9636151937Sjkim13 May 2005. Summary of changes for version 20050513: 9637151937Sjkim 9638151937Sjkim1) ACPI CA Core Subsystem: 9639151937Sjkim 9640241973SjkimImplemented support for PCI Express root bridges -- added support for 9641241973Sjkimdevice 9642193267SjkimPNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 9643151937Sjkim 9644241973SjkimThe interpreter now automatically truncates incoming 64-bit constants to 9645241973Sjkim32 9646241973Sjkimbits if currently executing out of a 32-bit ACPI table (Revision < 2). 9647241973SjkimThis 9648193267Sjkimalso affects the iASL compiler constant folding. (Note: as per below, the 9649193267SjkimiASL compiler no longer allows 64-bit constants within 32-bit tables.) 9650151937Sjkim 9651193267SjkimFixed a problem where string and buffer objects with "static" pointers 9652193267Sjkim(pointers to initialization data within an ACPI table) were not handled 9653241973Sjkimconsistently. The internal object copy operation now always copies the 9654241973Sjkimdata 9655193267Sjkimto a newly allocated buffer, regardless of whether the source object is 9656193267Sjkimstatic or not. 9657151937Sjkim 9658193267SjkimFixed a problem with the FromBCD operator where an implicit result 9659253690Sjkimconversion was improperly performed while storing the result to the 9660253690Sjkimtarget 9661193267Sjkimoperand. Since this is an "explicit conversion" operator, the implicit 9662193267Sjkimconversion should never be performed on the output. 9663151937Sjkim 9664193267SjkimFixed a problem with the CopyObject operator where a copy to an existing 9665241973Sjkimnamed object did not always completely overwrite the existing object 9666241973Sjkimstored 9667253690Sjkimat name. Specifically, a buffer-to-buffer copy did not delete the 9668253690Sjkimexisting 9669193267Sjkimbuffer. 9670151937Sjkim 9671253690SjkimReplaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 9672253690Sjkimand 9673193267Sjkimstructs for consistency. 9674151937Sjkim 9675193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9676253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9677253690Sjkimproduced 9678193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9679193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9680241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9681241973SjkimNote 9682241973Sjkimthat these values will vary depending on the efficiency of the compiler 9683241973Sjkimand 9684193267Sjkimthe compiler options used during generation. 9685151937Sjkim 9686151937Sjkim Previous Release: 9687151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9688151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9689151937Sjkim Current Release: (Same sizes) 9690151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9691151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9692151937Sjkim 9693151937Sjkim 9694151937Sjkim2) iASL Compiler/Disassembler: 9695151937Sjkim 9696241973SjkimThe compiler now emits a warning if an attempt is made to generate a 64- 9697241973Sjkimbit 9698241973Sjkiminteger constant from within a 32-bit ACPI table (Revision < 2). The 9699241973Sjkiminteger 9700193267Sjkimis truncated to 32 bits. 9701151937Sjkim 9702193267SjkimFixed a problem with large package objects: if the static length of the 9703193267Sjkimpackage is greater than 255, the "variable length package" opcode is 9704193267Sjkimemitted. Previously, this caused an error. This requires an update to the 9705241973SjkimACPI spec, since it currently (incorrectly) states that packages larger 9706241973Sjkimthan 9707193267Sjkim255 elements are not allowed. 9708151937Sjkim 9709241973SjkimThe disassembler now correctly handles variable length packages and 9710241973Sjkimpackages 9711193267Sjkimlarger than 255 elements. 9712151937Sjkim 9713151937Sjkim---------------------------------------- 9714151937Sjkim08 April 2005. Summary of changes for version 20050408: 9715151937Sjkim 9716151937Sjkim1) ACPI CA Core Subsystem: 9717151937Sjkim 9718193267SjkimFixed three cases in the interpreter where an "index" argument to an ASL 9719193267Sjkimfunction was still (internally) 32 bits instead of the required 64 bits. 9720193267SjkimThis was the Index argument to the Index, Mid, and Match operators. 9721151937Sjkim 9722241973SjkimThe "strupr" function is now permanently local (AcpiUtStrupr), since this 9723241973Sjkimis 9724193267Sjkimnot a POSIX-defined function and not present in most kernel-level C 9725241973Sjkimlibraries. All references to the C library strupr function have been 9726241973Sjkimremoved 9727193267Sjkimfrom the headers. 9728151937Sjkim 9729241973SjkimCompleted the deployment of static functions/prototypes. All prototypes 9730241973Sjkimwith 9731241973Sjkimthe static attribute have been moved from the headers to the owning C 9732241973Sjkimfile. 9733151937Sjkim 9734193267SjkimImplemented an extract option (-e) for the AcpiBin utility (AML binary 9735253690Sjkimutility). This option allows the utility to extract individual ACPI 9736253690Sjkimtables 9737193267Sjkimfrom the output of AcpiDmp. It provides the same functionality of the 9738193267Sjkimacpixtract.pl perl script without the worry of setting the correct perl 9739241973Sjkimoptions. AcpiBin runs on Windows and has not yet been generated/validated 9740241973Sjkimin 9741193267Sjkimthe Linux/Unix environment (but should be soon). 9742193267Sjkim 9743193267SjkimUpdated and fixed the table dump option for AcpiBin (-d). This option 9744253690Sjkimconverts a single ACPI table to a hex/ascii file, similar to the output 9745253690Sjkimof 9746193267SjkimAcpiDmp. 9747151937Sjkim 9748193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9749253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9750253690Sjkimproduced 9751193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9752193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9753241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9754241973SjkimNote 9755241973Sjkimthat these values will vary depending on the efficiency of the compiler 9756241973Sjkimand 9757193267Sjkimthe compiler options used during generation. 9758151937Sjkim 9759151937Sjkim Previous Release: 9760151937Sjkim Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9761151937Sjkim Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9762151937Sjkim Current Release: 9763151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9764151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9765151937Sjkim 9766151937Sjkim 9767151937Sjkim2) iASL Compiler/Disassembler: 9768151937Sjkim 9769241973SjkimDisassembler fix: Added a check to ensure that the table length found in 9770241973Sjkimthe 9771241973SjkimACPI table header within the input file is not longer than the actual 9772241973Sjkiminput 9773193267Sjkimfile size. This indicates some kind of file or table corruption. 9774151937Sjkim 9775151937Sjkim---------------------------------------- 9776151937Sjkim29 March 2005. Summary of changes for version 20050329: 9777151937Sjkim 9778151937Sjkim1) ACPI CA Core Subsystem: 9779151937Sjkim 9780241973SjkimAn error is now generated if an attempt is made to create a Buffer Field 9781241973Sjkimof 9782193267Sjkimlength zero (A CreateField with a length operand of zero.) 9783151937Sjkim 9784241973SjkimThe interpreter now issues a warning whenever executable code at the 9785241973Sjkimmodule 9786193267Sjkimlevel is detected during ACPI table load. This will give some idea of the 9787193267Sjkimprevalence of this type of code. 9788151937Sjkim 9789193267SjkimImplemented support for references to named objects (other than control 9790193267Sjkimmethods) within package objects. 9791151937Sjkim 9792241973SjkimEnhanced package object output for the debug object. Package objects are 9793241973Sjkimnow 9794193267Sjkimcompletely dumped, showing all elements. 9795151937Sjkim 9796193267SjkimEnhanced miscellaneous object output for the debug object. Any object can 9797193267Sjkimnow be written to the debug object (for example, a device object can be 9798193267Sjkimwritten, and the type of the object will be displayed.) 9799151937Sjkim 9800241973SjkimThe "static" qualifier has been added to all local functions across both 9801241973Sjkimthe 9802193267Sjkimcore subsystem and the iASL compiler. 9803151937Sjkim 9804193267SjkimThe number of "long" lines (> 80 chars) within the source has been 9805193267Sjkimsignificantly reduced, by about 1/3. 9806151937Sjkim 9807193267SjkimCleaned up all header files to ensure that all CA/iASL functions are 9808193267Sjkimprototyped (even static functions) and the formatting is consistent. 9809151937Sjkim 9810151937SjkimTwo new header files have been added, acopcode.h and acnames.h. 9811151937Sjkim 9812151937SjkimRemoved several obsolete functions that were no longer used. 9813151937Sjkim 9814193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9815253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9816253690Sjkimproduced 9817193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9818193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9819241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9820241973SjkimNote 9821241973Sjkimthat these values will vary depending on the efficiency of the compiler 9822241973Sjkimand 9823193267Sjkimthe compiler options used during generation. 9824151937Sjkim 9825151937Sjkim Previous Release: 9826151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9827151937Sjkim Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9828151937Sjkim Current Release: 9829151937Sjkim Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9830151937Sjkim Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9831151937Sjkim 9832151937Sjkim 9833167802Sjkim 9834151937Sjkim2) iASL Compiler/Disassembler: 9835151937Sjkim 9836193267SjkimFixed a problem with the resource descriptor generation/support. For the 9837241973SjkimResourceSourceIndex and the ResourceSource fields, both must be present, 9838241973Sjkimor 9839193267Sjkimboth must be not present - can't have one without the other. 9840151937Sjkim 9841241973SjkimThe compiler now returns non-zero from the main procedure if any errors 9842241973Sjkimhave 9843193267Sjkimoccurred during the compilation. 9844151937Sjkim 9845151937Sjkim 9846151937Sjkim---------------------------------------- 9847151937Sjkim09 March 2005. Summary of changes for version 20050309: 9848151937Sjkim 9849151937Sjkim1) ACPI CA Core Subsystem: 9850151937Sjkim 9851241973SjkimThe string-to-buffer implicit conversion code has been modified again 9852241973Sjkimafter 9853253690Sjkima change to the ACPI specification. In order to match the behavior of 9854253690Sjkimthe 9855241973Sjkimother major ACPI implementation, the target buffer is no longer truncated 9856241973Sjkimif 9857193267Sjkimthe source string is smaller than an existing target buffer. This change 9858193267Sjkimrequires an update to the ACPI spec, and should eliminate the recent 9859151937SjkimAE_AML_BUFFER_LIMIT issues. 9860151937Sjkim 9861253690SjkimThe "implicit return" support was rewritten to a new algorithm that 9862253690Sjkimsolves 9863241973Sjkimthe general case. Rather than attempt to determine when a method is about 9864241973Sjkimto 9865253690Sjkimexit, the result of every ASL operator is saved momentarily until the 9866253690Sjkimvery 9867193267Sjkimnext ASL operator is executed. Therefore, no matter how the method exits, 9868193267Sjkimthere will always be a saved implicit return value. This feature is only 9869253690Sjkimenabled with the AcpiGbl_EnableInterpreterSlack flag, and should 9870253690Sjkimeliminate 9871193267SjkimAE_AML_NO_RETURN_VALUE errors when enabled. 9872151937Sjkim 9873253690SjkimImplemented implicit conversion support for the predicate (operand) of 9874253690Sjkimthe 9875241973SjkimIf, Else, and While operators. String and Buffer arguments are 9876241973Sjkimautomatically 9877193267Sjkimconverted to Integers. 9878151937Sjkim 9879193267SjkimChanged the string-to-integer conversion behavior to match the new ACPI 9880193267Sjkimerrata: "If no integer object exists, a new integer is created. The ASCII 9881193267Sjkimstring is interpreted as a hexadecimal constant. Each string character is 9882193267Sjkiminterpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 9883241973Sjkimwith the first character as the most significant digit, and ending with 9884241973Sjkimthe 9885241973Sjkimfirst non-hexadecimal character or end-of-string." This means that the 9886241973Sjkimfirst 9887193267Sjkimnon-hex character terminates the conversion and this is the code that was 9888193267Sjkimchanged. 9889151937Sjkim 9890253690SjkimFixed a problem where the ObjectType operator would fail (fault) when 9891253690Sjkimused 9892193267Sjkimon an Index of a Package which pointed to a null package element. The 9893193267Sjkimoperator now properly returns zero (Uninitialized) in this case. 9894151937Sjkim 9895193267SjkimFixed a problem where the While operator used excessive memory by not 9896241973Sjkimproperly popping the result stack during execution. There was no memory 9897241973Sjkimleak 9898193267Sjkimafter execution, however. (Code provided by Valery Podrezov.) 9899151937Sjkim 9900253690SjkimFixed a problem where references to control methods within Package 9901253690Sjkimobjects 9902193267Sjkimcaused the method to be invoked, instead of producing a reference object 9903193267Sjkimpointing to the method. 9904151937Sjkim 9905253690SjkimRestructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 9906253690Sjkimto 9907193267Sjkimimprove performance and reduce code size. (Code provided by Alexey 9908193267SjkimStarikovskiy.) 9909151937Sjkim 9910193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 9911253690Sjkimshown below. These are the code and data sizes for the acpica.lib 9912253690Sjkimproduced 9913193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 9914193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 9915241973Sjkimdebug output trace mechanism and has a much larger code and data size. 9916241973SjkimNote 9917241973Sjkimthat these values will vary depending on the efficiency of the compiler 9918241973Sjkimand 9919193267Sjkimthe compiler options used during generation. 9920151937Sjkim 9921151937Sjkim Previous Release: 9922151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9923151937Sjkim Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9924151937Sjkim Current Release: 9925151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9926151937Sjkim Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9927151937Sjkim 9928151937Sjkim 9929151937Sjkim2) iASL Compiler/Disassembler: 9930151937Sjkim 9931193267SjkimFixed a problem with the Return operator with no arguments. Since the AML 9932241973Sjkimgrammar for the byte encoding requires an operand for the Return opcode, 9933241973Sjkimthe 9934193267Sjkimcompiler now emits a Return(Zero) for this case. An ACPI specification 9935193267Sjkimupdate has been written for this case. 9936151937Sjkim 9937193267SjkimFor tables other than the DSDT, namepath optimization is automatically 9938241973Sjkimdisabled. This is because SSDTs can be loaded anywhere in the namespace, 9939241973Sjkimthe 9940193267Sjkimcompiler has no knowledge of where, and thus cannot optimize namepaths. 9941151937Sjkim 9942193267SjkimAdded "ProcessorObj" to the ObjectTypeKeyword list. This object type was 9943193267Sjkiminadvertently omitted from the ACPI specification, and will require an 9944193267Sjkimupdate to the spec. 9945151937Sjkim 9946241973SjkimThe source file scan for ASCII characters is now optional (-a). This 9947241973Sjkimchange 9948193267Sjkimwas made because some vendors place non-ascii characters within comments. 9949193267SjkimHowever, the scan is simply a brute-force byte compare to ensure all 9950193267Sjkimcharacters in the file are in the range 0x00 to 0x7F. 9951151937Sjkim 9952193267SjkimFixed a problem with the CondRefOf operator where the compiler was 9953241973Sjkiminappropriately checking for the existence of the target. Since the point 9954241973Sjkimof 9955193267Sjkimthe operator is to check for the existence of the target at run-time, the 9956193267Sjkimcompiler no longer checks for the target existence. 9957151937Sjkim 9958193267SjkimFixed a problem where errors generated from the internal AML interpreter 9959193267Sjkimduring constant folding were not handled properly, causing a fault. 9960151937Sjkim 9961193267SjkimFixed a problem with overly aggressive range checking for the Stall 9962241973Sjkimoperator. The valid range (max 255) is now only checked if the operand is 9963241973Sjkimof 9964193267Sjkimtype Integer. All other operand types cannot be statically checked. 9965151937Sjkim 9966253690SjkimFixed a problem where control method references within the RefOf, 9967253690SjkimDeRefOf, 9968241973Sjkimand ObjectType operators were not treated properly. They are now treated 9969241973Sjkimas 9970193267Sjkimactual references, not method invocations. 9971151937Sjkim 9972241973SjkimFixed and enhanced the "list namespace" option (-ln). This option was 9973241973Sjkimbroken 9974193267Sjkima number of releases ago. 9975151937Sjkim 9976241973SjkimImproved error handling for the Field, IndexField, and BankField 9977241973Sjkimoperators. 9978193267SjkimThe compiler now cleanly reports and recovers from errors in the field 9979193267Sjkimcomponent (FieldUnit) list. 9980151937Sjkim 9981193267SjkimFixed a disassembler problem where the optional ResourceDescriptor fields 9982193267SjkimTRS and TTP were not always handled correctly. 9983151937Sjkim 9984151937SjkimDisassembler - Comments in output now use "//" instead of "/*" 9985151937Sjkim 9986151937Sjkim---------------------------------------- 9987151937Sjkim28 February 2005. Summary of changes for version 20050228: 9988151937Sjkim 9989151937Sjkim1) ACPI CA Core Subsystem: 9990151937Sjkim 9991193267SjkimFixed a problem where the result of an Index() operator (an object 9992253690Sjkimreference) must increment the reference count on the target object for 9993253690Sjkimthe 9994193267Sjkimlife of the object reference. 9995151937Sjkim 9996193267SjkimImplemented AML Interpreter and Debugger support for the new ACPI 3.0 9997241973SjkimExtended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 9998241973SjkimWordSpace 9999193267Sjkimresource descriptors. 10000151937Sjkim 10001193267SjkimImplemented support in the _OSI method for the ACPI 3.0 "Extended Address 10002241973SjkimSpace Descriptor" string, indicating interpreter support for the 10003241973Sjkimdescriptors 10004193267Sjkimabove. 10005151937Sjkim 10006151937SjkimImplemented header support for the new ACPI 3.0 FADT flag bits. 10007151937Sjkim 10008241973SjkimImplemented header support for the new ACPI 3.0 PCI Express bits for the 10009241973SjkimPM1 10010193267Sjkimstatus/enable registers. 10011151937Sjkim 10012193267SjkimUpdated header support for the MADT processor local Apic struct and MADT 10013193267Sjkimplatform interrupt source struct for new ACPI 3.0 fields. 10014151937Sjkim 10015151937SjkimImplemented header support for the SRAT and SLIT ACPI tables. 10016151937Sjkim 10017241973SjkimImplemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10018241973Sjkimflag 10019193267Sjkimat runtime. 10020151937Sjkim 10021193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10022253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10023253690Sjkimproduced 10024193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10025193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10026241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10027241973SjkimNote 10028241973Sjkimthat these values will vary depending on the efficiency of the compiler 10029241973Sjkimand 10030193267Sjkimthe compiler options used during generation. 10031151937Sjkim 10032151937Sjkim Previous Release: 10033151937Sjkim Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10034151937Sjkim Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10035151937Sjkim Current Release: 10036151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10037151937Sjkim Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10038151937Sjkim 10039151937Sjkim 10040151937Sjkim2) iASL Compiler/Disassembler: 10041151937Sjkim 10042253690SjkimFixed a problem with the internal 64-bit String-to-integer conversion 10043253690Sjkimwith 10044193267Sjkimstrings less than two characters long. 10045151937Sjkim 10046193267SjkimFixed a problem with constant folding where the result of the Index() 10047241973Sjkimoperator can not be considered a constant. This means that Index() cannot 10048241973Sjkimbe 10049193267Sjkima type3 opcode and this will require an update to the ACPI specification. 10050151937Sjkim 10051193267SjkimDisassembler: Implemented support for the TTP, MTP, and TRS resource 10052241973Sjkimdescriptor fields. These fields were inadvertently ignored and not output 10053241973Sjkimin 10054193267Sjkimthe disassembly of the resource descriptor. 10055151937Sjkim 10056151937Sjkim 10057151937Sjkim ---------------------------------------- 10058151937Sjkim11 February 2005. Summary of changes for version 20050211: 10059151937Sjkim 10060151937Sjkim1) ACPI CA Core Subsystem: 10061151937Sjkim 10062193267SjkimImplemented ACPI 3.0 support for implicit conversion within the Match() 10063241973Sjkimoperator. MatchObjects can now be of type integer, buffer, or string 10064241973Sjkiminstead 10065241973Sjkimof just type integer. Package elements are implicitly converted to the 10066241973Sjkimtype 10067193267Sjkimof the MatchObject. This change aligns the behavior of Match() with the 10068241973Sjkimbehavior of the other logical operators (LLess(), etc.) It also requires 10069241973Sjkiman 10070193267Sjkimerrata change to the ACPI specification as this support was intended for 10071193267SjkimACPI 3.0, but was inadvertently omitted. 10072151937Sjkim 10073253690SjkimFixed a problem with the internal implicit "to buffer" conversion. 10074253690SjkimStrings 10075241973Sjkimthat are converted to buffers will cause buffer truncation if the string 10076241973Sjkimis 10077241973Sjkimsmaller than the target buffer. Integers that are converted to buffers 10078241973Sjkimwill 10079193267Sjkimnot cause buffer truncation, only zero extension (both as per the ACPI 10080193267Sjkimspec.) The problem was introduced when code was added to truncate the 10081241973Sjkimbuffer, but this should not be performed in all cases, only the string 10082241973Sjkimcase. 10083151937Sjkim 10084241973SjkimFixed a problem with the Buffer and Package operators where the 10085241973Sjkiminterpreter 10086193267Sjkimwould get confused if two such operators were used as operands to an ASL 10087193267Sjkimoperator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 10088241973Sjkimstack was not being popped after the execution of these operators, 10089241973Sjkimresulting 10090193267Sjkimin an AE_NO_RETURN_VALUE exception. 10091151937Sjkim 10092193267SjkimFixed a problem with constructs of the form Store(Index(...),...). The 10093241973Sjkimreference object returned from Index was inadvertently resolved to an 10094241973Sjkimactual 10095241973Sjkimvalue. This problem was introduced in version 20050114 when the behavior 10096241973Sjkimof 10097193267SjkimStore() was modified to restrict the object types that can be used as the 10098151937Sjkimsource operand (to match the ACPI specification.) 10099151937Sjkim 10100193267SjkimReduced excessive stack use within the AcpiGetObjectInfo procedure. 10101151937Sjkim 10102193267SjkimAdded a fix to aclinux.h to allow generation of AcpiExec on Linux. 10103151937Sjkim 10104193267SjkimUpdated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 10105151937Sjkim 10106193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10107253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10108253690Sjkimproduced 10109193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10110193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10111241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10112241973SjkimNote 10113241973Sjkimthat these values will vary depending on the efficiency of the compiler 10114241973Sjkimand 10115193267Sjkimthe compiler options used during generation. 10116151937Sjkim 10117151937Sjkim Previous Release: 10118151937Sjkim Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10119151937Sjkim Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10120151937Sjkim Current Release: 10121151937Sjkim Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10122151937Sjkim Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10123151937Sjkim 10124151937Sjkim 10125151937Sjkim2) iASL Compiler/Disassembler: 10126151937Sjkim 10127193267SjkimFixed a code generation problem in the constant folding optimization code 10128193267Sjkimwhere incorrect code was generated if a constant was reduced to a buffer 10129193267Sjkimobject (i.e., a reduced type 5 opcode.) 10130151937Sjkim 10131193267SjkimFixed a typechecking problem for the ToBuffer operator. Caused by an 10132193267Sjkimincorrect return type in the internal opcode information table. 10133151937Sjkim 10134151937Sjkim---------------------------------------- 10135151937Sjkim25 January 2005. Summary of changes for version 20050125: 10136151937Sjkim 10137151937Sjkim1) ACPI CA Core Subsystem: 10138151937Sjkim 10139193267SjkimFixed a recently introduced problem with the Global Lock where the 10140193267Sjkimunderlying semaphore was not created. This problem was introduced in 10141193267Sjkimversion 20050114, and caused an AE_AML_NO_OPERAND exception during an 10142193267SjkimAcquire() operation on _GL. 10143151937Sjkim 10144193267SjkimThe local object cache is now optional, and is disabled by default. Both 10145193267SjkimAcpiExec and the iASL compiler enable the cache because they run in user 10146253690Sjkimmode and this enhances their performance. #define 10147253690SjkimACPI_ENABLE_OBJECT_CACHE 10148193267Sjkimto enable the local cache. 10149151937Sjkim 10150241973SjkimFixed an issue in the internal function AcpiUtEvaluateObject concerning 10151241973Sjkimthe 10152241973Sjkimoptional "implicit return" support where an error was returned if no 10153241973Sjkimreturn 10154241973Sjkimobject was expected, but one was implicitly returned. AE_OK is now 10155241973Sjkimreturned 10156193267Sjkimin this case and the implicitly returned object is deleted. 10157241973SjkimAcpiUtEvaluateObject is only occasionally used, and only to execute 10158241973Sjkimreserved 10159193267Sjkimmethods such as _STA and _INI where the return type is known up front. 10160151937Sjkim 10161241973SjkimFixed a few issues with the internal convert-to-integer code. It now 10162241973Sjkimreturns 10163193267Sjkiman error if an attempt is made to convert a null string, a string of only 10164241973Sjkimblanks/tabs, or a zero-length buffer. This affects both implicit 10165241973Sjkimconversion 10166193267Sjkimand explicit conversion via the ToInteger() operator. 10167151937Sjkim 10168241973SjkimThe internal debug code in AcpiUtAcquireMutex has been commented out. It 10169241973Sjkimis 10170253690Sjkimnot needed for normal operation and should increase the performance of 10171253690Sjkimthe 10172253690Sjkimentire subsystem. The code remains in case it is needed for debug 10173253690Sjkimpurposes 10174193267Sjkimagain. 10175151937Sjkim 10176241973SjkimThe AcpiExec source and makefile are included in the Unix/Linux package 10177241973Sjkimfor 10178193267Sjkimthe first time. 10179151937Sjkim 10180193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10181253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10182253690Sjkimproduced 10183193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10184193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10185241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10186241973SjkimNote 10187241973Sjkimthat these values will vary depending on the efficiency of the compiler 10188241973Sjkimand 10189193267Sjkimthe compiler options used during generation. 10190151937Sjkim 10191151937Sjkim Previous Release: 10192151937Sjkim Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10193151937Sjkim Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10194151937Sjkim Current Release: 10195151937Sjkim Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 10196151937Sjkim Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 10197151937Sjkim 10198151937Sjkim2) iASL Compiler/Disassembler: 10199151937Sjkim 10200241973SjkimSwitch/Case support: A warning is now issued if the type of the Switch 10201241973Sjkimvalue 10202193267Sjkimcannot be determined at compile time. For example, Switch(Arg0) will 10203253690Sjkimgenerate the warning, and the type is assumed to be an integer. As per 10204253690Sjkimthe 10205241973SjkimACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 10206241973Sjkimthe 10207193267Sjkimwarning. 10208151937Sjkim 10209193267SjkimSwitch/Case support: Implemented support for buffer and string objects as 10210193267Sjkimthe switch value. This is an ACPI 3.0 feature, now that LEqual supports 10211193267Sjkimbuffers and strings. 10212151937Sjkim 10213241973SjkimSwitch/Case support: The emitted code for the LEqual() comparisons now 10214241973Sjkimuses 10215241973Sjkimthe switch value as the first operand, not the second. The case value is 10216241973Sjkimnow 10217193267Sjkimthe second operand, and this allows the case value to be implicitly 10218193267Sjkimconverted to the type of the switch value, not the other way around. 10219151937Sjkim 10220241973SjkimSwitch/Case support: Temporary variables are now emitted immediately 10221241973Sjkimwithin 10222253690Sjkimthe control method, not at the global level. This means that there are 10223253690Sjkimnow 10224241973Sjkim36 temps available per-method, not 36 temps per-module as was the case 10225241973Sjkimwith 10226193267Sjkimthe earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 10227151937Sjkim 10228151937Sjkim---------------------------------------- 10229151937Sjkim14 January 2005. Summary of changes for version 20050114: 10230151937Sjkim 10231193267SjkimAdded 2005 copyright to all module headers. This affects every module in 10232193267Sjkimthe core subsystem, iASL compiler, and the utilities. 10233151937Sjkim 10234151937Sjkim1) ACPI CA Core Subsystem: 10235151937Sjkim 10236193267SjkimFixed an issue with the String-to-Buffer conversion code where the string 10237253690Sjkimnull terminator was not included in the buffer after conversion, but 10238253690Sjkimthere 10239241973Sjkimis existing ASL that assumes the string null terminator is included. This 10240241973Sjkimis 10241193267Sjkimthe root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 10242193267Sjkimintroduced in the previous version when the code was updated to correctly 10243253690Sjkimset the converted buffer size as per the ACPI specification. The ACPI 10244253690Sjkimspec 10245241973Sjkimis ambiguous and will be updated to specify that the null terminator must 10246241973Sjkimbe 10247193267Sjkimincluded in the converted buffer. This also affects the ToBuffer() ASL 10248193267Sjkimoperator. 10249151937Sjkim 10250193267SjkimFixed a problem with the Mid() ASL/AML operator where it did not work 10251241973Sjkimcorrectly on Buffer objects. Newly created sub-buffers were not being 10252241973Sjkimmarked 10253193267Sjkimas initialized. 10254151937Sjkim 10255167802Sjkim 10256193267SjkimFixed a problem in AcpiTbFindTable where incorrect string compares were 10257241973Sjkimperformed on the OemId and OemTableId table header fields. These fields 10258241973Sjkimare 10259193267Sjkimnot null terminated, so strncmp is now used instead of strcmp. 10260151937Sjkim 10261193267SjkimImplemented a restriction on the Store() ASL/AML operator to align the 10262241973Sjkimbehavior with the ACPI specification. Previously, any object could be 10263241973Sjkimused 10264241973Sjkimas the source operand. Now, the only objects that may be used are 10265241973SjkimIntegers, 10266193267SjkimBuffers, Strings, Packages, Object References, and DDB Handles. If 10267193267Sjkimnecessary, the original behavior can be restored by enabling the 10268151937SjkimEnableInterpreterSlack flag. 10269151937Sjkim 10270241973SjkimEnhanced the optional "implicit return" support to allow an implicit 10271241973Sjkimreturn 10272193267Sjkimvalue from methods that are invoked externally via the AcpiEvaluateObject 10273193267Sjkiminterface. This enables implicit returns from the _STA and _INI methods, 10274193267Sjkimfor example. 10275151937Sjkim 10276241973SjkimChanged the Revision() ASL/AML operator to return the current version of 10277241973Sjkimthe 10278241973SjkimAML interpreter, in the YYYYMMDD format. Previously, it incorrectly 10279241973Sjkimreturned 10280193267Sjkimthe supported ACPI version (This is the function of the _REV method). 10281151937Sjkim 10282241973SjkimUpdated the _REV predefined method to return the currently supported 10283241973Sjkimversion 10284193267Sjkimof ACPI, now 3. 10285151937Sjkim 10286151937SjkimImplemented batch mode option for the AcpiExec utility (-b). 10287151937Sjkim 10288193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10289253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10290253690Sjkimproduced 10291193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10292193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10293241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10294241973SjkimNote 10295241973Sjkimthat these values will vary depending on the efficiency of the compiler 10296241973Sjkimand 10297193267Sjkimthe compiler options used during generation. 10298151937Sjkim 10299151937Sjkim Previous Release: 10300151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10301151937Sjkim Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10302151937Sjkim Current Release: 10303151937Sjkim Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 10304151937Sjkim Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 10305151937Sjkim 10306151937Sjkim---------------------------------------- 10307151937Sjkim10 December 2004. Summary of changes for version 20041210: 10308151937Sjkim 10309193267SjkimACPI 3.0 support is nearing completion in both the iASL compiler and the 10310193267SjkimACPI CA core subsystem. 10311151937Sjkim 10312151937Sjkim1) ACPI CA Core Subsystem: 10313151937Sjkim 10314253690SjkimFixed a problem in the ToDecimalString operator where the resulting 10315253690Sjkimstring 10316193267Sjkimlength was incorrectly calculated. The length is now calculated exactly, 10317193267Sjkimeliminating incorrect AE_STRING_LIMIT exceptions. 10318151937Sjkim 10319241973SjkimFixed a problem in the ToHexString operator to allow a maximum 200 10320241973Sjkimcharacter 10321193267Sjkimstring to be produced. 10322151937Sjkim 10323253690SjkimFixed a problem in the internal string-to-buffer and buffer-to-buffer 10324253690Sjkimcopy 10325193267Sjkimroutine where the length of the resulting buffer was not truncated to the 10326193267Sjkimnew size (if the target buffer already existed). 10327151937Sjkim 10328193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10329253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10330253690Sjkimproduced 10331193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10332193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10333241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10334241973SjkimNote 10335241973Sjkimthat these values will vary depending on the efficiency of the compiler 10336241973Sjkimand 10337193267Sjkimthe compiler options used during generation. 10338151937Sjkim 10339151937Sjkim Previous Release: 10340151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10341151937Sjkim Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10342151937Sjkim Current Release: 10343151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10344151937Sjkim Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 10345151937Sjkim 10346151937Sjkim 10347151937Sjkim2) iASL Compiler/Disassembler: 10348151937Sjkim 10349193267SjkimImplemented the new ACPI 3.0 resource template macros - DWordSpace, 10350193267SjkimExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 10351193267SjkimIncludes support in the disassembler. 10352151937Sjkim 10353241973SjkimImplemented support for the new (ACPI 3.0) parameter to the Register 10354241973Sjkimmacro, 10355193267SjkimAccessSize. 10356151937Sjkim 10357193267SjkimFixed a problem where the _HE resource name for the Interrupt macro was 10358193267Sjkimreferencing bit 0 instead of bit 1. 10359151937Sjkim 10360193267SjkimImplemented check for maximum 255 interrupts in the Interrupt macro. 10361151937Sjkim 10362193267SjkimFixed a problem with the predefined resource descriptor names where 10363193267Sjkimincorrect AML code was generated if the offset within the resource buffer 10364193267Sjkimwas 0 or 1. The optimizer shortened the AML code to a single byte opcode 10365193267Sjkimbut did not update the surrounding package lengths. 10366151937Sjkim 10367253690SjkimChanges to the Dma macro: All channels within the channel list must be 10368253690Sjkimin 10369193267Sjkimthe range 0-7. Maximum 8 channels can be specified. BusMaster operand is 10370193267Sjkimoptional (default is BusMaster). 10371151937Sjkim 10372193267SjkimImplemented check for maximum 7 data bytes for the VendorShort macro. 10373151937Sjkim 10374241973SjkimThe ReadWrite parameter is now optional for the Memory32 and similar 10375241973Sjkimmacros. 10376151937Sjkim 10377151937Sjkim---------------------------------------- 10378151937Sjkim03 December 2004. Summary of changes for version 20041203: 10379151937Sjkim 10380151937Sjkim1) ACPI CA Core Subsystem: 10381151937Sjkim 10382241973SjkimThe low-level field insertion/extraction code (exfldio) has been 10383241973Sjkimcompletely 10384193267Sjkimrewritten to eliminate unnecessary complexity, bugs, and boundary 10385193267Sjkimconditions. 10386151937Sjkim 10387241973SjkimFixed a problem in the ToInteger, ToBuffer, ToHexString, and 10388241973SjkimToDecimalString 10389193267Sjkimoperators where the input operand could be inadvertently deleted if no 10390193267Sjkimconversion was necessary (e.g., if the input to ToInteger was an Integer 10391193267Sjkimobject.) 10392151937Sjkim 10393241973SjkimFixed a problem with the ToDecimalString and ToHexString where an 10394241973Sjkimincorrect 10395193267Sjkimexception code was returned if the resulting string would be > 200 chars. 10396193267SjkimAE_STRING_LIMIT is now returned. 10397151937Sjkim 10398193267SjkimFixed a problem with the Concatenate operator where AE_OK was always 10399193267Sjkimreturned, even if the operation failed. 10400151937Sjkim 10401193267SjkimFixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 10402193267Sjkimsemaphores to be allocated. 10403151937Sjkim 10404193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10405253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10406253690Sjkimproduced 10407193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10408193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10409241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10410241973SjkimNote 10411241973Sjkimthat these values will vary depending on the efficiency of the compiler 10412241973Sjkimand 10413193267Sjkimthe compiler options used during generation. 10414151937Sjkim 10415151937Sjkim Previous Release: 10416151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10417151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10418151937Sjkim Current Release: 10419151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10420151937Sjkim Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 10421151937Sjkim 10422151937Sjkim 10423151937Sjkim2) iASL Compiler/Disassembler: 10424151937Sjkim 10425193267SjkimFixed typechecking for the ObjectType and SizeOf operators. Problem was 10426193267Sjkimrecently introduced in 20041119. 10427151937Sjkim 10428241973SjkimFixed a problem with the ToUUID macro where the upper nybble of each 10429241973Sjkimbuffer 10430193267Sjkimbyte was inadvertently set to zero. 10431151937Sjkim 10432151937Sjkim---------------------------------------- 10433138287Smarks19 November 2004. Summary of changes for version 20041119: 10434138287Smarks 10435138287Smarks1) ACPI CA Core Subsystem: 10436138287Smarks 10437241973SjkimFixed a problem in the internal ConvertToInteger routine where new 10438241973Sjkimintegers 10439241973Sjkimwere not truncated to 32 bits for 32-bit ACPI tables. This routine 10440241973Sjkimconverts 10441193267Sjkimbuffers and strings to integers. 10442138287Smarks 10443241973SjkimImplemented support to store a value to an Index() on a String object. 10444241973SjkimThis 10445193267Sjkimis an ACPI 2.0 feature that had not yet been implemented. 10446138287Smarks 10447241973SjkimImplemented new behavior for storing objects to individual package 10448241973Sjkimelements 10449241973Sjkim(via the Index() operator). The previous behavior was to invoke the 10450241973Sjkimimplicit 10451193267Sjkimconversion rules if an object was already present at the index. The new 10452241973Sjkimbehavior is to simply delete any existing object and directly store the 10453241973Sjkimnew 10454241973Sjkimobject. Although the ACPI specification seems unclear on this subject, 10455241973Sjkimother 10456193267SjkimACPI implementations behave in this manner. (This is the root of the 10457193267SjkimAE_BAD_HEX_CONSTANT issue.) 10458138287Smarks 10459241973SjkimModified the RSDP memory scan mechanism to support the extended checksum 10460241973Sjkimfor 10461193267SjkimACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 10462193267SjkimRSDP signature is found with a valid checksum. 10463138287Smarks 10464193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10465253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10466253690Sjkimproduced 10467193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10468193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10469241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10470241973SjkimNote 10471241973Sjkimthat these values will vary depending on the efficiency of the compiler 10472241973Sjkimand 10473193267Sjkimthe compiler options used during generation. 10474138287Smarks 10475151937Sjkim Previous Release: 10476151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10477151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10478151937Sjkim Current Release: 10479151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10480151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10481138287Smarks 10482138287Smarks 10483138287Smarks2) iASL Compiler/Disassembler: 10484138287Smarks 10485138287SmarksFixed a missing semicolon in the aslcompiler.y file. 10486138287Smarks 10487138287Smarks---------------------------------------- 10488138287Smarks05 November 2004. Summary of changes for version 20041105: 10489138287Smarks 10490138287Smarks1) ACPI CA Core Subsystem: 10491138287Smarks 10492241973SjkimImplemented support for FADT revision 2. This was an interim table 10493241973Sjkim(between 10494193267SjkimACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 10495138287Smarks 10496193267SjkimImplemented optional support to allow uninitialized LocalX and ArgX 10497241973Sjkimvariables in a control method. The variables are initialized to an 10498241973SjkimInteger 10499193267Sjkimobject with a value of zero. This support is enabled by setting the 10500193267SjkimAcpiGbl_EnableInterpreterSlack flag to TRUE. 10501138287Smarks 10502253690SjkimImplemented support for Integer objects for the SizeOf operator. Either 10503253690Sjkim4 10504253690Sjkimor 8 is returned, depending on the current integer size (32-bit or 64- 10505253690Sjkimbit, 10506193267Sjkimdepending on the parent table revision). 10507138287Smarks 10508241973SjkimFixed a problem in the implementation of the SizeOf and ObjectType 10509241973Sjkimoperators 10510193267Sjkimwhere the operand was resolved to a value too early, causing incorrect 10511193267Sjkimreturn values for some objects. 10512138287Smarks 10513138287SmarksFixed some possible memory leaks during exceptional conditions. 10514138287Smarks 10515193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10516253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10517253690Sjkimproduced 10518193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10519193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10520241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10521241973SjkimNote 10522241973Sjkimthat these values will vary depending on the efficiency of the compiler 10523241973Sjkimand 10524193267Sjkimthe compiler options used during generation. 10525138287Smarks 10526138287Smarks Previous Release: 10527138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10528138287Smarks Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10529138287Smarks Current Release: 10530138287Smarks Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10531138287Smarks Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10532138287Smarks 10533138287Smarks 10534138287Smarks2) iASL Compiler/Disassembler: 10535138287Smarks 10536138287SmarksImplemented support for all ACPI 3.0 reserved names and methods. 10537138287Smarks 10538193267SjkimImplemented all ACPI 3.0 grammar elements in the front-end, including 10539193267Sjkimsupport for semicolons. 10540138287Smarks 10541138287SmarksImplemented the ACPI 3.0 Function() and ToUUID() macros 10542138287Smarks 10543193267SjkimFixed a problem in the disassembler where a Scope() operator would not be 10544193267Sjkimemitted properly if the target of the scope was in another table. 10545138287Smarks 10546138287Smarks---------------------------------------- 10547138287Smarks15 October 2004. Summary of changes for version 20041015: 10548138287Smarks 10549193267SjkimNote: ACPI CA is currently undergoing an in-depth and complete formal 10550193267Sjkimevaluation to test/verify the following areas. Other suggestions are 10551193267Sjkimwelcome. This will result in an increase in the frequency of releases and 10552193267Sjkimthe number of bug fixes in the next few months. 10553138287Smarks - Functional tests for all ASL/AML operators 10554138287Smarks - All implicit/explicit type conversions 10555138287Smarks - Bit fields and operation regions 10556138287Smarks - 64-bit math support and 32-bit-only "truncated" math support 10557138287Smarks - Exceptional conditions, both compiler and interpreter 10558138287Smarks - Dynamic object deletion and memory leaks 10559138287Smarks - ACPI 3.0 support when implemented 10560138287Smarks - External interfaces to the ACPI subsystem 10561138287Smarks 10562138287Smarks 10563138287Smarks1) ACPI CA Core Subsystem: 10564138287Smarks 10565241973SjkimFixed two alignment issues on 64-bit platforms - within debug statements 10566241973Sjkimin 10567241973SjkimAcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 10568241973SjkimAddress 10569193267Sjkimfield within the non-aligned ACPI generic address structure. 10570138287Smarks 10571193267SjkimFixed a problem in the Increment and Decrement operators where incorrect 10572193267Sjkimoperand resolution could result in the inadvertent modification of the 10573193267Sjkimoriginal integer when the integer is passed into another method as an 10574193267Sjkimargument and the arg is then incremented/decremented. 10575138287Smarks 10576241973SjkimFixed a problem in the FromBCD operator where the upper 32-bits of a 64- 10577241973Sjkimbit 10578193267SjkimBCD number were truncated during conversion. 10579138287Smarks 10580241973SjkimFixed a problem in the ToDecimal operator where the length of the 10581241973Sjkimresulting 10582253690Sjkimstring could be set incorrectly too long if the input operand was a 10583253690SjkimBuffer 10584193267Sjkimobject. 10585138287Smarks 10586241973SjkimFixed a problem in the Logical operators (LLess, etc.) where a NULL byte 10587241973Sjkim(0) 10588193267Sjkimwithin a buffer would prematurely terminate a compare between buffer 10589193267Sjkimobjects. 10590138287Smarks 10591193267SjkimAdded a check for string overflow (>200 characters as per the ACPI 10592193267Sjkimspecification) during the Concatenate operator with two string operands. 10593138287Smarks 10594193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10595253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10596253690Sjkimproduced 10597193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10598193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10599241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10600241973SjkimNote 10601241973Sjkimthat these values will vary depending on the efficiency of the compiler 10602241973Sjkimand 10603193267Sjkimthe compiler options used during generation. 10604138287Smarks 10605138287Smarks Previous Release: 10606138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10607138287Smarks Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10608138287Smarks Current Release: 10609138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10610138287Smarks Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10611138287Smarks 10612138287Smarks 10613167802Sjkim 10614138287Smarks2) iASL Compiler/Disassembler: 10615138287Smarks 10616193267SjkimAllow the use of the ObjectType operator on uninitialized Locals and Args 10617193267Sjkim(returns 0 as per the ACPI specification). 10618138287Smarks 10619253690SjkimFixed a problem where the compiler would fault if there was a syntax 10620253690Sjkimerror 10621193267Sjkimin the FieldName of all of the various CreateXXXField operators. 10622138287Smarks 10623253690SjkimDisallow the use of lower case letters within the EISAID macro, as per 10624253690Sjkimthe 10625241973SjkimACPI specification. All EISAID strings must be of the form "UUUNNNN" 10626241973SjkimWhere 10627193267SjkimU is an uppercase letter and N is a hex digit. 10628138287Smarks 10629138287Smarks 10630138287Smarks---------------------------------------- 10631138287Smarks06 October 2004. Summary of changes for version 20041006: 10632138287Smarks 10633138287Smarks1) ACPI CA Core Subsystem: 10634138287Smarks 10635193267SjkimImplemented support for the ACPI 3.0 Timer operator. This ASL function 10636193267Sjkimimplements a 64-bit timer with 100 nanosecond granularity. 10637138287Smarks 10638193267SjkimDefined a new OSL interface, AcpiOsGetTimer. This interface is used to 10639241973Sjkimimplement the ACPI 3.0 Timer operator. This allows the host OS to 10640241973Sjkimimplement 10641253690Sjkimthe timer with the best clock available. Also, it keeps the core 10642253690Sjkimsubsystem 10643193267Sjkimout of the clock handling business, since the host OS (usually) performs 10644193267Sjkimthis function. 10645138287Smarks 10646193267SjkimFixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 10647193267Sjkimfunctions use a 64-bit address which is part of the packed ACPI Generic 10648241973SjkimAddress Structure. Since the structure is non-aligned, the alignment 10649241973Sjkimmacros 10650193267Sjkimare now used to extract the address to a local variable before use. 10651138287Smarks 10652241973SjkimFixed a problem where the ToInteger operator assumed all input strings 10653241973Sjkimwere 10654253690Sjkimhexadecimal. The operator now handles both decimal strings and hex 10655253690Sjkimstrings 10656193267Sjkim(prefixed with "0x"). 10657138287Smarks 10658193267SjkimFixed a problem where the string length in the string object created as a 10659193267Sjkimresult of the internal ConvertToString procedure could be incorrect. This 10660253690Sjkimpotentially affected all implicit conversions and also the 10661253690SjkimToDecimalString 10662193267Sjkimand ToHexString operators. 10663138287Smarks 10664193267SjkimFixed two problems in the ToString operator. If the length parameter was 10665193267Sjkimzero, an incorrect string object was created and the value of the input 10666193267Sjkimlength parameter was inadvertently changed from zero to Ones. 10667138287Smarks 10668241973SjkimFixed a problem where the optional ResourceSource string in the 10669241973SjkimExtendedIRQ 10670193267Sjkimresource macro was ignored. 10671138287Smarks 10672241973SjkimSimplified the interfaces to the internal division functions, reducing 10673241973Sjkimcode 10674193267Sjkimsize and complexity. 10675138287Smarks 10676193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10677253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10678253690Sjkimproduced 10679193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10680193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10681241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10682241973SjkimNote 10683241973Sjkimthat these values will vary depending on the efficiency of the compiler 10684241973Sjkimand 10685193267Sjkimthe compiler options used during generation. 10686138287Smarks 10687138287Smarks Previous Release: 10688138287Smarks Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10689138287Smarks Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10690138287Smarks Current Release: 10691138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10692138287Smarks Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10693138287Smarks 10694138287Smarks 10695138287Smarks2) iASL Compiler/Disassembler: 10696138287Smarks 10697138287SmarksImplemented support for the ACPI 3.0 Timer operator. 10698138287Smarks 10699241973SjkimFixed a problem where the Default() operator was inadvertently ignored in 10700241973Sjkima 10701193267SjkimSwitch/Case block. This was a problem in the translation of the Switch 10702193267Sjkimstatement to If...Else pairs. 10703138287Smarks 10704241973SjkimAdded support to allow a standalone Return operator, with no parentheses 10705241973Sjkim(or 10706193267Sjkimoperands). 10707138287Smarks 10708193267SjkimFixed a problem with code generation for the ElseIf operator where the 10709193267Sjkimtranslated Else...If parse tree was improperly constructed leading to the 10710193267Sjkimloss of some code. 10711138287Smarks 10712138287Smarks---------------------------------------- 10713138287Smarks22 September 2004. Summary of changes for version 20040922: 10714138287Smarks 10715138287Smarks1) ACPI CA Core Subsystem: 10716138287Smarks 10717241973SjkimFixed a problem with the implementation of the LNot() operator where 10718241973Sjkim"Ones" 10719241973Sjkimwas not returned for the TRUE case. Changed the code to return Ones 10720241973Sjkiminstead 10721241973Sjkimof (!Arg) which was usually 1. This change affects iASL constant folding 10722241973Sjkimfor 10723193267Sjkimthis operator also. 10724138287Smarks 10725253690SjkimFixed a problem in AcpiUtInitializeBuffer where an existing buffer was 10726253690Sjkimnot 10727193267Sjkiminitialized properly -- Now zero the entire buffer in this case where the 10728193267Sjkimbuffer already exists. 10729138287Smarks 10730193267SjkimChanged the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 10731193267SjkimMilliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 10732193267Sjkimrelated code considerably. This will require changes/updates to all OS 10733193267Sjkiminterface layers (OSLs.) 10734138287Smarks 10735241973SjkimImplemented a new external interface, AcpiInstallExceptionHandler, to 10736241973Sjkimallow 10737241973Sjkima system exception handler to be installed. This handler is invoked upon 10738241973Sjkimany 10739193267Sjkimrun-time exception that occurs during control method execution. 10740138287Smarks 10741193267SjkimAdded support for the DSDT in AcpiTbFindTable. This allows the 10742138287SmarksDataTableRegion() operator to access the local copy of the DSDT. 10743138287Smarks 10744193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10745253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10746253690Sjkimproduced 10747193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10748193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10749241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10750241973SjkimNote 10751241973Sjkimthat these values will vary depending on the efficiency of the compiler 10752241973Sjkimand 10753193267Sjkimthe compiler options used during generation. 10754138287Smarks 10755138287Smarks Previous Release: 10756138287Smarks Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10757138287Smarks Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10758138287Smarks Current Release: 10759138287Smarks Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10760138287Smarks Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10761138287Smarks 10762138287Smarks 10763138287Smarks2) iASL Compiler/Disassembler: 10764138287Smarks 10765193267SjkimFixed a problem with constant folding and the LNot operator. LNot was 10766253690Sjkimreturning 1 in the TRUE case, not Ones as per the ACPI specification. 10767253690SjkimThis 10768193267Sjkimcould result in the generation of an incorrect folded/reduced constant. 10769138287Smarks 10770193267SjkimEnd-Of-File is now allowed within a "//"-style comment. A parse error no 10771253690Sjkimlonger occurs if such a comment is at the very end of the input ASL 10772253690Sjkimsource 10773193267Sjkimfile. 10774138287Smarks 10775193267SjkimImplemented the "-r" option to override the Revision in the table header. 10776241973SjkimThe initial use of this option will be to simplify the evaluation of the 10777241973SjkimAML 10778241973Sjkiminterpreter by allowing a single ASL source module to be compiled for 10779241973Sjkimeither 10780193267Sjkim32-bit or 64-bit integers. 10781138287Smarks 10782138287Smarks 10783138287Smarks---------------------------------------- 10784138287Smarks27 August 2004. Summary of changes for version 20040827: 10785138287Smarks 10786138287Smarks1) ACPI CA Core Subsystem: 10787138287Smarks 10788193267Sjkim- Implemented support for implicit object conversion in the non-numeric 10789253690Sjkimlogical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 10790253690Sjkimand 10791193267SjkimLNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 10792253690Sjkimthe second operand is implicitly converted on the fly to match the type 10793253690Sjkimof 10794193267Sjkimthe first operand. For example: 10795138287Smarks 10796138287Smarks LEqual (Source1, Source2) 10797138287Smarks 10798241973SjkimSource1 and Source2 must each evaluate to an integer, a string, or a 10799241973Sjkimbuffer. 10800253690SjkimThe data type of Source1 dictates the required type of Source2. Source2 10801253690Sjkimis 10802193267Sjkimimplicitly converted if necessary to match the type of Source1. 10803138287Smarks 10804241973Sjkim- Updated and corrected the behavior of the string conversion support. 10805241973SjkimThe 10806193267Sjkimrules concerning conversion of buffers to strings (according to the ACPI 10807193267Sjkimspecification) are as follows: 10808138287Smarks 10809193267SjkimToDecimalString - explicit byte-wise conversion of buffer to string of 10810241973Sjkimdecimal values (0-255) separated by commas. ToHexString - explicit byte- 10811241973Sjkimwise 10812193267Sjkimconversion of buffer to string of hex values (0-FF) separated by commas. 10813241973SjkimToString - explicit byte-wise conversion of buffer to string. Byte-by- 10814241973Sjkimbyte 10815241973Sjkimcopy with no transform except NULL terminated. Any other implicit buffer- 10816241973Sjkimto- 10817253690Sjkimstring conversion - byte-wise conversion of buffer to string of hex 10818253690Sjkimvalues 10819193267Sjkim(0-FF) separated by spaces. 10820138287Smarks 10821138287Smarks- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 10822138287Smarks 10823253690Sjkim- Fixed a problem in AcpiNsGetPathnameLength where the returned length 10824253690Sjkimwas 10825193267Sjkimone byte too short in the case of a node in the root scope. This could 10826193267Sjkimcause a fault during debug output. 10827138287Smarks 10828241973Sjkim- Code and Data Size: Current and previous core subsystem library sizes 10829241973Sjkimare 10830241973Sjkimshown below. These are the code and data sizes for the acpica.lib 10831241973Sjkimproduced 10832193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10833193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10834241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10835241973SjkimNote 10836241973Sjkimthat these values will vary depending on the efficiency of the compiler 10837241973Sjkimand 10838193267Sjkimthe compiler options used during generation. 10839138287Smarks 10840138287Smarks Previous Release: 10841138287Smarks Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10842138287Smarks Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10843138287Smarks Current Release: 10844138287Smarks Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10845138287Smarks Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10846138287Smarks 10847138287Smarks 10848138287Smarks2) iASL Compiler/Disassembler: 10849138287Smarks 10850138287Smarks- Fixed a Linux generation error. 10851138287Smarks 10852138287Smarks 10853138287Smarks---------------------------------------- 10854138287Smarks16 August 2004. Summary of changes for version 20040816: 10855138287Smarks 10856138287Smarks1) ACPI CA Core Subsystem: 10857138287Smarks 10858193267SjkimDesigned and implemented support within the AML interpreter for the so- 10859253690Sjkimcalled "implicit return". This support returns the result of the last 10860253690SjkimASL 10861193267Sjkimoperation within a control method, in the absence of an explicit Return() 10862193267Sjkimoperator. A few machines depend on this behavior, even though it is not 10863253690Sjkimexplicitly supported by the ASL language. It is optional support that 10864253690Sjkimcan 10865193267Sjkimbe enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 10866138287Smarks 10867241973SjkimRemoved support for the PCI_Config address space from the internal low 10868241973Sjkimlevel 10869193267Sjkimhardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 10870241973Sjkimsupport was not used internally, and would not work correctly anyway 10871241973Sjkimbecause 10872193267Sjkimthe PCI bus number and segment number were not supported. There are 10873241973Sjkimseparate interfaces for PCI configuration space access because of the 10874241973Sjkimunique 10875138287Smarksinterface. 10876138287Smarks 10877193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10878241973Sjkimshown below. These are the code and data sizes for the acpica.lib 10879241973Sjkimproduced 10880193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10881193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10882241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10883241973SjkimNote 10884241973Sjkimthat these values will vary depending on the efficiency of the compiler 10885241973Sjkimand 10886193267Sjkimthe compiler options used during generation. 10887138287Smarks 10888138287Smarks Previous Release: 10889138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10890138287Smarks Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10891138287Smarks Current Release: 10892138287Smarks Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10893138287Smarks Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10894138287Smarks 10895138287Smarks 10896138287Smarks2) iASL Compiler/Disassembler: 10897138287Smarks 10898193267SjkimFixed a problem where constants in ASL expressions at the root level (not 10899193267Sjkimwithin a control method) could be inadvertently truncated during code 10900193267Sjkimgeneration. This problem was introduced in the 20040715 release. 10901138287Smarks 10902138287Smarks 10903138287Smarks---------------------------------------- 10904138287Smarks15 July 2004. Summary of changes for version 20040715: 10905138287Smarks 10906138287Smarks1) ACPI CA Core Subsystem: 10907138287Smarks 10908241973SjkimRestructured the internal HW GPE interfaces to pass/track the current 10909241973Sjkimstate 10910193267Sjkimof interrupts (enabled/disabled) in order to avoid possible deadlock and 10911193267Sjkimincrease flexibility of the interfaces. 10912138287Smarks 10913241973SjkimImplemented a "lexicographical compare" for String and Buffer objects 10914241973Sjkimwithin 10915253690Sjkimthe logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 10916253690Sjkim- 10917241973Sjkimas per further clarification to the ACPI specification. Behavior is 10918241973Sjkimsimilar 10919193267Sjkimto C library "strcmp". 10920138287Smarks 10921193267SjkimCompleted a major reduction in CPU stack use for the AcpiGetFirmwareTable 10922193267Sjkimexternal function. In the 32-bit non-debug case, the stack use has been 10923193267Sjkimreduced from 168 bytes to 32 bytes. 10924138287Smarks 10925241973SjkimDeployed a new run-time configuration flag, 10926241973SjkimAcpiGbl_EnableInterpreterSlack, 10927193267Sjkimwhose purpose is to allow the AML interpreter to forgive certain bad AML 10928193267Sjkimconstructs. Default setting is FALSE. 10929138287Smarks 10930241973SjkimImplemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 10931241973SjkimIO 10932241973Sjkimsupport code. If enabled, it allows field access to go beyond the end of 10933241973Sjkima 10934241973Sjkimregion definition if the field is within the region length rounded up to 10935241973Sjkimthe 10936193267Sjkimnext access width boundary (a common coding error.) 10937138287Smarks 10938193267SjkimRenamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 10939241973SjkimACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 10940241973Sjkimthese 10941193267Sjkimsymbols are lowercased by the latest version of the AcpiSrc tool. 10942138287Smarks 10943193267SjkimThe prototypes for the PCI interfaces in acpiosxf.h have been updated to 10944193267Sjkimrename "Register" to simply "Reg" to prevent certain compilers from 10945193267Sjkimcomplaining. 10946138287Smarks 10947193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10948241973Sjkimshown below. These are the code and data sizes for the acpica.lib 10949241973Sjkimproduced 10950193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10951193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10952241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10953241973SjkimNote 10954241973Sjkimthat these values will vary depending on the efficiency of the compiler 10955241973Sjkimand 10956193267Sjkimthe compiler options used during generation. 10957138287Smarks 10958138287Smarks Previous Release: 10959138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10960138287Smarks Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10961138287Smarks Current Release: 10962138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10963138287Smarks Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10964138287Smarks 10965138287Smarks 10966138287Smarks2) iASL Compiler/Disassembler: 10967138287Smarks 10968193267SjkimImplemented full support for Package objects within the Case() operator. 10969193267SjkimNote: The Break() operator is currently not supported within Case blocks 10970241973Sjkim(TermLists) as there is some question about backward compatibility with 10971241973SjkimACPI 10972193267Sjkim1.0 interpreters. 10973138287Smarks 10974167802Sjkim 10975253690SjkimFixed a problem where complex terms were not supported properly within 10976253690Sjkimthe 10977193267SjkimSwitch() operator. 10978138287Smarks 10979193267SjkimEliminated extraneous warning for compiler-emitted reserved names of the 10980193267Sjkimform "_T_x". (Used in Switch/Case operators.) 10981138287Smarks 10982193267SjkimEliminated optimization messages for "_T_x" objects and small constants 10983193267Sjkimwithin the DefinitionBlock operator. 10984138287Smarks 10985138287Smarks 10986138287Smarks---------------------------------------- 10987138287Smarks15 June 2004. Summary of changes for version 20040615: 10988138287Smarks 10989138287Smarks1) ACPI CA Core Subsystem: 10990138287Smarks 10991241973SjkimImplemented support for Buffer and String objects (as per ACPI 2.0) for 10992241973Sjkimthe 10993193267Sjkimfollowing ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10994193267SjkimLLessEqual. 10995138287Smarks 10996193267SjkimAll directory names in the entire source package are lower case, as they 10997193267Sjkimwere in earlier releases. 10998138287Smarks 10999241973SjkimImplemented "Disassemble" command in the AML debugger that will 11000241973Sjkimdisassemble 11001193267Sjkima single control method. 11002138287Smarks 11003193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11004241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11005241973Sjkimproduced 11006193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11007193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11008241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11009241973SjkimNote 11010241973Sjkimthat these values will vary depending on the efficiency of the compiler 11011241973Sjkimand 11012193267Sjkimthe compiler options used during generation. 11013138287Smarks 11014138287Smarks Previous Release: 11015138287Smarks Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11016138287Smarks Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11017167802Sjkim 11018138287Smarks Current Release: 11019138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11020138287Smarks Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11021138287Smarks 11022138287Smarks 11023138287Smarks2) iASL Compiler/Disassembler: 11024138287Smarks 11025241973SjkimImplemented support for Buffer and String objects (as per ACPI 2.0) for 11026241973Sjkimthe 11027193267Sjkimfollowing ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11028193267SjkimLLessEqual. 11029138287Smarks 11030193267SjkimAll directory names in the entire source package are lower case, as they 11031193267Sjkimwere in earlier releases. 11032138287Smarks 11033193267SjkimFixed a fault when using the -g or -d<nofilename> options if the FADT was 11034193267Sjkimnot found. 11035138287Smarks 11036241973SjkimFixed an issue with the Windows version of the compiler where later 11037241973Sjkimversions 11038193267Sjkimof Windows place the FADT in the registry under the name "FADT" and not 11039193267Sjkim"FACP" as earlier versions did. This applies when using the -g or - 11040193267Sjkimd<nofilename> options. The compiler now looks for both strings as 11041193267Sjkimnecessary. 11042138287Smarks 11043241973SjkimFixed a problem with compiler namepath optimization where a namepath 11044241973Sjkimwithin 11045241973Sjkimthe Scope() operator could not be optimized if the namepath was a subpath 11046241973Sjkimof 11047193267Sjkimthe current scope path. 11048138287Smarks 11049138287Smarks---------------------------------------- 11050131440Smarks27 May 2004. Summary of changes for version 20040527: 11051131440Smarks 11052131440Smarks1) ACPI CA Core Subsystem: 11053131440Smarks 11054241973SjkimCompleted a new design and implementation for EBDA (Extended BIOS Data 11055241973SjkimArea) 11056241973Sjkimsupport in the RSDP scan code. The original code improperly scanned for 11057241973Sjkimthe 11058241973SjkimEBDA by simply scanning from memory location 0 to 0x400. The correct 11059241973Sjkimmethod 11060193267Sjkimis to first obtain the EBDA pointer from within the BIOS data area, then 11061253690Sjkimscan 1K of memory starting at the EBDA pointer. There appear to be few 11062253690Sjkimif 11063131440Smarksany machines that place the RSDP in the EBDA, however. 11064131440Smarks 11065193267SjkimIntegrated a fix for a possible fault during evaluation of BufferField 11066193267Sjkimarguments. Obsolete code that was causing the problem was removed. 11067131440Smarks 11068193267SjkimFound and fixed a problem in the Field Support Code where data could be 11069193267Sjkimcorrupted on a bit field read that starts on an aligned boundary but does 11070193267Sjkimnot end on an aligned boundary. Merged the read/write "datum length" 11071193267Sjkimcalculation code into a common procedure. 11072131440Smarks 11073131440SmarksRolled in a couple of changes to the FreeBSD-specific header. 11074131440Smarks 11075167802Sjkim 11076193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11077241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11078241973Sjkimproduced 11079193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11080193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11081241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11082241973SjkimNote 11083241973Sjkimthat these values will vary depending on the efficiency of the compiler 11084241973Sjkimand 11085193267Sjkimthe compiler options used during generation. 11086131440Smarks 11087131440Smarks Previous Release: 11088131440Smarks Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11089131440Smarks Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11090131440Smarks Current Release: 11091131440Smarks Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11092131440Smarks Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11093131440Smarks 11094131440Smarks 11095131440Smarks2) iASL Compiler/Disassembler: 11096131440Smarks 11097253690SjkimFixed a generation warning produced by some overly-verbose compilers for 11098253690Sjkima 11099193267Sjkim64-bit constant. 11100131440Smarks 11101131440Smarks---------------------------------------- 11102129684Snjl14 May 2004. Summary of changes for version 20040514: 11103129684Snjl 11104129684Snjl1) ACPI CA Core Subsystem: 11105129684Snjl 11106193267SjkimFixed a problem where hardware GPE enable bits sometimes not set properly 11107193267Sjkimduring and after GPE method execution. Result of 04/27 changes. 11108129684Snjl 11109129684SnjlRemoved extra "clear all GPEs" when sleeping/waking. 11110129684Snjl 11111193267SjkimRemoved AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 11112241973SjkimAcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 11113241973Sjkimto 11114193267Sjkimthe new AcpiEv* calls as appropriate. 11115129684Snjl 11116241973SjkimACPI_OS_NAME was removed from the OS-specific headers. The default name 11117241973Sjkimis 11118253690Sjkimnow "Microsoft Windows NT" for maximum compatibility. However this can 11119253690Sjkimbe 11120193267Sjkimchanged by modifying the acconfig.h file. 11121129684Snjl 11122193267SjkimAllow a single invocation of AcpiInstallNotifyHandler for a handler that 11123193267Sjkimtraps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 11124129684Snjl 11125193267SjkimRun _INI methods on ThermalZone objects. This is against the ACPI 11126241973Sjkimspecification, but there is apparently ASL code in the field that has 11127241973Sjkimthese 11128193267Sjkim_INI methods, and apparently "other" AML interpreters execute them. 11129129684Snjl 11130193267SjkimPerformed a full 16/32/64 bit lint that resulted in some small changes. 11131129684Snjl 11132193267SjkimAdded a sleep simulation command to the AML debugger to test sleep code. 11133129684Snjl 11134193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11135241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11136241973Sjkimproduced 11137193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11138193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11139241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11140241973SjkimNote 11141241973Sjkimthat these values will vary depending on the efficiency of the compiler 11142241973Sjkimand 11143193267Sjkimthe compiler options used during generation. 11144129684Snjl 11145129684Snjl Previous Release: 11146129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11147129684Snjl Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11148129684Snjl Current Release: 11149129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11150129684Snjl Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 11151129684Snjl 11152129684Snjl---------------------------------------- 11153129684Snjl27 April 2004. Summary of changes for version 20040427: 11154129684Snjl 11155129684Snjl1) ACPI CA Core Subsystem: 11156129684Snjl 11157193267SjkimCompleted a major overhaul of the GPE handling within ACPI CA. There are 11158241973Sjkimnow three types of GPEs: wake-only, runtime-only, and combination 11159241973Sjkimwake/run. 11160193267SjkimThe only GPEs allowed to be combination wake/run are for button-style 11161241973Sjkimdevices such as a control-method power button, control-method sleep 11162241973Sjkimbutton, 11163241973Sjkimor a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 11164241973Sjkimnot 11165193267Sjkimreferenced by any _PRW methods are marked for "runtime" and hardware 11166253690Sjkimenabled. Any GPE that is referenced by a _PRW method is marked for 11167253690Sjkim"wake" 11168193267Sjkim(and disabled at runtime). However, at sleep time, only those GPEs that 11169241973Sjkimhave been specifically enabled for wake via the AcpiEnableGpe interface 11170241973Sjkimwill 11171193267Sjkimactually be hardware enabled. 11172129684Snjl 11173241973SjkimA new external interface has been added, AcpiSetGpeType(), that is meant 11174241973Sjkimto 11175253690Sjkimbe used by device drivers to force a GPE to a particular type. It will 11176253690Sjkimbe 11177193267Sjkimespecially useful for the drivers for the button devices mentioned above. 11178129684Snjl 11179193267SjkimCompleted restructuring of the ACPI CA initialization sequence so that 11180241973Sjkimdefault operation region handlers are installed before GPEs are 11181241973Sjkiminitialized 11182253690Sjkimand the _PRW methods are executed. This will prevent errors when the 11183253690Sjkim_PRW 11184193267Sjkimmethods attempt to access system memory or I/O space. 11185129684Snjl 11186241973SjkimGPE enable/disable no longer reads the GPE enable register. We now keep 11187241973Sjkimthe 11188193267Sjkimenable info for runtime and wake separate and in the GPE_EVENT_INFO. We 11189193267Sjkimthus no longer depend on the hardware to maintain these bits. 11190129684Snjl 11191193267SjkimAlways clear the wake status and fixed/GPE status bits before sleep, even 11192193267Sjkimfor state S5. 11193129684Snjl 11194193267SjkimImproved the AML debugger output for displaying the GPE blocks and their 11195193267Sjkimcurrent status. 11196129684Snjl 11197241973SjkimAdded new strings for the _OSI method, of the form "Windows 2001 SPx" 11198241973Sjkimwhere 11199193267Sjkimx = 0,1,2,3,4. 11200129684Snjl 11201253690SjkimFixed a problem where the physical address was incorrectly calculated 11202253690Sjkimwhen 11203241973Sjkimthe Load() operator was used to directly load from an Operation Region 11204241973Sjkim(vs. 11205241973Sjkimloading from a Field object.) Also added check for minimum table length 11206241973Sjkimfor 11207193267Sjkimthis case. 11208129684Snjl 11209193267SjkimFix for multiple mutex acquisition. Restore original thread SyncLevel on 11210193267Sjkimmutex release. 11211129684Snjl 11212193267SjkimAdded ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 11213129684Snjlconsistency with the other fields returned. 11214129684Snjl 11215193267SjkimShrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 11216193267Sjkimstructure for each GPE in the system, so the size of this structure is 11217193267Sjkimimportant. 11218129684Snjl 11219241973SjkimCPU stack requirement reduction: Cleaned up the method execution and 11220241973Sjkimobject 11221193267Sjkimevaluation paths so that now a parameter structure is passed, instead of 11222193267Sjkimcopying the various method parameters over and over again. 11223129684Snjl 11224193267SjkimIn evregion.c: Correctly exit and reenter the interpreter region if and 11225241973Sjkimonly if dispatching an operation region request to a user-installed 11226241973Sjkimhandler. 11227193267SjkimDo not exit/reenter when dispatching to a default handler (e.g., default 11228193267Sjkimsystem memory or I/O handlers) 11229129684Snjl 11230129684Snjl 11231253690SjkimNotes for updating drivers for the new GPE support. The following 11232253690Sjkimchanges 11233241973Sjkimmust be made to ACPI-related device drivers that are attached to one or 11234241973Sjkimmore 11235241973SjkimGPEs: (This information will be added to the ACPI CA Programmer 11236241973SjkimReference.) 11237129684Snjl 11238253690Sjkim1) AcpiInstallGpeHandler no longer automatically enables the GPE, you 11239253690Sjkimmust 11240193267Sjkimexplicitly call AcpiEnableGpe. 11241193267Sjkim2) There is a new interface called AcpiSetGpeType. This should be called 11242193267Sjkimbefore enabling the GPE. Also, this interface will automatically disable 11243193267Sjkimthe GPE if it is currently enabled. 11244129684Snjl3) AcpiEnableGpe no longer supports a GPE type flag. 11245129684Snjl 11246129684SnjlSpecific drivers that must be changed: 11247129684Snjl1) EC driver: 11248193267Sjkim AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 11249129684SnjlAeGpeHandler, NULL); 11250129684Snjl AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 11251129684Snjl AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 11252129684Snjl 11253129684Snjl2) Button Drivers (Power, Lid, Sleep): 11254129684SnjlRun _PRW method under parent device 11255129684SnjlIf _PRW exists: /* This is a control-method button */ 11256129684Snjl Extract GPE number and possibly GpeDevice 11257129684Snjl AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 11258129684Snjl AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 11259129684Snjl 11260241973SjkimFor all other devices that have _PRWs, we automatically set the GPE type 11261241973Sjkimto 11262253690SjkimACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 11263253690SjkimThis 11264253690Sjkimmust be done on a selective basis, usually requiring some kind of user 11265253690Sjkimapp 11266193267Sjkimto allow the user to pick the wake devices. 11267129684Snjl 11268129684Snjl 11269193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11270241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11271241973Sjkimproduced 11272193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11273193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11274241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11275241973SjkimNote 11276241973Sjkimthat these values will vary depending on the efficiency of the compiler 11277241973Sjkimand 11278193267Sjkimthe compiler options used during generation. 11279129684Snjl 11280129684Snjl Previous Release: 11281129684Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11282129684Snjl Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11283129684Snjl Current Release: 11284167802Sjkim 11285129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 11286129684Snjl Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 11287129684Snjl 11288129684Snjl 11289129684Snjl 11290129684Snjl---------------------------------------- 11291128212Snjl02 April 2004. Summary of changes for version 20040402: 11292128212Snjl 11293128212Snjl1) ACPI CA Core Subsystem: 11294128212Snjl 11295193267SjkimFixed an interpreter problem where an indirect store through an ArgX 11296193267Sjkimparameter was incorrectly applying the "implicit conversion rules" during 11297241973Sjkimthe store. From the ACPI specification: "If the target is a method local 11298241973Sjkimor 11299193267Sjkimargument (LocalX or ArgX), no conversion is performed and the result is 11300193267Sjkimstored directly to the target". The new behavior is to disable implicit 11301193267Sjkimconversion during ALL stores to an ArgX. 11302128212Snjl 11303193267SjkimChanged the behavior of the _PRW method scan to ignore any and all errors 11304193267Sjkimreturned by a given _PRW. This prevents the scan from aborting from the 11305193267Sjkimfailure of any single _PRW. 11306128212Snjl 11307241973SjkimMoved the runtime configuration parameters from the global init procedure 11308241973Sjkimto 11309193267Sjkimstatic variables in acglobal.h. This will allow the host to override the 11310193267Sjkimdefault values easily. 11311128212Snjl 11312193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11313241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11314241973Sjkimproduced 11315193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11316193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11317241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11318241973SjkimNote 11319241973Sjkimthat these values will vary depending on the efficiency of the compiler 11320241973Sjkimand 11321193267Sjkimthe compiler options used during generation. 11322128212Snjl 11323128212Snjl Previous Release: 11324128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11325128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11326128212Snjl Current Release: 11327128212Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 11328128212Snjl Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 11329128212Snjl 11330128212Snjl 11331128212Snjl2) iASL Compiler/Disassembler: 11332128212Snjl 11333253690SjkimiASL now fully disassembles SSDTs. However, External() statements are 11334253690Sjkimnot 11335193267Sjkimgenerated automatically for unresolved symbols at this time. This is a 11336193267Sjkimplanned feature for future implementation. 11337128212Snjl 11338241973SjkimFixed a scoping problem in the disassembler that occurs when the type of 11339241973Sjkimthe 11340193267Sjkimtarget of a Scope() operator is overridden. This problem caused an 11341193267Sjkimincorrectly nested internal namespace to be constructed. 11342128212Snjl 11343241973SjkimAny warnings or errors that are emitted during disassembly are now 11344241973Sjkimcommented 11345253690Sjkimout automatically so that the resulting file can be recompiled without 11346253690Sjkimany 11347193267Sjkimhand editing. 11348128212Snjl 11349128212Snjl---------------------------------------- 11350128212Snjl26 March 2004. Summary of changes for version 20040326: 11351128212Snjl 11352128212Snjl1) ACPI CA Core Subsystem: 11353128212Snjl 11354193267SjkimImplemented support for "wake" GPEs via interaction between GPEs and the 11355193267Sjkim_PRW methods. Every GPE that is pointed to by one or more _PRWs is 11356193267Sjkimidentified as a WAKE GPE and by default will no longer be enabled at 11357241973Sjkimruntime. Previously, we were blindly enabling all GPEs with a 11358241973Sjkimcorresponding 11359241973Sjkim_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 11360241973SjkimWe 11361193267Sjkimbelieve this has been the cause of thousands of "spurious" GPEs on some 11362128212Snjlsystems. 11363128212Snjl 11364193267SjkimThis new GPE behavior is can be reverted to the original behavior (enable 11365193267SjkimALL GPEs at runtime) via a runtime flag. 11366128212Snjl 11367193267SjkimFixed a problem where aliased control methods could not access objects 11368193267Sjkimproperly. The proper scope within the namespace was not initialized 11369193267Sjkim(transferred to the target of the aliased method) before executing the 11370193267Sjkimtarget method. 11371128212Snjl 11372253690SjkimFixed a potential race condition on internal object deletion on the 11373253690Sjkimreturn 11374193267Sjkimobject in AcpiEvaluateObject. 11375128212Snjl 11376193267SjkimIntegrated a fix for resource descriptors where both _MEM and _MTP were 11377193267Sjkimbeing extracted instead of just _MEM. (i.e. bitmask was incorrectly too 11378193267Sjkimwide, 0x0F instead of 0x03.) 11379128212Snjl 11380253690SjkimAdded a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 11381253690Sjkimpreventing 11382241973Sjkima 11383193267Sjkimfault in some cases. 11384128212Snjl 11385128212SnjlUpdated Notify() values for debug statements in evmisc.c 11386128212Snjl 11387193267SjkimReturn proper status from AcpiUtMutexInitialize, not just simply AE_OK. 11388128212Snjl 11389193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11390241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11391241973Sjkimproduced 11392193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11393193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11394241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11395241973SjkimNote 11396241973Sjkimthat these values will vary depending on the efficiency of the compiler 11397241973Sjkimand 11398193267Sjkimthe compiler options used during generation. 11399128212Snjl 11400128212Snjl Previous Release: 11401167802Sjkim 11402128212Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11403128212Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11404128212Snjl Current Release: 11405128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 11406128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 11407128212Snjl 11408128212Snjl---------------------------------------- 11409127175Snjl11 March 2004. Summary of changes for version 20040311: 11410127175Snjl 11411127175Snjl1) ACPI CA Core Subsystem: 11412127175Snjl 11413193267SjkimFixed a problem where errors occurring during the parse phase of control 11414193267Sjkimmethod execution did not abort cleanly. For example, objects created and 11415193267Sjkiminstalled in the namespace were not deleted. This caused all subsequent 11416193267Sjkiminvocations of the method to return the AE_ALREADY_EXISTS exception. 11417127175Snjl 11418241973SjkimImplemented a mechanism to force a control method to "Serialized" 11419241973Sjkimexecution 11420193267Sjkimif the method attempts to create namespace objects. (The root of the 11421193267SjkimAE_ALREADY_EXISTS problem.) 11422127175Snjl 11423193267SjkimImplemented support for the predefined _OSI "internal" control method. 11424253690SjkimInitial supported strings are "Linux", "Windows 2000", "Windows 2001", 11425253690Sjkimand 11426253690Sjkim"Windows 2001.1", and can be easily upgraded for new strings as 11427253690Sjkimnecessary. 11428193267SjkimThis feature will allow "other" operating systems to execute the fully 11429193267Sjkimtested, "Windows" code path through the ASL code 11430127175Snjl 11431193267SjkimGlobal Lock Support: Now allows multiple acquires and releases with any 11432241973Sjkiminternal thread. Removed concept of "owning thread" for this special 11433241973Sjkimmutex. 11434127175Snjl 11435241973SjkimFixed two functions that were inappropriately declaring large objects on 11436241973Sjkimthe 11437241973SjkimCPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 11438241973Sjkimduring 11439193267Sjkimmethod execution considerably. 11440127175Snjl 11441193267SjkimFixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 11442193267SjkimS4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 11443127175Snjl 11444193267SjkimFixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 11445193267Sjkimdefined on the machine. 11446127175Snjl 11447241973SjkimImplemented two runtime options: One to force all control method 11448241973Sjkimexecution 11449253690Sjkimto "Serialized" to mimic Windows behavior, another to disable _OSI 11450253690Sjkimsupport 11451193267Sjkimif it causes problems on a given machine. 11452127175Snjl 11453193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11454241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11455241973Sjkimproduced 11456193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11457193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11458241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11459241973SjkimNote 11460241973Sjkimthat these values will vary depending on the efficiency of the compiler 11461241973Sjkimand 11462193267Sjkimthe compiler options used during generation. 11463127175Snjl 11464127175Snjl Previous Release: 11465127175Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11466127175Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11467127175Snjl Current Release: 11468127175Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 11469127175Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 11470127175Snjl 11471127175Snjl2) iASL Compiler/Disassembler: 11472127175Snjl 11473193267SjkimFixed an array size problem for FreeBSD that would cause the compiler to 11474193267Sjkimfault. 11475127175Snjl 11476127175Snjl---------------------------------------- 11477126372Snjl20 February 2004. Summary of changes for version 20040220: 11478126372Snjl 11479167802Sjkim 11480126372Snjl1) ACPI CA Core Subsystem: 11481126372Snjl 11482193267SjkimImplemented execution of _SxD methods for Device objects in the 11483126372SnjlGetObjectInfo interface. 11484126372Snjl 11485126372SnjlFixed calls to _SST method to pass the correct arguments. 11486126372Snjl 11487126372SnjlAdded a call to _SST on wake to restore to "working" state. 11488126372Snjl 11489193267SjkimCheck for End-Of-Buffer failure case in the WalkResources interface. 11490126372Snjl 11491193267SjkimIntegrated fix for 64-bit alignment issue in acglobal.h by moving two 11492193267Sjkimstructures to the beginning of the file. 11493126372Snjl 11494126372SnjlAfter wake, clear GPE status register(s) before enabling GPEs. 11495126372Snjl 11496241973SjkimAfter wake, clear/enable power button. (Perhaps we should clear/enable 11497241973Sjkimall 11498193267Sjkimfixed events upon wake.) 11499126372Snjl 11500126372SnjlFixed a couple of possible memory leaks in the Namespace manager. 11501126372Snjl 11502126372SnjlIntegrated latest acnetbsd.h file. 11503126372Snjl 11504126372Snjl---------------------------------------- 11505126372Snjl11 February 2004. Summary of changes for version 20040211: 11506126372Snjl 11507167802Sjkim 11508126372Snjl1) ACPI CA Core Subsystem: 11509126372Snjl 11510193267SjkimCompleted investigation and implementation of the call-by-reference 11511193267Sjkimmechanism for control method arguments. 11512126372Snjl 11513193267SjkimFixed a problem where a store of an object into an indexed package could 11514193267Sjkimfail if the store occurs within a different method than the method that 11515193267Sjkimcreated the package. 11516126372Snjl 11517241973SjkimFixed a problem where the ToDecimal operator could return incorrect 11518241973Sjkimresults. 11519126372Snjl 11520241973SjkimFixed a problem where the CopyObject operator could fail on some of the 11521241973Sjkimmore 11522193267Sjkimobscure objects (e.g., Reference objects.) 11523126372Snjl 11524193267SjkimImproved the output of the Debug object to display buffer, package, and 11525193267Sjkimindex objects. 11526126372Snjl 11527253690SjkimFixed a problem where constructs of the form "RefOf (ArgX)" did not 11528253690Sjkimreturn 11529193267Sjkimthe expected result. 11530126372Snjl 11531193267SjkimAdded permanent ACPI_REPORT_ERROR macros for all instances of the 11532126372SnjlACPI_AML_INTERNAL exception. 11533126372Snjl 11534126372SnjlIntegrated latest version of acfreebsd.h 11535126372Snjl 11536126372Snjl---------------------------------------- 11537126372Snjl16 January 2004. Summary of changes for version 20040116: 11538126372Snjl 11539193267SjkimThe purpose of this release is primarily to update the copyright years in 11540193267Sjkimeach module, thus causing a huge number of diffs. There are a few small 11541193267Sjkimfunctional changes, however. 11542126372Snjl 11543126372Snjl1) ACPI CA Core Subsystem: 11544126372Snjl 11545253690SjkimImproved error messages when there is a problem finding one or more of 11546253690Sjkimthe 11547193267Sjkimrequired base ACPI tables 11548126372Snjl 11549126372SnjlReintroduced the definition of APIC_HEADER in actbl.h 11550126372Snjl 11551126372SnjlChanged definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 11552126372Snjl 11553126372SnjlRemoved extraneous reference to NewObj in dsmthdat.c 11554126372Snjl 11555126372Snjl2) iASL compiler 11556126372Snjl 11557241973SjkimFixed a problem introduced in December that disabled the correct 11558241973Sjkimdisassembly 11559193267Sjkimof Resource Templates 11560126372Snjl 11561126372Snjl 11562126372Snjl---------------------------------------- 11563126372Snjl03 December 2003. Summary of changes for version 20031203: 11564126372Snjl 11565126372Snjl1) ACPI CA Core Subsystem: 11566126372Snjl 11567126372SnjlChanged the initialization of Operation Regions during subsystem 11568126372Snjlinit to perform two entire walks of the ACPI namespace; The first 11569126372Snjlto initialize the regions themselves, the second to execute the 11570126372Snjl_REG methods. This fixed some interdependencies across _REG 11571126372Snjlmethods found on some machines. 11572126372Snjl 11573126372SnjlFixed a problem where a Store(Local0, Local1) could simply update 11574126372Snjlthe object reference count, and not create a new copy of the 11575126372Snjlobject if the Local1 is uninitialized. 11576126372Snjl 11577126372SnjlImplemented support for the _SST reserved method during sleep 11578126372Snjltransitions. 11579126372Snjl 11580126372SnjlImplemented support to clear the SLP_TYP and SLP_EN bits when 11581126372Snjlwaking up, this is apparently required by some machines. 11582126372Snjl 11583193267SjkimWhen sleeping, clear the wake status only if SleepState is not S5. 11584126372Snjl 11585126372SnjlFixed a problem in AcpiRsExtendedIrqResource() where an incorrect 11586126372Snjlpointer arithmetic advanced a string pointer too far. 11587126372Snjl 11588126372SnjlFixed a problem in AcpiTbGetTablePtr() where a garbage pointer 11589126372Snjlcould be returned if the requested table has not been loaded. 11590126372Snjl 11591193267SjkimWithin the support for IRQ resources, restructured the handling of 11592126372Snjlthe active and edge/level bits. 11593126372Snjl 11594126372SnjlFixed a few problems in AcpiPsxExecute() where memory could be 11595126372Snjlleaked under certain error conditions. 11596126372Snjl 11597126372SnjlImproved error messages for the cases where the ACPI mode could 11598126372Snjlnot be entered. 11599126372Snjl 11600126372SnjlCode and Data Size: Current and previous core subsystem library 11601126372Snjlsizes are shown below. These are the code and data sizes for the 11602126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11603126372Snjlthese values do not include any ACPI driver or OSPM code. The 11604126372Snjldebug version of the code includes the debug output trace 11605126372Snjlmechanism and has a much larger code and data size. Note that 11606193267Sjkimthese values will vary depending on the efficiency of the compiler 11607126372Snjland the compiler options used during generation. 11608126372Snjl 11609126372Snjl Previous Release (20031029): 11610126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11611126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11612126372Snjl Current Release: 11613126372Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11614126372Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11615126372Snjl 11616126372Snjl2) iASL Compiler/Disassembler: 11617126372Snjl 11618126372SnjlImplemented a fix for the iASL disassembler where a bad index was 11619126372Snjlgenerated. This was most noticeable on 64-bit platforms 11620126372Snjl 11621126372Snjl 11622126372Snjl---------------------------------------- 11623126372Snjl29 October 2003. Summary of changes for version 20031029: 11624126372Snjl 11625126372Snjl1) ACPI CA Core Subsystem: 11626126372Snjl 11627167802Sjkim 11628126372SnjlFixed a problem where a level-triggered GPE with an associated 11629126372Snjl_Lxx control method was incorrectly cleared twice. 11630126372Snjl 11631126372SnjlFixed a problem with the Field support code where an access can 11632126372Snjloccur beyond the end-of-region if the field is non-aligned but 11633126372Snjlextends to the very end of the parent region (resulted in an 11634126372SnjlAE_AML_REGION_LIMIT exception.) 11635126372Snjl 11636126372SnjlFixed a problem with ACPI Fixed Events where an RT Clock handler 11637193267Sjkimwould not get invoked on an RTC event. The RTC event bitmasks for 11638126372Snjlthe PM1 registers were not being initialized properly. 11639126372Snjl 11640126372SnjlImplemented support for executing _STA and _INI methods for 11641126372SnjlProcessor objects. Although this is currently not part of the 11642193267SjkimACPI specification, there is existing ASL code that depends on the 11643126372Snjlinit-time execution of these methods. 11644126372Snjl 11645126372SnjlImplemented and deployed a GetDescriptorName function to decode 11646126372Snjlthe various types of internal descriptors. Guards against null 11647126372Snjldescriptors during debug output also. 11648126372Snjl 11649126372SnjlImplemented and deployed a GetNodeName function to extract the 4- 11650193267Sjkimcharacter namespace node name. This function simplifies the debug 11651193267Sjkimand error output, as well as guarding against null pointers during 11652126372Snjloutput. 11653126372Snjl 11654126372SnjlImplemented and deployed the ACPI_FORMAT_UINT64 helper macro to 11655126372Snjlsimplify the debug and error output of 64-bit integers. This 11656126372Snjlmacro replaces the HIDWORD and LODWORD macros for dumping these 11657126372Snjlintegers. 11658126372Snjl 11659126372SnjlUpdated the implementation of the Stall() operator to only call 11660126372SnjlAcpiOsStall(), and also return an error if the operand is larger 11661126372Snjlthan 255. This preserves the required behavior of not 11662126372Snjlrelinquishing the processor, as would happen if AcpiOsSleep() was 11663126372Snjlcalled for "long stalls". 11664126372Snjl 11665126372SnjlConstructs of the form "Store(LocalX,LocalX)" where LocalX is not 11666126372Snjlinitialized are now treated as NOOPs. 11667126372Snjl 11668126372SnjlCleaned up a handful of warnings during 64-bit generation. 11669126372Snjl 11670126372SnjlFixed a reported error where and incorrect GPE number was passed 11671126372Snjlto the GPE dispatch handler. This value is only used for error 11672193267Sjkimoutput, however. Used this opportunity to clean up and streamline 11673126372Snjlthe GPE dispatch code. 11674126372Snjl 11675126372SnjlCode and Data Size: Current and previous core subsystem library 11676126372Snjlsizes are shown below. These are the code and data sizes for the 11677126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11678126372Snjlthese values do not include any ACPI driver or OSPM code. The 11679167802Sjkim 11680126372Snjldebug version of the code includes the debug output trace 11681126372Snjlmechanism and has a much larger code and data size. Note that 11682193267Sjkimthese values will vary depending on the efficiency of the compiler 11683126372Snjland the compiler options used during generation. 11684126372Snjl 11685126372Snjl Previous Release (20031002): 11686126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11687126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11688126372Snjl Current Release: 11689126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11690126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11691126372Snjl 11692126372Snjl 11693126372Snjl2) iASL Compiler/Disassembler: 11694126372Snjl 11695193267SjkimUpdated the iASL compiler to return an error if the operand to the 11696126372SnjlStall() operator is larger than 255. 11697126372Snjl 11698126372Snjl 11699126372Snjl---------------------------------------- 11700126372Snjl02 October 2003. Summary of changes for version 20031002: 11701126372Snjl 11702126372Snjl 11703126372Snjl1) ACPI CA Core Subsystem: 11704126372Snjl 11705126372SnjlFixed a problem with Index Fields where the index was not 11706126372Snjlincremented for fields that require multiple writes to the 11707126372Snjlindex/data registers (Fields that are wider than the data 11708126372Snjlregister.) 11709126372Snjl 11710126372SnjlFixed a problem with all Field objects where a write could go 11711126372Snjlbeyond the end-of-field if the field was larger than the access 11712193267Sjkimgranularity and therefore required multiple writes to complete the 11713126372Snjlrequest. An extra write beyond the end of the field could happen 11714126372Snjlinadvertently. 11715126372Snjl 11716126372SnjlFixed a problem with Index Fields where a BUFFER_OVERFLOW error 11717126372Snjlwould incorrectly be returned if the width of the Data Register 11718126372Snjlwas larger than the specified field access width. 11719126372Snjl 11720126372SnjlCompleted fixes for LoadTable() and Unload() and verified their 11721126372Snjloperation. Implemented full support for the "DdbHandle" object 11722126372Snjlthroughout the ACPI CA subsystem. 11723126372Snjl 11724126372SnjlImplemented full support for the MADT and ECDT tables in the ACPI 11725126372SnjlCA header files. Even though these tables are not directly 11726126372Snjlconsumed by ACPI CA, the header definitions are useful for ACPI 11727126372Snjldevice drivers. 11728126372Snjl 11729126372SnjlIntegrated resource descriptor fixes posted to the Linux ACPI 11730126372Snjllist. This included checks for minimum descriptor length, and 11731126372Snjlsupport for trailing NULL strings within descriptors that have 11732126372Snjloptional string elements. 11733126372Snjl 11734126372SnjlCode and Data Size: Current and previous core subsystem library 11735126372Snjlsizes are shown below. These are the code and data sizes for the 11736126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11737126372Snjlthese values do not include any ACPI driver or OSPM code. The 11738126372Snjldebug version of the code includes the debug output trace 11739126372Snjlmechanism and has a much larger code and data size. Note that 11740193267Sjkimthese values will vary depending on the efficiency of the compiler 11741126372Snjland the compiler options used during generation. 11742126372Snjl 11743126372Snjl Previous Release (20030918): 11744126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11745126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11746126372Snjl Current Release: 11747126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11748126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11749126372Snjl 11750126372Snjl 11751126372Snjl2) iASL Compiler: 11752126372Snjl 11753126372SnjlImplemented detection of non-ASCII characters within the input 11754126372Snjlsource ASL file. This catches attempts to compile binary (AML) 11755126372Snjlfiles early in the compile, with an informative error message. 11756126372Snjl 11757126372SnjlFixed a problem where the disassembler would fault if the output 11758193267Sjkimfilename could not be generated or if the output file could not be 11759126372Snjlopened. 11760126372Snjl 11761126372Snjl---------------------------------------- 11762126372Snjl18 September 2003. Summary of changes for version 20030918: 11763126372Snjl 11764126372Snjl 11765126372Snjl1) ACPI CA Core Subsystem: 11766126372Snjl 11767126372SnjlFound and fixed a longstanding problem with the late execution of 11768126372Snjlthe various deferred AML opcodes (such as Operation Regions, 11769126372SnjlBuffer Fields, Buffers, and Packages). If the name string 11770126372Snjlspecified for the name of the new object placed the object in a 11771126372Snjlscope other than the current scope, the initialization/execution 11772126372Snjlof the opcode failed. The solution to this problem was to 11773126372Snjlimplement a mechanism where the late execution of such opcodes 11774126372Snjldoes not attempt to lookup/create the name a second time in an 11775126372Snjlincorrect scope. This fixes the "region size computed 11776126372Snjlincorrectly" problem. 11777126372Snjl 11778193267SjkimFixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 11779126372SnjlGlobal Lock AE_BAD_PARAMETER error. 11780126372Snjl 11781126372SnjlFixed several 64-bit issues with prototypes, casting and data 11782126372Snjltypes. 11783126372Snjl 11784126372SnjlRemoved duplicate prototype from acdisasm.h 11785126372Snjl 11786126372SnjlFixed an issue involving EC Operation Region Detach (Shaohua Li) 11787126372Snjl 11788126372SnjlCode and Data Size: Current and previous core subsystem library 11789126372Snjlsizes are shown below. These are the code and data sizes for the 11790126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11791126372Snjlthese values do not include any ACPI driver or OSPM code. The 11792126372Snjldebug version of the code includes the debug output trace 11793126372Snjlmechanism and has a much larger code and data size. Note that 11794193267Sjkimthese values will vary depending on the efficiency of the compiler 11795126372Snjland the compiler options used during generation. 11796126372Snjl 11797126372Snjl Previous Release: 11798167802Sjkim 11799126372Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11800126372Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11801126372Snjl Current Release: 11802126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11803126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11804126372Snjl 11805126372Snjl 11806126372Snjl2) Linux: 11807126372Snjl 11808126372SnjlFixed the AcpiOsSleep implementation in osunixxf.c to pass the 11809126372Snjlcorrect sleep time in seconds. 11810126372Snjl 11811126372Snjl---------------------------------------- 11812126372Snjl14 July 2003. Summary of changes for version 20030619: 11813126372Snjl 11814126372Snjl1) ACPI CA Core Subsystem: 11815126372Snjl 11816126372SnjlParse SSDTs in order discovered, as opposed to reverse order 11817126372Snjl(Hrvoje Habjanic) 11818126372Snjl 11819126372SnjlFixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 11820126372SnjlKlausner, 11821126372Snjl Nate Lawson) 11822126372Snjl 11823126372Snjl 11824126372Snjl2) Linux: 11825126372Snjl 11826126372SnjlDynamically allocate SDT list (suggested by Andi Kleen) 11827126372Snjl 11828126372Snjlproc function return value cleanups (Andi Kleen) 11829126372Snjl 11830126372SnjlCorrectly handle NMI watchdog during long stalls (Andrew Morton) 11831126372Snjl 11832126372SnjlMake it so acpismp=force works (reported by Andrew Morton) 11833126372Snjl 11834126372Snjl 11835126372Snjl---------------------------------------- 11836117521Snjl19 June 2003. Summary of changes for version 20030619: 11837117521Snjl 11838117521Snjl1) ACPI CA Core Subsystem: 11839117521Snjl 11840193267SjkimFix To/FromBCD, eliminating the need for an arch-specific #define. 11841117521Snjl 11842117521SnjlDo not acquire a semaphore in the S5 shutdown path. 11843117521Snjl 11844117521SnjlFix ex_digits_needed for 0. (Takayoshi Kochi) 11845117521Snjl 11846117521SnjlFix sleep/stall code reversal. (Andi Kleen) 11847117521Snjl 11848117521SnjlRevert a change having to do with control method calling 11849117521Snjlsemantics. 11850117521Snjl 11851117521Snjl2) Linux: 11852117521Snjl 11853117521Snjlacpiphp update (Takayoshi Kochi) 11854117521Snjl 11855117521SnjlExport acpi_disabled for sonypi (Stelian Pop) 11856117521Snjl 11857117521SnjlMention acpismp=force in config help 11858117521Snjl 11859117521SnjlRe-add acpitable.c and acpismp=force. This improves backwards 11860167802Sjkim 11861193267Sjkimcompatibility and also cleans up the code to a significant degree. 11862117521Snjl 11863117521SnjlAdd ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 11864117521Snjl 11865117521Snjl---------------------------------------- 11866117521Snjl22 May 2003. Summary of changes for version 20030522: 11867117521Snjl 11868117521Snjl1) ACPI CA Core Subsystem: 11869117521Snjl 11870117521SnjlFound and fixed a reported problem where an AE_NOT_FOUND error 11871117521Snjloccurred occasionally during _BST evaluation. This turned out to 11872117521Snjlbe an Owner ID allocation issue where a called method did not get 11873193267Sjkima new ID assigned to it. Eventually, (after 64k calls), the Owner 11874193267SjkimID UINT16 would wraparound so that the ID would be the same as the 11875126372Snjlcaller's and the called method would delete the caller's 11876117521Snjlnamespace. 11877117521Snjl 11878117521SnjlImplemented extended error reporting for control methods that are 11879117521Snjlaborted due to a run-time exception. Output includes the exact 11880193267SjkimAML instruction that caused the method abort, a dump of the method 11881126372Snjllocals and arguments at the time of the abort, and a trace of all 11882126372Snjlnested control method calls. 11883117521Snjl 11884117521SnjlModified the interpreter to allow the creation of buffers of zero 11885117521Snjllength from the AML code. Implemented new code to ensure that no 11886117521Snjlattempt is made to actually allocate a memory buffer (of length 11887193267Sjkimzero) - instead, a simple buffer object with a NULL buffer pointer 11888126372Snjland length zero is created. A warning is no longer issued when 11889126372Snjlthe AML attempts to create a zero-length buffer. 11890117521Snjl 11891117521SnjlImplemented a workaround for the "leading asterisk issue" in 11892117521Snjl_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 11893117521Snjlasterisk is automatically removed if present in any HID, UID, or 11894117521SnjlCID strings. The iASL compiler will still flag this asterisk as 11895117521Snjlan error, however. 11896117521Snjl 11897193267SjkimImplemented full support for _CID methods that return a package of 11898193267Sjkimmultiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 11899126372Snjlnow additionally returns a device _CID list if present. This 11900126372Snjlrequired a change to the external interface in order to pass an 11901126372SnjlACPI_BUFFER object as a parameter since the _CID list is of 11902117521Snjlvariable length. 11903117521Snjl 11904117521SnjlFixed a problem with the new AE_SAME_HANDLER exception where 11905117521Snjlhandler initialization code did not know about this exception. 11906117521Snjl 11907117521SnjlCode and Data Size: Current and previous core subsystem library 11908117521Snjlsizes are shown below. These are the code and data sizes for the 11909117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11910117521Snjlthese values do not include any ACPI driver or OSPM code. The 11911117521Snjldebug version of the code includes the debug output trace 11912117521Snjlmechanism and has a much larger code and data size. Note that 11913193267Sjkimthese values will vary depending on the efficiency of the compiler 11914126372Snjland the compiler options used during generation. 11915117521Snjl 11916117521Snjl Previous Release (20030509): 11917117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11918117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11919117521Snjl Current Release: 11920117521Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11921117521Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11922117521Snjl 11923117521Snjl 11924117521Snjl2) Linux: 11925117521Snjl 11926117521SnjlFixed a bug in which we would reinitialize the ACPI interrupt 11927193267Sjkimafter it was already working, thus disabling all ACPI and the IRQs 11928126372Snjlfor any other device sharing the interrupt. (Thanks to Stian 11929117521SnjlJordet) 11930117521Snjl 11931117521SnjlToshiba driver update (John Belmonte) 11932117521Snjl 11933117521SnjlReturn only 0 or 1 for our interrupt handler status (Andrew 11934117521SnjlMorton) 11935117521Snjl 11936117521Snjl 11937117521Snjl3) iASL Compiler: 11938117521Snjl 11939117521SnjlFixed a reported problem where multiple (nested) ElseIf() 11940117521Snjlstatements were not handled correctly by the compiler, resulting 11941117521Snjlin incorrect warnings and incorrect AML code. This was a problem 11942117521Snjlin both the ASL parser and the code generator. 11943117521Snjl 11944117521Snjl 11945117521Snjl4) Documentation: 11946117521Snjl 11947193267SjkimAdded changes to existing interfaces, new exception codes, and new 11948126372Snjltext concerning reference count object management versus garbage 11949126372Snjlcollection. 11950117521Snjl 11951117521Snjl---------------------------------------- 11952117521Snjl09 May 2003. Summary of changes for version 20030509. 11953117521Snjl 11954117521Snjl 11955117521Snjl1) ACPI CA Core Subsystem: 11956117521Snjl 11957117521SnjlChanged the subsystem initialization sequence to hold off 11958193267Sjkiminstallation of address space handlers until the hardware has been 11959193267Sjkiminitialized and the system has entered ACPI mode. This is because 11960126372Snjlthe installation of space handlers can cause _REG methods to be 11961193267Sjkimrun. Previously, the _REG methods could potentially be run before 11962126372SnjlACPI mode was enabled. 11963117521Snjl 11964193267SjkimFixed some memory leak issues related to address space handler and 11965126372Snjlnotify handler installation. There were some problems with the 11966126372Snjlreference count mechanism caused by the fact that the handler 11967117521Snjlobjects are shared across several namespace objects. 11968117521Snjl 11969117521SnjlFixed a reported problem where reference counts within the 11970117521Snjlnamespace were not properly updated when named objects created by 11971117521Snjlmethod execution were deleted. 11972117521Snjl 11973117521SnjlFixed a reported problem where multiple SSDTs caused a deletion 11974117521Snjlissue during subsystem termination. Restructured the table data 11975117521Snjlstructures to simplify the linked lists and the related code. 11976117521Snjl 11977117521SnjlFixed a problem where the table ID associated with secondary 11978193267Sjkimtables (SSDTs) was not being propagated into the namespace objects 11979126372Snjlcreated by those tables. This would only present a problem for 11980126372Snjltables that are unloaded at run-time, however. 11981117521Snjl 11982117521SnjlUpdated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 11983117521Snjltype as the length parameter (instead of UINT32). 11984117521Snjl 11985117521SnjlSolved a long-standing problem where an ALREADY_EXISTS error 11986117521Snjlappears on various systems. This problem could happen when there 11987117521Snjlare multiple PCI_Config operation regions under a single PCI root 11988117521Snjlbus. This doesn't happen very frequently, but there are some 11989117521Snjlsystems that do this in the ASL. 11990117521Snjl 11991117521SnjlFixed a reported problem where the internal DeleteNode function 11992117521Snjlwas incorrectly handling the case where a namespace node was the 11993117521Snjlfirst in the parent's child list, and had additional peers (not 11994117521Snjlthe only child, but first in the list of children.) 11995117521Snjl 11996193267SjkimCode and Data Size: Current core subsystem library sizes are shown 11997126372Snjlbelow. These are the code and data sizes for the acpica.lib 11998126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 11999126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12000126372Snjlversion of the code includes the debug output trace mechanism and 12001193267Sjkimhas a much larger code and data size. Note that these values will 12002126372Snjlvary depending on the efficiency of the compiler and the compiler 12003126372Snjloptions used during generation. 12004117521Snjl 12005117521Snjl Previous Release 12006117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12007117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12008117521Snjl Current Release: 12009117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12010117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12011117521Snjl 12012117521Snjl 12013117521Snjl2) Linux: 12014117521Snjl 12015117521SnjlAllow ":" in OS override string (Ducrot Bruno) 12016117521Snjl 12017117521SnjlKobject fix (Greg KH) 12018117521Snjl 12019117521Snjl 12020117521Snjl3 iASL Compiler/Disassembler: 12021117521Snjl 12022117521SnjlFixed a problem in the generation of the C source code files (AML 12023117521Snjlis emitted in C source statements for BIOS inclusion) where the 12024193267SjkimAscii dump that appears within a C comment at the end of each line 12025126372Snjlcould cause a compile time error if the AML sequence happens to 12026126372Snjlhave an open comment or close comment sequence embedded. 12027117521Snjl 12028117521Snjl 12029117521Snjl---------------------------------------- 12030117521Snjl24 April 2003. Summary of changes for version 20030424. 12031117521Snjl 12032117521Snjl 12033117521Snjl1) ACPI CA Core Subsystem: 12034117521Snjl 12035117521SnjlSupport for big-endian systems has been implemented. Most of the 12036193267Sjkimsupport has been invisibly added behind big-endian versions of the 12037126372SnjlACPI_MOVE_* macros. 12038117521Snjl 12039117521SnjlFixed a problem in AcpiHwDisableGpeBlock() and 12040117521SnjlAcpiHwClearGpeBlock() where an incorrect offset was passed to the 12041117521Snjllow level hardware write routine. The offset parameter was 12042193267Sjkimactually eliminated from the low level read/write routines because 12043126372Snjlthey had become obsolete. 12044117521Snjl 12045117521SnjlFixed a problem where a handler object was deleted twice during 12046117521Snjlthe removal of a fixed event handler. 12047117521Snjl 12048117521Snjl 12049117521Snjl2) Linux: 12050117521Snjl 12051117521SnjlA fix for SMP systems with link devices was contributed by 12052167802Sjkim 12053117521SnjlCompaq's Dan Zink. 12054117521Snjl 12055117521Snjl(2.5) Return whether we handled the interrupt in our IRQ handler. 12056193267Sjkim(Linux ISRs no longer return void, so we can propagate the handler 12057126372Snjlreturn value from the ACPI CA core back to the OS.) 12058117521Snjl 12059117521Snjl 12060167802Sjkim 12061117521Snjl3) Documentation: 12062117521Snjl 12063117521SnjlThe ACPI CA Programmer Reference has been updated to reflect new 12064117521Snjlinterfaces and changes to existing interfaces. 12065117521Snjl 12066117521Snjl---------------------------------------- 12067117521Snjl28 March 2003. Summary of changes for version 20030328. 12068117521Snjl 12069117521Snjl1) ACPI CA Core Subsystem: 12070117521Snjl 12071117521SnjlThe GPE Block Device support has been completed. New interfaces 12072117521Snjlare AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 12073117521Snjlinterfaces (enable, disable, clear, getstatus) have been split 12074117521Snjlinto separate interfaces for Fixed Events and General Purpose 12075117521SnjlEvents (GPEs) in order to support GPE Block Devices properly. 12076117521Snjl 12077117521SnjlFixed a problem where the error message "Failed to acquire 12078117521Snjlsemaphore" would appear during operations on the embedded 12079117521Snjlcontroller (EC). 12080117521Snjl 12081193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12082126372Snjlbelow. These are the code and data sizes for the acpica.lib 12083126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12084126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12085126372Snjlversion of the code includes the debug output trace mechanism and 12086193267Sjkimhas a much larger code and data size. Note that these values will 12087126372Snjlvary depending on the efficiency of the compiler and the compiler 12088126372Snjloptions used during generation. 12089117521Snjl 12090117521Snjl Previous Release 12091117521Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12092117521Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12093117521Snjl Current Release: 12094117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12095117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12096117521Snjl 12097117521Snjl 12098117521Snjl---------------------------------------- 12099114237Snjl28 February 2003. Summary of changes for version 20030228. 12100114237Snjl 12101114237Snjl 12102114237Snjl1) ACPI CA Core Subsystem: 12103114237Snjl 12104114237SnjlThe GPE handling and dispatch code has been completely overhauled 12105114237Snjlin preparation for support of GPE Block Devices (ID ACPI0006). 12106114237SnjlThis affects internal data structures and code only; there should 12107114237Snjlbe no differences visible externally. One new file has been 12108114237Snjladded, evgpeblk.c 12109114237Snjl 12110114237SnjlThe FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 12111114237Snjlfields that are used to determine the GPE block lengths. The 12112114237SnjlREGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 12113193267Sjkimstructures are ignored. This is per the ACPI specification but it 12114126372Snjlisn't very clear. The full 256 Block 0/1 GPEs are now supported 12115193267Sjkim(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 12116114237Snjl 12117114237SnjlIn the SCI interrupt handler, removed the read of the PM1_CONTROL 12118114237Snjlregister to look at the SCI_EN bit. On some machines, this read 12119114237Snjlcauses an SMI event and greatly slows down SCI events. (This may 12120114237Snjlin fact be the cause of slow battery status response on some 12121114237Snjlsystems.) 12122114237Snjl 12123193267SjkimFixed a problem where a store of a NULL string to a package object 12124126372Snjlcould cause the premature deletion of the object. This was seen 12125126372Snjlduring execution of the battery _BIF method on some systems, 12126126372Snjlresulting in no battery data being returned. 12127114237Snjl 12128114237SnjlAdded AcpiWalkResources interface to simplify parsing of resource 12129114237Snjllists. 12130114237Snjl 12131193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12132126372Snjlbelow. These are the code and data sizes for the acpica.lib 12133126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12134126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12135126372Snjlversion of the code includes the debug output trace mechanism and 12136193267Sjkimhas a much larger code and data size. Note that these values will 12137126372Snjlvary depending on the efficiency of the compiler and the compiler 12138126372Snjloptions used during generation. 12139114237Snjl 12140114237Snjl Previous Release 12141114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12142114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12143114237Snjl Current Release: 12144114237Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 12145114237Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 12146114237Snjl 12147114237Snjl 12148114237Snjl2) Linux 12149114237Snjl 12150114237SnjlS3 fixes (Ole Rohne) 12151114237Snjl 12152114237SnjlUpdate ACPI PHP driver with to use new acpi_walk_resource API 12153114237Snjl(Bjorn Helgaas) 12154114237Snjl 12155114237SnjlAdd S4BIOS support (Pavel Machek) 12156114237Snjl 12157114237SnjlMap in entire table before performing checksum (John Stultz) 12158114237Snjl 12159193267SjkimExpand the mem= cmdline to allow the specification of reserved and 12160126372SnjlACPI DATA blocks (Pavel Machek) 12161114237Snjl 12162114237SnjlNever use ACPI on VISWS 12163114237Snjl 12164114237SnjlFix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 12165114237Snjl 12166114237SnjlRevert a change that allowed P_BLK lengths to be 4 or 5. This is 12167114237Snjlcausing us to think that some systems support C2 when they really 12168114237Snjldon't. 12169114237Snjl 12170114237SnjlDo not count processor objects for non-present CPUs (Thanks to 12171114237SnjlDominik Brodowski) 12172114237Snjl 12173114237Snjl 12174114237Snjl3) iASL Compiler: 12175114237Snjl 12176114237SnjlFixed a problem where ASL include files could not be found and 12177114237Snjlopened. 12178114237Snjl 12179114237SnjlAdded support for the _PDC reserved name. 12180114237Snjl 12181114237Snjl 12182117521Snjl---------------------------------------- 12183114237Snjl22 January 2003. Summary of changes for version 20030122. 12184114237Snjl 12185114237Snjl 12186114237Snjl1) ACPI CA Core Subsystem: 12187114237Snjl 12188114237SnjlAdded a check for constructs of the form: Store (Local0, Local0) 12189114237Snjlwhere Local0 is not initialized. Apparently, some BIOS 12190193267Sjkimprogrammers believe that this is a NOOP. Since this store doesn't 12191126372Snjldo anything anyway, the new prototype behavior will ignore this 12192126372Snjlerror. This is a case where we can relax the strict checking in 12193126372Snjlthe interpreter in the name of compatibility. 12194114237Snjl 12195114237Snjl 12196114237Snjl2) Linux 12197114237Snjl 12198114237SnjlThe AcpiSrc Source Conversion Utility has been released with the 12199114237SnjlLinux package for the first time. This is the utility that is 12200193267Sjkimused to convert the ACPI CA base source code to the Linux version. 12201114237Snjl 12202114237Snjl(Both) Handle P_BLK lengths shorter than 6 more gracefully 12203114237Snjl 12204114237Snjl(Both) Move more headers to include/acpi, and delete an unused 12205114237Snjlheader. 12206114237Snjl 12207114237Snjl(Both) Move drivers/acpi/include directory to include/acpi 12208114237Snjl 12209114237Snjl(Both) Boot functions don't use cmdline, so don't pass it around 12210114237Snjl 12211114237Snjl(Both) Remove include of unused header (Adrian Bunk) 12212114237Snjl 12213114237Snjl(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 12214114237Snjlthe 12215193267Sjkimformer now also includes the latter, acpiphp.h only needs the one, 12216126372Snjlnow. 12217114237Snjl 12218193267Sjkim(2.5) Make it possible to select method of bios restoring after S3 12219114237Snjlresume. [=> no more ugly ifdefs] (Pavel Machek) 12220114237Snjl 12221114237Snjl(2.5) Make proc write interfaces work (Pavel Machek) 12222114237Snjl 12223114237Snjl(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 12224114237Snjl 12225114237Snjl(2.5) Break out ACPI Perf code into its own module, under cpufreq 12226114237Snjl(Dominik Brodowski) 12227114237Snjl 12228114237Snjl(2.4) S4BIOS support (Ducrot Bruno) 12229114237Snjl 12230114237Snjl(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 12231114237SnjlVisinoni) 12232114237Snjl 12233114237Snjl 12234114237Snjl3) iASL Compiler: 12235114237Snjl 12236114237SnjlAdded support to disassemble SSDT and PSDTs. 12237114237Snjl 12238114237SnjlImplemented support to obtain SSDTs from the Windows registry if 12239114237Snjlavailable. 12240114237Snjl 12241114237Snjl 12242102550Siwasaki---------------------------------------- 12243114237Snjl09 January 2003. Summary of changes for version 20030109. 12244114237Snjl 12245114237Snjl1) ACPI CA Core Subsystem: 12246114237Snjl 12247114237SnjlChanged the behavior of the internal Buffer-to-String conversion 12248193267Sjkimfunction. The current ACPI specification states that the contents 12249126372Snjlof the buffer are "converted to a string of two-character 12250126372Snjlhexadecimal numbers, each separated by a space". Unfortunately, 12251193267Sjkimthis definition is not backwards compatible with existing ACPI 1.0 12252193267Sjkimimplementations (although the behavior was not defined in the ACPI 12253126372Snjl1.0 specification). The new behavior simply copies data from the 12254193267Sjkimbuffer to the string until a null character is found or the end of 12255126372Snjlthe buffer is reached. The new String object is always null 12256126372Snjlterminated. This problem was seen during the generation of _BIF 12257126372Snjlbattery data where incorrect strings were returned for battery 12258126372Snjltype, etc. This will also require an errata to the ACPI 12259126372Snjlspecification. 12260114237Snjl 12261114237SnjlRenamed all instances of NATIVE_UINT and NATIVE_INT to 12262114237SnjlACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 12263114237Snjl 12264114237SnjlCopyright in all module headers (both Linux and non-Linux) has be 12265114237Snjlupdated to 2003. 12266114237Snjl 12267193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12268126372Snjlbelow. These are the code and data sizes for the acpica.lib 12269126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12270126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12271126372Snjlversion of the code includes the debug output trace mechanism and 12272193267Sjkimhas a much larger code and data size. Note that these values will 12273126372Snjlvary depending on the efficiency of the compiler and the compiler 12274126372Snjloptions used during generation. 12275114237Snjl 12276114237Snjl Previous Release 12277114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12278114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12279114237Snjl Current Release: 12280114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12281114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12282114237Snjl 12283114237Snjl 12284114237Snjl2) Linux 12285114237Snjl 12286114237SnjlFixed an oops on module insertion/removal (Matthew Tippett) 12287114237Snjl 12288114237Snjl(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 12289114237Snjl 12290114237Snjl(2.5) Replace pr_debug (Randy Dunlap) 12291114237Snjl 12292114237Snjl(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 12293114237Snjl 12294114237Snjl(Both) Eliminate spawning of thread from timer callback, in favor 12295114237Snjlof schedule_work() 12296114237Snjl 12297114237Snjl(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 12298114237Snjl 12299114237Snjl(Both) Added define for Fixed Function HW region (Matthew Wilcox) 12300114237Snjl 12301114237Snjl(Both) Add missing statics to button.c (Pavel Machek) 12302114237Snjl 12303114237SnjlSeveral changes have been made to the source code translation 12304114237Snjlutility that generates the Linux Code in order to make the code 12305114237Snjlmore "Linux-like": 12306114237Snjl 12307114237SnjlAll typedefs on structs and unions have been removed in keeping 12308114237Snjlwith the Linux coding style. 12309114237Snjl 12310114237SnjlRemoved the non-Linux SourceSafe module revision number from each 12311114237Snjlmodule header. 12312114237Snjl 12313114237SnjlCompleted major overhaul of symbols to be lowercased for linux. 12314114237SnjlDoubled the number of symbols that are lowercased. 12315114237Snjl 12316114237SnjlFixed a problem where identifiers within procedure headers and 12317114237Snjlwithin quotes were not fully lower cased (they were left with a 12318114237Snjlstarting capital.) 12319114237Snjl 12320114237SnjlSome C macros whose only purpose is to allow the generation of 16- 12321114237Snjlbit code are now completely removed in the Linux code, increasing 12322114237Snjlreadability and maintainability. 12323114237Snjl 12324114237Snjl---------------------------------------- 12325114237Snjl 12326114237Snjl12 December 2002. Summary of changes for version 20021212. 12327114237Snjl 12328114237Snjl 12329114237Snjl1) ACPI CA Core Subsystem: 12330114237Snjl 12331114237SnjlFixed a problem where the creation of a zero-length AML Buffer 12332114237Snjlwould cause a fault. 12333114237Snjl 12334193267SjkimFixed a problem where a Buffer object that pointed to a static AML 12335126372Snjlbuffer (in an ACPI table) could inadvertently be deleted, causing 12336126372Snjlmemory corruption. 12337114237Snjl 12338114237SnjlFixed a problem where a user buffer (passed in to the external 12339114237SnjlACPI CA interfaces) could be overwritten if the buffer was too 12340114237Snjlsmall to complete the operation, causing memory corruption. 12341114237Snjl 12342114237SnjlFixed a problem in the Buffer-to-String conversion code where a 12343114237Snjlstring of length one was always returned, regardless of the size 12344114237Snjlof the input Buffer object. 12345114237Snjl 12346114237SnjlRemoved the NATIVE_CHAR data type across the entire source due to 12347114237Snjllack of need and lack of consistent use. 12348114237Snjl 12349193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12350126372Snjlbelow. These are the code and data sizes for the acpica.lib 12351126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12352126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12353126372Snjlversion of the code includes the debug output trace mechanism and 12354193267Sjkimhas a much larger code and data size. Note that these values will 12355126372Snjlvary depending on the efficiency of the compiler and the compiler 12356126372Snjloptions used during generation. 12357114237Snjl 12358114237Snjl Previous Release 12359114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12360114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12361114237Snjl Current Release: 12362114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 12363114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 12364114237Snjl 12365114237Snjl 12366114237Snjl---------------------------------------- 12367114237Snjl05 December 2002. Summary of changes for version 20021205. 12368114237Snjl 12369114237Snjl1) ACPI CA Core Subsystem: 12370114237Snjl 12371114237SnjlFixed a problem where a store to a String or Buffer object could 12372114237Snjlcause corruption of the DSDT if the object type being stored was 12373114237Snjlthe same as the target object type and the length of the object 12374114237Snjlbeing stored was equal to or smaller than the original (existing) 12375114237Snjltarget object. This was seen to cause corruption of battery _BIF 12376114237Snjlbuffers if the _BIF method modified the buffer on the fly. 12377114237Snjl 12378193267SjkimFixed a problem where an internal error was generated if a control 12379126372Snjlmethod invocation was used in an OperationRegion, Buffer, or 12380126372SnjlPackage declaration. This was caused by the deferred parsing of 12381126372Snjlthe control method and thus the deferred creation of the internal 12382126372Snjlmethod object. The solution to this problem was to create the 12383126372Snjlinternal method object at the moment the method is encountered in 12384126372Snjlthe first pass - so that subsequent references to the method will 12385126372Snjlable to obtain the required parameter count and thus properly 12386126372Snjlparse the method invocation. This problem presented itself as an 12387126372SnjlAE_AML_INTERNAL during the pass 1 parse phase during table load. 12388114237Snjl 12389114237SnjlFixed a problem where the internal String object copy routine did 12390193267Sjkimnot always allocate sufficient memory for the target String object 12391126372Snjland caused memory corruption. This problem was seen to cause 12392126372Snjl"Allocation already present in list!" errors as memory allocation 12393126372Snjlbecame corrupted. 12394114237Snjl 12395193267SjkimImplemented a new function for the evaluation of namespace objects 12396126372Snjlthat allows the specification of the allowable return object 12397126372Snjltypes. This simplifies a lot of code that checks for a return 12398126372Snjlobject of one or more specific objects returned from the 12399114237Snjlevaluation (such as _STA, etc.) This may become and external 12400114237Snjlfunction if it would be useful to ACPI-related drivers. 12401114237Snjl 12402114237SnjlCompleted another round of prefixing #defines with "ACPI_" for 12403114237Snjlclarity. 12404114237Snjl 12405114237SnjlCompleted additional code restructuring to allow more modular 12406114237Snjllinking for iASL compiler and AcpiExec. Several files were split 12407114237Snjlcreating new files. New files: nsparse.c dsinit.c evgpe.c 12408114237Snjl 12409114237SnjlImplemented an abort mechanism to terminate an executing control 12410193267Sjkimmethod via the AML debugger. This feature is useful for debugging 12411126372Snjlcontrol methods that depend (wait) for specific hardware 12412126372Snjlresponses. 12413114237Snjl 12414193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12415126372Snjlbelow. These are the code and data sizes for the acpica.lib 12416126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12417126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12418126372Snjlversion of the code includes the debug output trace mechanism and 12419193267Sjkimhas a much larger code and data size. Note that these values will 12420126372Snjlvary depending on the efficiency of the compiler and the compiler 12421126372Snjloptions used during generation. 12422114237Snjl 12423114237Snjl Previous Release 12424114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12425114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12426114237Snjl Current Release: 12427114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 12428114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 12429114237Snjl 12430114237Snjl 12431114237Snjl2) iASL Compiler/Disassembler 12432114237Snjl 12433114237SnjlFixed a compiler code generation problem for "Interrupt" Resource 12434114237SnjlDescriptors. If specified in the ASL, the optional "Resource 12435114237SnjlSource Index" and "Resource Source" fields were not inserted into 12436114237Snjlthe correct location within the AML resource descriptor, creating 12437114237Snjlan invalid descriptor. 12438114237Snjl 12439193267SjkimFixed a disassembler problem for "Interrupt" resource descriptors. 12440126372SnjlThe optional "Resource Source Index" and "Resource Source" fields 12441126372Snjlwere ignored. 12442114237Snjl 12443114237Snjl 12444114237Snjl---------------------------------------- 12445114237Snjl22 November 2002. Summary of changes for version 20021122. 12446114237Snjl 12447114237Snjl 12448114237Snjl1) ACPI CA Core Subsystem: 12449114237Snjl 12450114237SnjlFixed a reported problem where an object stored to a Method Local 12451114237Snjlor Arg was not copied to a new object during the store - the 12452114237Snjlobject pointer was simply copied to the Local/Arg. This caused 12453114237Snjlall subsequent operations on the Local/Arg to also affect the 12454114237Snjloriginal source of the store operation. 12455114237Snjl 12456114237SnjlFixed a problem where a store operation to a Method Local or Arg 12457114237Snjlwas not completed properly if the Local/Arg contained a reference 12458114237Snjl(from RefOf) to a named field. The general-purpose store-to- 12459114237Snjlnamespace-node code is now used so that this case is handled 12460114237Snjlautomatically. 12461114237Snjl 12462193267SjkimFixed a problem where the internal object copy routine would cause 12463126372Snjla protection fault if the object being copied was a Package and 12464126372Snjlcontained either 1) a NULL package element or 2) a nested sub- 12465114237Snjlpackage. 12466114237Snjl 12467114237SnjlFixed a problem with the GPE initialization that resulted from an 12468114237Snjlambiguity in the ACPI specification. One section of the 12469114237Snjlspecification states that both the address and length of the GPE 12470193267Sjkimblock must be zero if the block is not supported. Another section 12471126372Snjlimplies that only the address need be zero if the block is not 12472193267Sjkimsupported. The code has been changed so that both the address and 12473126372Snjlthe length must be non-zero to indicate a valid GPE block (i.e., 12474126372Snjlif either the address or the length is zero, the GPE block is 12475126372Snjlinvalid.) 12476114237Snjl 12477193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12478126372Snjlbelow. These are the code and data sizes for the acpica.lib 12479126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12480126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12481126372Snjlversion of the code includes the debug output trace mechanism and 12482193267Sjkimhas a much larger code and data size. Note that these values will 12483126372Snjlvary depending on the efficiency of the compiler and the compiler 12484126372Snjloptions used during generation. 12485114237Snjl 12486114237Snjl Previous Release 12487114237Snjl Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12488114237Snjl Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12489114237Snjl Current Release: 12490114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12491114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12492114237Snjl 12493114237Snjl 12494114237Snjl2) Linux 12495114237Snjl 12496114237SnjlCleaned up EC driver. Exported an external EC read/write 12497114237Snjlinterface. By going through this, other drivers (most notably 12498114237Snjlsonypi) will be able to serialize access to the EC. 12499114237Snjl 12500114237Snjl 12501114237Snjl3) iASL Compiler/Disassembler 12502114237Snjl 12503114237SnjlImplemented support to optionally generate include files for both 12504114237SnjlASM and C (the -i switch). This simplifies BIOS development by 12505114237Snjlautomatically creating include files that contain external 12506114237Snjldeclarations for the symbols that are created within the 12507167802Sjkim 12508114237Snjl(optionally generated) ASM and C AML source files. 12509114237Snjl 12510114237Snjl 12511114237Snjl---------------------------------------- 12512107325Siwasaki15 November 2002. Summary of changes for version 20021115. 12513104470Siwasaki 12514107325Siwasaki1) ACPI CA Core Subsystem: 12515107325Siwasaki 12516114237SnjlFixed a memory leak problem where an error during resolution of 12517167802Sjkim 12518114237Snjlmethod arguments during a method invocation from another method 12519114237Snjlfailed to cleanup properly by deleting all successfully resolved 12520114237Snjlargument objects. 12521107325Siwasaki 12522114237SnjlFixed a problem where the target of the Index() operator was not 12523114237Snjlcorrectly constructed if the source object was a package. This 12524114237Snjlproblem has not been detected because the use of a target operand 12525114237Snjlwith Index() is very rare. 12526107325Siwasaki 12527107325SiwasakiFixed a problem with the Index() operator where an attempt was 12528107325Siwasakimade to delete the operand objects twice. 12529107325Siwasaki 12530107325SiwasakiFixed a problem where an attempt was made to delete an operand 12531114237Snjltwice during execution of the CondRefOf() operator if the target 12532114237Snjldid not exist. 12533107325Siwasaki 12534114237SnjlImplemented the first of perhaps several internal create object 12535193267Sjkimfunctions that create and initialize a specific object type. This 12536126372Snjlconsolidates duplicated code wherever the object is created, thus 12537126372Snjlshrinking the size of the subsystem. 12538107325Siwasaki 12539114237SnjlImplemented improved debug/error messages for errors that occur 12540114237Snjlduring nested method invocations. All executing method pathnames 12541193267Sjkimare displayed (with the error) as the call stack is unwound - thus 12542126372Snjlsimplifying debug. 12543107325Siwasaki 12544107325SiwasakiFixed a problem introduced in the 10/02 release that caused 12545114237Snjlpremature deletion of a buffer object if a buffer was used as an 12546114237SnjlASL operand where an integer operand is required (Thus causing an 12547193267Sjkimimplicit object conversion from Buffer to Integer.) The change in 12548126372Snjlthe 10/02 release was attempting to fix a memory leak (albeit 12549114237Snjlincorrectly.) 12550107325Siwasaki 12551193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12552126372Snjlbelow. These are the code and data sizes for the acpica.lib 12553126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12554126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12555126372Snjlversion of the code includes the debug output trace mechanism and 12556193267Sjkimhas a much larger code and data size. Note that these values will 12557126372Snjlvary depending on the efficiency of the compiler and the compiler 12558126372Snjloptions used during generation. 12559107325Siwasaki 12560107325Siwasaki Previous Release 12561107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12562107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12563107325Siwasaki Current Release: 12564107325Siwasaki Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12565107325Siwasaki Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12566107325Siwasaki 12567107325Siwasaki 12568107325Siwasaki2) Linux 12569107325Siwasaki 12570114237SnjlChanged the implementation of the ACPI semaphores to use down() 12571114237Snjlinstead of down_interruptable(). It is important that the 12572114237Snjlexecution of ACPI control methods not be interrupted by signals. 12573114237SnjlMethods must run to completion, or the system may be left in an 12574114237Snjlunknown/unstable state. 12575107325Siwasaki 12576193267SjkimFixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 12577126372Snjl(Shawn Starr) 12578107325Siwasaki 12579107325Siwasaki 12580107325Siwasaki3) iASL Compiler/Disassembler 12581107325Siwasaki 12582107325Siwasaki 12583114237SnjlChanged the default location of output files. All output files 12584114237Snjlare now placed in the current directory by default instead of in 12585114237Snjlthe directory of the source file. This change may affect some 12586114237Snjlexisting makefiles, but it brings the behavior of the compiler in 12587114237Snjlline with other similar tools. The location of the output files 12588114237Snjlcan be overridden with the -p command line switch. 12589107325Siwasaki 12590114237Snjl 12591107325Siwasaki---------------------------------------- 12592107325Siwasaki11 November 2002. Summary of changes for version 20021111. 12593107325Siwasaki 12594107325Siwasaki 12595114237Snjl0) ACPI Specification 2.0B is released and is now available at: 12596114237Snjlhttp://www.acpi.info/index.html 12597107325Siwasaki 12598107325Siwasaki 12599107325Siwasaki1) ACPI CA Core Subsystem: 12600107325Siwasaki 12601107325SiwasakiImplemented support for the ACPI 2.0 SMBus Operation Regions. 12602114237SnjlThis includes the early detection and handoff of the request to 12603114237Snjlthe SMBus region handler (avoiding all of the complex field 12604107325Siwasakisupport code), and support for the bidirectional return packet 12605107325Siwasakifrom an SMBus write operation. This paves the way for the 12606107325Siwasakidevelopment of SMBus drivers in each host operating system. 12607107325Siwasaki 12608107325SiwasakiFixed a problem where the semaphore WAIT_FOREVER constant was 12609107325Siwasakidefined as 32 bits, but must be 16 bits according to the ACPI 12610107325Siwasakispecification. This had the side effect of causing ASL 12611107325SiwasakiMutex/Event timeouts even though the ASL code requested a wait 12612107325Siwasakiforever. Changed all internal references to the ACPI timeout 12613193267Sjkimparameter to 16 bits to prevent future problems. Changed the name 12614126372Snjlof WAIT_FOREVER to ACPI_WAIT_FOREVER. 12615107325Siwasaki 12616193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12617126372Snjlbelow. These are the code and data sizes for the acpica.lib 12618126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12619126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12620126372Snjlversion of the code includes the debug output trace mechanism and 12621193267Sjkimhas a much larger code and data size. Note that these values will 12622126372Snjlvary depending on the efficiency of the compiler and the compiler 12623126372Snjloptions used during generation. 12624107325Siwasaki 12625107325Siwasaki Previous Release 12626107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12627107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12628107325Siwasaki Current Release: 12629107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12630107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12631107325Siwasaki 12632107325Siwasaki 12633107325Siwasaki2) Linux 12634107325Siwasaki 12635107325SiwasakiModule loading/unloading fixes (John Cagle) 12636107325Siwasaki 12637107325Siwasaki 12638107325Siwasaki3) iASL Compiler/Disassembler 12639107325Siwasaki 12640107325SiwasakiAdded support for the SMBBlockProcessCall keyword (ACPI 2.0) 12641107325Siwasaki 12642107325SiwasakiImplemented support for the disassembly of all SMBus protocol 12643107325Siwasakikeywords (SMBQuick, SMBWord, etc.) 12644107325Siwasaki 12645107325Siwasaki---------------------------------------- 12646107325Siwasaki01 November 2002. Summary of changes for version 20021101. 12647107325Siwasaki 12648107325Siwasaki 12649107325Siwasaki1) ACPI CA Core Subsystem: 12650107325Siwasaki 12651193267SjkimFixed a problem where platforms that have a GPE1 block but no GPE0 12652126372Snjlblock were not handled correctly. This resulted in a "GPE 12653114237Snjloverlap" error message. GPE0 is no longer required. 12654107325Siwasaki 12655107325SiwasakiRemoved code added in the previous release that inserted nodes 12656114237Snjlinto the namespace in alphabetical order. This caused some side- 12657114237Snjleffects on various machines. The root cause of the problem is 12658114237Snjlstill under investigation since in theory, the internal ordering 12659114237Snjlof the namespace nodes should not matter. 12660107325Siwasaki 12661107325Siwasaki 12662114237SnjlEnhanced error reporting for the case where a named object is not 12663114237Snjlfound during control method execution. The full ACPI namepath 12664114237Snjl(name reference) of the object that was not found is displayed in 12665114237Snjlthis case. 12666107325Siwasaki 12667193267SjkimNote: as a result of the overhaul of the namespace object types in 12668126372Snjlthe previous release, the namespace nodes for the predefined 12669114237Snjlscopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 12670114237Snjlinstead of ACPI_TYPE_ANY. This simplifies the namespace 12671114237Snjlmanagement code but may affect code that walks the namespace tree 12672114237Snjllooking for specific object types. 12673114237Snjl 12674193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12675126372Snjlbelow. These are the code and data sizes for the acpica.lib 12676126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12677126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12678126372Snjlversion of the code includes the debug output trace mechanism and 12679193267Sjkimhas a much larger code and data size. Note that these values will 12680126372Snjlvary depending on the efficiency of the compiler and the compiler 12681126372Snjloptions used during generation. 12682107325Siwasaki 12683107325Siwasaki Previous Release 12684107325Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12685107325Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12686107325Siwasaki Current Release: 12687107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12688107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12689107325Siwasaki 12690107325Siwasaki 12691107325Siwasaki2) Linux 12692107325Siwasaki 12693107325SiwasakiFixed a problem introduced in the previous release where the 12694193267SjkimProcessor and Thermal objects were not recognized and installed in 12695193267Sjkim/proc. This was related to the scope type change described above. 12696107325Siwasaki 12697107325Siwasaki 12698107325Siwasaki3) iASL Compiler/Disassembler 12699107325Siwasaki 12700114237SnjlImplemented the -g option to get all of the required ACPI tables 12701114237Snjlfrom the registry and save them to files (Windows version of the 12702193267Sjkimcompiler only.) The required tables are the FADT, FACS, and DSDT. 12703107325Siwasaki 12704114237SnjlAdded ACPI table checksum validation during table disassembly in 12705114237Snjlorder to catch corrupted tables. 12706107325Siwasaki 12707107325Siwasaki 12708107325Siwasaki---------------------------------------- 12709107325Siwasaki22 October 2002. Summary of changes for version 20021022. 12710107325Siwasaki 12711107325Siwasaki1) ACPI CA Core Subsystem: 12712107325Siwasaki 12713114237SnjlImplemented a restriction on the Scope operator that the target 12714114237Snjlmust already exist in the namespace at the time the operator is 12715114237Snjlencountered (during table load or method execution). In other 12716114237Snjlwords, forward references are not allowed and Scope() cannot 12717114237Snjlcreate a new object. This changes the previous behavior where the 12718193267Sjkiminterpreter would create the name if not found. This new behavior 12719126372Snjlcorrectly enables the search-to-root algorithm during namespace 12720126372Snjllookup of the target name. Because of this upsearch, this fixes 12721126372Snjlthe known Compaq _SB_.OKEC problem and makes both the AML 12722126372Snjlinterpreter and iASL compiler compatible with other ACPI 12723114237Snjlimplementations. 12724107325Siwasaki 12725114237SnjlCompleted a major overhaul of the internal ACPI object types for 12726114237Snjlthe ACPI Namespace and the associated operand objects. Many of 12727114237Snjlthese types had become obsolete with the introduction of the two- 12728114237Snjlpass namespace load. This cleanup simplifies the code and makes 12729114237Snjlthe entire namespace load mechanism much clearer and easier to 12730114237Snjlunderstand. 12731107325Siwasaki 12732114237SnjlImproved debug output for tracking scope opening/closing to help 12733114237Snjldiagnose scoping issues. The old scope name as well as the new 12734114237Snjlscope name are displayed. Also improved error messages for 12735114237Snjlproblems with ASL Mutex objects and error messages for GPE 12736114237Snjlproblems. 12737107325Siwasaki 12738107325SiwasakiCleaned up the namespace dump code, removed obsolete code. 12739107325Siwasaki 12740114237SnjlAll string output (for all namespace/object dumps) now uses the 12741193267Sjkimcommon ACPI string output procedure which handles escapes properly 12742126372Snjland does not emit non-printable characters. 12743107325Siwasaki 12744107325SiwasakiFixed some issues with constants in the 64-bit version of the 12745107325Siwasakilocal C library (utclib.c) 12746107325Siwasaki 12747107325Siwasaki 12748107325Siwasaki2) Linux 12749107325Siwasaki 12750107325SiwasakiEC Driver: No longer attempts to acquire the Global Lock at 12751107325Siwasakiinterrupt level. 12752107325Siwasaki 12753107325Siwasaki 12754107325Siwasaki3) iASL Compiler/Disassembler 12755107325Siwasaki 12756193267SjkimImplemented ACPI 2.0B grammar change that disallows all Type 1 and 12757126372Snjl2 opcodes outside of a control method. This means that the 12758114237Snjl"executable" operators (versus the "namespace" operators) cannot 12759193267Sjkimbe used at the table level; they can only be used within a control 12760126372Snjlmethod. 12761107325Siwasaki 12762107325SiwasakiImplemented the restriction on the Scope() operator where the 12763107325Siwasakitarget must already exist in the namespace at the time the 12764114237Snjloperator is encountered (during ASL compilation). In other words, 12765193267Sjkimforward references are not allowed and Scope() cannot create a new 12766126372Snjlobject. This makes the iASL compiler compatible with other ACPI 12767193267Sjkimimplementations and makes the Scope() implementation adhere to the 12768126372SnjlACPI specification. 12769107325Siwasaki 12770193267SjkimFixed a problem where namepath optimization for the Alias operator 12771193267Sjkimwas optimizing the wrong path (of the two namepaths.) This caused 12772126372Snjla "Missing alias link" error message. 12773107325Siwasaki 12774114237SnjlFixed a problem where an "unknown reserved name" warning could be 12775114237Snjlincorrectly generated for names like "_SB" when the trailing 12776114237Snjlunderscore is not used in the original ASL. 12777107325Siwasaki 12778107325SiwasakiFixed a problem where the reserved name check did not handle 12779114237SnjlNamePaths with multiple NameSegs correctly. The first nameseg of 12780114237Snjlthe NamePath was examined instead of the last NameSeg. 12781107325Siwasaki 12782107325Siwasaki 12783107325Siwasaki---------------------------------------- 12784107325Siwasaki 12785104470Siwasaki02 October 2002. Summary of changes for this release. 12786104470Siwasaki 12787104470Siwasaki 12788104470Siwasaki1) ACPI CA Core Subsystem version 20021002: 12789104470Siwasaki 12790104470SiwasakiFixed a problem where a store/copy of a string to an existing 12791193267Sjkimstring did not always set the string length properly in the String 12792126372Snjlobject. 12793104470Siwasaki 12794104470SiwasakiFixed a reported problem with the ToString operator where the 12795193267Sjkimbehavior was identical to the ToHexString operator instead of just 12796126372Snjlsimply converting a raw buffer to a string data type. 12797104470Siwasaki 12798104470SiwasakiFixed a problem where CopyObject and the other "explicit" 12799193267Sjkimconversion operators were not updating the internal namespace node 12800126372Snjltype as part of the store operation. 12801104470Siwasaki 12802104470SiwasakiFixed a memory leak during implicit source operand conversion 12803193267Sjkimwhere the original object was not deleted if it was converted to a 12804126372Snjlnew object of a different type. 12805104470Siwasaki 12806193267SjkimEnhanced error messages for all problems associated with namespace 12807193267Sjkimlookups. Common procedure generates and prints the lookup name as 12808126372Snjlwell as the formatted status. 12809104470Siwasaki 12810104470SiwasakiCompleted implementation of a new design for the Alias support 12811193267Sjkimwithin the namespace. The existing design did not handle the case 12812193267Sjkimwhere a new object was assigned to one of the two names due to the 12813193267Sjkimuse of an explicit conversion operator, resulting in the two names 12814126372Snjlpointing to two different objects. The new design simply points 12815126372Snjlthe Alias name to the original name node - not to the object. 12816193267SjkimThis results in a level of indirection that must be handled in the 12817126372Snjlname resolution mechanism. 12818104470Siwasaki 12819193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12820126372Snjlbelow. These are the code and data sizes for the acpica.lib 12821126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12822126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12823126372Snjlversion of the code includes the debug output trace mechanism and 12824193267Sjkimhas a larger code and data size. Note that these values will vary 12825126372Snjldepending on the efficiency of the compiler and the compiler 12826126372Snjloptions used during generation. 12827104470Siwasaki 12828104470Siwasaki Previous Release 12829104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12830104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12831104470Siwasaki Current Release: 12832104470Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12833104470Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12834104470Siwasaki 12835104470Siwasaki 12836104470Siwasaki2) Linux 12837104470Siwasaki 12838104470SiwasakiInitialize thermal driver's timer before it is used. (Knut 12839104470SiwasakiNeumann) 12840104470Siwasaki 12841104470SiwasakiAllow handling negative celsius values. (Kochi Takayoshi) 12842104470Siwasaki 12843114237SnjlFix thermal management and make trip points. R/W (Pavel Machek) 12844104470Siwasaki 12845104470SiwasakiFix /proc/acpi/sleep. (P. Christeas) 12846104470Siwasaki 12847104470SiwasakiIA64 fixes. (David Mosberger) 12848104470Siwasaki 12849104470SiwasakiFix reversed logic in blacklist code. (Sergio Monteiro Basto) 12850104470Siwasaki 12851104470SiwasakiReplace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 12852104470SiwasakiBrodowski) 12853104470Siwasaki 12854104470Siwasaki 12855104470Siwasaki3) iASL Compiler/Disassembler 12856104470Siwasaki 12857104470SiwasakiClarified some warning/error messages. 12858104470Siwasaki 12859104470Siwasaki 12860104470Siwasaki---------------------------------------- 12861104470Siwasaki18 September 2002. Summary of changes for this release. 12862104470Siwasaki 12863104470Siwasaki 12864104470Siwasaki1) ACPI CA Core Subsystem version 20020918: 12865104470Siwasaki 12866114237SnjlFixed a reported problem with reference chaining (via the Index() 12867193267Sjkimand RefOf() operators) in the ObjectType() and SizeOf() operators. 12868126372SnjlThe definition of these operators includes the dereferencing of 12869126372Snjlall chained references to return information on the base object. 12870104470Siwasaki 12871104470SiwasakiFixed a problem with stores to indexed package elements - the 12872104470Siwasakiexisting code would not complete the store if an "implicit 12873114237Snjlconversion" was not performed. In other words, if the existing 12874114237Snjlobject (package element) was to be replaced completely, the code 12875114237Snjldidn't handle this case. 12876104470Siwasaki 12877104470SiwasakiRelaxed typechecking on the ASL "Scope" operator to allow the 12878104470Siwasakitarget name to refer to an object of type Integer, String, or 12879104470SiwasakiBuffer, in addition to the scoping object types (Device, 12880104470Siwasakipredefined Scopes, Processor, PowerResource, and ThermalZone.) 12881114237SnjlThis allows existing AML code that has workarounds for a bug in 12882193267SjkimWindows to function properly. A warning is issued, however. This 12883126372Snjlaffects both the AML interpreter and the iASL compiler. Below is 12884126372Snjlan example of this type of ASL code: 12885104470Siwasaki 12886104470Siwasaki Name(DEB,0x00) 12887104470Siwasaki Scope(DEB) 12888104470Siwasaki { 12889104470Siwasaki 12890114237SnjlFixed some reported problems with 64-bit integer support in the 12891114237Snjllocal implementation of C library functions (clib.c) 12892104470Siwasaki 12893104470Siwasaki 12894104470Siwasaki2) Linux 12895104470Siwasaki 12896104470SiwasakiUse ACPI fix map region instead of IOAPIC region, since it is 12897104470Siwasakiundefined in non-SMP. 12898104470Siwasaki 12899114237SnjlEnsure that the SCI has the proper polarity and trigger, even on 12900114237Snjlsystems that do not have an interrupt override entry in the MADT. 12901104470Siwasaki 12902104470Siwasaki2.5 big driver reorganization (Pat Mochel) 12903104470Siwasaki 12904104470SiwasakiUse early table mapping code from acpitable.c (Andi Kleen) 12905104470Siwasaki 12906104470SiwasakiNew blacklist entries (Andi Kleen) 12907104470Siwasaki 12908114237SnjlBlacklist improvements. Split blacklist code out into a separate 12909114237Snjlfile. Move checking the blacklist to very early. Previously, we 12910114237Snjlwould use ACPI tables, and then halfway through init, check the 12911114237Snjlblacklist -- too late. Now, it's early enough to completely fall- 12912114237Snjlback to non-ACPI. 12913104470Siwasaki 12914104470Siwasaki 12915104470Siwasaki3) iASL Compiler/Disassembler version 20020918: 12916104470Siwasaki 12917114237SnjlFixed a problem where the typechecking code didn't know that an 12918114237Snjlalias could point to a method. In other words, aliases were not 12919114237Snjlbeing dereferenced during typechecking. 12920104470Siwasaki 12921104470Siwasaki 12922104470Siwasaki---------------------------------------- 12923104470Siwasaki29 August 2002. Summary of changes for this release. 12924104470Siwasaki 12925104470Siwasaki1) ACPI CA Core Subsystem Version 20020829: 12926104470Siwasaki 12927114237SnjlIf the target of a Scope() operator already exists, it must be an 12928114237Snjlobject type that actually opens a scope -- such as a Device, 12929193267SjkimMethod, Scope, etc. This is a fatal runtime error. Similar error 12930126372Snjlcheck has been added to the iASL compiler also. 12931104470Siwasaki 12932114237SnjlTightened up the namespace load to disallow multiple names in the 12933114237Snjlsame scope. This previously was allowed if both objects were of 12934114237Snjlthe same type. (i.e., a lookup was the same as entering a new 12935114237Snjlname). 12936104470Siwasaki 12937104470Siwasaki 12938104470Siwasaki2) Linux 12939104470Siwasaki 12940104470SiwasakiEnsure that the ACPI interrupt has the proper trigger and 12941104470Siwasakipolarity. 12942104470Siwasaki 12943104470Siwasakilocal_irq_disable is extraneous. (Matthew Wilcox) 12944104470Siwasaki 12945104470SiwasakiMake "acpi=off" actually do what it says, and not use the ACPI 12946104470Siwasakiinterpreter *or* the tables. 12947104470Siwasaki 12948193267SjkimAdded arch-neutral support for parsing SLIT and SRAT tables (Kochi 12949126372SnjlTakayoshi) 12950104470Siwasaki 12951104470Siwasaki 12952104470Siwasaki3) iASL Compiler/Disassembler Version 20020829: 12953104470Siwasaki 12954104470SiwasakiImplemented namepath optimization for name declarations. For 12955104470Siwasakiexample, a declaration like "Method (\_SB_.ABCD)" would get 12956104470Siwasakioptimized to "Method (ABCD)" if the declaration is within the 12957104470Siwasaki\_SB_ scope. This optimization is in addition to the named 12958104470Siwasakireference path optimization first released in the previous 12959114237Snjlversion. This would seem to complete all possible optimizations 12960114237Snjlfor namepaths within the ASL/AML. 12961104470Siwasaki 12962114237SnjlIf the target of a Scope() operator already exists, it must be an 12963114237Snjlobject type that actually opens a scope -- such as a Device, 12964114237SnjlMethod, Scope, etc. 12965104470Siwasaki 12966114237SnjlImplemented a check and warning for unreachable code in the same 12967114237Snjlblock below a Return() statement. 12968104470Siwasaki 12969114237SnjlFixed a problem where the listing file was not generated if the 12970114237Snjlcompiler aborted if the maximum error count was exceeded (200). 12971104470Siwasaki 12972193267SjkimFixed a problem where the typechecking of method return values was 12973126372Snjlbroken. This includes the check for a return value when the 12974114237Snjlmethod is invoked as a TermArg (a return value is expected.) 12975104470Siwasaki 12976104470SiwasakiFixed a reported problem where EOF conditions during a quoted 12977104470Siwasakistring or comment caused a fault. 12978104470Siwasaki 12979104470Siwasaki 12980104470Siwasaki---------------------------------------- 12981102550Siwasaki15 August 2002. Summary of changes for this release. 12982102550Siwasaki 12983102550Siwasaki1) ACPI CA Core Subsystem Version 20020815: 12984102550Siwasaki 12985114237SnjlFixed a reported problem where a Store to a method argument that 12986193267Sjkimcontains a reference did not perform the indirect store correctly. 12987126372SnjlThis problem was created during the conversion to the new 12988126372Snjlreference object model - the indirect store to a method argument 12989126372Snjlcode was not updated to reflect the new model. 12990102550Siwasaki 12991114237SnjlReworked the ACPI mode change code to better conform to ACPI 2.0, 12992193267Sjkimhandle corner cases, and improve code legibility (Kochi Takayoshi) 12993102550Siwasaki 12994102550SiwasakiFixed a problem with the pathname parsing for the carat (^) 12995114237Snjlprefix. The heavy use of the carat operator by the new namepath 12996193267Sjkimoptimization in the iASL compiler uncovered a problem with the AML 12997126372Snjlinterpreter handling of this prefix. In the case where one or 12998126372Snjlmore carats precede a single nameseg, the nameseg was treated as 12999126372Snjlstandalone and the search rule (to root) was inadvertently 13000114237Snjlapplied. This could cause both the iASL compiler and the 13001114237Snjlinterpreter to find the wrong object or to miss the error that 13002114237Snjlshould occur if the object does not exist at that exact pathname. 13003102550Siwasaki 13004114237SnjlFound and fixed the problem where the HP Pavilion DSDT would not 13005193267Sjkimload. This was a relatively minor tweak to the table loading code 13006126372Snjl(a problem caused by the unexpected encounter with a method 13007193267Sjkiminvocation not within a control method), but it does not solve the 13008126372Snjloverall issue of the execution of AML code at the table level. 13009126372SnjlThis investigation is still ongoing. 13010102550Siwasaki 13011193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13012126372Snjlbelow. These are the code and data sizes for the acpica.lib 13013126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13014126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13015126372Snjlversion of the code includes the debug output trace mechanism and 13016193267Sjkimhas a larger code and data size. Note that these values will vary 13017126372Snjldepending on the efficiency of the compiler and the compiler 13018126372Snjloptions used during generation. 13019102550Siwasaki 13020102550Siwasaki Previous Release 13021104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13022104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13023102550Siwasaki Current Release: 13024104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13025104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13026102550Siwasaki 13027102550Siwasaki 13028102550Siwasaki2) Linux 13029102550Siwasaki 13030102550SiwasakiRemove redundant slab.h include (Brad Hards) 13031102550Siwasaki 13032102550SiwasakiFix several bugs in thermal.c (Herbert Nachtnebel) 13033102550Siwasaki 13034102550SiwasakiMake CONFIG_ACPI_BOOT work properly (Pavel Machek) 13035102550Siwasaki 13036104470SiwasakiChange acpi_system_suspend to use updated irq functions (Pavel 13037104470SiwasakiMachek) 13038102550Siwasaki 13039102550SiwasakiExport acpi_get_firmware_table (Matthew Wilcox) 13040102550Siwasaki 13041102550SiwasakiUse proper root proc entry for ACPI (Kochi Takayoshi) 13042102550Siwasaki 13043102550SiwasakiFix early-boot table parsing (Bjorn Helgaas) 13044102550Siwasaki 13045102550Siwasaki 13046102550Siwasaki3) iASL Compiler/Disassembler 13047102550Siwasaki 13048114237SnjlReworked the compiler options to make them more consistent and to 13049114237Snjluse two-letter options where appropriate. We were running out of 13050114237Snjlsensible letters. This may break some makefiles, so check the 13051114237Snjlcurrent options list by invoking the compiler with no parameters. 13052102550Siwasaki 13053102550SiwasakiCompleted the design and implementation of the ASL namepath 13054114237Snjloptimization option for the compiler. This option optimizes all 13055114237Snjlreferences to named objects to the shortest possible path. The 13056193267Sjkimfirst attempt tries to utilize a single nameseg (4 characters) and 13057126372Snjlthe "search-to-root" algorithm used by the interpreter. If that 13058126372Snjlcannot be used (because either the name is not in the search path 13059126372Snjlor there is a conflict with another object with the same name), 13060126372Snjlthe pathname is optimized using the carat prefix (usually a 13061126372Snjlshorter string than specifying the entire path from the root.) 13062102550Siwasaki 13063114237SnjlImplemented support to obtain the DSDT from the Windows registry 13064114237Snjl(when the disassembly option is specified with no input file). 13065114237SnjlAdded this code as the implementation for AcpiOsTableOverride in 13066114237Snjlthe Windows OSL. Migrated the 16-bit code (used in the AcpiDump 13067114237Snjlutility) to scan memory for the DSDT to the AcpiOsTableOverride 13068114237Snjlfunction in the DOS OSL to make the disassembler truly OS 13069114237Snjlindependent. 13070102550Siwasaki 13071114237SnjlImplemented a new option to disassemble and compile in one step. 13072114237SnjlWhen used without an input filename, this option will grab the 13073193267SjkimDSDT from the local machine, disassemble it, and compile it in one 13074126372Snjlstep. 13075102550Siwasaki 13076114237SnjlAdded a warning message for invalid escapes (a backslash followed 13077114237Snjlby any character other than the allowable escapes). This catches 13078114237Snjlthe quoted string error "\_SB_" (which should be "\\_SB_" ). 13079167802Sjkim 13080193267SjkimAlso, there are numerous instances in the ACPI specification where 13081126372Snjlthis error occurs. 13082102550Siwasaki 13083104470SiwasakiAdded a compiler option to disable all optimizations. This is 13084114237Snjlbasically the "compatibility mode" because by using this option, 13085114237Snjlthe AML code will come out exactly the same as other ASL 13086114237Snjlcompilers. 13087102550Siwasaki 13088114237SnjlAdded error messages for incorrectly ordered dependent resource 13089114237Snjlfunctions. This includes: missing EndDependentFn macro at end of 13090114237Snjldependent resource list, nested dependent function macros (both 13091114237Snjlstart and end), and missing StartDependentFn macro. These are 13092114237Snjlcommon errors that should be caught at compile time. 13093102550Siwasaki 13094114237SnjlImplemented _OSI support for the disassembler and compiler. _OSI 13095114237Snjlmust be included in the namespace for proper disassembly (because 13096114237Snjlthe disassembler must know the number of arguments.) 13097102550Siwasaki 13098104470SiwasakiAdded an "optimization" message type that is optional (off by 13099114237Snjldefault). This message is used for all optimizations - including 13100193267Sjkimconstant folding, integer optimization, and namepath optimization. 13101102550Siwasaki 13102102550Siwasaki---------------------------------------- 13103102550Siwasaki25 July 2002. Summary of changes for this release. 13104102550Siwasaki 13105102550Siwasaki 13106102550Siwasaki1) ACPI CA Core Subsystem Version 20020725: 13107102550Siwasaki 13108114237SnjlThe AML Disassembler has been enhanced to produce compilable ASL 13109193267Sjkimcode and has been integrated into the iASL compiler (see below) as 13110126372Snjlwell as the single-step disassembly for the AML debugger and the 13111126372Snjldisassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 13112126372Snjlresource templates and macros are fully supported. The 13113114237Snjldisassembler has been tested on over 30 different AML files, 13114114237Snjlproducing identical AML when the resulting disassembled ASL file 13115114237Snjlis recompiled with the same ASL compiler. 13116102550Siwasaki 13117114237SnjlModified the Resource Manager to allow zero interrupts and zero 13118114237Snjldma channels during the GetCurrentResources call. This was 13119114237Snjlcausing problems on some platforms. 13120102550Siwasaki 13121114237SnjlAdded the AcpiOsRedirectOutput interface to the OSL to simplify 13122114237Snjloutput redirection for the AcpiOsPrintf and AcpiOsVprintf 13123114237Snjlinterfaces. 13124102550Siwasaki 13125193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13126126372Snjlbelow. These are the code and data sizes for the acpica.lib 13127126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13128126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13129126372Snjlversion of the code includes the debug output trace mechanism and 13130193267Sjkimhas a larger code and data size. Note that these values will vary 13131126372Snjldepending on the efficiency of the compiler and the compiler 13132126372Snjloptions used during generation. 13133102550Siwasaki 13134102550Siwasaki Previous Release 13135104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13136104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13137102550Siwasaki Current Release: 13138104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13139104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13140102550Siwasaki 13141102550Siwasaki 13142102550Siwasaki2) Linux 13143102550Siwasaki 13144102550SiwasakiFixed a panic in the EC driver (Dominik Brodowski) 13145102550Siwasaki 13146114237SnjlImplemented checksum of the R/XSDT itself during Linux table scan 13147114237Snjl(Richard Schaal) 13148102550Siwasaki 13149102550Siwasaki 13150102550Siwasaki3) iASL compiler 13151102550Siwasaki 13152114237SnjlThe AML disassembler is integrated into the compiler. The "-d" 13153114237Snjloption invokes the disassembler to completely disassemble an 13154114237Snjlinput AML file, producing as output a text ASL file with the 13155114237Snjlextension ".dsl" (to avoid name collisions with existing .asl 13156114237Snjlsource files.) A future enhancement will allow the disassembler 13157114237Snjlto obtain the BIOS DSDT from the registry under Windows. 13158102550Siwasaki 13159102550SiwasakiFixed a problem with the VendorShort and VendorLong resource 13160102550Siwasakidescriptors where an invalid AML sequence was created. 13161102550Siwasaki 13162114237SnjlImplemented a fix for BufferData term in the ASL parser. It was 13163114237Snjlinadvertently defined twice, allowing invalid syntax to pass and 13164114237Snjlcausing reduction conflicts. 13165102550Siwasaki 13166104470SiwasakiFixed a problem where the Ones opcode could get converted to a 13167193267Sjkimvalue of zero if "Ones" was used where a byte, word or dword value 13168126372Snjlwas expected. The 64-bit value is now truncated to the correct 13169126372Snjlsize with the correct value. 13170102550Siwasaki 13171102550Siwasaki 13172167802Sjkim 13173102550Siwasaki---------------------------------------- 13174102550Siwasaki02 July 2002. Summary of changes for this release. 13175102550Siwasaki 13176102550Siwasaki 13177102550Siwasaki1) ACPI CA Core Subsystem Version 20020702: 13178102550Siwasaki 13179114237SnjlThe Table Manager code has been restructured to add several new 13180114237Snjlfeatures. Tables that are not required by the core subsystem 13181114237Snjl(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 13182193267Sjkimvalidated in any way and are returned from AcpiGetFirmwareTable if 13183126372Snjlrequested. The AcpiOsTableOverride interface is now called for 13184126372Snjleach table that is loaded by the subsystem in order to allow the 13185126372Snjlhost to override any table it chooses. Previously, only the DSDT 13186126372Snjlcould be overridden. Added one new files, tbrsdt.c and 13187114237Snjltbgetall.c. 13188102550Siwasaki 13189193267SjkimFixed a problem with the conversion of internal package objects to 13190126372Snjlexternal objects (when a package is returned from a control 13191114237Snjlmethod.) The return buffer length was set to zero instead of the 13192114237Snjlproper length of the package object. 13193102550Siwasaki 13194104470SiwasakiFixed a reported problem with the use of the RefOf and DeRefOf 13195114237Snjloperators when passing reference arguments to control methods. A 13196114237Snjlnew type of Reference object is used internally for references 13197114237Snjlproduced by the RefOf operator. 13198102550Siwasaki 13199193267SjkimAdded additional error messages in the Resource Manager to explain 13200126372SnjlAE_BAD_DATA errors when they occur during resource parsing. 13201102550Siwasaki 13202104470SiwasakiSplit the AcpiEnableSubsystem into two primitives to enable a 13203193267Sjkimfiner granularity initialization sequence. These two calls should 13204126372Snjlbe called in this order: AcpiEnableSubsystem (flags), 13205114237SnjlAcpiInitializeObjects (flags). The flags parameter remains the 13206114237Snjlsame. 13207102550Siwasaki 13208102550Siwasaki 13209102550Siwasaki2) Linux 13210102550Siwasaki 13211114237SnjlUpdated the ACPI utilities module to understand the new style of 13212193267Sjkimfully resolved package objects that are now returned from the core 13213126372Snjlsubsystem. This eliminates errors of the form: 13214102550Siwasaki 13215102550Siwasaki ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 13216102550Siwasaki acpi_utils-0430 [145] acpi_evaluate_reference: 13217102550Siwasaki Invalid element in package (not a device reference) 13218102550Siwasaki 13219102550SiwasakiThe method evaluation utility uses the new buffer allocation 13220102550Siwasakischeme instead of calling AcpiEvaluate Object twice. 13221102550Siwasaki 13222102550SiwasakiAdded support for ECDT. This allows the use of the Embedded 13223167802Sjkim 13224114237SnjlController before the namespace has been fully initialized, which 13225114237Snjlis necessary for ACPI 2.0 support, and for some laptops to 13226114237Snjlinitialize properly. (Laptops using ECDT are still rare, so only 13227114237Snjllimited testing was performed of the added functionality.) 13228102550Siwasaki 13229102550SiwasakiFixed memory leaks in the EC driver. 13230102550Siwasaki 13231102550SiwasakiEliminated a brittle code structure in acpi_bus_init(). 13232102550Siwasaki 13233114237SnjlEliminated the acpi_evaluate() helper function in utils.c. It is 13234114237Snjlno longer needed since acpi_evaluate_object can optionally 13235104470Siwasakiallocate memory for the return object. 13236102550Siwasaki 13237193267SjkimImplemented fix for keyboard hang when getting battery readings on 13238126372Snjlsome systems (Stephen White) 13239102550Siwasaki 13240102550SiwasakiPCI IRQ routing update (Dominik Brodowski) 13241102550Siwasaki 13242114237SnjlFix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 13243114237Snjlsupport 13244102550Siwasaki 13245102550Siwasaki---------------------------------------- 13246102550Siwasaki11 June 2002. Summary of changes for this release. 13247102550Siwasaki 13248102550Siwasaki 13249102550Siwasaki1) ACPI CA Core Subsystem Version 20020611: 13250102550Siwasaki 13251104470SiwasakiFixed a reported problem where constants such as Zero and One 13252114237Snjlappearing within _PRT packages were not handled correctly within 13253114237Snjlthe resource manager code. Originally reported against the ASL 13254114237Snjlcompiler because the code generator now optimizes integers to 13255193267Sjkimtheir minimal AML representation (i.e. AML constants if possible.) 13256126372SnjlThe _PRT code now handles all AML constant opcodes correctly 13257126372Snjl(Zero, One, Ones, Revision). 13258102550Siwasaki 13259102550SiwasakiFixed a problem with the Concatenate operator in the AML 13260193267Sjkiminterpreter where a buffer result object was incorrectly marked as 13261126372Snjlnot fully evaluated, causing a run-time error of AE_AML_INTERNAL. 13262102550Siwasaki 13263104470SiwasakiAll package sub-objects are now fully resolved before they are 13264114237Snjlreturned from the external ACPI interfaces. This means that name 13265114237Snjlstrings are resolved to object handles, and constant operators 13266114237Snjl(Zero, One, Ones, Revision) are resolved to Integers. 13267102550Siwasaki 13268102550SiwasakiImplemented immediate resolution of the AML Constant opcodes 13269104470Siwasaki(Zero, One, Ones, Revision) to Integer objects upon detection 13270104470Siwasakiwithin the AML stream. This has simplified and reduced the 13271104470Siwasakigenerated code size of the subsystem by eliminating about 10 13272104470Siwasakiswitch statements for these constants (which previously were 13273193267Sjkimcontained in Reference objects.) The complicating issues are that 13274126372Snjlthe Zero opcode is used as a "placeholder" for unspecified 13275193267Sjkimoptional target operands and stores to constants are defined to be 13276126372Snjlno-ops. 13277102550Siwasaki 13278193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13279126372Snjlbelow. These are the code and data sizes for the acpica.lib 13280114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13281114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 13282114237Snjlversion of the code includes the debug output trace mechanism and 13283193267Sjkimhas a larger code and data size. Note that these values will vary 13284126372Snjldepending on the efficiency of the compiler and the compiler 13285114237Snjloptions used during generation. 13286102550Siwasaki 13287102550Siwasaki Previous Release 13288104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13289104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13290102550Siwasaki Current Release: 13291104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 13292104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 13293102550Siwasaki 13294102550Siwasaki 13295102550Siwasaki2) Linux 13296102550Siwasaki 13297167802Sjkim 13298104470SiwasakiAdded preliminary support for obtaining _TRA data for PCI root 13299104470Siwasakibridges (Bjorn Helgaas). 13300102550Siwasaki 13301102550Siwasaki 13302102550Siwasaki3) iASL Compiler Version X2046: 13303102550Siwasaki 13304193267SjkimFixed a problem where the "_DDN" reserved name was defined to be a 13305126372Snjlcontrol method with one argument. There are no arguments, and 13306114237Snjl_DDN does not have to be a control method. 13307102550Siwasaki 13308114237SnjlFixed a problem with the Linux version of the compiler where the 13309114237Snjlsource lines printed with error messages were the wrong lines. 13310114237SnjlThis turned out to be the "LF versus CR/LF" difference between 13311114237SnjlWindows and Unix. This appears to be the longstanding issue 13312114237Snjlconcerning listing output and error messages. 13313102550Siwasaki 13314114237SnjlFixed a problem with the Linux version of compiler where opcode 13315114237Snjlnames within error messages were wrong. This was caused by a 13316114237Snjlslight difference in the output of the Flex tool on Linux versus 13317114237SnjlWindows. 13318102550Siwasaki 13319193267SjkimFixed a problem with the Linux compiler where the hex output files 13320126372Snjlcontained some garbage data caused by an internal buffer overrun. 13321102550Siwasaki 13322102550Siwasaki 13323102550Siwasaki---------------------------------------- 13324102550Siwasaki17 May 2002. Summary of changes for this release. 13325102550Siwasaki 13326102550Siwasaki 13327102550Siwasaki1) ACPI CA Core Subsystem Version 20020517: 13328102550Siwasaki 13329102550SiwasakiImplemented a workaround to an BIOS bug discovered on the HP 13330104470SiwasakiOmniBook where the FADT revision number and the table size are 13331193267Sjkiminconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 13332126372Snjlbehavior is to fallback to using only the ACPI 1.0 fields of the 13333126372SnjlFADT if the table is too small to be a ACPI 2.0 table as claimed 13334126372Snjlby the revision number. Although this is a BIOS bug, this is a 13335126372Snjlcase where the workaround is simple enough and with no side 13336126372Snjleffects, so it seemed prudent to add it. A warning message is 13337126372Snjlissued, however. 13338102550Siwasaki 13339193267SjkimImplemented minimum size checks for the fixed-length ACPI tables - 13340126372Snjl- the FADT and FACS, as well as consistency checks between the 13341114237Snjlrevision number and the table size. 13342102550Siwasaki 13343114237SnjlFixed a reported problem in the table override support where the 13344114237Snjlnew table pointer was incorrectly treated as a physical address 13345114237Snjlinstead of a logical address. 13346102550Siwasaki 13347114237SnjlEliminated the use of the AE_AML_ERROR exception and replaced it 13348114237Snjlwith more descriptive codes. 13349102550Siwasaki 13350193267SjkimFixed a problem where an exception would occur if an ASL Field was 13351126372Snjldefined with no named Field Units underneath it (used by some 13352114237Snjlindex fields). 13353102550Siwasaki 13354193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13355126372Snjlbelow. These are the code and data sizes for the acpica.lib 13356126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13357126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13358126372Snjlversion of the code includes the debug output trace mechanism and 13359193267Sjkimhas a larger code and data size. Note that these values will vary 13360126372Snjldepending on the efficiency of the compiler and the compiler 13361126372Snjloptions used during generation. 13362102550Siwasaki 13363102550Siwasaki Previous Release 13364104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13365104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13366102550Siwasaki Current Release: 13367104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 13368104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 13369102550Siwasaki 13370102550Siwasaki 13371102550Siwasaki 13372102550Siwasaki2) Linux 13373102550Siwasaki 13374114237SnjlMuch work done on ACPI init (MADT and PCI IRQ routing support). 13375114237Snjl(Paul D. and Dominik Brodowski) 13376102550Siwasaki 13377102550SiwasakiFix PCI IRQ-related panic on boot (Sam Revitch) 13378102550Siwasaki 13379102550SiwasakiSet BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 13380102550Siwasaki 13381102550SiwasakiFix "MHz" typo (Dominik Brodowski) 13382102550Siwasaki 13383102550SiwasakiFix RTC year 2000 issue (Dominik Brodowski) 13384102550Siwasaki 13385102550SiwasakiPreclude multiple button proc entries (Eric Brunet) 13386102550Siwasaki 13387102550SiwasakiMoved arch-specific code out of include/platform/aclinux.h 13388102550Siwasaki 13389102550Siwasaki3) iASL Compiler Version X2044: 13390102550Siwasaki 13391193267SjkimImplemented error checking for the string used in the EISAID macro 13392193267Sjkim(Usually used in the definition of the _HID object.) The code now 13393126372Snjlstrictly enforces the PnP format - exactly 7 characters, 3 13394126372Snjluppercase letters and 4 hex digits. 13395102550Siwasaki 13396102550SiwasakiIf a raw string is used in the definition of the _HID object 13397102550Siwasaki(instead of the EISAID macro), the string must contain all 13398114237Snjlalphanumeric characters (e.g., "*PNP0011" is not allowed because 13399114237Snjlof the asterisk.) 13400102550Siwasaki 13401114237SnjlImplemented checking for invalid use of ACPI reserved names for 13402114237Snjlmost of the name creation operators (Name, Device, Event, Mutex, 13403114237SnjlOperationRegion, PowerResource, Processor, and ThermalZone.) 13404114237SnjlPreviously, this check was only performed for control methods. 13405102550Siwasaki 13406114237SnjlImplemented an additional check on the Name operator to emit an 13407114237Snjlerror if a reserved name that must be implemented in ASL as a 13408114237Snjlcontrol method is used. We know that a reserved name must be a 13409114237Snjlmethod if it is defined with input arguments. 13410102550Siwasaki 13411193267SjkimThe warning emitted when a namespace object reference is not found 13412126372Snjlduring the cross reference phase has been changed into an error. 13413193267SjkimThe "External" directive should be used for names defined in other 13414126372Snjlmodules. 13415102550Siwasaki 13416102550Siwasaki 13417102550Siwasaki4) Tools and Utilities 13418102550Siwasaki 13419114237SnjlThe 16-bit tools (adump16 and aexec16) have been regenerated and 13420114237Snjltested. 13421102550Siwasaki 13422193267SjkimFixed a problem with the output of both acpidump and adump16 where 13423126372Snjlthe indentation of closing parentheses and brackets was not 13424167802Sjkim 13425114237Snjlaligned properly with the parent block. 13426102550Siwasaki 13427102550Siwasaki 13428102550Siwasaki---------------------------------------- 13429102550Siwasaki03 May 2002. Summary of changes for this release. 13430102550Siwasaki 13431102550Siwasaki 13432102550Siwasaki1) ACPI CA Core Subsystem Version 20020503: 13433102550Siwasaki 13434114237SnjlAdded support a new OSL interface that allows the host operating 13435167802Sjkim 13436114237Snjlsystem software to override the DSDT found in the firmware - 13437193267SjkimAcpiOsTableOverride. With this interface, the OSL can examine the 13438126372Snjlversion of the firmware DSDT and replace it with a different one 13439126372Snjlif desired. 13440102550Siwasaki 13441114237SnjlAdded new external interfaces for accessing ACPI registers from 13442114237Snjldevice drivers and other system software - AcpiGetRegister and 13443114237SnjlAcpiSetRegister. This was simply an externalization of the 13444114237Snjlexisting AcpiHwBitRegister interfaces. 13445102550Siwasaki 13446104470SiwasakiFixed a regression introduced in the previous build where the 13447104470SiwasakiASL/AML CreateField operator always returned an error, 13448102550Siwasaki"destination must be a NS Node". 13449102550Siwasaki 13450114237SnjlExtended the maximum time (before failure) to successfully enable 13451114237SnjlACPI mode to 3 seconds. 13452102550Siwasaki 13453193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13454126372Snjlbelow. These are the code and data sizes for the acpica.lib 13455126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13456126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13457126372Snjlversion of the code includes the debug output trace mechanism and 13458193267Sjkimhas a larger code and data size. Note that these values will vary 13459126372Snjldepending on the efficiency of the compiler and the compiler 13460126372Snjloptions used during generation. 13461102550Siwasaki 13462102550Siwasaki Previous Release 13463104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13464104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13465102550Siwasaki Current Release: 13466104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 13467104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 13468102550Siwasaki 13469102550Siwasaki 13470102550Siwasaki2) Linux 13471102550Siwasaki 13472104470SiwasakiEnhanced ACPI init code for SMP. We are now fully MPS and $PIR- 13473193267Sjkimfree. While 3 out of 4 of our in-house systems work fine, the last 13474126372Snjlone still hangs when testing the LAPIC timer. 13475102550Siwasaki 13476114237SnjlRenamed many files in 2.5 kernel release to omit "acpi_" from the 13477114237Snjlname. 13478102550Siwasaki 13479102550SiwasakiAdded warning on boot for Presario 711FR. 13480102550Siwasaki 13481102550SiwasakiSleep improvements (Pavel Machek) 13482102550Siwasaki 13483102550SiwasakiACPI can now be built without CONFIG_PCI enabled. 13484102550Siwasaki 13485102550SiwasakiIA64: Fixed memory map functions (JI Lee) 13486102550Siwasaki 13487102550Siwasaki 13488102550Siwasaki3) iASL Compiler Version X2043: 13489102550Siwasaki 13490114237SnjlAdded support to allow the compiler to be integrated into the MS 13491114237SnjlVC++ development environment for one-button compilation of single 13492114237Snjlfiles or entire projects -- with error-to-source-line mapping. 13493102550Siwasaki 13494104470SiwasakiImplemented support for compile-time constant folding for the 13495104470SiwasakiType3, Type4, and Type5 opcodes first defined in the ACPI 2.0 13496104470Siwasakispecification. This allows the ASL writer to use expressions 13497104470Siwasakiinstead of Integer/Buffer/String constants in terms that must 13498114237Snjlevaluate to constants at compile time and will also simplify the 13499114237Snjlemitted AML in any such sub-expressions that can be folded 13500104470Siwasaki(evaluated at compile-time.) This increases the size of the 13501104470Siwasakicompiler significantly because a portion of the ACPI CA AML 13502104470Siwasakiinterpreter is included within the compiler in order to pre- 13503104470Siwasakievaluate constant expressions. 13504102550Siwasaki 13505114237Snjl 13506102550SiwasakiFixed a problem with the "Unicode" ASL macro that caused the 13507114237Snjlcompiler to fault. (This macro is used in conjunction with the 13508114237Snjl_STR reserved name.) 13509102550Siwasaki 13510114237SnjlImplemented an AML opcode optimization to use the Zero, One, and 13511114237SnjlOnes opcodes where possible to further reduce the size of integer 13512114237Snjlconstants and thus reduce the overall size of the generated AML 13513114237Snjlcode. 13514102550Siwasaki 13515193267SjkimImplemented error checking for new reserved terms for ACPI version 13516126372Snjl2.0A. 13517102550Siwasaki 13518104470SiwasakiImplemented the -qr option to display the current list of ACPI 13519104470Siwasakireserved names known to the compiler. 13520102550Siwasaki 13521104470SiwasakiImplemented the -qc option to display the current list of ASL 13522104470Siwasakioperators that are allowed within constant expressions and can 13523193267Sjkimtherefore be folded at compile time if the operands are constants. 13524102550Siwasaki 13525102550Siwasaki 13526102550Siwasaki4) Documentation 13527102550Siwasaki 13528193267SjkimUpdated the Programmer's Reference for new interfaces, data types, 13529126372Snjland memory allocation model options. 13530102550Siwasaki 13531114237SnjlUpdated the iASL Compiler User Reference to apply new format and 13532114237Snjladd information about new features and options. 13533102550Siwasaki 13534102550Siwasaki---------------------------------------- 13535102550Siwasaki19 April 2002. Summary of changes for this release. 13536102550Siwasaki 13537102550Siwasaki1) ACPI CA Core Subsystem Version 20020419: 13538102550Siwasaki 13539114237SnjlThe source code base for the Core Subsystem has been completely 13540114237Snjlcleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 13541114237Snjlversions. The Lint option files used are included in the 13542114237Snjl/acpi/generate/lint directory. 13543102550Siwasaki 13544102550SiwasakiImplemented enhanced status/error checking across the entire 13545114237SnjlHardware manager subsystem. Any hardware errors (reported from 13546114237Snjlthe OSL) are now bubbled up and will abort a running control 13547114237Snjlmethod. 13548102550Siwasaki 13549167802Sjkim 13550114237SnjlFixed a problem where the per-ACPI-table integer width (32 or 64) 13551114237Snjlwas stored only with control method nodes, causing a fault when 13552114237Snjlnon-control method code was executed during table loading. The 13553114237Snjlsolution implemented uses a global variable to indicate table 13554114237Snjlwidth across the entire ACPI subsystem. Therefore, ACPI CA does 13555114237Snjlnot support mixed integer widths across different ACPI tables 13556114237Snjl(DSDT, SSDT). 13557102550Siwasaki 13558114237SnjlFixed a problem where NULL extended fields (X fields) in an ACPI 13559114237Snjl2.0 ACPI FADT caused the table load to fail. Although the 13560114237Snjlexisting ACPI specification is a bit fuzzy on this topic, the new 13561114237Snjlbehavior is to fall back on a ACPI 1.0 field if the corresponding 13562193267SjkimACPI 2.0 X field is zero (even though the table revision indicates 13563193267Sjkima full ACPI 2.0 table.) The ACPI specification will be updated to 13564126372Snjlclarify this issue. 13565102550Siwasaki 13566104470SiwasakiFixed a problem with the SystemMemory operation region handler 13567104470Siwasakiwhere memory was always accessed byte-wise even if the AML- 13568104470Siwasakispecified access width was larger than a byte. This caused 13569104470Siwasakiproblems on systems with memory-mapped I/O. Memory is now 13570193267Sjkimaccessed with the width specified. On systems that do not support 13571193267Sjkimnon-aligned transfers, a check is made to guarantee proper address 13572126372Snjlalignment before proceeding in order to avoid an AML-caused 13573126372Snjlalignment fault within the kernel. 13574102550Siwasaki 13575102550Siwasaki 13576114237SnjlFixed a problem with the ExtendedIrq resource where only one byte 13577114237Snjlof the 4-byte Irq field was extracted. 13578102550Siwasaki 13579114237SnjlFixed the AcpiExDigitsNeeded() procedure to support _UID. This 13580114237Snjlfunction was out of date and required a rewrite. 13581114237Snjl 13582193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13583126372Snjlbelow. These are the code and data sizes for the acpica.lib 13584126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13585126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13586126372Snjlversion of the code includes the debug output trace mechanism and 13587193267Sjkimhas a larger code and data size. Note that these values will vary 13588126372Snjldepending on the efficiency of the compiler and the compiler 13589126372Snjloptions used during generation. 13590102550Siwasaki 13591102550Siwasaki Previous Release 13592104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13593104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13594102550Siwasaki Current Release: 13595104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13596104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13597102550Siwasaki 13598102550Siwasaki 13599102550Siwasaki2) Linux 13600102550Siwasaki 13601102550SiwasakiPCI IRQ routing fixes (Dominik Brodowski) 13602102550Siwasaki 13603102550Siwasaki 13604102550Siwasaki3) iASL Compiler Version X2042: 13605102550Siwasaki 13606104470SiwasakiImplemented an additional compile-time error check for a field 13607104470Siwasakiunit whose size + minimum access width would cause a run-time 13608114237Snjlaccess beyond the end-of-region. Previously, only the field size 13609114237Snjlitself was checked. 13610102550Siwasaki 13611104470SiwasakiThe Core subsystem and iASL compiler now share a common parse 13612104470Siwasakiobject in preparation for compile-time evaluation of the type 13613104470Siwasaki3/4/5 ASL operators. 13614102550Siwasaki 13615102550Siwasaki 13616102550Siwasaki---------------------------------------- 13617102550SiwasakiSummary of changes for this release: 03_29_02 13618102550Siwasaki 13619102550Siwasaki1) ACPI CA Core Subsystem Version 20020329: 13620102550Siwasaki 13621104470SiwasakiImplemented support for late evaluation of TermArg operands to 13622193267SjkimBuffer and Package objects. This allows complex expressions to be 13623126372Snjlused in the declarations of these object types. 13624102550Siwasaki 13625193267SjkimFixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 13626126372Snjl1.0, if the field was larger than 32 bits, it was returned as a 13627126372Snjlbuffer - otherwise it was returned as an integer. In ACPI 2.0, 13628193267Sjkimthe field is returned as a buffer only if the field is larger than 13629126372Snjl64 bits. The TableRevision is now considered when making this 13630126372Snjlconversion to avoid incompatibility with existing ASL code. 13631102550Siwasaki 13632104470SiwasakiImplemented logical addressing for AcpiOsGetRootPointer. This 13633114237Snjlallows an RSDP with either a logical or physical address. With 13634114237Snjlthis support, the host OS can now override all ACPI tables with 13635114237Snjlone logical RSDP. Includes implementation of "typed" pointer 13636114237Snjlsupport to allow a common data type for both physical and logical 13637114237Snjlpointers internally. This required a change to the 13638114237SnjlAcpiOsGetRootPointer interface. 13639102550Siwasaki 13640193267SjkimImplemented the use of ACPI 2.0 Generic Address Structures for all 13641193267SjkimGPE, Fixed Event, and PM Timer I/O. This allows the use of memory 13642126372Snjlmapped I/O for these ACPI features. 13643102550Siwasaki 13644102550SiwasakiInitialization now ignores not only non-required tables (All 13645114237Snjltables other than the FADT, FACS, DSDT, and SSDTs), but also does 13646114237Snjlnot validate the table headers of unrecognized tables. 13647102550Siwasaki 13648102550SiwasakiFixed a problem where a notify handler could only be 13649102550Siwasakiinstalled/removed on an object of type Device. All "notify" 13650167802Sjkim 13651102550Siwasakiobjects are now supported -- Devices, Processor, Power, and 13652102550SiwasakiThermal. 13653102550Siwasaki 13654114237SnjlRemoved most verbosity from the ACPI_DB_INFO debug level. Only 13655193267Sjkimcritical information is returned when this debug level is enabled. 13656102550Siwasaki 13657193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13658126372Snjlbelow. These are the code and data sizes for the acpica.lib 13659126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13660126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13661126372Snjlversion of the code includes the debug output trace mechanism and 13662193267Sjkimhas a larger code and data size. Note that these values will vary 13663126372Snjldepending on the efficiency of the compiler and the compiler 13664126372Snjloptions used during generation. 13665102550Siwasaki 13666102550Siwasaki Previous Release 13667104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13668104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13669102550Siwasaki Current Release: 13670104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13671104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13672102550Siwasaki 13673102550Siwasaki 13674102550Siwasaki2) Linux: 13675102550Siwasaki 13676114237SnjlThe processor driver (acpi_processor.c) now fully supports ACPI 13677114237Snjl2.0-based processor performance control (e.g. Intel(R) 13678114237SnjlSpeedStep(TM) technology) Note that older laptops that only have 13679114237Snjlthe Intel "applet" interface are not supported through this. The 13680114237Snjl'limit' and 'performance' interface (/proc) are fully functional. 13681114237Snjl[Note that basic policy for controlling performance state 13682114237Snjltransitions will be included in the next version of ospmd.] The 13683114237Snjlidle handler was modified to more aggressively use C2, and PIIX4 13684114237Snjlerrata handling underwent a complete overhaul (big thanks to 13685114237SnjlDominik Brodowski). 13686102550Siwasaki 13687114237SnjlAdded support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 13688114237Snjlbased devices in the ACPI namespace are now dynamically bound 13689114237Snjl(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 13690114237SnjlThis allows, among other things, ACPI to resolve bus numbers for 13691114237Snjlsubordinate PCI bridges. 13692102550Siwasaki 13693104470SiwasakiEnhanced PCI IRQ routing to get the proper bus number for _PRT 13694104470Siwasakientries defined underneath PCI bridges. 13695102550Siwasaki 13696104470SiwasakiAdded IBM 600E to bad bios list due to invalid _ADR value for 13697104470SiwasakiPIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 13698102550Siwasaki 13699114237SnjlIn the process of adding full MADT support (e.g. IOAPIC) for IA32 13700114237Snjl(acpi.c, mpparse.c) -- stay tuned. 13701102550Siwasaki 13702102550SiwasakiAdded back visual differentiation between fixed-feature and 13703114237Snjlcontrol-method buttons in dmesg. Buttons are also subtyped (e.g. 13704114237Snjlbutton/power/PWRF) to simplify button identification. 13705102550Siwasaki 13706114237SnjlWe no longer use -Wno-unused when compiling debug. Please ignore 13707114237Snjlany "_THIS_MODULE defined but not used" messages. 13708102550Siwasaki 13709102550SiwasakiCan now shut down the system using "magic sysrq" key. 13710102550Siwasaki 13711102550Siwasaki 13712102550Siwasaki3) iASL Compiler version 2041: 13713102550Siwasaki 13714104470SiwasakiFixed a problem where conversion errors for hex/octal/decimal 13715104470Siwasakiconstants were not reported. 13716102550Siwasaki 13717193267SjkimImplemented a fix for the General Register template Address field. 13718126372SnjlThis field was 8 bits when it should be 64. 13719102550Siwasaki 13720193267SjkimFixed a problem where errors/warnings were no longer being emitted 13721126372Snjlwithin the listing output file. 13722102550Siwasaki 13723114237SnjlImplemented the ACPI 2.0A restriction on ACPI Table Signatures to 13724114237Snjlexactly 4 characters, alphanumeric only. 13725102550Siwasaki 13726102550Siwasaki 13727102550Siwasaki 13728102550Siwasaki 13729102550Siwasaki---------------------------------------- 13730102550SiwasakiSummary of changes for this release: 03_08_02 13731102550Siwasaki 13732102550Siwasaki 13733102550Siwasaki1) ACPI CA Core Subsystem Version 20020308: 13734102550Siwasaki 13735114237SnjlFixed a problem with AML Fields where the use of the "AccessAny" 13736193267Sjkimkeyword could cause an interpreter error due to attempting to read 13737126372Snjlor write beyond the end of the parent Operation Region. 13738102550Siwasaki 13739193267SjkimFixed a problem in the SystemMemory Operation Region handler where 13740126372Snjlan attempt was made to map memory beyond the end of the region. 13741126372SnjlThis was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 13742126372Snjlerrors on some Linux systems. 13743102550Siwasaki 13744114237SnjlFixed a problem where the interpreter/namespace "search to root" 13745114237Snjlalgorithm was not functioning for some object types. Relaxed the 13746114237Snjlinternal restriction on the search to allow upsearches for all 13747114237Snjlexternal object types as well as most internal types. 13748102550Siwasaki 13749102550Siwasaki 13750102550Siwasaki2) Linux: 13751102550Siwasaki 13752193267SjkimWe now use safe_halt() macro versus individual calls to sti | hlt. 13753102550Siwasaki 13754193267SjkimWriting to the processor limit interface should now work. "echo 1" 13755126372Snjlwill increase the limit, 2 will decrease, and 0 will reset to the 13756167802Sjkim 13757126372Snjldefault. 13758102550Siwasaki 13759102550Siwasaki 13760102550Siwasaki3) ASL compiler: 13761102550Siwasaki 13762102550SiwasakiFixed segfault on Linux version. 13763102550Siwasaki 13764102550Siwasaki 13765102550Siwasaki---------------------------------------- 13766102550SiwasakiSummary of changes for this release: 02_25_02 13767102550Siwasaki 13768102550Siwasaki1) ACPI CA Core Subsystem: 13769102550Siwasaki 13770102550Siwasaki 13771102550SiwasakiFixed a problem where the GPE bit masks were not initialized 13772102550Siwasakiproperly, causing erratic GPE behavior. 13773102550Siwasaki 13774193267SjkimImplemented limited support for multiple calling conventions. The 13775126372Snjlcode can be generated with either the VPL (variable parameter 13776114237Snjllist, or "C") convention, or the FPL (fixed parameter list, or 13777114237Snjl"Pascal") convention. The core subsystem is about 3.4% smaller 13778114237Snjlwhen generated with FPL. 13779102550Siwasaki 13780102550Siwasaki 13781102550Siwasaki2) Linux 13782102550Siwasaki 13783114237SnjlRe-add some /proc/acpi/event functionality that was lost during 13784114237Snjlthe rewrite 13785102550Siwasaki 13786193267SjkimResolved issue with /proc events for fixed-feature buttons showing 13787126372Snjlup as the system device. 13788102550Siwasaki 13789193267SjkimFixed checks on C2/C3 latencies to be inclusive of maximum values. 13790102550Siwasaki 13791114237SnjlReplaced AE_ERRORs in acpi_osl.c with more specific error codes. 13792102550Siwasaki 13793114237SnjlChanged ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 13794102550Siwasaki 13795104470SiwasakiFixed limit interface & usage to fix bugs with passive cooling 13796104470Siwasakihysterisis. 13797102550Siwasaki 13798102550SiwasakiRestructured PRT support. 13799102550Siwasaki 13800102550Siwasaki 13801102550Siwasaki---------------------------------------- 13802102550SiwasakiSummary of changes for this label: 02_14_02 13803102550Siwasaki 13804102550Siwasaki 13805102550Siwasaki1) ACPI CA Core Subsystem: 13806102550Siwasaki 13807114237SnjlImplemented support in AcpiLoadTable to allow loading of FACS and 13808114237SnjlFADT tables. 13809102550Siwasaki 13810114237SnjlSuport for the now-obsolete interim 0.71 64-bit ACPI tables has 13811193267Sjkimbeen removed. All 64-bit platforms should be migrated to the ACPI 13812193267Sjkim2.0 tables. The actbl71.h header has been removed from the source 13813126372Snjltree. 13814102550Siwasaki 13815114237SnjlAll C macros defined within the subsystem have been prefixed with 13816114237Snjl"ACPI_" to avoid collision with other system include files. 13817102550Siwasaki 13818193267SjkimRemoved the return value for the two AcpiOsPrint interfaces, since 13819126372Snjlit is never used and causes lint warnings for ignoring the return 13820126372Snjlvalue. 13821102550Siwasaki 13822104470SiwasakiAdded error checking to all internal mutex acquire and release 13823104470Siwasakicalls. Although a failure from one of these interfaces is 13824104470Siwasakiprobably a fatal system error, these checks will cause the 13825114237Snjlimmediate abort of the currently executing method or interface. 13826102550Siwasaki 13827114237SnjlFixed a problem where the AcpiSetCurrentResources interface could 13828193267Sjkimfault. This was a side effect of the deployment of the new memory 13829126372Snjlallocation model. 13830102550Siwasaki 13831193267SjkimFixed a couple of problems with the Global Lock support introduced 13832193267Sjkimin the last major build. The "common" (1.0/2.0) internal FACS was 13833126372Snjlbeing overwritten with the FACS signature and clobbering the 13834126372SnjlGlobal Lock pointer. Also, the actual firmware FACS was being 13835126372Snjlunmapped after construction of the "common" FACS, preventing 13836126372Snjlaccess to the actual Global Lock field within it. The "common" 13837126372Snjlinternal FACS is no longer installed as an actual ACPI table; it 13838126372Snjlis used simply as a global. 13839102550Siwasaki 13840193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13841126372Snjlbelow. These are the code and data sizes for the acpica.lib 13842126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13843126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13844126372Snjlversion of the code includes the debug output trace mechanism and 13845193267Sjkimhas a larger code and data size. Note that these values will vary 13846126372Snjldepending on the efficiency of the compiler and the compiler 13847126372Snjloptions used during generation. 13848102550Siwasaki 13849102550Siwasaki Previous Release (02_07_01) 13850104470Siwasaki Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13851104470Siwasaki Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13852102550Siwasaki Current Release: 13853104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13854104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13855102550Siwasaki 13856102550Siwasaki 13857102550Siwasaki2) Linux 13858102550Siwasaki 13859102550SiwasakiUpdated Linux-specific code for core macro and OSL interface 13860102550Siwasakichanges described above. 13861102550Siwasaki 13862114237SnjlImproved /proc/acpi/event. It now can be opened only once and has 13863114237Snjlproper poll functionality. 13864102550Siwasaki 13865102550SiwasakiFixed and restructured power management (acpi_bus). 13866102550Siwasaki 13867193267SjkimOnly create /proc "view by type" when devices of that class exist. 13868102550Siwasaki 13869104470SiwasakiFixed "charging/discharging" bug (and others) in acpi_battery. 13870102550Siwasaki 13871102550SiwasakiImproved thermal zone code. 13872102550Siwasaki 13873102550Siwasaki 13874102550Siwasaki3) ASL Compiler, version X2039: 13875102550Siwasaki 13876114237Snjl 13877114237SnjlImplemented the new compiler restriction on ASL String hex/octal 13878193267Sjkimescapes to non-null, ASCII values. An error results if an invalid 13879126372Snjlvalue is used. (This will require an ACPI 2.0 specification 13880126372Snjlchange.) 13881102550Siwasaki 13882193267SjkimAML object labels that are output to the optional C and ASM source 13883126372Snjlare now prefixed with both the ACPI table signature and table ID 13884126372Snjlto help guarantee uniqueness within a large BIOS project. 13885102550Siwasaki 13886102550Siwasaki 13887102550Siwasaki---------------------------------------- 13888102550SiwasakiSummary of changes for this label: 02_01_02 13889102550Siwasaki 13890102550Siwasaki1) ACPI CA Core Subsystem: 13891102550Siwasaki 13892114237SnjlACPI 2.0 support is complete in the entire Core Subsystem and the 13893114237SnjlASL compiler. All new ACPI 2.0 operators are implemented and all 13894114237Snjlother changes for ACPI 2.0 support are complete. With 13895193267Sjkimsimultaneous code and data optimizations throughout the subsystem, 13896126372SnjlACPI 2.0 support has been implemented with almost no additional 13897126372Snjlcost in terms of code and data size. 13898102550Siwasaki 13899114237SnjlImplemented a new mechanism for allocation of return buffers. If 13900114237Snjlthe buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 13901114237Snjlbe allocated on behalf of the caller. Consolidated all return 13902114237Snjlbuffer validation and allocation to a common procedure. Return 13903193267Sjkimbuffers will be allocated via the primary OSL allocation interface 13904193267Sjkimsince it appears that a separate pool is not needed by most users. 13905126372SnjlIf a separate pool is required for these buffers, the caller can 13906126372Snjlstill use the original mechanism and pre-allocate the buffer(s). 13907102550Siwasaki 13908102550SiwasakiImplemented support for string operands within the DerefOf 13909102550Siwasakioperator. 13910102550Siwasaki 13911114237SnjlRestructured the Hardware and Event managers to be table driven, 13912114237Snjlsimplifying the source code and reducing the amount of generated 13913114237Snjlcode. 13914102550Siwasaki 13915102550SiwasakiSplit the common read/write low-level ACPI register bitfield 13916104470Siwasakiprocedure into a separate read and write, simplifying the code 13917104470Siwasakiconsiderably. 13918102550Siwasaki 13919114237SnjlObsoleted the AcpiOsCallocate OSL interface. This interface was 13920114237Snjlused only a handful of times and didn't have enough critical mass 13921193267Sjkimfor a separate interface. Replaced with a common calloc procedure 13922126372Snjlin the core. 13923102550Siwasaki 13924104470SiwasakiFixed a reported problem with the GPE number mapping mechanism 13925104470Siwasakithat allows GPE1 numbers to be non-contiguous with GPE0. 13926114237SnjlReorganized the GPE information and shrunk a large array that was 13927114237Snjloriginally large enough to hold info for all possible GPEs (256) 13928114237Snjlto simply large enough to hold all GPEs up to the largest GPE 13929114237Snjlnumber on the machine. 13930102550Siwasaki 13931114237SnjlFixed a reported problem with resource structure alignment on 64- 13932114237Snjlbit platforms. 13933102550Siwasaki 13934102550SiwasakiChanged the AcpiEnableEvent and AcpiDisableEvent external 13935102550Siwasakiinterfaces to not require any flags for the common case of 13936102550Siwasakienabling/disabling a GPE. 13937102550Siwasaki 13938104470SiwasakiImplemented support to allow a "Notify" on a Processor object. 13939102550Siwasaki 13940114237SnjlMost TBDs in comments within the source code have been resolved 13941114237Snjland eliminated. 13942102550Siwasaki 13943167802Sjkim 13944102550SiwasakiFixed a problem in the interpreter where a standalone parent 13945102550Siwasakiprefix (^) was not handled correctly in the interpreter and 13946102550Siwasakidebugger. 13947102550Siwasaki 13948102550SiwasakiRemoved obsolete and unnecessary GPE save/restore code. 13949102550Siwasaki 13950193267SjkimImplemented Field support in the ASL Load operator. This allows a 13951126372Snjltable to be loaded from a named field, in addition to loading a 13952114237Snjltable directly from an Operation Region. 13953102550Siwasaki 13954193267SjkimImplemented timeout and handle support in the external Global Lock 13955126372Snjlinterfaces. 13956102550Siwasaki 13957114237SnjlFixed a problem in the AcpiDump utility where pathnames were no 13958193267Sjkimlonger being generated correctly during the dump of named objects. 13959102550Siwasaki 13960102550SiwasakiModified the AML debugger to give a full display of if/while 13961102550Siwasakipredicates instead of just one AML opcode at a time. (The 13962193267Sjkimpredicate can have several nested ASL statements.) The old method 13963126372Snjlwas confusing during single stepping. 13964102550Siwasaki 13965193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13966126372Snjlbelow. These are the code and data sizes for the acpica.lib 13967114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13968114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 13969114237Snjlversion of the code includes the debug output trace mechanism and 13970193267Sjkimhas a larger code and data size. Note that these values will vary 13971126372Snjldepending on the efficiency of the compiler and the compiler 13972114237Snjloptions used during generation. 13973102550Siwasaki 13974102550Siwasaki Previous Release (12_18_01) 13975114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13976114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13977102550Siwasaki Current Release: 13978114237Snjl Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13979114237Snjl Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13980102550Siwasaki 13981102550Siwasaki2) Linux 13982102550Siwasaki 13983104470Siwasaki Implemented fix for PIIX reverse throttling errata (Processor 13984104470Siwasakidriver) 13985102550Siwasaki 13986102550SiwasakiAdded new Limit interface (Processor and Thermal drivers) 13987102550Siwasaki 13988102550SiwasakiNew thermal policy (Thermal driver) 13989102550Siwasaki 13990102550SiwasakiMany updates to /proc 13991102550Siwasaki 13992102550SiwasakiBattery "low" event support (Battery driver) 13993102550Siwasaki 13994104470SiwasakiSupports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 13995102550Siwasaki 13996104470SiwasakiIA32 - IA64 initialization unification, no longer experimental 13997102550Siwasaki 13998102550SiwasakiMenuconfig options redesigned 13999102550Siwasaki 14000102550Siwasaki3) ASL Compiler, version X2037: 14001102550Siwasaki 14002193267SjkimImplemented several new output features to simplify integration of 14003126372SnjlAML code into firmware: 1) Output the AML in C source code with 14004193267Sjkimlabels for each named ASL object. The original ASL source code 14005193267Sjkimis interleaved as C comments. 2) Output the AML in ASM source code 14006126372Snjlwith labels and interleaved ASL source. 3) Output the AML in 14007126372Snjlraw hex table form, in either C or ASM. 14008102550Siwasaki 14009102550SiwasakiImplemented support for optional string parameters to the 14010102550SiwasakiLoadTable operator. 14011102550Siwasaki 14012104470SiwasakiCompleted support for embedded escape sequences within string 14013114237Snjlliterals. The compiler now supports all single character escapes 14014114237Snjlas well as the Octal and Hex escapes. Note: the insertion of a 14015114237Snjlnull byte into a string literal (via the hex/octal escape) causes 14016114237Snjlthe string to be immediately terminated. A warning is issued. 14017102550Siwasaki 14018104470SiwasakiFixed a problem where incorrect AML was generated for the case 14019104470Siwasakiwhere an ASL namepath consists of a single parent prefix ( 14020102550Siwasaki 14021102550Siwasaki) with no trailing name segments. 14022102550Siwasaki 14023102550SiwasakiThe compiler has been successfully generated with a 64-bit C 14024102550Siwasakicompiler. 14025102550Siwasaki 14026102550Siwasaki 14027102550Siwasaki 14028102550Siwasaki 14029102550Siwasaki---------------------------------------- 14030102550SiwasakiSummary of changes for this label: 12_18_01 14031102550Siwasaki 14032102550Siwasaki1) Linux 14033102550Siwasaki 14034114237SnjlEnhanced blacklist with reason and severity fields. Any table's 14035114237Snjlsignature may now be used to identify a blacklisted system. 14036102550Siwasaki 14037114237SnjlCall _PIC control method to inform the firmware which interrupt 14038114237Snjlmodel the OS is using. Turn on any disabled link devices. 14039102550Siwasaki 14040102550SiwasakiCleaned up busmgr /proc error handling (Andreas Dilger) 14041102550Siwasaki 14042102550Siwasaki 2) ACPI CA Core Subsystem: 14043102550Siwasaki 14044193267SjkimImplemented ACPI 2.0 semantics for the "Break" operator (Exit from 14045126372Snjlwhile loop) 14046102550Siwasaki 14047102550SiwasakiCompleted implementation of the ACPI 2.0 "Continue", 14048102550Siwasaki"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14049193267Sjkimoperators. All new ACPI 2.0 operators are now implemented in both 14050193267Sjkimthe ASL compiler and the AML interpreter. The only remaining ACPI 14051126372Snjl2.0 task is support for the String data type in the DerefOf 14052193267Sjkimoperator. Fixed a problem with AcquireMutex where the status code 14053126372Snjlwas lost if the caller had to actually wait for the mutex. 14054102550Siwasaki 14055104470SiwasakiIncreased the maximum ASL Field size from 64K bits to 4G bits. 14056102550Siwasaki 14057193267SjkimCompleted implementation of the external Global Lock interfaces -- 14058126372SnjlAcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14059126372SnjlHandler parameters were added. 14060102550Siwasaki 14061102550SiwasakiCompleted another pass at removing warnings and issues when 14062114237Snjlcompiling with 64-bit compilers. The code now compiles cleanly 14063114237Snjlwith the Intel 64-bit C/C++ compiler. Most notably, the pointer 14064114237Snjladd and subtract (diff) macros have changed considerably. 14065102550Siwasaki 14066167802Sjkim 14067114237SnjlCreated and deployed a new ACPI_SIZE type that is 64-bits wide on 14068114237Snjl64-bit platforms, 32-bits on all others. This type is used 14069193267Sjkimwherever memory allocation and/or the C sizeof() operator is used, 14070126372Snjland affects the OSL memory allocation interfaces AcpiOsAllocate 14071126372Snjland AcpiOsCallocate. 14072102550Siwasaki 14073102550SiwasakiImplemented sticky user breakpoints in the AML debugger. 14074102550Siwasaki 14075193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14076126372Snjlbelow. These are the code and data sizes for the acpica.lib 14077114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14078114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 14079114237Snjlversion of the code includes the debug output trace mechanism and 14080114237Snjlhas a larger code and data size. Note that these values will vary 14081114237Snjldepending on the efficiency of the compiler and the compiler 14082114237Snjloptions used during generation. 14083102550Siwasaki 14084102550Siwasaki Previous Release (12_05_01) 14085114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14086114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14087102550Siwasaki Current Release: 14088114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14089114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14090102550Siwasaki 14091102550Siwasaki 3) ASL Compiler, version X2034: 14092102550Siwasaki 14093114237SnjlNow checks for (and generates an error if detected) the use of a 14094114237SnjlBreak or Continue statement without an enclosing While statement. 14095102550Siwasaki 14096167802Sjkim 14097102550SiwasakiSuccessfully generated the compiler with the Intel 64-bit C 14098102550Siwasakicompiler. 14099102550Siwasaki 14100102550Siwasaki ---------------------------------------- 14101102550SiwasakiSummary of changes for this label: 12_05_01 14102102550Siwasaki 14103102550Siwasaki 1) ACPI CA Core Subsystem: 14104102550Siwasaki 14105102550SiwasakiThe ACPI 2.0 CopyObject operator is fully implemented. This 14106104470Siwasakioperator creates a new copy of an object (and is also used to 14107193267Sjkimbypass the "implicit conversion" mechanism of the Store operator.) 14108102550Siwasaki 14109102550SiwasakiThe ACPI 2.0 semantics for the SizeOf operator are fully 14110102550Siwasakiimplemented. The change is that performing a SizeOf on a 14111114237Snjlreference object causes an automatic dereference of the object to 14112114237Snjltha actual value before the size is evaluated. This behavior was 14113114237Snjlundefined in ACPI 1.0. 14114102550Siwasaki 14115114237SnjlThe ACPI 2.0 semantics for the Extended IRQ resource descriptor 14116114237Snjlhave been implemented. The interrupt polarity and mode are now 14117114237Snjlindependently set. 14118102550Siwasaki 14119114237SnjlFixed a problem where ASL Constants (Zero, One, Ones, Revision) 14120114237Snjlappearing in Package objects were not properly converted to 14121114237Snjlintegers when the internal Package was converted to an external 14122114237Snjlobject (via the AcpiEvaluateObject interface.) 14123102550Siwasaki 14124114237SnjlFixed a problem with the namespace object deletion mechanism for 14125114237Snjlobjects created by control methods. There were two parts to this 14126193267Sjkimproblem: 1) Objects created during the initialization phase method 14127193267Sjkimparse were not being deleted, and 2) The object owner ID mechanism 14128126372Snjlto track objects was broken. 14129102550Siwasaki 14130114237SnjlFixed a problem where the use of the ASL Scope operator within a 14131114237Snjlcontrol method would result in an invalid opcode exception. 14132102550Siwasaki 14133114237SnjlFixed a problem introduced in the previous label where the buffer 14134114237Snjllength required for the _PRT structure was not being returned 14135114237Snjlcorrectly. 14136102550Siwasaki 14137193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14138126372Snjlbelow. These are the code and data sizes for the acpica.lib 14139114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14140114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 14141114237Snjlversion of the code includes the debug output trace mechanism and 14142193267Sjkimhas a larger code and data size. Note that these values will vary 14143126372Snjldepending on the efficiency of the compiler and the compiler 14144114237Snjloptions used during generation. 14145102550Siwasaki 14146102550Siwasaki Previous Release (11_20_01) 14147114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14148114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14149102550Siwasaki 14150102550Siwasaki Current Release: 14151114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 14152114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 14153102550Siwasaki 14154102550Siwasaki 2) Linux: 14155102550Siwasaki 14156102550SiwasakiUpdated all files to apply cleanly against 2.4.16. 14157102550Siwasaki 14158104470SiwasakiAdded basic PCI Interrupt Routing Table (PRT) support for IA32 14159114237Snjl(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 14160114237Snjlversion supports both static and dyanmic PRT entries, but dynamic 14161114237Snjlentries are treated as if they were static (not yet 14162114237Snjlreconfigurable). Architecture- specific code to use this data is 14163114237Snjlabsent on IA32 but should be available shortly. 14164102550Siwasaki 14165114237SnjlChanged the initialization sequence to start the ACPI interpreter 14166114237Snjl(acpi_init) prior to initialization of the PCI driver (pci_init) 14167114237Snjlin init/main.c. This ordering is required to support PRT and 14168114237Snjlfacilitate other (future) enhancement. A side effect is that the 14169193267SjkimACPI bus driver and certain device drivers can no longer be loaded 14170126372Snjlas modules. 14171102550Siwasaki 14172104470SiwasakiModified the 'make menuconfig' options to allow PCI Interrupt 14173104470SiwasakiRouting support to be included without the ACPI Bus and other 14174104470Siwasakidevice drivers. 14175102550Siwasaki 14176102550Siwasaki 3) ASL Compiler, version X2033: 14177102550Siwasaki 14178102550SiwasakiFixed some issues with the use of the new CopyObject and 14179102550SiwasakiDataTableRegion operators. Both are fully functional. 14180102550Siwasaki 14181102550Siwasaki ---------------------------------------- 14182102550SiwasakiSummary of changes for this label: 11_20_01 14183102550Siwasaki 14184102550Siwasaki 20 November 2001. Summary of changes for this release. 14185102550Siwasaki 14186102550Siwasaki 1) ACPI CA Core Subsystem: 14187102550Siwasaki 14188104470SiwasakiUpdated Index support to match ACPI 2.0 semantics. Storing a 14189193267SjkimInteger, String, or Buffer to an Index of a Buffer will store only 14190126372Snjlthe least-significant byte of the source to the Indexed buffer 14191126372Snjlbyte. Multiple writes are not performed. 14192102550Siwasaki 14193104470SiwasakiFixed a problem where the access type used in an AccessAs ASL 14194104470Siwasakioperator was not recorded correctly into the field object. 14195102550Siwasaki 14196102550SiwasakiFixed a problem where ASL Event objects were created in a 14197114237Snjlsignalled state. Events are now created in an unsignalled state. 14198102550Siwasaki 14199114237SnjlThe internal object cache is now purged after table loading and 14200114237Snjlinitialization to reduce the use of dynamic kernel memory -- on 14201114237Snjlthe assumption that object use is greatest during the parse phase 14202193267Sjkimof the entire table (versus the run-time use of individual control 14203126372Snjlmethods.) 14204102550Siwasaki 14205102550SiwasakiACPI 2.0 variable-length packages are now fully operational. 14206102550Siwasaki 14207193267SjkimCode and Data Size: Code and Data optimizations have permitted new 14208126372Snjlfeature development with an actual reduction in the library size. 14209126372SnjlCurrent core subsystem library sizes are shown below. These are 14210126372Snjlthe code and data sizes for the acpica.lib produced by the 14211193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 14212126372Snjlany ACPI driver or OSPM code. The debug version of the code 14213126372Snjlincludes the debug output trace mechanism and has a larger code 14214126372Snjland data size. Note that these values will vary depending on the 14215126372Snjlefficiency of the compiler and the compiler options used during 14216126372Snjlgeneration. 14217102550Siwasaki 14218102550Siwasaki Previous Release (11_09_01): 14219114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14220114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14221102550Siwasaki 14222102550Siwasaki Current Release: 14223114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 14224114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 14225102550Siwasaki 14226102550Siwasaki 2) Linux: 14227102550Siwasaki 14228114237SnjlEnhanced the ACPI boot-time initialization code to allow the use 14229114237Snjlof Local APIC tables for processor enumeration on IA-32, and to 14230114237Snjlpave the way for a fully MPS-free boot (on SMP systems) in the 14231114237Snjlnear future. This functionality replaces 14232114237Snjlarch/i386/kernel/acpitables.c, which was introduced in an earlier 14233114237Snjl2.4.15-preX release. To enable this feature you must add 14234114237Snjl"acpi_boot=on" to the kernel command line -- see the help entry 14235193267Sjkimfor CONFIG_ACPI_BOOT for more information. An IA-64 release is in 14236126372Snjlthe works... 14237102550Siwasaki 14238114237SnjlRestructured the configuration options to allow boot-time table 14239114237Snjlparsing support without inclusion of the ACPI Interpreter (and 14240114237Snjlother) code. 14241102550Siwasaki 14242193267SjkimNOTE: This release does not include fixes for the reported events, 14243126372Snjlpower-down, and thermal passive cooling issues (coming soon). 14244102550Siwasaki 14245102550Siwasaki 3) ASL Compiler: 14246102550Siwasaki 14247114237SnjlAdded additional typechecking for Fields within restricted access 14248114237SnjlOperation Regions. All fields within EC and CMOS regions must be 14249114237Snjldeclared with ByteAcc. All fields withing SMBus regions must be 14250114237Snjldeclared with the BufferAcc access type. 14251102550Siwasaki 14252114237SnjlFixed a problem where the listing file output of control methods 14253114237Snjlno longer interleaved the actual AML code with the ASL source 14254114237Snjlcode. 14255102550Siwasaki 14256102550Siwasaki 14257102550Siwasaki 14258167802Sjkim 14259102550Siwasaki---------------------------------------- 14260102550SiwasakiSummary of changes for this label: 11_09_01 14261102550Siwasaki 14262102550Siwasaki1) ACPI CA Core Subsystem: 14263102550Siwasaki 14264114237SnjlImplemented ACPI 2.0-defined support for writes to fields with a 14265193267SjkimBuffer, String, or Integer source operand that is smaller than the 14266126372Snjltarget field. In these cases, the source operand is zero-extended 14267126372Snjlto fill the target field. 14268102550Siwasaki 14269104470SiwasakiFixed a problem where a Field starting bit offset (within the 14270104470Siwasakiparent operation region) was calculated incorrectly if the 14271167802Sjkim 14272104470Siwasakialignment of the field differed from the access width. This 14273114237Snjlaffected CreateWordField, CreateDwordField, CreateQwordField, and 14274114237Snjlpossibly other fields that use the "AccessAny" keyword. 14275102550Siwasaki 14276114237SnjlFixed a problem introduced in the 11_02_01 release where indirect 14277114237Snjlstores through method arguments did not operate correctly. 14278102550Siwasaki 14279102550Siwasaki2) Linux: 14280102550Siwasaki 14281102550SiwasakiImplemented boot-time ACPI table parsing support 14282114237Snjl(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 14283114237Snjlfacilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 14284114237Snjllegacy BIOS interfaces (e.g. MPS) for the configuration of system 14285193267Sjkimprocessors, memory, and interrupts during setup_arch(). Note that 14286126372Snjlthis patch does not include the required architecture-specific 14287126372Snjlchanges required to apply this information -- subsequent patches 14288126372Snjlwill be posted for both IA32 and IA64 to achieve this. 14289102550Siwasaki 14290114237SnjlAdded low-level sleep support for IA32 platforms, courtesy of Pat 14291114237SnjlMochel. This allows IA32 systems to transition to/from various 14292114237Snjlsleeping states (e.g. S1, S3), although the lack of a centralized 14293114237Snjldriver model and power-manageable drivers will prevent its 14294114237Snjl(successful) use on most systems. 14295102550Siwasaki 14296114237SnjlRevamped the ACPI 'menuconfig' layout: created new "ACPI Support" 14297193267Sjkimsubmenu, unified IA32 and IA64 options, added new "Boot using ACPI 14298126372Snjltables" option, etc. 14299102550Siwasaki 14300114237SnjlIncreased the default timeout for the EC driver from 1ms to 10ms 14301114237Snjl(1000 cycles of 10us) to try to address AE_TIME errors during EC 14302114237Snjltransactions. 14303102550Siwasaki 14304102550Siwasaki ---------------------------------------- 14305102550SiwasakiSummary of changes for this label: 11_02_01 14306102550Siwasaki 14307102550Siwasaki1) ACPI CA Core Subsystem: 14308102550Siwasaki 14309102550SiwasakiACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 14310102550Siwasaki(QWordAcc keyword). All ACPI 2.0 64-bit support is now 14311102550Siwasakiimplemented. 14312102550Siwasaki 14313114237SnjlOSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 14314114237Snjlchanges to support ACPI 2.0 Qword field access. Read/Write 14315193267SjkimPciConfiguration(), Read/Write Memory(), and Read/Write Port() now 14316126372Snjlaccept an ACPI_INTEGER (64 bits) as the value parameter. Also, 14317193267Sjkimthe value parameter for the address space handler interface is now 14318193267Sjkiman ACPI_INTEGER. OSL implementations of these interfaces must now 14319126372Snjlhandle the case where the Width parameter is 64. 14320102550Siwasaki 14321104470SiwasakiIndex Fields: Fixed a problem where unaligned bit assembly and 14322104470Siwasakidisassembly for IndexFields was not supported correctly. 14323102550Siwasaki 14324102550SiwasakiIndex and Bank Fields: Nested Index and Bank Fields are now 14325104470Siwasakisupported. During field access, a check is performed to ensure 14326114237Snjlthat the value written to an Index or Bank register is not out of 14327114237Snjlthe range of the register. The Index (or Bank) register is 14328114237Snjlwritten before each access to the field data. Future support will 14329114237Snjlinclude allowing individual IndexFields to be wider than the 14330114237SnjlDataRegister width. 14331102550Siwasaki 14332114237SnjlFields: Fixed a problem where the AML interpreter was incorrectly 14333114237Snjlattempting to write beyond the end of a Field/OpRegion. This was 14334114237Snjla boundary case that occurred when a DWORD field was written to a 14335114237SnjlBYTE access OpRegion, forcing multiple writes and causing the 14336114237Snjlinterpreter to write one datum too many. 14337102550Siwasaki 14338102550SiwasakiFields: Fixed a problem with Field/OpRegion access where the 14339114237Snjlstarting bit address of a field was incorrectly calculated if the 14340114237Snjlcurrent access type was wider than a byte (WordAcc, DwordAcc, or 14341114237SnjlQwordAcc). 14342102550Siwasaki 14343104470SiwasakiFields: Fixed a problem where forward references to individual 14344193267SjkimFieldUnits (individual Field names within a Field definition) were 14345126372Snjlnot resolved during the AML table load. 14346102550Siwasaki 14347104470SiwasakiFields: Fixed a problem where forward references from a Field 14348104470Siwasakidefinition to the parent Operation Region definition were not 14349104470Siwasakiresolved during the AML table load. 14350104470Siwasaki 14351114237SnjlFields: Duplicate FieldUnit names within a scope are now detected 14352114237Snjlduring AML table load. 14353102550Siwasaki 14354193267SjkimAcpi Interfaces: Fixed a problem where the AcpiGetName() interface 14355126372Snjlreturned an incorrect name for the root node. 14356102550Siwasaki 14357193267SjkimCode and Data Size: Code and Data optimizations have permitted new 14358126372Snjlfeature development with an actual reduction in the library size. 14359126372SnjlCurrent core subsystem library sizes are shown below. These are 14360126372Snjlthe code and data sizes for the acpica.lib produced by the 14361193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 14362126372Snjlany ACPI driver or OSPM code. The debug version of the code 14363126372Snjlincludes the debug output trace mechanism and has a larger code 14364126372Snjland data size. Note that these values will vary depending on the 14365126372Snjlefficiency of the compiler and the compiler options used during 14366126372Snjlgeneration. 14367102550Siwasaki 14368102550Siwasaki Previous Release (10_18_01): 14369114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14370114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14371102550Siwasaki 14372102550Siwasaki Current Release: 14373114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 14374114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 14375102550Siwasaki 14376102550Siwasaki 2) Linux: 14377102550Siwasaki 14378102550SiwasakiImproved /proc processor output (Pavel Machek) Re-added 14379102550SiwasakiMODULE_LICENSE("GPL") to all modules. 14380102550Siwasaki 14381102550Siwasaki 3) ASL Compiler version X2030: 14382102550Siwasaki 14383104470SiwasakiDuplicate FieldUnit names within a scope are now detected and 14384104470Siwasakiflagged as errors. 14385102550Siwasaki 14386102550Siwasaki 4) Documentation: 14387102550Siwasaki 14388104470SiwasakiProgrammer Reference updated to reflect OSL and address space 14389104470Siwasakihandler interface changes described above. 14390102550Siwasaki 14391102550Siwasaki---------------------------------------- 14392102550SiwasakiSummary of changes for this label: 10_18_01 14393102550Siwasaki 14394102550SiwasakiACPI CA Core Subsystem: 14395102550Siwasaki 14396193267SjkimFixed a problem with the internal object reference count mechanism 14397126372Snjlthat occasionally caused premature object deletion. This resolves 14398126372Snjlall of the outstanding problem reports where an object is deleted 14399193267Sjkimin the middle of an interpreter evaluation. Although this problem 14400126372Snjlonly showed up in rather obscure cases, the solution to the 14401126372Snjlproblem involved an adjustment of all reference counts involving 14402126372Snjlobjects attached to namespace nodes. 14403102550Siwasaki 14404102550SiwasakiFixed a problem with Field support in the interpreter where 14405114237Snjlwriting to an aligned field whose length is an exact multiple (2 14406193267Sjkimor greater) of the field access granularity would cause an attempt 14407126372Snjlto write beyond the end of the field. 14408102550Siwasaki 14409102550SiwasakiThe top level AML opcode execution functions within the 14410102550Siwasakiinterpreter have been renamed with a more meaningful and 14411102550Siwasakiconsistent naming convention. The modules exmonad.c and 14412102550Siwasakiexdyadic.c were eliminated. New modules are exoparg1.c, 14413102550Siwasakiexoparg2.c, exoparg3.c, and exoparg6.c. 14414102550Siwasaki 14415114237SnjlSupport for the ACPI 2.0 "Mid" ASL operator has been implemented. 14416102550Siwasaki 14417114237SnjlFixed a problem where the AML debugger was causing some internal 14418114237Snjlobjects to not be deleted during subsystem termination. 14419102550Siwasaki 14420104470SiwasakiFixed a problem with the external AcpiEvaluateObject interface 14421104470Siwasakiwhere the subsystem would fault if the named object to be 14422104470Siwasakievaluated refered to a constant such as Zero, Ones, etc. 14423102550Siwasaki 14424102550SiwasakiFixed a problem with IndexFields and BankFields where the 14425114237Snjlsubsystem would fault if the index, data, or bank registers were 14426114237Snjlnot defined in the same scope as the field itself. 14427102550Siwasaki 14428104470SiwasakiAdded printf format string checking for compilers that support 14429104470Siwasakithis feature. Corrected more than 50 instances of issues with 14430104470Siwasakiformat specifiers within invocations of ACPI_DEBUG_PRINT 14431104470Siwasakithroughout the core subsystem code. 14432102550Siwasaki 14433104470SiwasakiThe ASL "Revision" operator now returns the ACPI support level 14434193267Sjkimimplemented in the core - the value "2" since the ACPI 2.0 support 14435126372Snjlis more than 50% implemented. 14436102550Siwasaki 14437114237SnjlEnhanced the output of the AML debugger "dump namespace" command 14438114237Snjlto output in a more human-readable form. 14439102550Siwasaki 14440114237SnjlCurrent core subsystem library code sizes are shown below. These 14441167802Sjkim 14442114237Snjlare the code and data sizes for the acpica.lib produced by the 14443193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 14444126372Snjlany ACPI driver or OSPM code. The debug version of the code 14445126372Snjlincludes the full debug trace mechanism -- leading to a much 14446167802Sjkim 14447114237Snjllarger code and data size. Note that these values will vary 14448114237Snjldepending on the efficiency of the compiler and the compiler 14449114237Snjloptions used during generation. 14450102550Siwasaki 14451102550Siwasaki Previous Label (09_20_01): 14452114237Snjl Non-Debug Version: 65K Code, 5K Data, 70K Total 14453114237Snjl Debug Version: 138K Code, 58K Data, 196K Total 14454102550Siwasaki 14455102550Siwasaki This Label: 14456102550Siwasaki 14457114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 14458114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 14459114237Snjl 14460102550SiwasakiLinux: 14461102550Siwasaki 14462104470SiwasakiImplemented a "Bad BIOS Blacklist" to track machines that have 14463104470Siwasakiknown ASL/AML problems. 14464102550Siwasaki 14465193267SjkimEnhanced the /proc interface for the thermal zone driver and added 14466126372Snjlsupport for _HOT (the critical suspend trip point). The 'info' 14467193267Sjkimfile now includes threshold/policy information, and allows setting 14468126372Snjlof _SCP (cooling preference) and _TZP (polling frequency) values 14469193267Sjkimto the 'info' file. Examples: "echo tzp=5 > info" sets the polling 14470126372Snjlfrequency to 5 seconds, and "echo scp=1 > info" sets the cooling 14471126372Snjlpreference to the passive/quiet mode (if supported by the ASL). 14472102550Siwasaki 14473104470SiwasakiImplemented a workaround for a gcc bug that resuted in an OOPs 14474104470Siwasakiwhen loading the control method battery driver. 14475102550Siwasaki 14476102550Siwasaki ---------------------------------------- 14477102550SiwasakiSummary of changes for this label: 09_20_01 14478102550Siwasaki 14479102550Siwasaki ACPI CA Core Subsystem: 14480102550Siwasaki 14481104470SiwasakiThe AcpiEnableEvent and AcpiDisableEvent interfaces have been 14482104470Siwasakimodified to allow individual GPE levels to be flagged as wake- 14483114237Snjlenabled (i.e., these GPEs are to remain enabled when the platform 14484114237Snjlsleeps.) 14485102550Siwasaki 14486104470SiwasakiThe AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 14487104470Siwasakisupport wake-enabled GPEs. This means that upon entering the 14488104470Siwasakisleep state, all GPEs that are not wake-enabled are disabled. 14489104470SiwasakiWhen leaving the sleep state, these GPEs are reenabled. 14490102550Siwasaki 14491114237SnjlA local double-precision divide/modulo module has been added to 14492114237Snjlenhance portability to OS kernels where a 64-bit math library is 14493114237Snjlnot available. The new module is "utmath.c". 14494102550Siwasaki 14495104470SiwasakiSeveral optimizations have been made to reduce the use of CPU 14496114237Snjlstack. Originally over 2K, the maximum stack usage is now below 14497114237Snjl2K at 1860 bytes (1.82k) 14498102550Siwasaki 14499114237SnjlFixed a problem with the AcpiGetFirmwareTable interface where the 14500193267Sjkimroot table pointer was not mapped into a logical address properly. 14501102550Siwasaki 14502193267SjkimFixed a problem where a NULL pointer was being dereferenced in the 14503126372Snjlinterpreter code for the ASL Notify operator. 14504102550Siwasaki 14505102550SiwasakiFixed a problem where the use of the ASL Revision operator 14506114237Snjlreturned an error. This operator now returns the current version 14507114237Snjlof the ACPI CA core subsystem. 14508102550Siwasaki 14509114237SnjlFixed a problem where objects passed as control method parameters 14510114237Snjlto AcpiEvaluateObject were always deleted at method termination. 14511114237SnjlHowever, these objects may end up being stored into the namespace 14512114237Snjlby the called method. The object reference count mechanism was 14513114237Snjlapplied to these objects instead of a force delete. 14514102550Siwasaki 14515114237SnjlFixed a problem where static strings or buffers (contained in the 14516114237SnjlAML code) that are declared as package elements within the ASL 14517114237Snjlcode could cause a fault because the interpreter would attempt to 14518114237Snjldelete them. These objects are now marked with the "static 14519114237Snjlobject" flag to prevent any attempt to delete them. 14520102550Siwasaki 14521114237SnjlImplemented an interpreter optimization to use operands directly 14522114237Snjlfrom the state object instead of extracting the operands to local 14523114237Snjlvariables. This reduces stack use and code size, and improves 14524114237Snjlperformance. 14525102550Siwasaki 14526193267SjkimThe module exxface.c was eliminated as it was an unnecessary extra 14527126372Snjllayer of code. 14528102550Siwasaki 14529114237SnjlCurrent core subsystem library code sizes are shown below. These 14530114237Snjlare the code and data sizes for the acpica.lib produced by the 14531193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 14532126372Snjlany ACPI driver or OSPM code. The debug version of the code 14533126372Snjlincludes the full debug trace mechanism -- leading to a much 14534114237Snjllarger code and data size. Note that these values will vary 14535114237Snjldepending on the efficiency of the compiler and the compiler 14536114237Snjloptions used during generation. 14537102550Siwasaki 14538102550Siwasaki Non-Debug Version: 65K Code, 5K Data, 70K Total 14539114237Snjl(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 14540114237SnjlTotal (Previously 195K) 14541102550Siwasaki 14542102550SiwasakiLinux: 14543102550Siwasaki 14544114237SnjlSupport for ACPI 2.0 64-bit integers has been added. All ACPI 14545114237SnjlInteger objects are now 64 bits wide 14546102550Siwasaki 14547114237SnjlAll Acpi data types and structures are now in lower case. Only 14548114237SnjlAcpi macros are upper case for differentiation. 14549102550Siwasaki 14550102550Siwasaki Documentation: 14551102550Siwasaki 14552102550SiwasakiChanges to the external interfaces as described above. 14553102550Siwasaki 14554102550Siwasaki ---------------------------------------- 14555102550SiwasakiSummary of changes for this label: 08_31_01 14556102550Siwasaki 14557102550Siwasaki ACPI CA Core Subsystem: 14558102550Siwasaki 14559114237SnjlA bug with interpreter implementation of the ASL Divide operator 14560114237Snjlwas found and fixed. The implicit function return value (not the 14561114237Snjlexplicit store operands) was returning the remainder instead of 14562114237Snjlthe quotient. This was a longstanding bug and it fixes several 14563114237Snjlknown outstanding issues on various platforms. 14564102550Siwasaki 14565104470SiwasakiThe ACPI_DEBUG_PRINT and function trace entry/exit macros have 14566193267Sjkimbeen further optimized for size. There are 700 invocations of the 14567126372SnjlDEBUG_PRINT macro alone, so each optimization reduces the size of 14568126372Snjlthe debug version of the subsystem significantly. 14569102550Siwasaki 14570114237SnjlA stack trace mechanism has been implemented. The maximum stack 14571193267Sjkimusage is about 2K on 32-bit platforms. The debugger command "stat 14572126372Snjlstack" will display the current maximum stack usage. 14573102550Siwasaki 14574114237SnjlAll public symbols and global variables within the subsystem are 14575114237Snjlnow prefixed with the string "Acpi". This keeps all of the 14576114237Snjlsymbols grouped together in a kernel map, and avoids conflicts 14577114237Snjlwith other kernel subsystems. 14578102550Siwasaki 14579114237SnjlMost of the internal fixed lookup tables have been moved into the 14580114237Snjlcode segment via the const operator. 14581102550Siwasaki 14582104470SiwasakiSeveral enhancements have been made to the interpreter to both 14583104470Siwasakireduce the code size and improve performance. 14584102550Siwasaki 14585114237SnjlCurrent core subsystem library code sizes are shown below. These 14586114237Snjlare the code and data sizes for the acpica.lib produced by the 14587193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 14588126372Snjlany ACPI driver or OSPM code. The debug version of the code 14589126372Snjlincludes the full debug trace mechanism which contains over 700 14590126372Snjlinvocations of the DEBUG_PRINT macro, 500 function entry macro 14591126372Snjlinvocations, and over 900 function exit macro invocations -- 14592126372Snjlleading to a much larger code and data size. Note that these 14593114237Snjlvalues will vary depending on the efficiency of the compiler and 14594114237Snjlthe compiler options used during generation. 14595102550Siwasaki 14596102550Siwasaki Non-Debug Version: 64K Code, 5K Data, 69K Total 14597102550SiwasakiDebug Version: 137K Code, 58K Data, 195K Total 14598102550Siwasaki 14599102550Siwasaki Linux: 14600102550Siwasaki 14601104470SiwasakiImplemented wbinvd() macro, pending a kernel-wide definition. 14602102550Siwasaki 14603102550SiwasakiFixed /proc/acpi/event to handle poll() and short reads. 14604102550Siwasaki 14605102550Siwasaki ASL Compiler, version X2026: 14606102550Siwasaki 14607104470SiwasakiFixed a problem introduced in the previous label where the AML 14608167802Sjkim 14609104470Siwasakicode emitted for package objects produced packages with zero 14610104470Siwasakilength. 14611102550Siwasaki 14612102550Siwasaki ---------------------------------------- 14613102550SiwasakiSummary of changes for this label: 08_16_01 14614102550Siwasaki 14615102550SiwasakiACPI CA Core Subsystem: 14616102550Siwasaki 14617114237SnjlThe following ACPI 2.0 ASL operators have been implemented in the 14618114237SnjlAML interpreter (These are already supported by the Intel ASL 14619193267Sjkimcompiler): ToDecimalString, ToHexString, ToString, ToInteger, and 14620126372SnjlToBuffer. Support for 64-bit AML constants is implemented in the 14621126372SnjlAML parser, debugger, and disassembler. 14622102550Siwasaki 14623114237SnjlThe internal memory tracking mechanism (leak detection code) has 14624114237Snjlbeen upgraded to reduce the memory overhead (a separate tracking 14625114237Snjlblock is no longer allocated for each memory allocation), and now 14626114237Snjlsupports all of the internal object caches. 14627102550Siwasaki 14628114237SnjlThe data structures and code for the internal object caches have 14629114237Snjlbeen coelesced and optimized so that there is a single cache and 14630114237Snjlmemory list data structure and a single group of functions that 14631114237Snjlimplement generic cache management. This has reduced the code 14632114237Snjlsize in both the debug and release versions of the subsystem. 14633102550Siwasaki 14634193267SjkimThe DEBUG_PRINT macro(s) have been optimized for size and replaced 14635126372Snjlby ACPI_DEBUG_PRINT. The syntax for this macro is slightly 14636126372Snjldifferent, because it generates a single call to an internal 14637126372Snjlfunction. This results in a savings of about 90 bytes per 14638193267Sjkiminvocation, resulting in an overall code and data savings of about 14639126372Snjl16% in the debug version of the subsystem. 14640102550Siwasaki 14641102550Siwasaki Linux: 14642102550Siwasaki 14643114237SnjlFixed C3 disk corruption problems and re-enabled C3 on supporting 14644114237Snjlmachines. 14645102550Siwasaki 14646102550SiwasakiIntegrated low-level sleep code by Patrick Mochel. 14647102550Siwasaki 14648102550SiwasakiFurther tweaked source code Linuxization. 14649102550Siwasaki 14650102550SiwasakiOther minor fixes. 14651102550Siwasaki 14652102550Siwasaki ASL Compiler: 14653102550Siwasaki 14654114237SnjlSupport for ACPI 2.0 variable length packages is fixed/completed. 14655102550Siwasaki 14656114237SnjlFixed a problem where the optional length parameter for the ACPI 14657114237Snjl2.0 ToString operator. 14658102550Siwasaki 14659114237SnjlFixed multiple extraneous error messages when a syntax error is 14660114237Snjldetected within the declaration line of a control method. 14661102550Siwasaki 14662102550Siwasaki ---------------------------------------- 14663102550SiwasakiSummary of changes for this label: 07_17_01 14664102550Siwasaki 14665102550SiwasakiACPI CA Core Subsystem: 14666102550Siwasaki 14667104470SiwasakiAdded a new interface named AcpiGetFirmwareTable to obtain any 14668193267SjkimACPI table via the ACPI signature. The interface can be called at 14669126372Snjlany time during kernel initialization, even before the kernel 14670193267Sjkimvirtual memory manager is initialized and paging is enabled. This 14671126372Snjlallows kernel subsystems to obtain ACPI tables very early, even 14672126372Snjlbefore the ACPI CA subsystem is initialized. 14673102550Siwasaki 14674104470SiwasakiFixed a problem where Fields defined with the AnyAcc attribute 14675104470Siwasakicould be resolved to the incorrect address under the following 14676114237Snjlconditions: 1) the field width is larger than 8 bits and 2) the 14677114237Snjlparent operation region is not defined on a DWORD boundary. 14678102550Siwasaki 14679114237SnjlFixed a problem where the interpreter is not being locked during 14680114237Snjlnamespace initialization (during execution of the _INI control 14681114237Snjlmethods), causing an error when an attempt is made to release it 14682114237Snjllater. 14683102550Siwasaki 14684104470SiwasakiACPI 2.0 support in the AML Interpreter has begun and will be 14685114237Snjlongoing throughout the rest of this year. In this label, The Mod 14686114237Snjloperator is implemented. 14687102550Siwasaki 14688102550SiwasakiAdded a new data type to contain full PCI addresses named 14689193267SjkimACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 14690126372Snjland Function values. 14691102550Siwasaki 14692102550Siwasaki Linux: 14693102550Siwasaki 14694102550SiwasakiEnhanced the Linux version of the source code to change most 14695102550Siwasakicapitalized ACPI type names to lowercase. For example, all 14696114237Snjlinstances of ACPI_STATUS are changed to acpi_status. This will 14697114237Snjlresult in a large diff, but the change is strictly cosmetic and 14698114237Snjlaligns the CA code closer to the Linux coding standard. 14699102550Siwasaki 14700102550SiwasakiOSL Interfaces: 14701102550Siwasaki 14702193267SjkimThe interfaces to the PCI configuration space have been changed to 14703193267Sjkimadd the PCI Segment number and to split the single 32-bit combined 14704126372SnjlDeviceFunction field into two 16-bit fields. This was 14705114237Snjlaccomplished by moving the four values that define an address in 14706114237SnjlPCI configuration space (segment, bus, device, and function) to 14707114237Snjlthe new ACPI_PCI_ID structure. 14708102550Siwasaki 14709104470SiwasakiThe changes to the PCI configuration space interfaces led to a 14710104470Siwasakireexamination of the complete set of address space access 14711114237Snjlinterfaces for PCI, I/O, and Memory. The previously existing 18 14712114237Snjlinterfaces have proven difficult to maintain (any small change 14713193267Sjkimmust be propagated across at least 6 interfaces) and do not easily 14714193267Sjkimallow for future expansion to 64 bits if necessary. Also, on some 14715126372Snjlsystems, it would not be appropriate to demultiplex the access 14716126372Snjlwidth (8, 16, 32,or 64) before calling the OSL if the 14717114237Snjlcorresponding native OS interfaces contain a similar access width 14718114237Snjlparameter. For these reasons, the 18 address space interfaces 14719114237Snjlhave been replaced by these 6 new ones: 14720102550Siwasaki 14721102550SiwasakiAcpiOsReadPciConfiguration 14722102550SiwasakiAcpiOsWritePciConfiguration 14723102550SiwasakiAcpiOsReadMemory 14724102550SiwasakiAcpiOsWriteMemory 14725102550SiwasakiAcpiOsReadPort 14726102550SiwasakiAcpiOsWritePort 14727102550Siwasaki 14728114237SnjlAdded a new interface named AcpiOsGetRootPointer to allow the OSL 14729114237Snjlto perform the platform and/or OS-specific actions necessary to 14730114237Snjlobtain the ACPI RSDP table pointer. On IA-32 platforms, this 14731114237Snjlinterface will simply call down to the CA core to perform the low- 14732114237Snjlmemory search for the table. On IA-64, the RSDP is obtained from 14733114237SnjlEFI. Migrating this interface to the OSL allows the CA core to 14734167802Sjkim 14735114237Snjlremain OS and platform independent. 14736102550Siwasaki 14737104470SiwasakiAdded a new interface named AcpiOsSignal to provide a generic 14738114237Snjl"function code and pointer" interface for various miscellaneous 14739114237Snjlsignals and notifications that must be made to the host OS. The 14740114237Snjlfirst such signals are intended to support the ASL Fatal and 14741114237SnjlBreakpoint operators. In the latter case, the AcpiOsBreakpoint 14742114237Snjlinterface has been obsoleted. 14743102550Siwasaki 14744102550SiwasakiThe definition of the AcpiFormatException interface has been 14745114237Snjlchanged to simplify its use. The caller no longer must supply a 14746114237Snjlbuffer to the call; A pointer to a const string is now returned 14747114237Snjldirectly. This allows the call to be easily used in printf 14748114237Snjlstatements, etc. since the caller does not have to manage a local 14749114237Snjlbuffer. 14750102550Siwasaki 14751114237Snjl 14752102550Siwasaki ASL Compiler, Version X2025: 14753102550Siwasaki 14754114237SnjlThe ACPI 2.0 Switch/Case/Default operators have been implemented 14755114237Snjland are fully functional. They will work with all ACPI 1.0 14756193267Sjkiminterpreters, since the operators are simply translated to If/Else 14757126372Snjlpairs. 14758102550Siwasaki 14759104470SiwasakiThe ACPI 2.0 ElseIf operator is implemented and will also work 14760104470Siwasakiwith 1.0 interpreters, for the same reason. 14761102550Siwasaki 14762114237SnjlImplemented support for ACPI 2.0 variable-length packages. These 14763114237Snjlpackages have a separate opcode, and their size is determined by 14764114237Snjlthe interpreter at run-time. 14765102550Siwasaki 14766193267SjkimDocumentation The ACPI CA Programmer Reference has been updated to 14767126372Snjlreflect the new interfaces and changes to existing interfaces. 14768102550Siwasaki 14769102550Siwasaki ------------------------------------------ 14770102550SiwasakiSummary of changes for this label: 06_15_01 14771102550Siwasaki 14772102550Siwasaki ACPI CA Core Subsystem: 14773102550Siwasaki 14774102550SiwasakiFixed a problem where a DWORD-accessed field within a Buffer 14775114237Snjlobject would get its byte address inadvertently rounded down to 14776114237Snjlthe nearest DWORD. Buffers are always Byte-accessible. 14777102550Siwasaki 14778102550Siwasaki ASL Compiler, version X2024: 14779102550Siwasaki 14780114237SnjlFixed a problem where the Switch() operator would either fault or 14781114237Snjlhang the compiler. Note however, that the AML code for this ACPI 14782114237Snjl2.0 operator is not yet implemented. 14783102550Siwasaki 14784114237SnjlCompiler uses the new AcpiOsGetTimer interface to obtain compile 14785114237Snjltimings. 14786102550Siwasaki 14787114237SnjlImplementation of the CreateField operator automatically converts 14788114237Snjla reference to a named field within a resource descriptor from a 14789114237Snjlbyte offset to a bit offset if required. 14790102550Siwasaki 14791102550SiwasakiAdded some missing named fields from the resource descriptor 14792193267Sjkimsupport. These are the names that are automatically created by the 14793126372Snjlcompiler to reference fields within a descriptor. They are only 14794126372Snjlvalid at compile time and are not passed through to the AML 14795114237Snjlinterpreter. 14796102550Siwasaki 14797104470SiwasakiResource descriptor named fields are now typed as Integers and 14798104470Siwasakisubject to compile-time typechecking when used in expressions. 14799102550Siwasaki 14800102550Siwasaki ------------------------------------------ 14801102550SiwasakiSummary of changes for this label: 05_18_01 14802102550Siwasaki 14803102550Siwasaki ACPI CA Core Subsystem: 14804102550Siwasaki 14805114237SnjlFixed a couple of problems in the Field support code where bits 14806193267Sjkimfrom adjacent fields could be returned along with the proper field 14807126372Snjlbits. Restructured the field support code to improve performance, 14808126372Snjlreadability and maintainability. 14809102550Siwasaki 14810114237SnjlNew DEBUG_PRINTP macro automatically inserts the procedure name 14811114237Snjlinto the output, saving hundreds of copies of procedure name 14812114237Snjlstrings within the source, shrinking the memory footprint of the 14813114237Snjldebug version of the core subsystem. 14814102550Siwasaki 14815102550Siwasaki Source Code Structure: 14816102550Siwasaki 14817104470SiwasakiThe source code directory tree was restructured to reflect the 14818114237Snjlcurrent organization of the component architecture. Some files 14819114237Snjland directories have been moved and/or renamed. 14820102550Siwasaki 14821102550Siwasaki Linux: 14822102550Siwasaki 14823102550SiwasakiFixed leaking kacpidpc processes. 14824102550Siwasaki 14825102550SiwasakiFixed queueing event data even when /proc/acpi/event is not 14826102550Siwasakiopened. 14827102550Siwasaki 14828102550Siwasaki ASL Compiler, version X2020: 14829102550Siwasaki 14830114237SnjlMemory allocation performance enhancement - over 24X compile time 14831114237Snjlimprovement on large ASL files. Parse nodes and namestring 14832114237Snjlbuffers are now allocated from a large internal compiler buffer. 14833102550Siwasaki 14834102550SiwasakiThe temporary .SRC file is deleted unless the "-s" option is 14835102550Siwasakispecified 14836102550Siwasaki 14837193267SjkimThe "-d" debug output option now sends all output to the .DBG file 14838126372Snjlinstead of the console. 14839102550Siwasaki 14840102550Siwasaki"External" second parameter is now optional 14841102550Siwasaki 14842102550Siwasaki"ElseIf" syntax now properly allows the predicate 14843102550Siwasaki 14844102550SiwasakiLast operand to "Load" now recognized as a Target operand 14845102550Siwasaki 14846102550SiwasakiDebug object can now be used anywhere as a normal object. 14847102550Siwasaki 14848102550SiwasakiResourceTemplate now returns an object of type BUFFER 14849102550Siwasaki 14850102550SiwasakiEISAID now returns an object of type INTEGER 14851102550Siwasaki 14852102550Siwasaki"Index" now works with a STRING operand 14853102550Siwasaki 14854102550Siwasaki"LoadTable" now accepts optional parameters 14855102550Siwasaki 14856102550Siwasaki"ToString" length parameter is now optional 14857102550Siwasaki 14858102550Siwasaki"Interrupt (ResourceType," parse error fixed. 14859102550Siwasaki 14860104470Siwasaki"Register" with a user-defined region space parse error fixed 14861102550Siwasaki 14862114237SnjlEscaped backslash at the end of a string ("\\") scan/parse error 14863114237Snjlfixed 14864102550Siwasaki 14865102550Siwasaki"Revision" is now an object of type INTEGER. 14866102550Siwasaki 14867102550Siwasaki 14868102550Siwasaki 14869102550Siwasaki------------------------------------------ 14870102550SiwasakiSummary of changes for this label: 05_02_01 14871102550Siwasaki 14872102550SiwasakiLinux: 14873102550Siwasaki 14874102550Siwasaki/proc/acpi/event now blocks properly. 14875102550Siwasaki 14876102550SiwasakiRemoved /proc/sys/acpi. You can still dump your DSDT from 14877102550Siwasaki/proc/acpi/dsdt. 14878102550Siwasaki 14879102550Siwasaki ACPI CA Core Subsystem: 14880102550Siwasaki 14881193267SjkimFixed a problem introduced in the previous label where some of the 14882126372Snjl"small" resource descriptor types were not recognized. 14883102550Siwasaki 14884193267SjkimImproved error messages for the case where an ASL Field is outside 14885126372Snjlthe range of the parent operation region. 14886102550Siwasaki 14887102550Siwasaki ASL Compiler, version X2018: 14888102550Siwasaki 14889167802Sjkim 14890193267SjkimAdded error detection for ASL Fields that extend beyond the length 14891126372Snjlof the parent operation region (only if the length of the region 14892126372Snjlis known at compile time.) This includes fields that have a 14893126372Snjlminimum access width that is smaller than the parent region, and 14894126372Snjlindividual field units that are partially or entirely beyond the 14895126372Snjlextent of the parent. 14896102550Siwasaki 14897102550Siwasaki 14898102550Siwasaki 14899102550Siwasaki------------------------------------------ 14900102550SiwasakiSummary of changes for this label: 04_27_01 14901102550Siwasaki 14902102550Siwasaki ACPI CA Core Subsystem: 14903102550Siwasaki 14904193267SjkimFixed a problem where the namespace mutex could be released at the 14905126372Snjlwrong time during execution of AcpiRemoveAddressSpaceHandler. 14906102550Siwasaki 14907104470SiwasakiAdded optional thread ID output for debug traces, to simplify 14908114237Snjldebugging of multiple threads. Added context switch notification 14909114237Snjlwhen the debug code realizes that a different thread is now 14910114237Snjlexecuting ACPI code. 14911102550Siwasaki 14912114237SnjlSome additional external data types have been prefixed with the 14913114237Snjlstring "ACPI_" for consistency. This may effect existing code. 14914193267SjkimThe data types affected are the external callback typedefs - e.g., 14915167802Sjkim 14916126372SnjlWALK_CALLBACK becomes ACPI_WALK_CALLBACK. 14917102550Siwasaki 14918102550Siwasaki Linux: 14919102550Siwasaki 14920102550SiwasakiFixed an issue with the OSL semaphore implementation where a 14921102550Siwasakithread was waking up with an error from receiving a SIGCHLD 14922102550Siwasakisignal. 14923102550Siwasaki 14924114237SnjlLinux version of ACPI CA now uses the system C library for string 14925114237Snjlmanipulation routines instead of a local implementation. 14926102550Siwasaki 14927102550SiwasakiCleaned up comments and removed TBDs. 14928102550Siwasaki 14929102550Siwasaki ASL Compiler, version X2017: 14930102550Siwasaki 14931102550SiwasakiEnhanced error detection and reporting for all file I/O 14932102550Siwasakioperations. 14933102550Siwasaki 14934102550Siwasaki Documentation: 14935102550Siwasaki 14936102550SiwasakiProgrammer Reference updated to version 1.06. 14937102550Siwasaki 14938102550Siwasaki 14939102550Siwasaki 14940102550Siwasaki------------------------------------------ 14941102550SiwasakiSummary of changes for this label: 04_13_01 14942102550Siwasaki 14943102550Siwasaki ACPI CA Core Subsystem: 14944102550Siwasaki 14945102550SiwasakiRestructured support for BufferFields and RegionFields. 14946104470SiwasakiBankFields support is now fully operational. All known 32-bit 14947114237Snjllimitations on field sizes have been removed. Both BufferFields 14948114237Snjland (Operation) RegionFields are now supported by the same field 14949114237Snjlmanagement code. 14950102550Siwasaki 14951114237SnjlResource support now supports QWORD address and IO resources. The 14952114237Snjl16/32/64 bit address structures and the Extended IRQ structure 14953114237Snjlhave been changed to properly handle Source Resource strings. 14954102550Siwasaki 14955114237SnjlA ThreadId of -1 is now used to indicate a "mutex not acquired" 14956193267Sjkimcondition internally and must never be returned by AcpiOsThreadId. 14957126372SnjlThis reserved value was changed from 0 since Unix systems allow a 14958126372Snjlthread ID of 0. 14959102550Siwasaki 14960102550SiwasakiLinux: 14961102550Siwasaki 14962102550SiwasakiDriver code reorganized to enhance portability 14963102550Siwasaki 14964102550SiwasakiAdded a kernel configuration option to control ACPI_DEBUG 14965102550Siwasaki 14966102550SiwasakiFixed the EC driver to honor _GLK. 14967102550Siwasaki 14968102550SiwasakiASL Compiler, version X2016: 14969102550Siwasaki 14970114237SnjlFixed support for the "FixedHw" keyword. Previously, the FixedHw 14971114237Snjladdress space was set to 0, not 0x7f as it should be. 14972102550Siwasaki 14973102550Siwasaki ------------------------------------------ 14974102550SiwasakiSummary of changes for this label: 03_13_01 14975102550Siwasaki 14976102550Siwasaki ACPI CA Core Subsystem: 14977102550Siwasaki 14978104470SiwasakiDuring ACPI initialization, the _SB_._INI method is now run if 14979104470Siwasakipresent. 14980102550Siwasaki 14981193267SjkimNotify handler fix - notifies are deferred until the parent method 14982126372Snjlcompletes execution. This fixes the "mutex already acquired" 14983126372Snjlissue seen occasionally. 14984102550Siwasaki 14985104470SiwasakiPart of the "implicit conversion" rules in ACPI 2.0 have been 14986114237Snjlfound to cause compatibility problems with existing ASL/AML. The 14987114237Snjlconvert "result-to-target-type" implementation has been removed 14988114237Snjlfor stores to method Args and Locals. Source operand conversion 14989114237Snjlis still fully implemented. Possible changes to ACPI 2.0 14990114237Snjlspecification pending. 14991102550Siwasaki 14992104470SiwasakiFix to AcpiRsCalculatePciRoutingTableLength to return correct 14993104470Siwasakilength. 14994102550Siwasaki 14995102550SiwasakiFix for compiler warnings for 64-bit compiles. 14996102550Siwasaki 14997102550Siwasaki Linux: 14998102550Siwasaki 14999102550Siwasaki/proc output aligned for easier parsing. 15000102550Siwasaki 15001102550SiwasakiRelease-version compile problem fixed. 15002102550Siwasaki 15003104470SiwasakiNew kernel configuration options documented in Configure.help. 15004102550Siwasaki 15005102550SiwasakiIBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15006102550Siwasakicontext" message. 15007102550Siwasaki 15008102550Siwasaki OSPM: 15009102550Siwasaki 15010102550SiwasakiPower resource driver integrated with bus manager. 15011102550Siwasaki 15012102550SiwasakiFixed kernel fault during active cooling for thermal zones. 15013102550Siwasaki 15014102550SiwasakiSource Code: 15015102550Siwasaki 15016102550SiwasakiThe source code tree has been restructured. 15017102550Siwasaki 15018102550Siwasaki 15019102550Siwasaki 15020102550Siwasaki------------------------------------------ 15021102550SiwasakiSummary of changes for this label: 03_02_01 15022102550Siwasaki 15023102550Siwasaki Linux OS Services Layer (OSL): 15024102550Siwasaki 15025102550SiwasakiMajor revision of all Linux-specific code. 15026102550Siwasaki 15027102550SiwasakiModularized all ACPI-specific drivers. 15028102550Siwasaki 15029102550SiwasakiAdded new thermal zone and power resource drivers. 15030102550Siwasaki 15031114237SnjlRevamped /proc interface (new functionality is under /proc/acpi). 15032102550Siwasaki 15033102550SiwasakiNew kernel configuration options. 15034102550Siwasaki 15035102550Siwasaki Linux known issues: 15036102550Siwasaki 15037114237SnjlNew kernel configuration options not documented in Configure.help 15038114237Snjlyet. 15039102550Siwasaki 15040114237Snjl 15041102550SiwasakiModule dependencies not currently implemented. If used, they 15042102550Siwasakishould be loaded in this order: busmgr, power, ec, system, 15043102550Siwasakiprocessor, battery, ac_adapter, button, thermal. 15044102550Siwasaki 15045102550SiwasakiModules will not load if CONFIG_MODVERSION is set. 15046102550Siwasaki 15047102550SiwasakiIBM 600E - entering S5 may reboot instead of shutting down. 15048102550Siwasaki 15049104470SiwasakiIBM 600E - Sleep button may generate "Invalid <NULL> context" 15050104470Siwasakimessage. 15051102550Siwasaki 15052104470SiwasakiSome systems may fail with "execution mutex already acquired" 15053104470Siwasakimessage. 15054102550Siwasaki 15055102550Siwasaki ACPI CA Core Subsystem: 15056102550Siwasaki 15057114237SnjlAdded a new OSL Interface, AcpiOsGetThreadId. This was required 15058193267Sjkimfor the deadlock detection code. Defined to return a non-zero, 32- 15059126372Snjlbit thread ID for the currently executing thread. May be a non- 15060126372Snjlzero constant integer on single-thread systems. 15061102550Siwasaki 15062193267SjkimImplemented deadlock detection for internal subsystem mutexes. We 15063126372Snjlmay add conditional compilation for this code (debug only) later. 15064102550Siwasaki 15065104470SiwasakiASL/AML Mutex object semantics are now fully supported. This 15066114237Snjlincludes multiple acquires/releases by owner and support for the 15067167802Sjkim 15068114237SnjlMutex SyncLevel parameter. 15069102550Siwasaki 15070102550SiwasakiA new "Force Release" mechanism automatically frees all ASL 15071104470SiwasakiMutexes that have been acquired but not released when a thread 15072114237Snjlexits the interpreter. This forces conformance to the ACPI spec 15073114237Snjl("All mutexes must be released when an invocation exits") and 15074114237Snjlprevents deadlocked ASL threads. This mechanism can be expanded 15075114237Snjl(later) to monitor other resource acquisitions if OEM ASL code 15076114237Snjlcontinues to misbehave (which it will). 15077102550Siwasaki 15078104470SiwasakiSeveral new ACPI exception codes have been added for the Mutex 15079104470Siwasakisupport. 15080102550Siwasaki 15081104470SiwasakiRecursive method calls are now allowed and supported (the ACPI 15082114237Snjlspec does in fact allow recursive method calls.) The number of 15083114237Snjlrecursive calls is subject to the restrictions imposed by the 15084114237SnjlSERIALIZED method keyword and SyncLevel (ACPI 2.0) method 15085104470Siwasakiparameter. 15086102550Siwasaki 15087102550SiwasakiImplemented support for the SyncLevel parameter for control 15088102550Siwasakimethods (ACPI 2.0 feature) 15089102550Siwasaki 15090114237SnjlFixed a deadlock problem when multiple threads attempted to use 15091114237Snjlthe interpreter. 15092102550Siwasaki 15093102550SiwasakiFixed a problem where the string length of a String package 15094102550Siwasakielement was not always set in a package returned from 15095102550SiwasakiAcpiEvaluateObject. 15096102550Siwasaki 15097114237SnjlFixed a problem where the length of a String package element was 15098114237Snjlnot always included in the length of the overall package returned 15099114237Snjlfrom AcpiEvaluateObject. 15100102550Siwasaki 15101102550SiwasakiAdded external interfaces (Acpi*) to the ACPI debug memory 15102102550Siwasakimanager. This manager keeps a list of all outstanding 15103193267Sjkimallocations, and can therefore detect memory leaks and attempts to 15104126372Snjlfree memory blocks more than once. Useful for code such as the 15105114237Snjlpower manager, etc. May not be appropriate for device drivers. 15106114237SnjlPerformance with the debug code enabled is slow. 15107102550Siwasaki 15108102550SiwasakiThe ACPI Global Lock is now an optional hardware element. 15109102550Siwasaki 15110102550Siwasaki ASL Compiler Version X2015: 15111102550Siwasaki 15112102550SiwasakiIntegrated changes to allow the compiler to be generated on 15113102550Siwasakimultiple platforms. 15114102550Siwasaki 15115102550SiwasakiLinux makefile added to generate the compiler on Linux 15116102550Siwasaki 15117102550Siwasaki Source Code: 15118102550Siwasaki 15119102550SiwasakiAll platform-specific headers have been moved to their own 15120102550Siwasakisubdirectory, Include/Platform. 15121102550Siwasaki 15122102550SiwasakiNew source file added, Interpreter/ammutex.c 15123102550Siwasaki 15124102550SiwasakiNew header file, Include/acstruct.h 15125102550Siwasaki 15126102550Siwasaki Documentation: 15127102550Siwasaki 15128114237SnjlThe programmer reference has been updated for the following new 15129114237Snjlinterfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 15130102550Siwasaki 15131102550Siwasaki ------------------------------------------ 15132102550SiwasakiSummary of changes for this label: 02_08_01 15133102550Siwasaki 15134102550SiwasakiCore ACPI CA Subsystem: Fixed a problem where an error was 15135193267Sjkimincorrectly returned if the return resource buffer was larger than 15136126372Snjlthe actual data (in the resource interfaces). 15137102550Siwasaki 15138114237SnjlReferences to named objects within packages are resolved to the 15139167802Sjkim 15140114237Snjlfull pathname string before packages are returned directly (via 15141114237Snjlthe AcpiEvaluateObject interface) or indirectly via the resource 15142114237Snjlinterfaces. 15143102550Siwasaki 15144102550SiwasakiLinux OS Services Layer (OSL): 15145102550Siwasaki 15146102550SiwasakiImproved /proc battery interface. 15147102550Siwasaki 15148102550Siwasaki 15149104470SiwasakiAdded C-state debugging output and other miscellaneous fixes. 15150102550Siwasaki 15151102550SiwasakiASL Compiler Version X2014: 15152102550Siwasaki 15153114237SnjlAll defined method arguments can now be used as local variables, 15154114237Snjlincluding the ones that are not actually passed in as parameters. 15155114237SnjlThe compiler tracks initialization of the arguments and issues an 15156114237Snjlexception if they are used without prior assignment (just like 15157114237Snjllocals). 15158102550Siwasaki 15159193267SjkimThe -o option now specifies a filename prefix that is used for all 15160126372Snjloutput files, including the AML output file. Otherwise, the 15161114237Snjldefault behavior is as follows: 1) the AML goes to the file 15162114237Snjlspecified in the DSDT. 2) all other output files use the input 15163114237Snjlsource filename as the base. 15164102550Siwasaki 15165102550Siwasaki ------------------------------------------ 15166102550SiwasakiSummary of changes for this label: 01_25_01 15167102550Siwasaki 15168114237SnjlCore ACPI CA Subsystem: Restructured the implementation of object 15169114237Snjlstore support within the interpreter. This includes support for 15170114237Snjlthe Store operator as well as any ASL operators that include a 15171114237Snjltarget operand. 15172102550Siwasaki 15173102550SiwasakiPartially implemented support for Implicit Result-to-Target 15174114237Snjlconversion. This is when a result object is converted on the fly 15175114237Snjlto the type of an existing target object. Completion of this 15176114237Snjlsupport is pending further analysis of the ACPI specification 15177114237Snjlconcerning this matter. 15178102550Siwasaki 15179114237SnjlCPU-specific code has been removed from the subsystem (hardware 15180114237Snjldirectory). 15181102550Siwasaki 15182102550SiwasakiNew Power Management Timer functions added 15183102550Siwasaki 15184114237SnjlLinux OS Services Layer (OSL): Moved system state transition code 15185114237Snjlto the core, fixed it, and modified Linux OSL accordingly. 15186102550Siwasaki 15187102550SiwasakiFixed C2 and C3 latency calculations. 15188102550Siwasaki 15189102550Siwasaki 15190114237SnjlWe no longer use the compilation date for the version message on 15191193267Sjkiminitialization, but retrieve the version from AcpiGetSystemInfo(). 15192102550Siwasaki 15193102550SiwasakiIncorporated for fix Sony VAIO machines. 15194102550Siwasaki 15195104470SiwasakiDocumentation: The Programmer Reference has been updated and 15196104470Siwasakireformatted. 15197102550Siwasaki 15198102550Siwasaki 15199102550SiwasakiASL Compiler: Version X2013: Fixed a problem where the line 15200102550Siwasakinumbering and error reporting could get out of sync in the 15201102550Siwasakipresence of multiple include files. 15202102550Siwasaki 15203102550Siwasaki ------------------------------------------ 15204102550SiwasakiSummary of changes for this label: 01_15_01 15205102550Siwasaki 15206102550SiwasakiCore ACPI CA Subsystem: 15207102550Siwasaki 15208114237SnjlImplemented support for type conversions in the execution of the 15209114237SnjlASL Concatenate operator (The second operand is converted to 15210114237Snjlmatch the type of the first operand before concatenation.) 15211102550Siwasaki 15212102550SiwasakiSupport for implicit source operand conversion is partially 15213114237Snjlimplemented. The ASL source operand types Integer, Buffer, and 15214114237SnjlString are freely interchangeable for most ASL operators and are 15215114237Snjlconverted by the interpreter on the fly as required. Implicit 15216114237SnjlTarget operand conversion (where the result is converted to the 15217114237Snjltarget type before storing) is not yet implemented. 15218102550Siwasaki 15219102550SiwasakiSupport for 32-bit and 64-bit BCD integers is implemented. 15220102550Siwasaki 15221193267SjkimProblem fixed where a field read on an aligned field could cause a 15222126372Snjlread past the end of the field. 15223102550Siwasaki 15224114237SnjlNew exception, AE_AML_NO_RETURN_VALUE, is returned when a method 15225114237Snjldoes not return a value, but the caller expects one. (The ASL 15226114237Snjlcompiler flags this as a warning.) 15227102550Siwasaki 15228102550SiwasakiASL Compiler: 15229102550Siwasaki 15230102550SiwasakiVersion X2011: 15231102550Siwasaki1. Static typechecking of all operands is implemented. This 15232193267Sjkimprevents the use of invalid objects (such as using a Package where 15233126372Snjlan Integer is required) at compile time instead of at interpreter 15234126372Snjlrun-time. 15235114237Snjl2. The ASL source line is printed with ALL errors and warnings. 15236102550Siwasaki3. Bug fix for source EOF without final linefeed. 15237193267Sjkim4. Debug option is split into a parse trace and a namespace trace. 15238102550Siwasaki5. Namespace output option (-n) includes initial values for 15239102550Siwasakiintegers and strings. 15240102550Siwasaki6. Parse-only option added for quick syntax checking. 15241102550Siwasaki7. Compiler checks for duplicate ACPI name declarations 15242102550Siwasaki 15243102550SiwasakiVersion X2012: 15244102550Siwasaki1. Relaxed typechecking to allow interchangeability between 15245114237Snjlstrings, integers, and buffers. These types are now converted by 15246114237Snjlthe interpreter at runtime. 15247114237Snjl2. Compiler reports time taken by each internal subsystem in the 15248114237Snjldebug output file. 15249102550Siwasaki 15250102550Siwasaki 15251102550Siwasaki ------------------------------------------ 15252102550SiwasakiSummary of changes for this label: 12_14_00 15253102550Siwasaki 15254102550SiwasakiASL Compiler: 15255102550Siwasaki 15256104470SiwasakiThis is the first official release of the compiler. Since the 15257104470Siwasakicompiler requires elements of the Core Subsystem, this label 15258104470Siwasakisynchronizes everything. 15259102550Siwasaki 15260102550Siwasaki------------------------------------------ 15261102550SiwasakiSummary of changes for this label: 12_08_00 15262102550Siwasaki 15263102550Siwasaki 15264114237SnjlFixed a problem where named references within the ASL definition 15265114237Snjlof both OperationRegions and CreateXXXFields did not work 15266114237Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 15267114237Snjlinitialization of the region/field. This is similar (but not 15268114237Snjlrelated internally) to the problem that was fixed in the last 15269114237Snjllabel. 15270114237Snjl 15271102550SiwasakiImplemented both 32-bit and 64-bit support for the BCD ASL 15272102550Siwasakifunctions ToBCD and FromBCD. 15273102550Siwasaki 15274102550SiwasakiUpdated all legal headers to include "2000" in the copyright 15275102550Siwasakiyears. 15276102550Siwasaki 15277102550Siwasaki ------------------------------------------ 15278102550SiwasakiSummary of changes for this label: 12_01_00 15279102550Siwasaki 15280193267SjkimFixed a problem where method invocations within the ASL definition 15281126372Snjlof both OperationRegions and CreateXXXFields did not work 15282126372Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 15283114237Snjlinitialization of the region/field: 15284102550Siwasaki 15285114237Snjl nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 15286114237Snjl[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 15287114237Snjl(0x3005) 15288102550Siwasaki 15289102550SiwasakiFixed a problem where operators with more than one nested 15290104470Siwasakisubexpression would fail. The symptoms were varied, by mostly 15291114237SnjlAE_AML_OPERAND_TYPE errors. This was actually a rather serious 15292114237Snjlproblem that has gone unnoticed until now. 15293102550Siwasaki 15294102550Siwasaki Subtract (Add (1,2), Multiply (3,4)) 15295102550Siwasaki 15296114237SnjlFixed a problem where AcpiGetHandle didn't quite get fixed in the 15297114237Snjlprevious build (The prefix part of a relative path was handled 15298114237Snjlincorrectly). 15299102550Siwasaki 15300114237SnjlFixed a problem where Operation Region initialization failed if 15301114237Snjlthe operation region name was a "namepath" instead of a simple 15302114237Snjl"nameseg". Symptom was an AE_NO_OPERAND error. 15303102550Siwasaki 15304114237SnjlFixed a problem where an assignment to a local variable via the 15305114237Snjlindirect RefOf mechanism only worked for the first such 15306102550Siwasakiassignment. Subsequent assignments were ignored. 15307102550Siwasaki 15308102550Siwasaki ------------------------------------------ 15309102550SiwasakiSummary of changes for this label: 11_15_00 15310102550Siwasaki 15311193267SjkimACPI 2.0 table support with backwards support for ACPI 1.0 and the 15312193267Sjkim0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 15313126372Snjlthe AML interpreter does NOT have support for the new 2.0 ASL 15314126372Snjlgrammar terms at this time. 15315102550Siwasaki 15316193267SjkimAll ACPI hardware access is via the GAS structures in the ACPI 2.0 15317126372SnjlFADT. 15318102550Siwasaki 15319193267SjkimAll physical memory addresses across all platforms are now 64 bits 15320126372Snjlwide. Logical address width remains dependent on the platform 15321126372Snjl(i.e., "void *"). 15322102550Siwasaki 15323114237SnjlAcpiOsMapMemory interface changed to a 64-bit physical address. 15324102550Siwasaki 15325114237SnjlThe AML interpreter integer size is now 64 bits, as per the ACPI 15326114237Snjl2.0 specification. 15327102550Siwasaki 15328104470SiwasakiFor backwards compatibility with ACPI 1.0, ACPI tables with a 15329104470Siwasakirevision number less than 2 use 32-bit integers only. 15330102550Siwasaki 15331114237SnjlFixed a problem where the evaluation of OpRegion operands did not 15332114237Snjlalways resolve them to numbers properly. 15333102550Siwasaki 15334102550Siwasaki------------------------------------------ 15335102550SiwasakiSummary of changes for this label: 10_20_00 15336102550Siwasaki 15337114237SnjlFix for CBN_._STA issue. This fix will allow correct access to 15338114237SnjlCBN_ OpRegions when the _STA returns 0x8. 15339102550Siwasaki 15340104470SiwasakiSupport to convert ACPI constants (Ones, Zeros, One) to actual 15341104470Siwasakivalues before a package object is returned 15342102550Siwasaki 15343104470SiwasakiFix for method call as predicate to if/while construct causing 15344104470Siwasakiincorrect if/while behavior 15345102550Siwasaki 15346114237SnjlFix for Else block package lengths sometimes calculated wrong (if 15347114237Snjlblock > 63 bytes) 15348102550Siwasaki 15349102550SiwasakiFix for Processor object length field, was always zero 15350102550Siwasaki 15351102550SiwasakiTable load abort if FACP sanity check fails 15352102550Siwasaki 15353102550SiwasakiFix for problem with Scope(name) if name already exists 15354102550Siwasaki 15355102550SiwasakiWarning emitted if a named object referenced cannot be found 15356102550Siwasaki(resolved) during method execution. 15357102550Siwasaki 15358102550Siwasaki 15359102550Siwasaki 15360102550Siwasaki 15361102550Siwasaki 15362102550Siwasaki------------------------------------------ 15363102550SiwasakiSummary of changes for this label: 9_29_00 15364102550Siwasaki 15365114237SnjlNew table initialization interfaces: AcpiInitializeSubsystem no 15366114237Snjllonger has any parameters AcpiFindRootPointer - Find the RSDP (if 15367114237Snjlnecessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 15368114237Snjl>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 15369114237SnjlAcpiLoadTables 15370102550Siwasaki 15371193267SjkimNote: These interface changes require changes to all existing OSDs 15372102550Siwasaki 15373114237SnjlThe PCI_Config default address space handler is always installed 15374114237Snjlat the root namespace object. 15375102550Siwasaki 15376102550Siwasaki------------------------------------------- 15377102550SiwasakiSummary of changes for this label: 09_15_00 15378102550Siwasaki 15379102550SiwasakiThe new initialization architecture is implemented. New 15380114237Snjlinterfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 15381114237SnjlAcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 15382167802Sjkim 15383114237Snjl(Namespace is automatically loaded when a table is loaded) 15384102550Siwasaki 15385193267SjkimThe ACPI_OPERAND_OBJECT has been optimized to shrink its size from 15386126372Snjl52 bytes to 32 bytes. There is usually one of these for every 15387126372Snjlnamespace object, so the memory savings is significant. 15388102550Siwasaki 15389114237SnjlImplemented just-in-time evaluation of the CreateField operators. 15390102550Siwasaki 15391102550SiwasakiBug fixes for IA-64 support have been integrated. 15392102550Siwasaki 15393102550SiwasakiAdditional code review comments have been implemented 15394102550Siwasaki 15395193267SjkimThe so-called "third pass parse" has been replaced by a final walk 15396193267Sjkimthrough the namespace to initialize all operation regions (address 15397126372Snjlspaces) and fields that have not yet been initialized during the 15398126372Snjlexecution of the various _INI and REG methods. 15399102550Siwasaki 15400102550SiwasakiNew file - namespace/nsinit.c 15401102550Siwasaki 15402102550Siwasaki------------------------------------------- 15403102550SiwasakiSummary of changes for this label: 09_01_00 15404102550Siwasaki 15405193267SjkimNamespace manager data structures have been reworked to change the 15406126372Snjlprimary object from a table to a single object. This has 15407193267Sjkimresulted in dynamic memory savings of 3X within the namespace and 15408126372Snjl2X overall in the ACPI CA subsystem. 15409102550Siwasaki 15410102550SiwasakiFixed problem where the call to AcpiEvFindPciRootBuses was 15411102550Siwasakiinadvertently left commented out. 15412102550Siwasaki 15413114237SnjlReduced the warning count when generating the source with the GCC 15414114237Snjlcompiler. 15415102550Siwasaki 15416102550SiwasakiRevision numbers added to each module header showing the 15417104470SiwasakiSourceSafe version of the file. Please refer to this version 15418114237Snjlnumber when giving us feedback or comments on individual modules. 15419102550Siwasaki 15420114237SnjlThe main object types within the subsystem have been renamed to 15421114237Snjlclarify their purpose: 15422102550Siwasaki 15423102550SiwasakiACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 15424102550SiwasakiACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 15425102550SiwasakiACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 15426102550Siwasaki 15427114237SnjlNOTE: no changes to the initialization sequence are included in 15428114237Snjlthis label. 15429102550Siwasaki 15430102550Siwasaki------------------------------------------- 15431102550SiwasakiSummary of changes for this label: 08_23_00 15432102550Siwasaki 15433102550SiwasakiFixed problem where TerminateControlMethod was being called 15434102550Siwasakimultiple times per method 15435102550Siwasaki 15436193267SjkimFixed debugger problem where single stepping caused a semaphore to 15437126372Snjlbe oversignalled 15438102550Siwasaki 15439104470SiwasakiImproved performance through additional parse object caching - 15440104470Siwasakiadded ACPI_EXTENDED_OP type 15441102550Siwasaki 15442102550Siwasaki------------------------------------------- 15443102550SiwasakiSummary of changes for this label: 08_10_00 15444102550Siwasaki 15445102550SiwasakiParser/Interpreter integration: Eliminated the creation of 15446102550Siwasakicomplete parse trees for ACPI tables and control methods. 15447114237SnjlInstead, parse subtrees are created and then deleted as soon as 15448193267Sjkimthey are processed (Either entered into the namespace or executed 15449126372Snjlby the interpreter). This reduces the use of dynamic kernel 15450126372Snjlmemory significantly. (about 10X) 15451102550Siwasaki 15452114237SnjlException codes broken into classes and renumbered. Be sure to 15453114237Snjlrecompile all code that includes acexcep.h. Hopefully we won't 15454114237Snjlhave to renumber the codes again now that they are split into 15455114237Snjlclasses (environment, programmer, AML code, ACPI table, and 15456114237Snjlinternal). 15457102550Siwasaki 15458104470SiwasakiFixed some additional alignment issues in the Resource Manager 15459104470Siwasakisubcomponent 15460102550Siwasaki 15461114237SnjlImplemented semaphore tracking in the AcpiExec utility, and fixed 15462114237Snjlseveral places where mutexes/semaphores were being unlocked 15463114237Snjlwithout a corresponding lock operation. There are no known 15464114237Snjlsemaphore or mutex "leaks" at this time. 15465102550Siwasaki 15466114237SnjlFixed the case where an ASL Return operator is used to return an 15467114237Snjlunnamed package. 15468102550Siwasaki 15469102550Siwasaki------------------------------------------- 15470102550SiwasakiSummary of changes for this label: 07_28_00 15471102550Siwasaki 15472102550SiwasakiFixed a problem with the way addresses were calculated in 15473114237SnjlAcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 15474114237Snjlmanifested itself when a Field was created with WordAccess or 15475193267SjkimDwordAccess, but the field unit defined within the Field was less 15476167802Sjkim 15477126372Snjlthan a Word or Dword. 15478102550Siwasaki 15479102550SiwasakiFixed a problem in AmlDumpOperands() module's loop to pull 15480104470Siwasakioperands off of the operand stack to display information. The 15481114237Snjlproblem manifested itself as a TLB error on 64-bit systems when 15482114237Snjlaccessing an operand stack with two or more operands. 15483102550Siwasaki 15484114237SnjlFixed a problem with the PCI configuration space handlers where 15485114237Snjlcontext was getting confused between accesses. This required a 15486114237Snjlchange to the generic address space handler and address space 15487193267Sjkimsetup definitions. Handlers now get both a global handler context 15488126372Snjl(this is the one passed in by the user when executing 15489114237SnjlAcpiInstallAddressSpaceHandler() and a specific region context 15490114237Snjlthat is unique to each region (For example, the _ADR, _SEG and 15491114237Snjl_BBN values associated with a specific region). The generic 15492114237Snjlfunction definitions have changed to the following: 15493102550Siwasaki 15494114237Snjltypedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 15495114237SnjlUINT32 Address, UINT32 BitWidth, UINT32 *Value, void 15496104470Siwasaki*HandlerContext, // This used to be void *Context void 15497102550Siwasaki*RegionContext); // This is an additional parameter 15498102550Siwasaki 15499102550Siwasakitypedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 15500102550SiwasakiRegionHandle, UINT32 Function, void *HandlerContext, void 15501102550Siwasaki**RegionContext); // This used to be **ReturnContext 15502102550Siwasaki 15503102550Siwasaki------------------------------------------- 15504102550SiwasakiSummary of changes for this label: 07_21_00 15505102550Siwasaki 15506102550SiwasakiMajor file consolidation and rename. All files within the 15507193267Sjkiminterpreter have been renamed as well as most header files. This 15508126372Snjlwas done to prevent collisions with existing files in the host 15509126372SnjlOSs -- filenames such as "config.h" and "global.h" seem to be 15510126372Snjlquite common. The VC project files have been updated. All 15511114237Snjlmakefiles will require modification. 15512102550Siwasaki 15513114237SnjlThe parser/interpreter integration continues in Phase 5 with the 15514114237Snjlimplementation of a complete 2-pass parse (the AML is parsed 15515114237Snjltwice) for each table; This avoids the construction of a huge 15516114237Snjlparse tree and therefore reduces the amount of dynamic memory 15517114237Snjlrequired by the subsystem. Greater use of the parse object cache 15518114237Snjlmeans that performance is unaffected. 15519102550Siwasaki 15520102550SiwasakiMany comments from the two code reviews have been rolled in. 15521102550Siwasaki 15522102550SiwasakiThe 64-bit alignment support is complete. 15523102550Siwasaki 15524102550Siwasaki------------------------------------------- 15525102550SiwasakiSummary of changes for this label: 06_30_00 15526102550Siwasaki 15527114237SnjlWith a nod and a tip of the hat to the technology of yesteryear, 15528114237Snjlwe've added support in the source code for 80 column output 15529114237Snjldevices. The code is now mostly constrained to 80 columns or 15530114237Snjlless to support environments and editors that 1) cannot display 15531114237Snjlor print more than 80 characters on a single line, and 2) cannot 15532114237Snjldisable line wrapping. 15533102550Siwasaki 15534104470SiwasakiA major restructuring of the namespace data structure has been 15535104470Siwasakicompleted. The result is 1) cleaner and more 15536114237Snjlunderstandable/maintainable code, and 2) a significant reduction 15537114237Snjlin the dynamic memory requirement for each named ACPI object 15538114237Snjl(almost half). 15539102550Siwasaki 15540102550Siwasaki------------------------------------------- 15541102550SiwasakiSummary of changes for this label: 06_23_00 15542102550Siwasaki 15543114237SnjlLinux support has been added. In order to obtain approval to get 15544114237Snjlthe ACPI CA subsystem into the Linux kernel, we've had to make 15545114237Snjlquite a few changes to the base subsystem that will affect all 15546114237Snjlusers (all the changes are generic and OS- independent). The 15547114237Snjleffects of these global changes have been somewhat far reaching. 15548114237SnjlFiles have been merged and/or renamed and interfaces have been 15549114237Snjlrenamed. The major changes are described below. 15550102550Siwasaki 15551102550SiwasakiOsd* interfaces renamed to AcpiOs* to eliminate namespace 15552102550Siwasakipollution/confusion within our target kernels. All OSD 15553114237Snjlinterfaces must be modified to match the new naming convention. 15554102550Siwasaki 15555193267SjkimFiles merged across the subsystem. A number of the smaller source 15556126372Snjland header files have been merged to reduce the file count and 15557126372Snjlincrease the density of the existing files. There are too many 15558126372Snjlto list here. In general, makefiles that call out individual 15559126372Snjlfiles will require rebuilding. 15560102550Siwasaki 15561104470SiwasakiInterpreter files renamed. All interpreter files now have the 15562104470Siwasakiprefix am* instead of ie* and is*. 15563102550Siwasaki 15564104470SiwasakiHeader files renamed: The acapi.h file is now acpixf.h. The 15565114237Snjlacpiosd.h file is now acpiosxf.h. We are removing references to 15566114237Snjlthe acronym "API" since it is somewhat windowsy. The new name is 15567114237Snjl"external interface" or xface or xf in the filenames.j 15568102550Siwasaki 15569102550Siwasaki 15570114237SnjlAll manifest constants have been forced to upper case (some were 15571193267Sjkimmixed case.) Also, the string "ACPI_" has been prepended to many 15572126372Snjl(not all) of the constants, typedefs, and structs. 15573102550Siwasaki 15574102550SiwasakiThe globals "DebugLevel" and "DebugLayer" have been renamed 15575102550Siwasaki"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 15576102550Siwasaki 15577102550SiwasakiAll other globals within the subsystem are now prefixed with 15578102550Siwasaki"AcpiGbl_" Internal procedures within the subsystem are now 15579114237Snjlprefixed with "Acpi" (with only a few exceptions). The original 15580193267Sjkimtwo-letter abbreviation for the subcomponent remains after "Acpi" 15581126372Snjl- for example, CmCallocate became AcpiCmCallocate. 15582102550Siwasaki 15583102550SiwasakiAdded a source code translation/conversion utility. Used to 15584114237Snjlgenerate the Linux source code, it can be modified to generate 15585114237Snjlother types of source as well. Can also be used to cleanup 15586114237Snjlexisting source by removing extraneous spaces and blank lines. 15587114237SnjlFound in tools/acpisrc/* 15588102550Siwasaki 15589102550SiwasakiOsdUnMapMemory was renamed to OsdUnmapMemory and then 15590102550SiwasakiAcpiOsUnmapMemory. (UnMap became Unmap). 15591102550Siwasaki 15592114237SnjlA "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 15593114237SnjlWhen set to one, this indicates that the caller wants to use the 15594167802Sjkim 15595114237Snjlsemaphore as a mutex, not a counting semaphore. ACPI CA uses 15596114237Snjlboth types. However, implementers of this call may want to use 15597114237Snjldifferent OS primitives depending on the type of semaphore 15598114237Snjlrequested. For example, some operating systems provide separate 15599167802Sjkim 15600193267Sjkim"mutex" and "semaphore" interfaces - where the mutex interface is 15601126372Snjlmuch faster because it doesn't have all the overhead of a full 15602126372Snjlsemaphore implementation. 15603102550Siwasaki 15604104470SiwasakiFixed a deadlock problem where a method that accesses the PCI 15605114237Snjladdress space can block forever if it is the first access to the 15606114237Snjlspace. 15607102550Siwasaki 15608102550Siwasaki------------------------------------------- 15609102550SiwasakiSummary of changes for this label: 06_02_00 15610102550Siwasaki 15611102550SiwasakiSupport for environments that cannot handle unaligned data 15612114237Snjlaccesses (e.g. firmware and OS environments devoid of alignment 15613193267Sjkimhandler technology namely SAL/EFI and the IA-64 Linux kernel) has 15614126372Snjlbeen added (via configurable macros) in these three areas: - 15615114237SnjlTransfer of data from the raw AML byte stream is done via byte 15616193267Sjkimmoves instead of word/dword/qword moves. - External objects are 15617126372Snjlaligned within the user buffer, including package elements (sub- 15618193267Sjkimobjects). - Conversion of name strings to UINT32 Acpi Names is now 15619126372Snjldone byte-wise. 15620102550Siwasaki 15621102550SiwasakiThe Store operator was modified to mimic Microsoft's 15622102550Siwasakiimplementation when storing to a Buffer Field. 15623102550Siwasaki 15624102550SiwasakiAdded a check of the BM_STS bit before entering C3. 15625102550Siwasaki 15626114237SnjlThe methods subdirectory has been obsoleted and removed. A new 15627114237Snjlfile, cmeval.c subsumes the functionality. 15628102550Siwasaki 15629102550SiwasakiA 16-bit (DOS) version of AcpiExec has been developed. The 15630102550Siwasakimakefile is under the acpiexec directory. 15631