1117521Snjl---------------------------------------- 2306536Sjkim27 May 2016. Summary of changes for version 20160527: 3284460Sjkim 4306536SjkimThis release is available at https://acpica.org/downloads 5306536Sjkim 6306536Sjkim 7306536Sjkim1) ACPICA kernel-resident subsystem: 8306536Sjkim 9306536SjkimTemporarily reverted the new arbitrary bit length/alignment support in 10306536SjkimAcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 11306536Sjkima number of regressions with the new code that need to be fully resolved 12306536Sjkimand tested before this support can be finally integrated into ACPICA. 13306536SjkimApologies for any inconveniences these issues may have caused. 14306536Sjkim 15306536SjkimThe ACPI message macros are not configurable (ACPI_MSG_ERROR, 16306536SjkimACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 17306536Sjkimand ACPI_MSG_BIOS_WARNING). Lv Zheng. 18306536Sjkim 19306536SjkimFixed a couple of GCC warnings associated with the use of the -Wcast-qual 20306536Sjkimoption. Adds a new return macro, return_STR. Junk-uk Kim. 21306536Sjkim 22306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 23306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 24306536Sjkimdebug version of the code includes the debug output trace mechanism and 25306536Sjkimhas a much larger code and data size. 26306536Sjkim 27306536Sjkim Current Release: 28306536Sjkim Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 29306536Sjkim Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 30306536Sjkim Previous Release: 31306536Sjkim Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 32306536Sjkim Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 33306536Sjkim 34306536Sjkim---------------------------------------- 35306536Sjkim22 April 2016. Summary of changes for version 20160422: 36306536Sjkim 37306536Sjkim1) ACPICA kernel-resident subsystem: 38306536Sjkim 39306536SjkimFixed a regression in the GAS (generic address structure) arbitrary bit 40306536Sjkimsupport in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 41306536Sjkimand incorrect return values. Lv Zheng. ACPICA BZ 1270. 42306536Sjkim 43306536SjkimACPI 6.0: Added support for new/renamed resource macros. One new argument 44306536Sjkimwas added to each of these macros, and the original name has been 45306536Sjkimdeprecated. The AML disassembler will always disassemble to the new 46306536Sjkimnames. Support for the new macros was added to iASL, disassembler, 47306536Sjkimresource manager, and the acpihelp utility. ACPICA BZ 1274. 48306536Sjkim 49306536Sjkim I2cSerialBus -> I2cSerialBusV2 50306536Sjkim SpiSerialBus -> SpiSerialBusV2 51306536Sjkim UartSerialBus -> UartSerialBusV2 52306536Sjkim 53306536SjkimACPI 6.0: Added support for a new integer field that was appended to the 54306536Sjkimpackage object returned by the _BIX method. This adds iASL compile-time 55306536Sjkimand AML runtime error checking. ACPICA BZ 1273. 56306536Sjkim 57306536SjkimACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 58306536SjkimSubspace Type2" (Headers, Disassembler, and data table compiler). 59306536Sjkim 60306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 61306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 62306536Sjkimdebug version of the code includes the debug output trace mechanism and 63306536Sjkimhas a much larger code and data size. 64306536Sjkim 65306536Sjkim Current Release: 66306536Sjkim Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 67306536Sjkim Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 68306536Sjkim Previous Release: 69306536Sjkim Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 70306536Sjkim Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 71306536Sjkim 72306536Sjkim 73306536Sjkim2) iASL Compiler/Disassembler and Tools: 74306536Sjkim 75306536SjkimiASL: Implemented an ASL grammar extension to allow/enable executable 76306536Sjkim"module-level code" to be created and executed under the various 77306536Sjkimoperators that create new scopes. This type of AML code is already 78306536Sjkimsupported in all known AML interpreters, and the grammar change will 79306536Sjkimappear in the next version of the ACPI specification. Simplifies the 80306536Sjkimconditional runtime creation of named objects under these object types: 81306536Sjkim 82306536Sjkim Device 83306536Sjkim PowerResource 84306536Sjkim Processor 85306536Sjkim Scope 86306536Sjkim ThermalZone 87306536Sjkim 88306536SjkimiASL: Implemented a new ASL extension, a "For" loop macro to add greater 89306536Sjkimease-of-use to the ASL language. The syntax is similar to the 90306536Sjkimcorresponding C operator, and is implemented with the existing AML While 91306536Sjkimopcode -- thus requiring no changes to existing AML interpreters. 92306536Sjkim 93306536Sjkim For (Initialize, Predicate, Update) {TermList} 94306536Sjkim 95306536SjkimGrammar: 96306536Sjkim ForTerm := 97306536Sjkim For ( 98306536Sjkim Initializer // Nothing | TermArg => ComputationalData 99306536Sjkim Predicate // Nothing | TermArg => ComputationalData 100306536Sjkim Update // Nothing | TermArg => ComputationalData 101306536Sjkim ) {TermList} 102306536Sjkim 103306536Sjkim 104306536SjkimiASL: The _HID/_ADR detection and validation has been enhanced to search 105306536Sjkimunder conditionals in order to allow these objects to be conditionally 106306536Sjkimcreated at runtime. 107306536Sjkim 108306536SjkimiASL: Fixed several issues with the constant folding feature. The 109306536Sjkimimprovement allows better detection and resolution of statements that can 110306536Sjkimbe folded at compile time. ACPICA BZ 1266. 111306536Sjkim 112306536SjkimiASL/Disassembler: Fixed a couple issues with the Else{If{}...} 113306536Sjkimconversion to the ASL ElseIf operator where incorrect ASL code could be 114306536Sjkimgenerated. 115306536Sjkim 116306536SjkimiASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 117306536Sjkimsometimes an extra (and extraneous) set of parentheses were emitted for 118306536Sjkimsome combinations of operators. Although this did not cause any problems 119306536Sjkimwith recompilation of the disassembled code, it made the code more 120306536Sjkimdifficult to read. David Box. ACPICA BZ 1231. 121306536Sjkim 122306536SjkimiASL: Changed to ignore the unreferenced detection for predefined names 123306536Sjkimof resource descriptor elements, when the resource descriptor is 124306536Sjkimcreated/defined within a control method. 125306536Sjkim 126306536SjkimiASL: Disassembler: Fix a possible fault with externally declared Buffer 127306536Sjkimobjects. 128306536Sjkim 129306536Sjkim---------------------------------------- 130306536Sjkim18 March 2016. Summary of changes for version 20160318: 131306536Sjkim 132306536Sjkim1) ACPICA kernel-resident subsystem: 133306536Sjkim 134306536SjkimAdded support for arbitrary bit lengths and bit offsets for registers 135306536Sjkimdefined by the Generic Address Structure. Previously, only aligned bit 136306536Sjkimlengths of 8/16/32/64 were supported. This was sufficient for many years, 137306536Sjkimbut recently some machines have been seen that require arbitrary bit- 138306536Sjkimlevel support. ACPICA BZ 1240. Lv Zheng. 139306536Sjkim 140306536SjkimFixed an issue where the \_SB._INI method sometimes must be evaluated 141306536Sjkimbefore any _REG methods are evaluated. Lv Zheng. 142306536Sjkim 143306536SjkimImplemented several changes related to ACPI table support 144306536Sjkim(Headers/Disassembler/TableCompiler): 145306536SjkimNFIT: For ACPI 6.1, updated to add some additional new fields and 146306536Sjkimconstants. 147306536SjkimFADT: Updated a warning message and set compliance to ACPI 6.1 (Version 148306536Sjkim6). 149306536SjkimDMAR: Added new constants per the 10/2014 DMAR spec. 150306536SjkimIORT: Added new subtable per the 10/2015 IORT spec. 151306536SjkimHEST: For ACPI 6.1, added new constants and new subtable. 152306536SjkimDBG2: Added new constants per the 12/2015 DBG2 spec. 153306536SjkimFPDT: Fixed several incorrect fields, add the FPDT boot record structure. 154306536SjkimACPICA BZ 1249. 155306536SjkimERST/EINJ: Updated disassembler with new "Execute Timings" actions. 156306536Sjkim 157306536SjkimUpdated header support for the DMAR table to match the current version of 158306536Sjkimthe related spec. 159306536Sjkim 160306536SjkimAdded extensions to the ASL Concatenate operator to allow any ACPI object 161306536Sjkimto be passed as an operand. Any object other than Integer/String/Buffer 162306536Sjkimsimply returns a string containing the object type. This extends the 163306536Sjkimusefulness of the Printf macros. Previously, Concatenate would abort the 164306536Sjkimcontrol method if a non-data object was encountered. 165306536Sjkim 166306536SjkimACPICA source code: Deployed the C "const" keyword across the source code 167306536Sjkimwhere appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 168306536Sjkim 169306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 170306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 171306536Sjkimdebug version of the code includes the debug output trace mechanism and 172306536Sjkimhas a much larger code and data size. 173306536Sjkim 174306536Sjkim Current Release: 175306536Sjkim Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 176306536Sjkim Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 177306536Sjkim Previous Release: 178306536Sjkim Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 179306536Sjkim Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 180306536Sjkim 181306536Sjkim 182306536Sjkim2) iASL Compiler/Disassembler and Tools: 183306536Sjkim 184306536SjkimiASL/Disassembler: Improved the heuristic used to determine the number of 185306536Sjkimarguments for an externally defined control method (a method in another 186306536Sjkimtable). Although this is an improvement, there is no deterministic way to 187306536Sjkim"guess" the number of method arguments. Only the ACPI 6.0 External opcode 188306536Sjkimwill completely solve this problem as it is deployed (automatically) in 189306536Sjkimnewer BIOS code. 190306536Sjkim 191306536SjkimiASL/Disassembler: Fixed an ordering issue for emitted External() ASL 192306536Sjkimstatements that could cause errors when the disassembled file is 193306536Sjkimcompiled. ACPICA BZ 1243. David Box. 194306536Sjkim 195306536SjkimiASL: Fixed a regression caused by the merger of the two versions of the 196306536Sjkimlocal strtoul64. Because of a dependency on a global variable, strtoul64 197306536Sjkimcould return an error for integers greater than a 32-bit value. ACPICA BZ 198306536Sjkim1260. 199306536Sjkim 200306536SjkimiASL: Fixed a regression where a fault could occur for an ASL Return 201306536Sjkimstatement if it invokes a control method that is not resolved. ACPICA BZ 202306536Sjkim1264. 203306536Sjkim 204306536SjkimAcpiXtract: Improved input file validation: detection of binary files and 205306536Sjkimnon-acpidump text files. 206306536Sjkim 207306536Sjkim---------------------------------------- 208306536Sjkim12 February 2016. Summary of changes for version 20160212: 209306536Sjkim 210306536Sjkim1) ACPICA kernel-resident subsystem: 211306536Sjkim 212306536SjkimImplemented full support for the ACPI 6.1 specification (released in 213306536SjkimJanuary). This version of the specification is available at: 214306536Sjkimhttp://www.uefi.org/specifications 215306536Sjkim 216306536SjkimOnly a relatively small number of changes were required in ACPICA to 217306536Sjkimsupport ACPI 6.1, in these areas: 218306536Sjkim- New predefined names 219306536Sjkim- New _HID values 220306536Sjkim- A new subtable for HEST 221306536Sjkim- A few other header changes for new values 222306536Sjkim 223306536SjkimEnsure \_SB_._INI is executed before any _REG methods are executed. There 224306536Sjkimappears to be existing BIOS code that relies on this behavior. Lv Zheng. 225306536Sjkim 226306536SjkimReverted a change made in version 20151218 which enabled method 227306536Sjkiminvocations to be targets of various ASL operators (SuperName and Target 228306536Sjkimgrammar elements). While the new behavior is supported by the ACPI 229306536Sjkimspecification, other AML interpreters do not support this behavior and 230306536Sjkimnever will. The ACPI specification will be updated for ACPI 6.2 to remove 231306536Sjkimthis support. Therefore, the change was reverted to the original ACPICA 232306536Sjkimbehavior. 233306536Sjkim 234306536SjkimACPICA now supports the GCC 6 compiler. 235306536Sjkim 236306536SjkimCurrent Release: (Note: build changes increased sizes) 237306536Sjkim Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 238306536Sjkim Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 239306536SjkimPrevious Release: 240306536Sjkim Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 241306536Sjkim Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 242306536Sjkim 243306536Sjkim 244306536Sjkim2) iASL Compiler/Disassembler and Tools: 245306536Sjkim 246306536SjkimCompleted full support for the ACPI 6.0 External() AML opcode. The 247306536Sjkimcompiler emits an external AML opcode for each ASL External statement. 248306536SjkimThis opcode is used by the disassembler to assist with the disassembly of 249306536Sjkimexternal control methods by specifying the required number of arguments 250306536Sjkimfor the method. AML interpreters do not use this opcode. To ensure that 251306536Sjkiminterpreters do not even see the opcode, a block of one or more external 252306536Sjkimopcodes is surrounded by an "If(0)" construct. As this feature becomes 253306536Sjkimcommonly deployed in BIOS code, the ability of disassemblers to correctly 254306536Sjkimdisassemble AML code will be greatly improved. David Box. 255306536Sjkim 256306536SjkimiASL: Implemented support for an optional cross-reference output file. 257306536SjkimThe -lx option will create a the cross-reference file with the suffix 258306536Sjkim"xrf". Three different types of cross-reference are created in this file: 259306536Sjkim- List of object references made from within each control method 260306536Sjkim- Invocation (caller) list for each user-defined control method 261306536Sjkim- List of references to each non-method object in the namespace 262306536Sjkim 263306536SjkimiASL: Method invocations as ASL Target operands are now disallowed and 264306536Sjkimflagged as errors in preparation for ACPI 6.2 (see the description of the 265306536Sjkimproblem above). 266306536Sjkim 267306536Sjkim---------------------------------------- 268306536Sjkim8 January 2016. Summary of changes for version 20160108: 269306536Sjkim 270306536Sjkim1) ACPICA kernel-resident subsystem: 271306536Sjkim 272306536SjkimUpdated all ACPICA copyrights and signons to 2016: Added the 2016 273306536Sjkimcopyright to all source code module headers and utility/tool signons. 274306536SjkimThis includes the standard Linux dual-license header. This affects 275306536Sjkimvirtually every file in the ACPICA core subsystem, iASL compiler, all 276306536SjkimACPICA utilities, and the ACPICA test suite. 277306536Sjkim 278306536SjkimFixed a regression introduced in version 20151218 concerning the 279306536Sjkimexecution of so-called module-level ASL/AML code. Namespace objects 280306536Sjkimcreated under a module-level If() construct were not properly/fully 281306536Sjkimentered into the namespace and could cause an interpreter fault when 282306536Sjkimaccessed. 283306536Sjkim 284306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 285306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 286306536Sjkimdebug version of the code includes the debug output trace mechanism and 287306536Sjkimhas a much larger code and data size. 288306536Sjkim 289306536SjkimCurrent Release: 290306536Sjkim Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 291306536Sjkim Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 292306536Sjkim Previous Release: 293306536Sjkim Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 294306536Sjkim Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 295306536Sjkim 296306536Sjkim 297306536Sjkim2) iASL Compiler/Disassembler and Tools: 298306536Sjkim 299306536SjkimFixed a problem with the compilation of the GpioIo and GpioInt resource 300306536Sjkimdescriptors. The _PIN field name was incorrectly defined to be an array 301306536Sjkimof 32-bit values, but the _PIN values are in fact 16 bits each. This 302306536Sjkimwould cause incorrect bit width warnings when using Word (16-bit) fields 303306536Sjkimto access the descriptors. 304306536Sjkim 305306536Sjkim 306306536Sjkim---------------------------------------- 307306536Sjkim18 December 2015. Summary of changes for version 20151218: 308306536Sjkim 309306536Sjkim1) ACPICA kernel-resident subsystem: 310306536Sjkim 311306536SjkimImplemented per-AML-table execution of "module-level code" as individual 312306536SjkimACPI tables are loaded into the namespace during ACPICA initialization. 313306536SjkimIn other words, any module-level code within an AML table is executed 314306536Sjkimimmediately after the table is loaded, instead of batched and executed 315306536Sjkimafter all of the tables have been loaded. This provides compatibility 316306536Sjkimwith other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 317306536SjkimDavid Box. 318306536Sjkim 319306536SjkimTo fully support the feature above, the default operation region handlers 320306536Sjkimfor the SystemMemory, SystemIO, and PCI_Config address spaces are now 321306536Sjkiminstalled before any ACPI tables are loaded. This enables module-level 322306536Sjkimcode to access these address spaces during the table load and module- 323306536Sjkimlevel code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 324306536SjkimBox. 325306536Sjkim 326306536SjkimImplemented several changes to the internal _REG support in conjunction 327306536Sjkimwith the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 328306536Sjkimutilities for the changes above. Although these tools were changed, host 329306536Sjkimoperating systems that simply use the default handlers for SystemMemory, 330306536SjkimSystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 331306536Sjkim 332306536SjkimFor example, in the code below, DEV1 is conditionally added to the 333306536Sjkimnamespace by the DSDT via module-level code that accesses an operation 334306536Sjkimregion. The SSDT references DEV1 via the Scope operator. DEV1 must be 335306536Sjkimcreated immediately after the DSDT is loaded in order for the SSDT to 336306536Sjkimsuccessfully reference DEV1. Previously, this code would cause an 337306536SjkimAE_NOT_EXIST exception during the load of the SSDT. Now, this code is 338306536Sjkimfully supported by ACPICA. 339306536Sjkim 340306536Sjkim DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 341306536Sjkim { 342306536Sjkim OperationRegion (OPR1, SystemMemory, 0x400, 32) 343306536Sjkim Field (OPR1, AnyAcc, NoLock, Preserve) 344306536Sjkim { 345306536Sjkim FLD1, 1 346306536Sjkim } 347306536Sjkim If (FLD1) 348306536Sjkim { 349306536Sjkim Device (\DEV1) 350306536Sjkim { 351306536Sjkim } 352306536Sjkim } 353306536Sjkim } 354306536Sjkim DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 355306536Sjkim { 356306536Sjkim External (\DEV1, DeviceObj) 357306536Sjkim Scope (\DEV1) 358306536Sjkim { 359306536Sjkim } 360306536Sjkim } 361306536Sjkim 362306536SjkimFixed an AML interpreter problem where control method invocations were 363306536Sjkimnot handled correctly when the invocation was itself a SuperName argument 364306536Sjkimto another ASL operator. In these cases, the method was not invoked. 365306536SjkimACPICA BZ 1002. Affects the following ASL operators that have a SuperName 366306536Sjkimargument: 367306536Sjkim Store 368306536Sjkim Acquire, Wait 369306536Sjkim CondRefOf, RefOf 370306536Sjkim Decrement, Increment 371306536Sjkim Load, Unload 372306536Sjkim Notify 373306536Sjkim Signal, Release, Reset 374306536Sjkim SizeOf 375306536Sjkim 376306536SjkimImplemented automatic String-to-ObjectReference conversion support for 377306536Sjkimpackages returned by predefined names (such as _DEP). A common BIOS error 378306536Sjkimis to add double quotes around an ObjectReference namepath, which turns 379306536Sjkimthe reference into an unexpected string object. This support detects the 380306536Sjkimproblem and corrects it before the package is returned to the caller that 381306536Sjkiminvoked the method. Lv Zheng. 382306536Sjkim 383306536SjkimImplemented extensions to the Concatenate operator. Concatenate now 384306536Sjkimaccepts any type of object, it is not restricted to simply 385306536SjkimInteger/String/Buffer. For objects other than these 3 basic data types, 386306536Sjkimthe argument is treated as a string containing the name of the object 387306536Sjkimtype. This expands the utility of Concatenate and the Printf/Fprintf 388306536Sjkimmacros. ACPICA BZ 1222. 389306536Sjkim 390306536SjkimCleaned up the output of the ASL Debug object. The timer() value is now 391306536Sjkimoptional and no longer emitted by default. Also, the basic data types of 392306536SjkimInteger/String/Buffer are simply emitted as their values, without a data 393306536Sjkimtype string -- since the data type is obvious from the output. ACPICA BZ 394306536Sjkim1221. 395306536Sjkim 396306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 397306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 398306536Sjkimdebug version of the code includes the debug output trace mechanism and 399306536Sjkimhas a much larger code and data size. 400306536Sjkim 401306536Sjkim Current Release: 402306536Sjkim Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 403306536Sjkim Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 404306536Sjkim Previous Release: 405306536Sjkim Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 406306536Sjkim Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 407306536Sjkim 408306536Sjkim 409306536Sjkim2) iASL Compiler/Disassembler and Tools: 410306536Sjkim 411306536SjkimiASL: Fixed some issues with the ASL Include() operator. This operator 412306536Sjkimwas incorrectly defined in the iASL parser rules, causing a new scope to 413306536Sjkimbe opened for the code within the include file. This could lead to 414306536Sjkimseveral issues, including allowing ASL code that is technically illegal 415306536Sjkimand not supported by AML interpreters. Note, this does not affect the 416306536Sjkimrelated #include preprocessor operator. ACPICA BZ 1212. 417306536Sjkim 418306536SjkimiASL/Disassembler: Implemented support for the ASL ElseIf operator. This 419306536Sjkimoperator is essentially an ASL macro since there is no AML opcode 420306536Sjkimassociated with it. The code emitted by the iASL compiler for ElseIf is 421306536Sjkiman Else opcode followed immediately by an If opcode. The disassembler 422306536Sjkimwill now emit an ElseIf if it finds an Else immediately followed by an 423306536SjkimIf. This simplifies the decoded ASL, especially for deeply nested 424306536SjkimIf..Else and large Switch constructs. Thus, the disassembled code more 425306536Sjkimclosely follows the original source ASL. ACPICA BZ 1211. Example: 426306536Sjkim 427306536Sjkim Old disassembly: 428306536Sjkim Else 429306536Sjkim { 430306536Sjkim If (Arg0 == 0x02) 431306536Sjkim { 432306536Sjkim Local0 = 0x05 433306536Sjkim } 434306536Sjkim } 435306536Sjkim 436306536Sjkim New disassembly: 437306536Sjkim ElseIf (Arg0 == 0x02) 438306536Sjkim { 439306536Sjkim Local0 = 0x05 440306536Sjkim } 441306536Sjkim 442306536SjkimAcpiExec: Added support for the new module level code behavior and the 443306536Sjkimearly region installation. This required a small change to the 444306536Sjkiminitialization, since AcpiExec must install its own operation region 445306536Sjkimhandlers. 446306536Sjkim 447306536SjkimAcpiExec: Added support to make the debug object timer optional. Default 448306536Sjkimis timer disabled. This cleans up the debug object output -- the timer 449306536Sjkimdata is rarely used. 450306536Sjkim 451306536SjkimAcpiExec: Multiple ACPI tables are now loaded in the order that they 452306536Sjkimappear on the command line. This can be important when there are 453306536Sjkiminterdependencies/references between the tables. 454306536Sjkim 455306536SjkimiASL/Templates. Add support to generate template files with multiple 456306536SjkimSSDTs within a single output file. Also added ommand line support to 457306536Sjkimspecify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 458306536Sjkim1223, 1225. 459306536Sjkim 460306536Sjkim 461306536Sjkim---------------------------------------- 462306536Sjkim24 November 2015. Summary of changes for version 20151124: 463306536Sjkim 464306536Sjkim1) ACPICA kernel-resident subsystem: 465306536Sjkim 466306536SjkimFixed a possible regression for a previous update to FADT handling. The 467306536SjkimFADT no longer has a fixed table ID, causing some issues with code that 468306536Sjkimwas hardwired to a specific ID. Lv Zheng. 469306536Sjkim 470306536SjkimFixed a problem where the method auto-serialization could interfere with 471306536Sjkimthe current SyncLevel. This change makes the auto-serialization support 472306536Sjkimtransparent to the SyncLevel support and management. 473306536Sjkim 474306536SjkimRemoved support for the _SUB predefined name in AcpiGetObjectInfo. This 475306536Sjkiminterface is intended for early access to the namespace during the 476306536Sjkiminitial namespace device discovery walk. The _SUB method has been seen to 477306536Sjkimaccess operation regions in some cases, causing errors because the 478306536Sjkimoperation regions are not fully initialized. 479306536Sjkim 480306536SjkimAML Debugger: Fixed some issues with the terminate/quit/exit commands 481306536Sjkimthat can cause faults. Lv Zheng. 482306536Sjkim 483306536SjkimAML Debugger: Add thread ID support so that single-step mode only applies 484306536Sjkimto the AML Debugger thread. This prevents runtime errors within some 485306536Sjkimkernels. Lv Zheng. 486306536Sjkim 487306536SjkimEliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 488306536Sjkimmethods that are invoked by this interface are optional, removed warnings 489306536Sjkimemitted for the case where one or more of these methods do not exist. 490306536SjkimACPICA BZ 1208, original change by Prarit Bhargava. 491306536Sjkim 492306536SjkimMade a major pass through the entire ACPICA source code base to 493306536Sjkimstandardize formatting that has diverged a bit over time. There are no 494306536Sjkimfunctional changes, but this will of course cause quite a few code 495306536Sjkimdifferences from the previous ACPICA release. 496306536Sjkim 497306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 498306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 499306536Sjkimdebug version of the code includes the debug output trace mechanism and 500306536Sjkimhas a much larger code and data size. 501306536Sjkim 502306536Sjkim Current Release: 503306536Sjkim Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 504306536Sjkim Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 505306536Sjkim Previous Release: 506306536Sjkim Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 507306536Sjkim Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 508306536Sjkim 509306536Sjkim 510306536Sjkim2) iASL Compiler/Disassembler and Tools: 511306536Sjkim 512306536SjkimiASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 513306536Sjkimdefinition blocks within a single ASL file and the resulting AML file. 514306536SjkimSupport for this type of file was also added to the various tools that 515306536Sjkimuse binary AML files: acpiexec, acpixtract, and the AML disassembler. The 516306536Sjkimexample code below shows two definition blocks within the same file: 517306536Sjkim 518306536Sjkim DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 519306536Sjkim0x12345678) 520306536Sjkim { 521306536Sjkim } 522306536Sjkim DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 523306536Sjkim { 524306536Sjkim } 525306536Sjkim 526306536SjkimiASL: Enhanced typechecking for the Name() operator. All expressions for 527306536Sjkimthe value of the named object must be reduced/folded to a single constant 528306536Sjkimat compile time, as per the ACPI specification (the AML definition of 529306536SjkimName()). 530306536Sjkim 531306536SjkimiASL: Fixed some code indentation issues for the -ic and -ia options (C 532306536Sjkimand assembly headers). Now all emitted code correctly begins in column 1. 533306536Sjkim 534306536SjkimiASL: Added an error message for an attempt to open a Scope() on an 535306536Sjkimobject defined in an SSDT. The DSDT is always loaded into the namespace 536306536Sjkimfirst, so any attempt to open a Scope on an SSDT object will fail at 537306536Sjkimruntime. 538306536Sjkim 539306536Sjkim 540306536Sjkim---------------------------------------- 541306536Sjkim30 September 2015. Summary of changes for version 20150930: 542306536Sjkim 543306536Sjkim1) ACPICA kernel-resident subsystem: 544306536Sjkim 545306536SjkimDebugger: Implemented several changes and bug fixes to assist support for 546306536Sjkimthe in-kernel version of the AML debugger. Lv Zheng. 547306536Sjkim- Fix the "predefined" command for in-kernel debugger. 548306536Sjkim- Do not enter debug command loop for the help and version commands. 549306536Sjkim- Disallow "execute" command during execution/single-step of a method. 550306536Sjkim 551306536SjkimInterpreter: Updated runtime typechecking for all operators that have 552306536Sjkimtarget operands. The operand is resolved and validated that it is legal. 553306536SjkimFor example, the target cannot be a non-data object such as a Device, 554306536SjkimMutex, ThermalZone, etc., as per the ACPI specification. 555306536Sjkim 556306536SjkimDebugger: Fixed the double-mutex user I/O handshake to work when local 557306536Sjkimdeadlock detection is enabled. 558306536Sjkim 559306536SjkimDebugger: limited display of method locals and arguments (LocalX and 560306536SjkimArgX) to only those that have actually been initialized. This prevents 561306536Sjkimlines of extraneous output. 562306536Sjkim 563306536SjkimUpdated the definition of the NFIT table to correct the bit polarity of 564306536Sjkimone flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 565306536Sjkim 566306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 567306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 568306536Sjkimdebug version of the code includes the debug output trace mechanism and 569306536Sjkimhas a much larger code and data size. 570306536Sjkim 571306536Sjkim Current Release: 572306536Sjkim Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 573306536Sjkim Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 574306536Sjkim Previous Release: 575306536Sjkim Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 576306536Sjkim Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 577306536Sjkim 578306536Sjkim 579306536Sjkim2) iASL Compiler/Disassembler and Tools: 580306536Sjkim 581306536SjkimiASL: Improved the compile-time typechecking for operands of many of the 582306536SjkimASL operators: 583306536Sjkim 584306536Sjkim-- Added an option to disable compiler operand/operator typechecking (- 585306536Sjkimot). 586306536Sjkim 587306536Sjkim-- For the following operators, the TermArg operands are now validated 588306536Sjkimwhen possible to be Integer data objects: BankField, OperationRegion, 589306536SjkimDataTableRegion, Buffer, and Package. 590306536Sjkim 591306536Sjkim-- Store (Source, Target): Both the source and target operands are 592306536Sjkimresolved and checked that the operands are both legal. For example, 593306536Sjkimneither operand can be a non-data object such as a Device, Mutex, 594306536SjkimThermalZone, etc. Note, as per the ACPI specification, the CopyObject 595306536Sjkimoperator can be used to store an object to any type of target object. 596306536Sjkim 597306536Sjkim-- Store (Source, Target): If the source is a Package object, the target 598306536Sjkimmust be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 599306536Sjkimis a Package, the source must also be a Package. 600306536Sjkim 601306536Sjkim-- Store (Source, Target): A warning is issued if the source and target 602306536Sjkimresolve to the identical named object. 603306536Sjkim 604306536Sjkim-- Store (Source, <method invocation>): An error is generated for the 605306536Sjkimtarget method invocation, as this construct is not supported by the AML 606306536Sjkiminterpreter. 607306536Sjkim 608306536Sjkim-- For all ASL math and logic operators, the target operand must be a 609306536Sjkimdata object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 610306536Sjkimincludes the function return value also. 611306536Sjkim 612306536Sjkim-- External declarations are also included in the typechecking where 613306536Sjkimpossible. External objects defined using the UnknownObj keyword cannot be 614306536Sjkimtypechecked, however. 615306536Sjkim 616306536SjkimiASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 617306536Sjkimoperator: 618306536Sjkim- Legacy code: Index(PKG1, 3) 619306536Sjkim- New ASL+ code: PKG1[3] 620306536SjkimThis completes the ACPI 6.0 ASL+ support as it was the only operator not 621306536Sjkimsupported. 622306536Sjkim 623306536SjkimiASL: Fixed the file suffix for the preprocessor output file (.i). Two 624306536Sjkimspaces were inadvertently appended to the filename, causing file access 625306536Sjkimand deletion problems on some systems. 626306536Sjkim 627306536SjkimASL Test Suite (ASLTS): Updated the master makefile to generate all 628306536Sjkimpossible compiler output files when building the test suite -- thus 629306536Sjkimexercising these features of the compiler. These files are automatically 630306536Sjkimdeleted when the test suite exits. 631306536Sjkim 632306536Sjkim 633306536Sjkim---------------------------------------- 634306536Sjkim18 August 2015. Summary of changes for version 20150818: 635306536Sjkim 636306536Sjkim1) ACPICA kernel-resident subsystem: 637306536Sjkim 638306536SjkimFix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 639306536SjkimZheng. ACPICA BZ 1186. 640306536Sjkim 641306536SjkimCompleted development to ensure that the ACPICA Disassembler and Debugger 642306536Sjkimare fully standalone components of ACPICA. Removed cross-component 643306536Sjkimdependences. Lv Zheng. 644306536Sjkim 645306536SjkimThe max-number-of-AML-loops is now runtime configurable (previously was 646306536Sjkimcompile-time only). This is essentially a loop timeout to force-abort 647306536Sjkiminfinite AML loops. ACPCIA BZ 1192. 648306536Sjkim 649306536SjkimDebugger: Cleanup output to dump ACPI names and namepaths without any 650306536Sjkimtrailing underscores. Lv Zheng. ACPICA BZ 1135. 651306536Sjkim 652306536SjkimRemoved unnecessary conditional compilations across the Debugger and 653306536SjkimDisassembler components where entire modules could be left uncompiled. 654306536Sjkim 655306536SjkimThe aapits test is deprecated and has been removed from the ACPICA git 656306536Sjkimtree. The test has never been completed and has not been maintained, thus 657306536Sjkimbecoming rather useless. ACPICA BZ 1015, 794. 658306536Sjkim 659306536SjkimA batch of small changes to close bugzilla and other reports: 660306536Sjkim- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 661306536Sjkim- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 662306536Sjkim- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 663306536Sjkim- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 664306536SjkimMoore. 665306536Sjkim- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 666306536SjkimACPICA BZ 1184. 667306536Sjkim- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 668306536Sjkimoperators. 669306536Sjkim- Debugger: Split debugger initialization/termination interfaces. Lv 670306536SjkimZheng. 671306536Sjkim- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 672306536Sjkimidentification. 673306536Sjkim- AcpiExec: Add debug message during _REG method phase during table 674306536Sjkimload/init. 675306536Sjkim- AcpiNames: Fix a regression where some output was missing and no longer 676306536Sjkimemitted. 677306536Sjkim- Debugger: General cleanup and simplification. Lv Zheng. 678306536Sjkim- Disassembler: Cleanup use of several global option variables. Lv Zheng. 679306536Sjkim 680306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 681306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 682306536Sjkimdebug version of the code includes the debug output trace mechanism and 683306536Sjkimhas a much larger code and data size. 684306536Sjkim 685306536Sjkim Current Release: 686306536Sjkim Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 687306536Sjkim Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 688306536Sjkim Previous Release: 689306536Sjkim Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 690306536Sjkim Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 691306536Sjkim 692306536Sjkim 693306536Sjkim2) iASL Compiler/Disassembler and Tools: 694306536Sjkim 695306536SjkimAcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 696306536Sjkimwere not handled properly and caused load errors. Now, properly invoke 697306536Sjkimand use the ACPICA auto-reallocate mechanism for ACPI table data 698306536Sjkimstructures. ACPICA BZ 1188 699306536Sjkim 700306536SjkimAcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 701306536SjkimBZ 1190. 702306536Sjkim 703306536SjkimAcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 704306536SjkimAcpiExec, this means that no control methods (like _REG/_INI/_STA) are 705306536Sjkimexecuted during initialization. ACPICA BZ 1187, 1189. 706306536Sjkim 707306536SjkimiASL/Disassembler: Implemented a prototype "listing" mode that emits AML 708306536Sjkimthat corresponds to each disassembled ASL statement, to simplify 709306536Sjkimdebugging. ACPICA BZ 1191. 710306536Sjkim 711306536SjkimDebugger: Add option to the "objects" command to display a summary of the 712306536Sjkimcurrent namespace objects (Object type and count). This is displayed if 713306536Sjkimthe command is entered with no arguments. 714306536Sjkim 715306536SjkimAcpiNames: Add -x option to specify debug level, similar to AcpiExec. 716306536Sjkim 717306536Sjkim 718306536Sjkim---------------------------------------- 719306536Sjkim17 July 2015. Summary of changes for version 20150717: 720306536Sjkim 721306536Sjkim1) ACPICA kernel-resident subsystem: 722306536Sjkim 723306536SjkimImproved the partitioning between the Debugger and Disassembler 724306536Sjkimcomponents. This allows the Debugger to be used standalone within kernel 725306536Sjkimcode without the Disassembler (which is used for single stepping also). 726306536SjkimThis renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 727306536Sjkim 728306536SjkimDebugger: Implemented a new command to trace the execution of control 729306536Sjkimmethods (Trace). This is especially useful for the in-kernel version of 730306536Sjkimthe debugger when file I/O may not be available for method trace output. 731306536SjkimSee the ACPICA reference for more information. Lv Zheng. 732306536Sjkim 733306536SjkimMoved all C library prototypes (used for the local versions of these 734306536Sjkimfunctions when requested) to a new header, acclib.h 735306536SjkimCleaned up the use of non-ANSI C library functions. These functions are 736306536Sjkimimplemented locally in ACPICA. Moved all such functions to a common 737306536Sjkimsource file, utnonansi.c 738306536Sjkim 739306536SjkimDebugger: Fixed a problem with the "!!" command (get last command 740306536Sjkimexecuted) where the debugger could enter an infinite loop and eventually 741306536Sjkimcrash. 742306536Sjkim 743306536SjkimRemoved the use of local macros that were used for some of the standard C 744306536Sjkimlibrary functions to automatically cast input parameters. This mostly 745306536Sjkimaffected the is* functions where the input parameter is defined to be an 746306536Sjkimint. This required a few modifications to the main ACPICA source code to 747306536Sjkimprovide casting for these functions and eliminate possible compiler 748306536Sjkimwarnings for these parameters. 749306536Sjkim 750306536SjkimAcross the source code, added additional status/error checking to resolve 751306536Sjkimissues discovered by static source code analysis tools such as Coverity. 752306536Sjkim 753306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 754306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 755306536Sjkimdebug version of the code includes the debug output trace mechanism and 756306536Sjkimhas a much larger code and data size. 757306536Sjkim 758306536Sjkim Current Release: 759306536Sjkim Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 760306536Sjkim Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 761306536Sjkim Previous Release: 762306536Sjkim Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 763306536Sjkim Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 764306536Sjkim 765306536Sjkim 766306536Sjkim2) iASL Compiler/Disassembler and Tools: 767306536Sjkim 768306536SjkimiASL: Fixed a regression where the device map file feature no longer 769306536Sjkimworked properly when used in conjunction with the disassembler. It only 770306536Sjkimworked properly with the compiler itself. 771306536Sjkim 772306536SjkimiASL: Implemented a new warning for method LocalX variables that are set 773306536Sjkimbut never used (similar to a C compiler such as gcc). This also applies 774306536Sjkimto ArgX variables that are not defined by the parent method, and are 775306536Sjkiminstead (legally) used as local variables. 776306536Sjkim 777306536SjkimiASL/Preprocessor: Finished the pass-through of line numbers from the 778306536Sjkimpreprocessor to the compiler. This ensures that compiler errors/warnings 779306536Sjkimhave the correct original line numbers and filenames, regardless of any 780306536Sjkim#include files. 781306536Sjkim 782306536SjkimiASL/Preprocessor: Fixed a couple of issues with comment handling and the 783306536Sjkimpass-through of comments to the preprocessor output file (which becomes 784306536Sjkimthe compiler input file). Also fixed a problem with // comments that 785306536Sjkimappear after a math expression. 786306536Sjkim 787306536SjkimiASL: Added support for the TCPA server table to the table compiler and 788306536Sjkimtemplate generator. (The client table was already previously supported) 789306536Sjkim 790306536SjkimiASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 791306536Sjkimidentify the iASL compiler. 792306536Sjkim 793306536SjkimCleaned up the use of the macros NEGATIVE and POSITIVE which were defined 794306536Sjkimmultiple times. The new names are ACPI_SIGN_NEGATIVE and 795306536SjkimACPI_SIGN_POSITIVE. 796306536Sjkim 797306536SjkimAcpiHelp: Update to expand help messages for the iASL preprocessor 798306536Sjkimdirectives. 799306536Sjkim 800306536Sjkim 801306536Sjkim---------------------------------------- 802306536Sjkim19 June 2015. Summary of changes for version 20150619: 803306536Sjkim 804306536SjkimTwo regressions in version 20150616 have been addressed: 805306536Sjkim 806306536SjkimFixes some problems/issues with the C library macro removal (ACPI_STRLEN, 807306536Sjkimetc.) This update changes ACPICA to only use the standard headers for 808306536Sjkimfunctions, or the prototypes for the local versions of the C library 809306536Sjkimfunctions. Across the source code, this required some additional casts 810306536Sjkimfor some Clib invocations for portability. Moved all local prototypes to 811306536Sjkima new file, acclib.h 812306536Sjkim 813306536SjkimFixes several problems with recent changes to the handling of the FACS 814306536Sjkimtable that could cause some systems not to boot. 815306536Sjkim 816306536Sjkim 817306536Sjkim---------------------------------------- 818306536Sjkim16 June 2015. Summary of changes for version 20150616: 819306536Sjkim 820306536Sjkim 821306536Sjkim1) ACPICA kernel-resident subsystem: 822306536Sjkim 823306536SjkimAcross the entire ACPICA source code base, the various macros for the C 824306536Sjkimlibrary functions (such as ACPI_STRLEN, etc.) have been removed and 825306536Sjkimreplaced by the standard C library names (strlen, etc.) The original 826306536Sjkimpurpose for these macros is no longer applicable. This simplification 827306536Sjkimreduces the number of macros used in the ACPICA source code 828306536Sjkimsignificantly, improving readability and maintainability. 829306536Sjkim 830306536SjkimImplemented support for a new ACPI table, the OSDT. This table, the 831306536Sjkim"override" SDT, can be loaded directly by the host OS at boot time. It 832306536Sjkimenables the replacement of existing namespace objects that were installed 833306536Sjkimvia the DSDT and/or SSDTs. The primary purpose for this is to replace 834306536Sjkimbuggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 835306536Sjkimfor inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 836306536SjkimMoore. 837306536Sjkim 838306536SjkimAdded support for systems with (improperly) two FACS tables -- a "32-bit" 839306536Sjkimtable (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 840306536SjkimX field). This change will support both automatically. There continues to 841306536Sjkimbe systems found with this issue. This support requires a change to the 842306536SjkimAcpiSetFirmwareWakingVector interface. Also, a public global variable has 843306536Sjkimbeen added to allow the host to select which FACS is desired 844306536Sjkim(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 845306536Sjkimdetails Lv Zheng. 846306536Sjkim 847306536SjkimAdded a new feature to allow for systems that do not contain an FACS. 848306536SjkimAlthough this is already supported on hardware-reduced platforms, the 849306536Sjkimfeature has been extended for all platforms. The reasoning is that we do 850306536Sjkimnot want to abort the entire ACPICA initialization just because the 851306536Sjkimsystem is seriously buggy and has no FACS. 852306536Sjkim 853306536SjkimFixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 854306536Sjkimnot correctly transcribed from the ACPI specification in ACPICA version 855306536Sjkim20150515. 856306536Sjkim 857306536SjkimImplemented support for the _CLS object in the AcpiGetObjectInfo external 858306536Sjkiminterface. 859306536Sjkim 860306536SjkimUpdated the definitions of the TCPA and TPM2 ACPI tables to the more 861306536Sjkimrecent TCG ACPI Specification, December 14, 2014. Table disassembler and 862306536Sjkimcompiler also updated. Note: The TCPA "server" table is not supported by 863306536Sjkimthe disassembler/table-compiler at this time. 864306536Sjkim 865306536SjkimACPI 6.0: Added definitions for the new GIC version field in the MADT. 866306536Sjkim 867306536SjkimExample Code and Data Size: These are the sizes for the OS-independent 868306536Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 869306536Sjkimdebug version of the code includes the debug output trace mechanism and 870306536Sjkimhas a much larger code and data size. 871306536Sjkim 872306536Sjkim Current Release: 873306536Sjkim Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 874306536Sjkim Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 875306536Sjkim Previous Release: 876306536Sjkim Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 877306536Sjkim Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 878306536Sjkim 879306536Sjkim 880306536Sjkim2) iASL Compiler/Disassembler and Tools: 881306536Sjkim 882306536SjkimDisassembler: Fixed a problem with the new symbolic operator disassembler 883306536Sjkimwhere incorrect ASL code could be emitted in some cases for the "non- 884306536Sjkimcommutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 885306536SjkimShiftRight. The actual problem cases seem to be rather unusual in common 886306536SjkimASL code, however. David Box. 887306536Sjkim 888306536SjkimModified the linux version of acpidump to obtain ACPI tables from not 889306536Sjkimjust /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 890306536SjkimZheng. 891306536Sjkim 892306536SjkimiASL: Fixed a problem where the user preprocessor output file (.i) 893306536Sjkimcontained extra data that was not expected. The compiler was using this 894306536Sjkimfile as a temporary file and passed through #line directives in order to 895306536Sjkimkeep compiler error messages in sync with the input file and line number 896306536Sjkimacross multiple include files. The (.i) is no longer a temporary file as 897306536Sjkimthe compiler uses a new, different file for the original purpose. 898306536Sjkim 899306536SjkimiASL: Fixed a problem where comments within the original ASL source code 900306536Sjkimfile were not passed through to the preprocessor output file, nor any 901306536Sjkimlisting files. 902306536Sjkim 903306536SjkimiASL: Fixed some issues for the handling of the "#include" preprocessor 904306536Sjkimdirective and the similar (but not the same) "Include" ASL operator. 905306536Sjkim 906306536SjkimiASL: Add support for the new OSDT in both the disassembler and compiler. 907306536Sjkim 908306536SjkimiASL: Fixed a problem with the constant folding support where a Buffer 909306536Sjkimobject could be incorrectly generated (incorrectly formed) during a 910306536Sjkimconversion to a Store() operator. 911306536Sjkim 912306536SjkimAcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 913306536Sjkimdescription text for the _REV predefined name. _REV now permanently 914306536Sjkimreturns 2, as per the ACPI 6.0 specification. 915306536Sjkim 916306536SjkimDebugger: Enhanced the output of the Debug ASL object for references 917306536Sjkimproduced by the Index operator. For Buffers and strings, only output the 918306536Sjkimactual byte pointed to by the index. For packages, only print the single 919306536Sjkimpackage element decoded by the index. Previously, the entire 920306536Sjkimbuffer/string/package was emitted. 921306536Sjkim 922306536SjkimiASL/Table-compiler: Fixed a regression where the "generic" data types 923306536Sjkimwere no longer recognized, causing errors. 924306536Sjkim 925306536Sjkim 926306536Sjkim---------------------------------------- 927306536Sjkim15 May 2015. Summary of changes for version 20150515: 928306536Sjkim 929284460SjkimThis release implements most of ACPI 6.0 as described below. 930284460Sjkim 931284460Sjkim1) ACPICA kernel-resident subsystem: 932284460Sjkim 933284460SjkimImplemented runtime argument checking and return value checking for all 934284460Sjkimnew ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 935284460Sjkim_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 936284460Sjkim 937284460SjkimExample Code and Data Size: These are the sizes for the OS-independent 938284460Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 939284460Sjkimdebug version of the code includes the debug output trace mechanism and 940284460Sjkimhas a much larger code and data size. 941284460Sjkim 942284460Sjkim Current Release: 943284460Sjkim Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 944284460Sjkim Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 945284460Sjkim Previous Release: 946284460Sjkim Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 947284460Sjkim Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 948284460Sjkim 949284460Sjkim 950284460Sjkim2) iASL Compiler/Disassembler and Tools: 951284460Sjkim 952284460SjkimiASL compiler: Added compile-time support for all new ACPI 6.0 predefined 953284460Sjkimnames (argument count validation and return value typechecking.) 954284460Sjkim 955284460SjkimiASL disassembler and table compiler: implemented support for all new 956284460SjkimACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 957284460Sjkim 958284460SjkimiASL disassembler and table compiler: Added ACPI 6.0 changes to existing 959284460Sjkimtables: FADT, MADT. 960284460Sjkim 961284460SjkimiASL preprocessor: Added a new directive to enable inclusion of binary 962306536Sjkimblobs into ASL code. The new directive is #includebuffer. It takes a 963284460Sjkimbinary file as input and emits a named ascii buffer object into the ASL 964284460Sjkimcode. 965284460Sjkim 966284460SjkimAcpiHelp: Added support for all new ACPI 6.0 predefined names. 967284460Sjkim 968284460SjkimAcpiHelp: Added a new option, -d, to display all iASL preprocessor 969284460Sjkimdirectives. 970284460Sjkim 971284460SjkimAcpiHelp: Added a new option, -t, to display all known/supported ACPI 972284460Sjkimtables. 973284460Sjkim 974306536Sjkim 975284460Sjkim---------------------------------------- 976281687Sjkim10 April 2015. Summary of changes for version 20150410: 977281687Sjkim 978281687SjkimReverted a change introduced in version 20150408 that caused 979281687Sjkima regression in the disassembler where incorrect operator 980281687Sjkimsymbols could be emitted. 981281687Sjkim 982306536Sjkim 983281687Sjkim---------------------------------------- 984281687Sjkim08 April 2015. Summary of changes for version 20150408: 985281687Sjkim 986281687Sjkim 987281687Sjkim1) ACPICA kernel-resident subsystem: 988281687Sjkim 989281687SjkimPermanently set the return value for the _REV predefined name. It now 990281687Sjkimreturns 2 (was 5). This matches other ACPI implementations. _REV will be 991281687Sjkimdeprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 992281687Sjkimfor ACPI 2.0 and later. It should never be used to differentiate or 993281687Sjkimidentify operating systems. 994281687Sjkim 995281687SjkimAdded the "Windows 2015" string to the _OSI support. ACPICA will now 996281687Sjkimreturn TRUE to a query with this string. 997281687Sjkim 998281687SjkimFixed several issues with the local version of the printf function. 999281687Sjkim 1000281687SjkimAdded the C99 compiler option (-std=c99) to the Unix makefiles. 1001281687Sjkim 1002281687Sjkim Current Release: 1003281687Sjkim Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1004281687Sjkim Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1005281687Sjkim Previous Release: 1006281687Sjkim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1007281687Sjkim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1008281687Sjkim 1009281687Sjkim 1010281687Sjkim2) iASL Compiler/Disassembler and Tools: 1011281687Sjkim 1012281687SjkimiASL: Implemented an enhancement to the constant folding feature to 1013281687Sjkimtransform the parse tree to a simple Store operation whenever possible: 1014281687Sjkim Add (2, 3, X) ==> is converted to: Store (5, X) 1015281687Sjkim X = 2 + 3 ==> is converted to: Store (5, X) 1016281687Sjkim 1017281687SjkimUpdated support for the SLIC table (Software Licensing Description Table) 1018281687Sjkimin both the Data Table compiler and the disassembler. The SLIC table 1019281687Sjkimsupport now conforms to "Microsoft Software Licensing Tables (SLIC and 1020281687SjkimMSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1021281687Sjkimfollowing the ACPI header is now defined to be "Proprietary Data", and as 1022281687Sjkimsuch, can only be entered or displayed as a hex data block. 1023281687Sjkim 1024281687SjkimImplemented full support for the MSDM table as described in the document 1025281687Sjkimabove. Note: The format of MSDM is similar to SLIC. Any MSDM data 1026281687Sjkimfollowing the ACPI header is defined to be "Proprietary Data", and can 1027281687Sjkimonly be entered or displayed as a hex data block. 1028281687Sjkim 1029281687SjkimImplemented the -Pn option for the iASL Table Compiler (was only 1030281687Sjkimimplemented for the ASL compiler). This option disables the iASL 1031281687Sjkimpreprocessor. 1032281687Sjkim 1033281687SjkimDisassembler: For disassembly of Data Tables, added a comment field 1034281687Sjkimaround the Ascii equivalent data that is emitted as part of the "Raw 1035281687SjkimTable Data" block. This prevents the iASL Preprocessor from possible 1036281687Sjkimconfusion if/when the table is compiled. 1037281687Sjkim 1038281687SjkimDisassembler: Added an option (-df) to force the disassembler to assume 1039281687Sjkimthat the table being disassembled contains valid AML. This feature is 1040281687Sjkimuseful for disassembling AML files that contain ACPI signatures other 1041281687Sjkimthan DSDT or SSDT (such as OEMx or other signatures). 1042281687Sjkim 1043281687SjkimChanges for the EFI version of the tools: 1044281687Sjkim1) Fixed a build error/issue 1045281687Sjkim2) Fixed a cast warning 1046281687Sjkim 1047281687SjkimiASL: Fixed a path issue with the __FILE__ operator by making the 1048281687Sjkimdirectory prefix optional within the internal SplitInputFilename 1049281687Sjkimfunction. 1050281687Sjkim 1051281687SjkimDebugger: Removed some unused global variables. 1052281687Sjkim 1053281687SjkimTests: Updated the makefile for proper generation of the AAPITS suite. 1054281687Sjkim 1055306536Sjkim 1056281687Sjkim---------------------------------------- 1057281075Sdim04 February 2015. Summary of changes for version 20150204: 1058281075Sdim 1059281075SdimACPICA kernel-resident subsystem: 1060281075Sdim 1061281075SdimUpdated all ACPICA copyrights and signons to 2014. Added the 2014 1062281075Sdimcopyright to all module headers and signons, including the standard Linux 1063281075Sdimheader. This affects virtually every file in the ACPICA core subsystem, 1064281075SdimiASL compiler, all ACPICA utilities, and the test suites. 1065281075Sdim 1066281075SdimEvents: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1067281075SdimA raw gpe handling mechanism was created to allow better handling of GPE 1068281075Sdimstorms that aren't easily managed by the normal handler. The raw handler 1069281075Sdimallows disabling/renabling of the the GPE so that interrupt storms can be 1070281687Sjkimavoided in cases where events cannot be timely serviced. In this 1071281687Sjkimscenario, handlers should use the AcpiSetGpe() API to disable/enable the 1072281687SjkimGPE. This API will leave the reference counts undisturbed, thereby 1073281687Sjkimpreventing unintentional clearing of the GPE when the intent in only to 1074281687Sjkimtemporarily disable it. Raw handlers allow enabling and disabling of a 1075281687SjkimGPE by removing GPE register locking. As such, raw handlers much provide 1076281687Sjkimtheir own locks while using GPE API's to protect access to GPE data 1077281687Sjkimstructures. 1078281075SdimLv Zheng 1079281075Sdim 1080281075SdimEvents: Always modify GPE registers under the GPE lock. 1081281075SdimApplies GPE lock around AcpiFinishGpe() to protect access to GPE register 1082281075Sdimvalues. Reported as bug by joe.liu@apple.com. 1083281075Sdim 1084281687SjkimUnix makefiles: Separate option to disable optimizations and 1085281687Sjkim_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1086281687SjkimNOOPT disable option and creates a separate flag (NOFORTIFY) for this 1087281687Sjkimpurpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1088281687Sjkimerrors when building ACPICA. This allows disabling the option without 1089281687Sjkimalso having to disable optimazations. 1090281075SdimDavid Box 1091281075Sdim 1092281075Sdim Current Release: 1093281075Sdim Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1094281075Sdim Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1095281075Sdim 1096306536Sjkim-- 1097306536Sjkim-------------------------------------- 1098281075Sdim07 November 2014. Summary of changes for version 20141107: 1099281075Sdim 1100281075SdimThis release is available at https://acpica.org/downloads 1101281075Sdim 1102281075SdimThis release introduces and implements language extensions to ASL that 1103281075Sdimprovide support for symbolic ("C-style") operators and expressions. These 1104281075Sdimlanguage extensions are known collectively as ASL+. 1105281075Sdim 1106281075Sdim 1107281075Sdim1) iASL Compiler/Disassembler and Tools: 1108281075Sdim 1109281075SdimDisassembler: Fixed a problem with disassembly of the UartSerialBus 1110281075Sdimmacro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1111281075SdimBox. 1112281075Sdim 1113281075SdimDisassembler: Fixed the Unicode macro support to add escape sequences. 1114281075SdimAll non-printable ASCII values are emitted as escape sequences, as well 1115281075Sdimas the standard escapes for quote and backslash. Ensures that the 1116281075Sdimdisassembled macro can be correctly recompiled. 1117281075Sdim 1118281075SdimiASL: Added Printf/Fprintf macros for formatted output. These macros are 1119281075Sdimtranslated to existing AML Concatenate and Store operations. Printf 1120281075Sdimwrites to the ASL Debug object. Fprintf allows the specification of an 1121281075SdimASL name as the target. Only a single format specifier is required, %o, 1122281075Sdimsince the AML interpreter dynamically converts objects to the required 1123281075Sdimtype. David E. Box. 1124281075Sdim 1125281075Sdim (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1126281075Sdim (Concatenate (Concatenate (Concatenate ("", Arg0), 1127281075Sdim ": Unexpected value for "), Arg1), ", "), Arg2), 1128281075Sdim " at line "), Arg3), Debug) 1129281075Sdim 1130281075Sdim (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1131281075Sdim Arg0, Arg1, Arg2, Arg3) 1132281075Sdim 1133281075Sdim (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1134281075Sdim ("", Arg1), ": "), Arg0), " Successful"), STR1) 1135281075Sdim 1136281075Sdim (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1137281075Sdim 1138281075SdimiASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1139281075SdimASL parse tree before the AML code is generated. This allows blocks of 1140281075SdimASL code to be removed in order to help locate and identify problem 1141281075Sdimdevices and/or code. David E. Box. 1142281075Sdim 1143281075SdimAcpiExec: Added support (-fi) for an optional namespace object 1144281075Sdiminitialization file. This file specifies initial values for namespace 1145281075Sdimobjects as necessary for debugging and testing different ASL code paths 1146281075Sdimthat may be taken as a result of BIOS options. 1147281075Sdim 1148281075Sdim 1149281075Sdim2) Overview of symbolic operator support for ASL (ASL+) 1150281075Sdim------------------------------------------------------- 1151281075Sdim 1152281075SdimAs an extension to the ASL language, iASL implements support for symbolic 1153281075Sdim(C-style) operators for math and logical expressions. This can greatly 1154281075Sdimsimplify ASL code as well as improve both readability and 1155281075Sdimmaintainability. These language extensions can exist concurrently with 1156281075Sdimall legacy ASL code and expressions. 1157281075Sdim 1158281075SdimThe symbolic extensions are 100% compatible with existing AML 1159281075Sdiminterpreters, since no new AML opcodes are created. To implement the 1160281075Sdimextensions, the iASL compiler transforms the symbolic expressions into 1161281075Sdimthe legacy ASL/AML equivalents at compile time. 1162281075Sdim 1163281075SdimFull symbolic expressions are supported, along with the standard C 1164281075Sdimprecedence and associativity rules. 1165281075Sdim 1166281075SdimFull disassembler support for the symbolic expressions is provided, and 1167281075Sdimcreates an automatic migration path for existing ASL code to ASL+ code 1168281075Sdimvia the disassembly process. By default, the disassembler now emits ASL+ 1169281075Sdimcode with symbolic expressions. An option (-dl) is provided to force the 1170281075Sdimdisassembler to emit legacy ASL code if desired. 1171281075Sdim 1172281075SdimBelow is the complete list of the currently supported symbolic operators 1173281075Sdimwith examples. See the iASL User Guide for additional information. 1174281075Sdim 1175281075Sdim 1176281075SdimASL+ Syntax Legacy ASL Equivalent 1177281075Sdim----------- --------------------- 1178281075Sdim 1179281075Sdim // Math operators 1180281075Sdim 1181281075SdimZ = X + Y Add (X, Y, Z) 1182281075SdimZ = X - Y Subtract (X, Y, Z) 1183281075SdimZ = X * Y Multiply (X, Y, Z) 1184281075SdimZ = X / Y Divide (X, Y, , Z) 1185281075SdimZ = X % Y Mod (X, Y, Z) 1186281075SdimZ = X << Y ShiftLeft (X, Y, Z) 1187281075SdimZ = X >> Y ShiftRight (X, Y, Z) 1188281075SdimZ = X & Y And (X, Y, Z) 1189281075SdimZ = X | Y Or (X, Y, Z) 1190281075SdimZ = X ^ Y Xor (X, Y, Z) 1191281075SdimZ = ~X Not (X, Z) 1192281075SdimX++ Increment (X) 1193281075SdimX-- Decrement (X) 1194281075Sdim 1195281075Sdim // Logical operators 1196281075Sdim 1197281075Sdim(X == Y) LEqual (X, Y) 1198281075Sdim(X != Y) LNotEqual (X, Y) 1199281075Sdim(X < Y) LLess (X, Y) 1200281075Sdim(X > Y) LGreater (X, Y) 1201281075Sdim(X <= Y) LLessEqual (X, Y) 1202281075Sdim(X >= Y) LGreaterEqual (X, Y) 1203281075Sdim(X && Y) LAnd (X, Y) 1204281075Sdim(X || Y) LOr (X, Y) 1205281075Sdim(!X) LNot (X) 1206281075Sdim 1207281075Sdim // Assignment and compound assignment operations 1208281075Sdim 1209281075SdimX = Y Store (Y, X) 1210281075SdimX += Y Add (X, Y, X) 1211281075SdimX -= Y Subtract (X, Y, X) 1212281075SdimX *= Y Multiply (X, Y, X) 1213281075SdimX /= Y Divide (X, Y, , X) 1214281075SdimX %= Y Mod (X, Y, X) 1215281075SdimX <<= Y ShiftLeft (X, Y, X) 1216281075SdimX >>= Y ShiftRight (X, Y, X) 1217281075SdimX &= Y And (X, Y, X) 1218281075SdimX |= Y Or (X, Y, X) 1219281075SdimX ^= Y Xor (X, Y, X) 1220281075Sdim 1221281075Sdim 1222281075Sdim3) ASL+ Examples: 1223281075Sdim----------------- 1224281075Sdim 1225281075SdimLegacy ASL: 1226281075Sdim If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1227281075Sdim And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 1228281075Sdim0x03FB), 1229281075Sdim 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1230281075Sdim { 1231281075Sdim And (MEMB, 0xFFFFFFF0, SRMB) 1232281075Sdim Store (MEMB, Local2) 1233281075Sdim Store (PDBM, Local1) 1234281075Sdim And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1235281075Sdim Store (SRMB, MEMB) 1236281075Sdim Or (PDBM, 0x02, PDBM) 1237281075Sdim } 1238281075Sdim 1239281075SdimASL+ version: 1240281075Sdim If (((R510 & 0x03FB) == 0x02E0) || 1241281075Sdim ((R520 & 0x03FB) == 0x02E0) || 1242281075Sdim ((R530 & 0x03FB) == 0x02E0) || 1243281075Sdim ((R540 & 0x03FB) == 0x02E0)) 1244281075Sdim { 1245281075Sdim SRMB = (MEMB & 0xFFFFFFF0) 1246281075Sdim Local2 = MEMB 1247281075Sdim Local1 = PDBM 1248281075Sdim PDBM &= 0xFFFFFFFFFFFFFFF9 1249281075Sdim MEMB = SRMB 1250281075Sdim PDBM |= 0x02 1251281075Sdim } 1252281075Sdim 1253281075SdimLegacy ASL: 1254281075Sdim Store (0x1234, Local1) 1255281075Sdim Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1256281075Sdim Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1257281075Sdim Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1258281075Sdim Store (Index (PKG1, 0x03), Local6) 1259281075Sdim Store (Add (Local3, Local2), Debug) 1260281075Sdim Add (Local1, 0x0F, Local2) 1261281075Sdim Add (Local1, Multiply (Local2, Local3), Local2) 1262281075Sdim Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1263281075Sdim 1264281075SdimASL+ version: 1265281075Sdim Local1 = 0x1234 1266281075Sdim Local3 = (((Local1 + TEST) + 0x20) * Local2) 1267281075Sdim Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1268281075Sdim Local3 = (Local1 + (TEST + (0x20 * Local2))) 1269281075Sdim Local6 = Index (PKG1, 0x03) 1270281075Sdim Debug = (Local3 + Local2) 1271281075Sdim Local2 = (Local1 + 0x0F) 1272281075Sdim Local2 = (Local1 + (Local2 * Local3)) 1273281075Sdim Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1274281075Sdim 1275281075Sdim 1276281075Sdim---------------------------------------- 1277281075Sdim26 September 2014. Summary of changes for version 20140926: 1278281075Sdim 1279281075Sdim1) ACPICA kernel-resident subsystem: 1280281075Sdim 1281281075SdimUpdated the GPIO operation region handler interface (GeneralPurposeIo). 1282281075SdimIn order to support GPIO Connection objects with multiple pins, along 1283281075Sdimwith the related Field objects, the following changes to the interface 1284281075Sdimhave been made: The Address is now defined to be the offset in bits of 1285281075Sdimthe field unit from the previous invocation of a Connection. It can be 1286281075Sdimviewed as a "Pin Number Index" into the connection resource descriptor. 1287281075SdimThe BitWidth is the exact bit width of the field. It is usually one bit, 1288281075Sdimbut not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1289281075Sdimadditional information and examples. 1290281075Sdim 1291281075SdimGPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1292281075Sdimcorresponding _Lxx/_Exx methods are disabled (they may have been enabled 1293281075Sdimby the firmware), so that they cannot fire until they are enabled via 1294281075SdimAcpiUpdateAllGpes. Rafael J. Wysocki. 1295281075Sdim 1296281075SdimAdded a new return flag for the Event/GPE status interfaces -- 1297281075SdimAcpiGetEventStatus and AcpiGetGpeStatus. The new 1298281075SdimACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1299281075SdimGPE currently has a handler associated with it, and can thus actually 1300281075Sdimaffect the system. Lv Zheng. 1301281075Sdim 1302281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1303281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1304281075Sdimdebug version of the code includes the debug output trace mechanism and 1305281075Sdimhas a much larger code and data size. 1306281075Sdim 1307281075Sdim Current Release: 1308281075Sdim Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1309281075Sdim Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1310281075Sdim Previous Release: 1311281075Sdim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1312281075Sdim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1313281075Sdim 1314281075Sdim2) iASL Compiler/Disassembler and Tools: 1315281075Sdim 1316281075SdimiASL: Fixed a memory allocation/free regression introduced in 20140828 1317281075Sdimthat could cause the compiler to crash. This was introduced inadvertently 1318281075Sdimduring the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 1319281075Sdim1113. 1320281075Sdim 1321281075SdimiASL: Removed two error messages that have been found to create false 1322281075Sdimpositives, until they can be fixed and fully validated (ACPICA BZ 1112): 1323281075Sdim1) Illegal forward reference within a method 1324281075Sdim2) Illegal reference across two methods 1325281075Sdim 1326281075SdimiASL: Implemented a new option (-lm) to create a hardware mapping file 1327281075Sdimthat summarizes all GPIO, I2C, SPI, and UART connections. This option 1328281075Sdimworks for both the compiler and disassembler. See the iASL compiler user 1329281075Sdimguide for additional information and examples (section 6.4.6). 1330281075Sdim 1331281075SdimAcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1332281075Sdimversion 2. This corrects the AE_BAD_HEADER exception seen on systems with 1333281075Sdima version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1334281075Sdim 1335281075SdimAcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1336281075Sdimunless STDIN is actually a terminal. Assists with batch-mode processing. 1337281075SdimACPICA BZ 1114. 1338281075Sdim 1339281075SdimDisassembler/AcpiHelp: Added another large group of recognized _HID 1340281075Sdimvalues. 1341281075Sdim 1342281075Sdim 1343281075Sdim---------------------------------------- 1344281075Sdim28 August 2014. Summary of changes for version 20140828: 1345281075Sdim 1346281075Sdim1) ACPICA kernel-resident subsystem: 1347281075Sdim 1348281075SdimFixed a problem related to the internal use of the Timer() operator where 1349281075Sdima 64-bit divide could cause an attempted link to a double-precision math 1350281075Sdimlibrary. This divide is not actually necessary, so the code was 1351281075Sdimrestructured to eliminate it. Lv Zheng. 1352281075Sdim 1353281075SdimACPI 5.1: Added support for the runtime validation of the _DSD package 1354281075Sdim(similar to the iASL support). 1355281075Sdim 1356281075SdimACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1357281075SdimSRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1358281075Sdim 1359281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1360281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1361281075Sdimdebug version of the code includes the debug output trace mechanism and 1362281075Sdimhas a much larger code and data size. 1363281075Sdim 1364281075Sdim Current Release: 1365281075Sdim Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1366281075Sdim Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1367281075Sdim Previous Release: 1368281075Sdim Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1369281075Sdim Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1370281075Sdim 1371281075Sdim2) iASL Compiler/Disassembler and Tools: 1372281075Sdim 1373281075SdimAcpiExec: Fixed a problem on unix systems where the original terminal 1374281075Sdimstate was not always properly restored upon exit. Seen when using the -v 1375281075Sdimoption. ACPICA BZ 1104. 1376281075Sdim 1377281075SdimiASL: Fixed a problem with the validation of the ranges/length within the 1378281075SdimMemory24 resource descriptor. There was a boundary condition when the 1379281075Sdimrange was equal to the (length -1) caused by the fact that these values 1380281075Sdimare defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1381281075Sdim 1382281075SdimDisassembler: Fixed a problem with the GpioInt descriptor interrupt 1383281075Sdimpolarity 1384281075Sdimflags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1385281075Sdimis 1386281075Sdimnow supported properly. 1387281075Sdim 1388281075SdimACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1389281075Sdimin the disassembler, data table compiler, and table template generator. 1390281075Sdim 1391281075SdimiASL: Added a requirement for Device() objects that one of either a _HID 1392281075Sdimor _ADR must exist within the scope of a Device, as per the ACPI 1393281075Sdimspecification. Remove a similar requirement that was incorrectly in place 1394281075Sdimfor the _DSD object. 1395281075Sdim 1396281075SdimiASL: Added error detection for illegal named references within control 1397281075Sdimmethods that would cause runtime failures. Now trapped as errors are: 1) 1398281075SdimReferences to objects within a non-parent control method. 2) Forward 1399281075Sdimreferences (within a method) -- for control methods, AML interpreters use 1400281075Sdima one-pass parse of control methods. ACPICA BZ 1008. 1401281075Sdim 1402281075SdimiASL: Added error checking for dependencies related to the _PSx power 1403281075Sdimmethods. ACPICA BZ 1029. 1404281075Sdim1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1405281075Sdim_PS3. 1406281075Sdim2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1407281075Sdimscope. 1408281075Sdim 1409281075SdimiASL and table compiler: Cleanup miscellaneous memory leaks by fully 1410281075Sdimdeploying the existing object and string caches and adding new caches for 1411281075Sdimthe table compiler. 1412281075Sdim 1413281075SdimiASL: Split the huge parser source file into multiple subfiles to improve 1414281075Sdimmanageability. Generation now requires the M4 macro preprocessor, which 1415281075Sdimis part of the Bison distribution on both unix and windows platforms. 1416281075Sdim 1417281075SdimAcpiSrc: Fixed and removed all extraneous warnings generated during 1418281075Sdimentire ACPICA source code scan and/or conversion. 1419281075Sdim 1420281075Sdim 1421281075Sdim---------------------------------------- 1422281075Sdim 1423281075Sdim24 July 2014. Summary of changes for version 20140724: 1424281075Sdim 1425281075SdimThe ACPI 5.1 specification has been released and is available at: 1426281075Sdimhttp://uefi.org/specs/access 1427281075Sdim 1428281075Sdim 1429281075Sdim0) ACPI 5.1 support in ACPICA: 1430281075Sdim 1431281075SdimACPI 5.1 is fully supported in ACPICA as of this release. 1432281075Sdim 1433281075SdimNew predefined names. Support includes iASL and runtime ACPICA 1434281075Sdimvalidation. 1435281075Sdim _CCA (Cache Coherency Attribute). 1436281075Sdim _DSD (Device-Specific Data). David Box. 1437281075Sdim 1438281075SdimModifications to existing ACPI tables. Support includes headers, iASL 1439281075SdimData Table compiler, disassembler, and the template generator. 1440281075Sdim FADT - New fields and flags. Graeme Gregory. 1441281075Sdim GTDT - One new subtable and new fields. Tomasz Nowicki. 1442281075Sdim MADT - Two new subtables. Tomasz Nowicki. 1443281075Sdim PCCT - One new subtable. 1444281075Sdim 1445281075SdimMiscellaneous. 1446281075Sdim New notification type for System Resource Affinity change events. 1447281075Sdim 1448281075Sdim 1449281075Sdim1) ACPICA kernel-resident subsystem: 1450281075Sdim 1451281075SdimFixed a regression introduced in 20140627 where a fault can happen during 1452281075Sdimthe deletion of Alias AML namespace objects. The problem affected both 1453281075Sdimthe core ACPICA and the ACPICA tools including iASL and AcpiExec. 1454281075Sdim 1455281075SdimImplemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 1456281075Sdimsimple mechanism to enable wake GPEs that have no associated handler or 1457281075Sdimcontrol method. Rafael Wysocki. 1458281075Sdim 1459281075SdimUpdated the AcpiEnableGpe interface to disallow the enable if there is no 1460281075Sdimhandler or control method associated with the particular GPE. This will 1461281075Sdimhelp avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 1462281075Sdim 1463281075SdimUpdated GPE handling and dispatch by disabling the GPE before clearing 1464281075Sdimthe status bit for edge-triggered GPEs. Lv Zheng. 1465281075Sdim 1466281075SdimAdded Timer() support to the AML Debug object. The current timer value is 1467281075Sdimnow displayed with each invocation of (Store to) the debug object to 1468281075Sdimenable simple generation of execution times for AML code (method 1469281075Sdimexecution for example.) ACPICA BZ 1093. 1470281075Sdim 1471281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1472281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1473281075Sdimdebug version of the code includes the debug output trace mechanism and 1474281075Sdimhas a much larger code and data size. 1475281075Sdim 1476281075Sdim Current Release: 1477281075Sdim Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 1478281075Sdim Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1479281075Sdim Previous Release: 1480281075Sdim Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1481281075Sdim Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1482281075Sdim 1483281075Sdim 1484281075Sdim2) iASL Compiler/Disassembler and Tools: 1485281075Sdim 1486281075SdimFixed an issue with the recently added local printf implementation, 1487281075Sdimconcerning width/precision specifiers that could cause incorrect output. 1488281075SdimLv Zheng. ACPICA BZ 1094. 1489281075Sdim 1490281075SdimDisassembler: Added support to detect buffers that contain UUIDs and 1491281075Sdimdisassemble them to an invocation of the ToUUID operator. Also emit 1492281075Sdimcommented descriptions of known ACPI-related UUIDs. 1493281075Sdim 1494281075SdimAcpiHelp: Added support to display known ACPI-related UUIDs. New option, 1495281075Sdim-u. Adds three new files. 1496281075Sdim 1497281075SdimiASL: Update table compiler and disassembler for DMAR table changes that 1498281075Sdimwere introduced in September 2013. With assistance by David Woodhouse. 1499281075Sdim 1500281075Sdim---------------------------------------- 1501281075Sdim27 June 2014. Summary of changes for version 20140627: 1502281075Sdim 1503281075Sdim1) ACPICA kernel-resident subsystem: 1504281075Sdim 1505281075SdimFormatted Output: Implemented local versions of standard formatted output 1506281075Sdimutilities such as printf, etc. Over time, it has been discovered that 1507281075Sdimthere are in fact many portability issues with printf, and the addition 1508281075Sdimof this feature will fix/prevent these issues once and for all. Some 1509281075Sdimknown issues are summarized below: 1510281075Sdim 1511281075Sdim1) Output of 64-bit values is not portable. For example, UINT64 is %ull 1512281075Sdimfor the Linux kernel and is %uI64 for some MSVC versions. 1513281075Sdim2) Invoking printf consistently in a manner that is portable across both 1514281075Sdim32-bit and 64-bit platforms is difficult at best in many situations. 1515281075Sdim3) The output format for pointers varies from system to system (leading 1516281075Sdimzeros especially), and leads to inconsistent output from ACPICA across 1517281075Sdimplatforms. 1518281075Sdim4) Certain platform-specific printf formats may conflict with ACPICA use. 1519281075Sdim5) If there is no local C library available, ACPICA now has local support 1520281075Sdimfor printf. 1521281075Sdim 1522281075Sdim-- To address these printf issues in a complete manner, ACPICA now 1523281075Sdimdirectly implements a small subset of printf format specifiers, only 1524281075Sdimthose that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 1525281075Sdim 1526281075SdimImplemented support for ACPICA generation within the EFI environment. 1527281075SdimInitially, the AcpiDump utility is supported in the UEFI shell 1528281075Sdimenvironment. Lv Zheng. 1529281075Sdim 1530281075SdimAdded a new external interface, AcpiLogError, to improve ACPICA 1531281075Sdimportability. This allows the host to redirect error messages from the 1532281075SdimACPICA utilities. Lv Zheng. 1533281075Sdim 1534281075SdimAdded and deployed new OSL file I/O interfaces to improve ACPICA 1535281075Sdimportability: 1536281075Sdim AcpiOsOpenFile 1537281075Sdim AcpiOsCloseFile 1538281075Sdim AcpiOsReadFile 1539281075Sdim AcpiOsWriteFile 1540281075Sdim AcpiOsGetFileOffset 1541281075Sdim AcpiOsSetFileOffset 1542281075SdimThere are C library implementations of these functions in the new file 1543281075Sdimservice_layers/oslibcfs.c -- however, the functions can be implemented by 1544281075Sdimthe local host in any way necessary. Lv Zheng. 1545281075Sdim 1546281075SdimImplemented a mechanism to disable/enable ACPI table checksum validation 1547281075Sdimat runtime. This can be useful when loading tables very early during OS 1548281075Sdiminitialization when it may not be possible to map the entire table in 1549281075Sdimorder to compute the checksum. Lv Zheng. 1550281075Sdim 1551281075SdimFixed a buffer allocation issue for the Generic Serial Bus support. 1552281075SdimOriginally, a fixed buffer length was used. This change allows for 1553281075Sdimvariable-length buffers based upon the protocol indicated by the field 1554281075Sdimaccess attributes. Reported by Lan Tianyu. Lv Zheng. 1555281075Sdim 1556281075SdimFixed a problem where an object detached from a namespace node was not 1557281075Sdimproperly terminated/cleared and could cause a circular list problem if 1558281075Sdimreattached. ACPICA BZ 1063. David Box. 1559281075Sdim 1560281075SdimFixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 1561281075Sdim 1562281075SdimFixed a possible memory leak in an error return path within the function 1563281075SdimAcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 1564281075Sdim 1565281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1566281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1567281075Sdimdebug version of the code includes the debug output trace mechanism and 1568281075Sdimhas a much larger code and data size. 1569281075Sdim 1570281075Sdim Current Release: 1571281075Sdim Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1572281075Sdim Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1573281075Sdim Previous Release: 1574281075Sdim Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1575281075Sdim Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1576281075Sdim 1577281075Sdim 1578281075Sdim2) iASL Compiler/Disassembler and Tools: 1579281075Sdim 1580281075SdimDisassembler: Add dump of ASCII equivalent text within a comment at the 1581281075Sdimend of each line of the output for the Buffer() ASL operator. 1582281075Sdim 1583281075SdimAcpiDump: Miscellaneous changes: 1584281075Sdim Fixed repetitive table dump in -n mode. 1585281075Sdim For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 1586281075Sdimthe ACPI 2.0 GUID fails. 1587281075Sdim 1588281075SdimiASL: Fixed a problem where the compiler could fault if incorrectly given 1589281075Sdiman acpidump output file as input. ACPICA BZ 1088. David Box. 1590281075Sdim 1591281075SdimAcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 1592281075Sdimthey are invoked without any arguments. 1593281075Sdim 1594281075SdimDebugger: Fixed a possible memory leak in an error return path. ACPICA BZ 1595281075Sdim1086. Colin Ian King. 1596281075Sdim 1597281075SdimDisassembler: Cleaned up a block of code that extracts a parent Op 1598281075Sdimobject. Added a comment that explains that the parent is guaranteed to be 1599281075Sdimvalid in this case. ACPICA BZ 1069. 1600281075Sdim 1601306536Sjkim 1602281075Sdim---------------------------------------- 1603281075Sdim24 April 2014. Summary of changes for version 20140424: 1604281075Sdim 1605281075Sdim1) ACPICA kernel-resident subsystem: 1606281075Sdim 1607281075SdimImplemented support to skip/ignore NULL address entries in the RSDT/XSDT. 1608281075SdimSome of these tables are known to contain a trailing NULL entry. Lv 1609281075SdimZheng. 1610281075Sdim 1611281075SdimRemoved an extraneous error message for the case where there are a large 1612281075Sdimnumber of system GPEs (> 124). This was the "32-bit FADT register is too 1613281075Sdimlong to convert to GAS struct" message, which is irrelevant for GPEs 1614281075Sdimsince the GPEx_BLK_LEN fields of the FADT are always used instead of the 1615281075Sdim(limited capacity) GAS bit length. Also, several changes to ensure proper 1616281075Sdimsupport for GPE numbers > 255, where some "GPE number" fields were 8-bits 1617281075Sdiminternally. 1618281075Sdim 1619281075SdimImplemented and deployed additional configuration support for the public 1620281075SdimACPICA external interfaces. Entire classes of interfaces can now be 1621281075Sdimeasily modified or configured out, replaced by stubbed inline functions 1622281075Sdimby default. Lv Zheng. 1623281075Sdim 1624281075SdimMoved all public ACPICA runtime configuration globals to the public 1625281075SdimACPICA external interface file for convenience. Also, removed some 1626281075Sdimobsolete/unused globals. See the file acpixf.h. Lv Zheng. 1627281075Sdim 1628281075SdimDocumentation: Added a new section to the ACPICA reference describing the 1629281075Sdimmaximum number of GPEs that can be supported by the FADT-defined GPEs in 1630281075Sdimblock zero and one. About 1200 total. See section 4.4.1 of the ACPICA 1631281075Sdimreference. 1632281075Sdim 1633281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1634281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1635281075Sdimdebug version of the code includes the debug output trace mechanism and 1636281075Sdimhas a much larger code and data size. 1637281075Sdim 1638281075Sdim Current Release: 1639281075Sdim Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 1640281075Sdim Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 1641281075Sdim Previous Release: 1642281075Sdim Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1643281075Sdim Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1644281075Sdim 1645281075Sdim 1646281075Sdim2) iASL Compiler/Disassembler and Tools: 1647281075Sdim 1648281075SdimiASL and disassembler: Add full support for the LPIT table (Low Power 1649281075SdimIdle Table). Includes support in the disassembler, data table compiler, 1650281075Sdimand template generator. 1651281075Sdim 1652281075SdimAcpiDump utility: 1653281075Sdim1) Add option to force the use of the RSDT (over the XSDT). 1654281075Sdim2) Improve validation of the RSDP signature (use 8 chars instead of 4). 1655281075Sdim 1656281075SdimiASL: Add check for predefined packages that are too large. For 1657281075Sdimpredefined names that contain subpackages, check if each subpackage is 1658281075Sdimtoo large. (Check for too small already exists.) 1659281075Sdim 1660281075SdimDebugger: Updated the GPE command (which simulates a GPE by executing the 1661281075SdimGPE code paths in ACPICA). The GPE device is now optional, and defaults 1662281075Sdimto the GPE 0/1 FADT-defined blocks. 1663281075Sdim 1664281075SdimUnix application OSL: Update line-editing support. Add additional error 1665281075Sdimchecking and take care not to reset terminal attributes on exit if they 1666281075Sdimwere never set. This should help guarantee that the terminal is always 1667281075Sdimleft in the previous state on program exit. 1668281075Sdim 1669306536Sjkim 1670281075Sdim---------------------------------------- 1671281075Sdim25 March 2014. Summary of changes for version 20140325: 1672281075Sdim 1673281075Sdim1) ACPICA kernel-resident subsystem: 1674281075Sdim 1675281075SdimUpdated the auto-serialize feature for control methods. This feature 1676281075Sdimautomatically serializes all methods that create named objects in order 1677281075Sdimto prevent runtime errors. The update adds support to ignore the 1678281075Sdimcurrently executing AML SyncLevel when invoking such a method, in order 1679281075Sdimto prevent disruption of any existing SyncLevel priorities that may exist 1680281075Sdimin the AML code. Although the use of SyncLevels is relatively rare, this 1681281075Sdimchange fixes a regression where an AE_AML_MUTEX_ORDER exception can 1682281075Sdimappear on some machines starting with the 20140214 release. 1683281075Sdim 1684281075SdimAdded a new external interface to allow the host to install ACPI tables 1685281075Sdimvery early, before the namespace is even created. AcpiInstallTable gives 1686281075Sdimthe host additional flexibility for ACPI table management. Tables can be 1687281075Sdiminstalled directly by the host as if they had originally appeared in the 1688281075SdimXSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 1689281075Sdim(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 1690281075Sdimwith additional internal restructuring and cleanup. See the ACPICA 1691281075SdimReference for interface details. Lv Zheng. 1692281075Sdim 1693281075SdimAdded validation of the checksum for all incoming dynamically loaded 1694281075Sdimtables (via external interfaces or via AML Load/LoadTable operators). Lv 1695281075SdimZheng. 1696281075Sdim 1697281075SdimUpdated the use of the AcpiOsWaitEventsComplete interface during Notify 1698281075Sdimand GPE handler removal. Restructured calls to eliminate possible race 1699281075Sdimconditions. Lv Zheng. 1700281075Sdim 1701281075SdimAdded a warning for the use/execution of the ASL/AML Unload (table) 1702281075Sdimoperator. This will help detect and identify machines that use this 1703281075Sdimoperator if and when it is ever used. This operator has never been seen 1704281075Sdimin the field and the usage model and possible side-effects of the drastic 1705281075Sdimruntime action of a full table removal are unknown. 1706281075Sdim 1707281075SdimReverted the use of #pragma push/pop which was introduced in the 20140214 1708281075Sdimrelease. It appears that push and pop are not implemented by enough 1709281075Sdimcompilers to make the use of this feature feasible for ACPICA at this 1710281075Sdimtime. However, these operators may be deployed in a future ACPICA 1711281075Sdimrelease. 1712281075Sdim 1713281075SdimAdded the missing EXPORT_SYMBOL macros for the install and remove SCI 1714281075Sdimhandler interfaces. 1715281075Sdim 1716281075SdimSource code generation: 1717281075Sdim1) Disabled the use of the "strchr" macro for the gcc-specific 1718281075Sdimgeneration. For some versions of gcc, this macro can periodically expose 1719281075Sdima compiler bug which in turn causes compile-time error(s). 1720281075Sdim2) Added support for PPC64 compilation. Colin Ian King. 1721281075Sdim 1722281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1723281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1724281075Sdimdebug version of the code includes the debug output trace mechanism and 1725281075Sdimhas a much larger code and data size. 1726281075Sdim 1727281075Sdim Current Release: 1728281075Sdim Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 1729281075Sdim Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 1730281075Sdim Previous Release: 1731281075Sdim Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1732281075Sdim Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1733281075Sdim 1734281075Sdim 1735281075Sdim2) iASL Compiler/Disassembler and Tools: 1736281075Sdim 1737281075SdimDisassembler: Added several new features to improve the readability of 1738281075Sdimthe resulting ASL code. Extra information is emitted within comment 1739281075Sdimfields in the ASL code: 1740281075Sdim1) Known _HID/_CID values are decoded to descriptive text. 1741281075Sdim2) Standard values for the Notify() operator are decoded to descriptive 1742281075Sdimtext. 1743281075Sdim3) Target operands are expanded to full pathnames (in a comment) when 1744281075Sdimpossible. 1745281075Sdim 1746281075SdimDisassembler: Miscellaneous updates for extern() handling: 1747281075Sdim1) Abort compiler if file specified by -fe option does not exist. 1748281075Sdim2) Silence unnecessary warnings about argument count mismatches. 1749281075Sdim3) Update warning messages concerning unresolved method externals. 1750281075Sdim4) Emit "UnknownObj" keyword for externals whose type cannot be 1751281075Sdimdetermined. 1752281075Sdim 1753281075SdimAcpiHelp utility: 1754281075Sdim1) Added the -a option to display both the ASL syntax and the AML 1755281075Sdimencoding for an input ASL operator. This effectively displays all known 1756281075Sdiminformation about an ASL operator with one AcpiHelp invocation. 1757281075Sdim2) Added substring match support (similar to a wildcard) for the -i 1758281075Sdim(_HID/PNP IDs) option. 1759281075Sdim 1760281075SdimiASL/Disassembler: Since this tool does not yet support execution on big- 1761281075Sdimendian machines, added detection of endianness and an error message if 1762281075Sdimexecution is attempted on big-endian. Support for big-endian within iASL 1763281075Sdimis a feature that is on the ACPICA to-be-done list. 1764281075Sdim 1765281075SdimAcpiBin utility: 1766281075Sdim1) Remove option to extract binary files from an acpidump; this function 1767281075Sdimis made obsolete by the AcpiXtract utility. 1768281075Sdim2) General cleanup of open files and allocated buffers. 1769281075Sdim 1770306536Sjkim 1771281075Sdim---------------------------------------- 1772281075Sdim14 February 2014. Summary of changes for version 20140214: 1773281075Sdim 1774281075Sdim1) ACPICA kernel-resident subsystem: 1775281075Sdim 1776281075SdimImplemented a new mechanism to proactively prevent problems with ill- 1777281075Sdimbehaved reentrant control methods that create named ACPI objects. This 1778281075Sdimbehavior is illegal as per the ACPI specification, but is nonetheless 1779281075Sdimfrequently seen in the field. Previously, this could lead to an 1780281075SdimAE_ALREADY_EXISTS exception if the method was actually entered by more 1781281075Sdimthan one thread. This new mechanism detects such methods at table load 1782281075Sdimtime and marks them "serialized" to prevent reentrancy. A new global 1783281075Sdimoption, AcpiGbl_AutoSerializeMethods, has been added to disable this 1784281075Sdimfeature if desired. This mechanism and global option obsoletes and 1785281075Sdimsupersedes the previous AcpiGbl_SerializeAllMethods option. 1786281075Sdim 1787281075SdimAdded the "Windows 2013" string to the _OSI support. ACPICA will now 1788281075Sdimrespond TRUE to _OSI queries with this string. It is the stated policy of 1789281075SdimACPICA to add new strings to the _OSI support as soon as possible after 1790281075Sdimthey are defined. See the full ACPICA _OSI policy which has been added to 1791281075Sdimthe utilities/utosi.c file. 1792281075Sdim 1793281075SdimHardened/updated the _PRT return value auto-repair code: 1794281075Sdim1) Do not abort the repair on a single subpackage failure, continue to 1795281075Sdimcheck all subpackages. 1796281075Sdim2) Add check for the minimum subpackage length (4). 1797281075Sdim3) Properly handle extraneous NULL package elements. 1798281075Sdim 1799281075SdimAdded support to avoid the possibility of infinite loops when traversing 1800281075Sdimobject linked lists. Never allow an infinite loop, even in the face of 1801281075Sdimcorrupted object lists. 1802281075Sdim 1803281075SdimACPICA headers: Deployed the use of #pragma pack(push) and #pragma 1804281075Sdimpack(pop) directives to ensure that the ACPICA headers are independent of 1805281075Sdimcompiler settings or other host headers. 1806281075Sdim 1807281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1808281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1809281075Sdimdebug version of the code includes the debug output trace mechanism and 1810281075Sdimhas a much larger code and data size. 1811281075Sdim 1812281075Sdim Current Release: 1813281075Sdim Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 1814281075Sdim Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 1815281075Sdim Previous Release: 1816281075Sdim Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1817281075Sdim Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1818281075Sdim 1819281075Sdim 1820281075Sdim2) iASL Compiler/Disassembler and Tools: 1821281075Sdim 1822281075SdimiASL/Table-compiler: Fixed a problem with support for the SPMI table. The 1823281075Sdimfirst reserved field was incorrectly forced to have a value of zero. This 1824281075Sdimchange correctly forces the field to have a value of one. ACPICA BZ 1081. 1825281075Sdim 1826281075SdimDebugger: Added missing support for the "Extra" and "Data" subobjects 1827281075Sdimwhen displaying object data. 1828281075Sdim 1829281075SdimDebugger: Added support to display entire object linked lists when 1830281075Sdimdisplaying object data. 1831281075Sdim 1832281075SdimiASL: Removed the obsolete -g option to obtain ACPI tables from the 1833281075SdimWindows registry. This feature has been superseded by the acpidump 1834281075Sdimutility. 1835281075Sdim 1836306536Sjkim 1837281075Sdim---------------------------------------- 1838281075Sdim14 January 2014. Summary of changes for version 20140114: 1839281075Sdim 1840281075Sdim1) ACPICA kernel-resident subsystem: 1841281075Sdim 1842281075SdimUpdated all ACPICA copyrights and signons to 2014. Added the 2014 1843281075Sdimcopyright to all module headers and signons, including the standard Linux 1844281075Sdimheader. This affects virtually every file in the ACPICA core subsystem, 1845281075SdimiASL compiler, all ACPICA utilities, and the test suites. 1846281075Sdim 1847281075SdimImproved parameter validation for AcpiInstallGpeBlock. Added the 1848281075Sdimfollowing checks: 1849281075Sdim1) The incoming device handle refers to type ACPI_TYPE_DEVICE. 1850281075Sdim2) There is not already a GPE block attached to the device. 1851281075SdimLikewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 1852281075Sdimdevice. 1853281075Sdim 1854281075SdimCorrectly support "references" in the ACPI_OBJECT. This change fixes the 1855281075Sdimsupport to allow references (namespace nodes) to be passed as arguments 1856281075Sdimto control methods via the evaluate object interface. This is probably 1857281075Sdimmost useful for testing purposes, however. 1858281075Sdim 1859281075SdimImproved support for 32/64 bit physical addresses in printf()-like 1860281075Sdimoutput. This change improves the support for physical addresses in printf 1861281075Sdimdebug statements and other output on both 32-bit and 64-bit hosts. It 1862281075Sdimconsistently outputs the appropriate number of bytes for each host. The 1863281075Sdim%p specifier is unsatisfactory since it does not emit uniform output on 1864281075Sdimall hosts/clib implementations (on some, leading zeros are not supported, 1865281075Sdimleading to difficult-to-read output). 1866281075Sdim 1867281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1868281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1869281075Sdimdebug version of the code includes the debug output trace mechanism and 1870281075Sdimhas a much larger code and data size. 1871281075Sdim 1872281075Sdim Current Release: 1873281075Sdim Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 1874281075Sdim Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 1875281075Sdim Previous Release: 1876281075Sdim Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1877281075Sdim Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1878281075Sdim 1879281075Sdim 1880281075Sdim2) iASL Compiler/Disassembler and Tools: 1881281075Sdim 1882281075SdimiASL: Fix a possible fault when using the Connection() operator. Fixes a 1883281075Sdimproblem if the parent Field definition for the Connection operator refers 1884281075Sdimto an operation region that does not exist. ACPICA BZ 1064. 1885281075Sdim 1886281075SdimAcpiExec: Load of local test tables is now optional. The utility has the 1887281075Sdimcapability to load some various tables to test features of ACPICA. 1888281075SdimHowever, there are enough of them that the output of the utility became 1889281075Sdimconfusing. With this change, only the required local tables are displayed 1890281075Sdim(RSDP, XSDT, etc.) along with the actual tables loaded via the command 1891281075Sdimline specification. This makes the default output simler and easier to 1892281075Sdimunderstand. The -el command line option restores the original behavior 1893281075Sdimfor testing purposes. 1894281075Sdim 1895281075SdimAcpiExec: Added support for overlapping operation regions. This change 1896281075Sdimexpands the simulation of operation regions by supporting regions that 1897281075Sdimoverlap within the given address space. Supports SystemMemory and 1898281075SdimSystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 1899281075Sdim 1900281075SdimAcpiExec: Added region handler support for PCI_Config and EC spaces. This 1901281075Sdimallows AcpiExec to simulate these address spaces, similar to the current 1902281075Sdimsupport for SystemMemory and SystemIO. 1903281075Sdim 1904281075SdimDebugger: Added new command to read/write/compare all namespace objects. 1905281075SdimThe command "test objects" will exercise the entire namespace by writing 1906281075Sdimnew values to each data object, and ensuring that the write was 1907281075Sdimsuccessful. The original value is then restored and verified. 1908281075Sdim 1909281075SdimDebugger: Added the "test predefined" command. This change makes this 1910281075Sdimtest public and puts it under the new "test" command. The test executes 1911281075Sdimeach and every predefined name within the current namespace. 1912281075Sdim 1913306536Sjkim 1914281075Sdim---------------------------------------- 1915281075Sdim18 December 2013. Summary of changes for version 20131218: 1916281075Sdim 1917281075SdimGlobal note: The ACPI 5.0A specification was released this month. There 1918281075Sdimare no changes needed for ACPICA since this release of ACPI is an 1919281075Sdimerrata/clarification release. The specification is available at 1920281075Sdimacpi.info. 1921281075Sdim 1922281075Sdim 1923281075Sdim1) ACPICA kernel-resident subsystem: 1924281075Sdim 1925281075SdimAdded validation of the XSDT root table if it is present. Some older 1926281075Sdimplatforms contain an XSDT that is ill-formed or otherwise invalid (such 1927281075Sdimas containing some or all entries that are NULL pointers). This change 1928281075Sdimadds a new function to validate the XSDT before actually using it. If the 1929281075SdimXSDT is found to be invalid, ACPICA will now automatically fall back to 1930281075Sdimusing the RSDT instead. Original implementation by Zhao Yakui. Ported to 1931281075SdimACPICA and enhanced by Lv Zheng and Bob Moore. 1932281075Sdim 1933281075SdimAdded a runtime option to ignore the XSDT and force the use of the RSDT. 1934281075SdimThis change adds a runtime option that will force ACPICA to use the RSDT 1935281075Sdiminstead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 1936281075Sdimrequires that an XSDT be used instead of the RSDT, the XSDT has been 1937281075Sdimfound to be corrupt or ill-formed on some machines. Lv Zheng. 1938281075Sdim 1939281075SdimAdded a runtime option to favor 32-bit FADT register addresses over the 1940281075Sdim64-bit addresses. This change adds an option to favor 32-bit FADT 1941281075Sdimaddresses when there is a conflict between the 32-bit and 64-bit versions 1942281075Sdimof the same register. The default behavior is to use the 64-bit version 1943281075Sdimin accordance with the ACPI specification. This can now be overridden via 1944281075Sdimthe AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 1945281075Sdim 1946281075SdimDuring the change above, the internal "Convert FADT" and "Verify FADT" 1947281075Sdimfunctions have been merged to simplify the code, making it easier to 1948281075Sdimunderstand and maintain. ACPICA BZ 933. 1949281075Sdim 1950281075SdimImprove exception reporting and handling for GPE block installation. 1951281075SdimReturn an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 1952281075Sdimstatus when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 1953281075Sdim 1954281075SdimAdded helper macros to extract bus/segment numbers from the HEST table. 1955281075SdimThis change adds two macros to extract the encoded bus and segment 1956281075Sdimnumbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 1957281075SdimBetty Dall <betty.dall@hp.com> 1958281075Sdim 1959281075SdimRemoved the unused ACPI_FREE_BUFFER macro. This macro is no longer used 1960281075Sdimby ACPICA. It is not a public macro, so it should have no effect on 1961281075Sdimexisting OSV code. Lv Zheng. 1962281075Sdim 1963281075SdimExample Code and Data Size: These are the sizes for the OS-independent 1964281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1965281075Sdimdebug version of the code includes the debug output trace mechanism and 1966281075Sdimhas a much larger code and data size. 1967281075Sdim 1968281075Sdim Current Release: 1969281075Sdim Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 1970281075Sdim Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 1971281075Sdim Previous Release: 1972281075Sdim Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 1973281075Sdim Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 1974281075Sdim 1975281075Sdim 1976281075Sdim2) iASL Compiler/Disassembler and Tools: 1977281075Sdim 1978281075SdimDisassembler: Improved pathname support for emitted External() 1979281075Sdimstatements. This change adds full pathname support for external names 1980281075Sdimthat have been resolved internally by the inclusion of additional ACPI 1981281075Sdimtables (via the iASL -e option). Without this change, the disassembler 1982281075Sdimcan emit multiple externals for the same object, or it become confused 1983281075Sdimwhen the Scope() operator is used on an external object. Overall, greatly 1984281075Sdimimproves the ability to actually recompile the emitted ASL code when 1985281075Sdimobjects a referenced across multiple ACPI tables. Reported by Michael 1986281075SdimTsirkin (mst@redhat.com). 1987281075Sdim 1988281075SdimTests/ASLTS: Updated functional control suite to execute with no errors. 1989281075SdimDavid Box. Fixed several errors related to the testing of the interpreter 1990281075Sdimslack mode. Lv Zheng. 1991281075Sdim 1992281075SdimiASL: Added support to detect names that are declared within a control 1993281075Sdimmethod, but are unused (these are temporary names that are only valid 1994281075Sdimduring the time the method is executing). A remark is issued for these 1995281075Sdimcases. ACPICA BZ 1022. 1996281075Sdim 1997281075SdimiASL: Added full support for the DBG2 table. Adds full disassembler, 1998281075Sdimtable compiler, and template generator support for the DBG2 table (Debug 1999281075SdimPort 2 table). 2000281075Sdim 2001281075SdimiASL: Added full support for the PCCT table, update the table definition. 2002281075SdimUpdates the PCCT table definition in the actbl3.h header and adds table 2003281075Sdimcompiler and template generator support. 2004281075Sdim 2005281075SdimiASL: Added an option to emit only error messages (no warnings/remarks). 2006281075SdimThe -ve option will enable only error messages, warnings and remarks are 2007281075Sdimsuppressed. This can simplify debugging when only the errors are 2008281075Sdimimportant, such as when an ACPI table is disassembled and there are many 2009281075Sdimwarnings and remarks -- but only the actual errors are of real interest. 2010281075Sdim 2011281075SdimExample ACPICA code (source/tools/examples): Updated the example code so 2012281075Sdimthat it builds to an actual working program, not just example code. Added 2013281075SdimACPI tables and execution of an example control method in the DSDT. Added 2014281075Sdimmakefile support for Unix generation. 2015281075Sdim 2016306536Sjkim 2017281075Sdim---------------------------------------- 2018281075Sdim15 November 2013. Summary of changes for version 20131115: 2019281075Sdim 2020281075SdimThis release is available at https://acpica.org/downloads 2021281075Sdim 2022281075Sdim 2023281075Sdim1) ACPICA kernel-resident subsystem: 2024281075Sdim 2025281075SdimResource Manager: Fixed loop termination for the "get AML length" 2026281075Sdimfunction. The loop previously had an error termination on a NULL resource 2027281075Sdimpointer, which can never happen since the loop simply increments a valid 2028281075Sdimresource pointer. This fix changes the loop to terminate with an error on 2029281075Sdiman invalid end-of-buffer condition. The problem can be seen as an 2030281075Sdiminfinite loop by callers to AcpiSetCurrentResources with an invalid or 2031281075Sdimcorrupted resource descriptor, or a resource descriptor that is missing 2032281075Sdiman END_TAG descriptor. Reported by Dan Carpenter 2033281075Sdim<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2034281075Sdim 2035281075SdimTable unload and ACPICA termination: Delete all attached data objects 2036281075Sdimduring namespace node deletion. This fix updates namespace node deletion 2037281075Sdimto delete the entire list of attached objects (attached via 2038281075SdimAcpiAttachObject) instead of just one of the attached items. ACPICA BZ 2039281075Sdim1024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2040281075Sdim 2041281075SdimACPICA termination: Added support to delete all objects attached to the 2042281075Sdimroot namespace node. This fix deletes any and all objects that have been 2043281075Sdimattached to the root node via AcpiAttachData. Previously, none of these 2044281075Sdimobjects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2045281075Sdim 2046281075SdimDebug output: Do not emit the function nesting level for the in-kernel 2047281075Sdimbuild. The nesting level is really only useful during a single-thread 2048281075Sdimexecution. Therefore, only enable this output for the AcpiExec utility. 2049281075SdimAlso, only emit the thread ID when executing under AcpiExec (Context 2050281075Sdimswitches are still always detected and a message is emitted). ACPICA BZ 2051281075Sdim972. 2052281075Sdim 2053281075SdimExample Code and Data Size: These are the sizes for the OS-independent 2054281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2055281075Sdimdebug version of the code includes the debug output trace mechanism and 2056281075Sdimhas a much larger code and data size. 2057281075Sdim 2058281075Sdim Current Release: 2059281075Sdim Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2060281075Sdim Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2061281075Sdim Previous Release: 2062281075Sdim Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2063281075Sdim Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2064281075Sdim 2065281075Sdim 2066281075Sdim2) iASL Compiler/Disassembler and Tools: 2067281075Sdim 2068281075SdimAcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2069281075Sdimcorrect portable POSIX header for terminal control functions. 2070281075Sdim 2071281075SdimDisassembler: Fixed control method invocation issues related to the use 2072281075Sdimof the CondRefOf() operator. The problem is seen in the disassembly where 2073281075Sdimcontrol method invocations may not be disassembled properly if the 2074281075Sdimcontrol method name has been used previously as an argument to CondRefOf. 2075281075SdimThe solution is to not attempt to emit an external declaration for the 2076281075SdimCondRefOf target (it is not necessary in the first place). This prevents 2077281075Sdimdisassembler object type confusion. ACPICA BZ 988. 2078281075Sdim 2079281075SdimUnix Makefiles: Added an option to disable compiler optimizations and the 2080281075Sdim_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2081281075Sdimwith optimizations (reportedly, gcc 4.4 for example). This change adds a 2082281075Sdimcommand line option for make (NOOPT) that disables all compiler 2083281075Sdimoptimizations and the _FORTIFY_SOURCE compiler flag. The default 2084281075Sdimoptimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 2085281075Sdim1034. Lv Zheng, Bob Moore. 2086281075Sdim 2087281075SdimTests/ASLTS: Added options to specify individual test cases and modes. 2088281075SdimThis allows testers running aslts.sh to optionally specify individual 2089281075Sdimtest modes and test cases. Also added an option to disable the forced 2090281075Sdimgeneration of the ACPICA tools from source if desired. Lv Zheng. 2091281075Sdim 2092281075Sdim---------------------------------------- 2093281075Sdim27 September 2013. Summary of changes for version 20130927: 2094281075Sdim 2095281075SdimThis release is available at https://acpica.org/downloads 2096281075Sdim 2097281075Sdim 2098281075Sdim1) ACPICA kernel-resident subsystem: 2099281075Sdim 2100281075SdimFixed a problem with store operations to reference objects. This change 2101281075Sdimfixes a problem where a Store operation to an ArgX object that contained 2102281075Sdima 2103281075Sdimreference to a field object did not complete the automatic dereference 2104281075Sdimand 2105281075Sdimthen write to the actual field object. Instead, the object type of the 2106281075Sdimfield object was inadvertently changed to match the type of the source 2107281075Sdimoperand. The new behavior will actually write to the field object (buffer 2108281075Sdimfield or field unit), thus matching the correct ACPI-defined behavior. 2109281075Sdim 2110281075SdimImplemented support to allow the host to redefine individual OSL 2111281075Sdimprototypes. This change enables the host to redefine OSL prototypes found 2112281075Sdimin the acpiosxf.h file. This allows the host to implement OSL interfaces 2113281075Sdimwith a macro or inlined function. Further, it allows the host to add any 2114281075Sdimadditional required modifiers such as __iomem, __init, __exit, etc., as 2115281075Sdimnecessary on a per-interface basis. Enables maximum flexibility for the 2116281075SdimOSL interfaces. Lv Zheng. 2117281075Sdim 2118281075SdimHardcoded the access width for the FADT-defined reset register. The ACPI 2119281075Sdimspecification requires the reset register width to be 8 bits. ACPICA now 2120281075Sdimhardcodes the width to 8 and ignores the FADT width value. This provides 2121281075Sdimcompatibility with other ACPI implementations that have allowed BIOS code 2122281075Sdimwith bad register width values to go unnoticed. Matthew Garett, Bob 2123281075SdimMoore, 2124281075SdimLv Zheng. 2125281075Sdim 2126281075SdimChanged the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2127281075Sdimused 2128281075Sdimin the OSL header (acpiosxf). The change modifies the position of this 2129281075Sdimmacro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2130281075Sdimbuild issues if the OSL defines the implementation of the interface to be 2131281075Sdiman inline stub function. Lv Zheng. 2132281075Sdim 2133281075SdimDeployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2134281075Sdiminitialization interfaces. This change adds a new macro for the main init 2135281075Sdimand terminate external interfaces in order to support hosts that require 2136281075Sdimadditional or different processing for these functions. Changed from 2137281075SdimACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2138281075SdimZheng, Bob Moore. 2139281075Sdim 2140281075SdimCleaned up the memory allocation macros for configurability. In the 2141281075Sdimcommon 2142281075Sdimcase, the ACPI_ALLOCATE and related macros now resolve directly to their 2143281075Sdimrespective AcpiOs* OSL interfaces. Two options: 2144281075Sdim1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2145281075Sdimdefault, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 2146281075Sdim2) For AcpiExec (and for debugging), the macros can optionally be 2147281075Sdimresolved 2148281075Sdimto the local ACPICA interfaces that track each allocation (local tracking 2149281075Sdimis used to immediately detect memory leaks). 2150281075SdimLv Zheng. 2151281075Sdim 2152281075SdimSimplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2153281075Sdimto predefine this macro to either TRUE or FALSE during the system build. 2154281075Sdim 2155281075SdimReplaced __FUNCTION_ with __func__ in the gcc-specific header. 2156281075Sdim 2157281075SdimExample Code and Data Size: These are the sizes for the OS-independent 2158281075Sdimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2159281075Sdimdebug version of the code includes the debug output trace mechanism and 2160281075Sdimhas a much larger code and data size. 2161281075Sdim 2162281075Sdim Current Release: 2163281075Sdim Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2164281075Sdim Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2165281075Sdim Previous Release: 2166281075Sdim Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2167281075Sdim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2168281075Sdim 2169281075Sdim 2170281075Sdim2) iASL Compiler/Disassembler and Tools: 2171281075Sdim 2172281075SdimiASL: Implemented wildcard support for the -e option. This simplifies use 2173281075Sdimwhen there are many SSDTs that must be included to resolve external 2174281075Sdimmethod 2175281075Sdimdeclarations. ACPICA BZ 1041. Example: 2176281075Sdim iasl -e ssdt*.dat -d dsdt.dat 2177281075Sdim 2178281075SdimAcpiExec: Add history/line-editing for Unix/Linux systems. This change 2179281075Sdimadds a portable module that implements full history and limited line 2180281075Sdimediting for Unix and Linux systems. It does not use readline() due to 2181281075Sdimportability issues. Instead it uses the POSIX termio interface to put the 2182281075Sdimterminal in raw input mode so that the various special keys can be 2183281075Sdimtrapped 2184281075Sdim(such as up/down-arrow for history support and left/right-arrow for line 2185281075Sdimediting). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2186281075Sdim 2187281075SdimAcpiXtract: Add support to handle (ignore) "empty" lines containing only 2188281075Sdimone or more spaces. This provides compatible with early or different 2189281075Sdimversions of the AcpiDump utility. ACPICA BZ 1044. 2190281075Sdim 2191281075SdimAcpiDump: Do not ignore tables that contain only an ACPI table header. 2192281075SdimApparently, some BIOSs create SSDTs that contain an ACPI table header but 2193281075Sdimno other data. This change adds support to dump these tables. Any tables 2194281075Sdimshorter than the length of an ACPI table header remain in error (an error 2195281075Sdimmessage is emitted). Reported by Yi Li. 2196281075Sdim 2197281075SdimDebugger: Echo actual command along with the "unknown command" message. 2198281075Sdim 2199281075Sdim---------------------------------------- 2200254745Sjkim23 August 2013. Summary of changes for version 20130823: 2201254745Sjkim 2202254745Sjkim1) ACPICA kernel-resident subsystem: 2203254745Sjkim 2204254745SjkimImplemented support for host-installed System Control Interrupt (SCI) 2205254745Sjkimhandlers. Certain ACPI functionality requires the host to handle raw 2206254745SjkimSCIs. For example, the "SCI Doorbell" that is defined for memory power 2207254745Sjkimstate support requires the host device driver to handle SCIs to examine 2208254745Sjkimif the doorbell has been activated. Multiple SCI handlers can be 2209254745Sjkiminstalled to allow for future expansion. New external interfaces are 2210254745SjkimAcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2211254745Sjkimdetails. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2212254745Sjkim 2213254745SjkimOperation region support: Never locally free the handler "context" 2214254745Sjkimpointer. This change removes some dangerous code that attempts to free 2215254745Sjkimthe handler context pointer in some (rare) circumstances. The owner of 2216254745Sjkimthe handler owns this pointer and the ACPICA code should never touch it. 2217254745SjkimAlthough not seen to be an issue in any kernel, it did show up as a 2218254745Sjkimproblem (fault) under AcpiExec. Also, set the internal storage field for 2219254745Sjkimthe context pointer to zero when the region is deactivated, simply for 2220254745Sjkimsanity. David Box. ACPICA BZ 1039. 2221254745Sjkim 2222254745SjkimAcpiRead: On error, do not modify the return value target location. If an 2223254745Sjkimerror happens in the middle of a split 32/32 64-bit I/O operation, do not 2224254745Sjkimmodify the target of the return value pointer. Makes the code consistent 2225254745Sjkimwith the rest of ACPICA. Bjorn Helgaas. 2226254745Sjkim 2227254745SjkimExample Code and Data Size: These are the sizes for the OS-independent 2228254745Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2229254745Sjkimdebug version of the code includes the debug output trace mechanism and 2230254745Sjkimhas a much larger code and data size. 2231254745Sjkim 2232254745Sjkim Current Release: 2233254745Sjkim Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2234254745Sjkim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2235254745Sjkim Previous Release: 2236254745Sjkim Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2237254745Sjkim Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2238254745Sjkim 2239254745Sjkim 2240254745Sjkim2) iASL Compiler/Disassembler and Tools: 2241254745Sjkim 2242254745SjkimAcpiDump: Implemented several new features and fixed some problems: 2243254745Sjkim1) Added support to dump the RSDP, RSDT, and XSDT tables. 2244254745Sjkim2) Added support for multiple table instances (SSDT, UEFI). 2245254745Sjkim3) Added option to dump "customized" (overridden) tables (-c). 2246254745Sjkim4) Fixed a problem where some table filenames were improperly 2247254745Sjkimconstructed. 2248254745Sjkim5) Improved some error messages, removed some unnecessary messages. 2249254745Sjkim 2250254745SjkimiASL: Implemented additional support for disassembly of ACPI tables that 2251254745Sjkimcontain invocations of external control methods. The -fe<file> option 2252254745Sjkimallows the import of a file that specifies the external methods along 2253254745Sjkimwith the required number of arguments for each -- allowing for the 2254254745Sjkimcorrect disassembly of the table. This is a workaround for a limitation 2255254745Sjkimof AML code where the disassembler often cannot determine the number of 2256254745Sjkimarguments required for an external control method and generates incorrect 2257254745SjkimASL code. See the iASL reference for details. ACPICA BZ 1030. 2258254745Sjkim 2259254745SjkimDebugger: Implemented a new command (paths) that displays the full 2260254745Sjkimpathnames (namepaths) and object types of all objects in the namespace. 2261254745SjkimThis is an alternative to the namespace command. 2262254745Sjkim 2263254745SjkimDebugger: Implemented a new command (sci) that invokes the SCI dispatch 2264254745Sjkimmechanism and any installed handlers. 2265254745Sjkim 2266254745SjkimiASL: Fixed a possible segfault for "too many parent prefixes" condition. 2267254745SjkimThis can occur if there are too many parent prefixes in a namepath (for 2268254745Sjkimexample, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2269254745Sjkim 2270254745SjkimApplication OSLs: Set the return value for the PCI read functions. These 2271254745Sjkimfunctions simply return AE_OK, but should set the return value to zero 2272254745Sjkimalso. This change implements this. ACPICA BZ 1038. 2273254745Sjkim 2274254745SjkimDebugger: Prevent possible command line buffer overflow. Increase the 2275254745Sjkimsize of a couple of the debugger line buffers, and ensure that overflow 2276254745Sjkimcannot happen. ACPICA BZ 1037. 2277254745Sjkim 2278254745SjkimiASL: Changed to abort immediately on serious errors during the parsing 2279254745Sjkimphase. Due to the nature of ASL, there is no point in attempting to 2280254745Sjkimcompile these types of errors, and they typically end up causing a 2281254745Sjkimcascade of hundreds of errors which obscure the original problem. 2282254745Sjkim 2283254745Sjkim---------------------------------------- 2284253690Sjkim25 July 2013. Summary of changes for version 20130725: 2285253690Sjkim 2286253690Sjkim1) ACPICA kernel-resident subsystem: 2287253690Sjkim 2288253690SjkimFixed a problem with the DerefOf operator where references to FieldUnits 2289253690Sjkimand BufferFields incorrectly returned the parent object, not the actual 2290253690Sjkimvalue of the object. After this change, a dereference of a FieldUnit 2291253690Sjkimreference results in a read operation on the field to get the value, and 2292253690Sjkimlikewise, the appropriate BufferField value is extracted from the target 2293253690Sjkimbuffer. 2294253690Sjkim 2295253690SjkimFixed a problem where the _WAK method could cause a fault under these 2296253690Sjkimcircumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2297253690Sjkimmethod returned no value. The problem is rarely seen because most kernels 2298253690Sjkimrun ACPICA in slack mode. 2299253690Sjkim 2300253690SjkimFor the DerefOf operator, a fatal error now results if an attempt is made 2301253690Sjkimto dereference a reference (created by the Index operator) to a NULL 2302253690Sjkimpackage element. Provides compatibility with other ACPI implementations, 2303253690Sjkimand this behavior will be added to a future version of the ACPI 2304253690Sjkimspecification. 2305253690Sjkim 2306253690SjkimThe ACPI Power Management Timer (defined in the FADT) is now optional. 2307253690SjkimThis provides compatibility with other ACPI implementations and will 2308253690Sjkimappear in the next version of the ACPI specification. If there is no PM 2309253690SjkimTimer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2310253690Sjkimzero in the FADT indicates no PM timer. 2311253690Sjkim 2312253690SjkimImplemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2313253690Sjkimallows the host to globally enable/disable all vendor strings, all 2314253690Sjkimfeature strings, or both. Intended to be primarily used for debugging 2315253690Sjkimpurposes only. Lv Zheng. 2316253690Sjkim 2317253690SjkimExpose the collected _OSI data to the host via a global variable. This 2318253690Sjkimdata tracks the highest level vendor ID that has been invoked by the BIOS 2319253690Sjkimso that the host (and potentially ACPICA itself) can change behaviors 2320253690Sjkimbased upon the age of the BIOS. 2321253690Sjkim 2322253690SjkimExample Code and Data Size: These are the sizes for the OS-independent 2323253690Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2324253690Sjkimdebug version of the code includes the debug output trace mechanism and 2325253690Sjkimhas a much larger code and data size. 2326253690Sjkim 2327253690Sjkim Current Release: 2328253690Sjkim Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2329253690Sjkim Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2330253690Sjkim Previous Release: 2331253690Sjkim Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2332253690Sjkim Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2333253690Sjkim 2334253690Sjkim 2335253690Sjkim2) iASL Compiler/Disassembler and Tools: 2336253690Sjkim 2337253690SjkimiASL: Created the following enhancements for the -so option (create 2338253690Sjkimoffset table): 2339253690Sjkim1)Add offsets for the last nameseg in each namepath for every supported 2340253690Sjkimobject type 2341253690Sjkim2)Add support for Processor, Device, Thermal Zone, and Scope objects 2342253690Sjkim3)Add the actual AML opcode for the parent object of every supported 2343253690Sjkimobject type 2344253690Sjkim4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2345253690Sjkim 2346253690SjkimDisassembler: Emit all unresolved external symbols in a single block. 2347253690SjkimThese are external references to control methods that could not be 2348253690Sjkimresolved, and thus, the disassembler had to make a guess at the number of 2349253690Sjkimarguments to parse. 2350253690Sjkim 2351253690SjkimiASL: The argument to the -T option (create table template) is now 2352253690Sjkimoptional. If not specified, the default table is a DSDT, typically the 2353253690Sjkimmost common case. 2354253690Sjkim 2355253690Sjkim---------------------------------------- 2356252279Sjkim26 June 2013. Summary of changes for version 20130626: 2357252279Sjkim 2358252279Sjkim1) ACPICA kernel-resident subsystem: 2359252279Sjkim 2360252279SjkimFixed an issue with runtime repair of the _CST object. Null or invalid 2361252279Sjkimelements were not always removed properly. Lv Zheng. 2362252279Sjkim 2363252279SjkimRemoved an arbitrary restriction of 256 GPEs per GPE block (such as the 2364252279SjkimFADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2365252279Sjkimthe maximum number of GPEs is 1016. Use of multiple GPE block devices 2366252279Sjkimmakes the system-wide number of GPEs essentially unlimited. 2367252279Sjkim 2368252279SjkimExample Code and Data Size: These are the sizes for the OS-independent 2369252279Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2370252279Sjkimdebug version of the code includes the debug output trace mechanism and 2371252279Sjkimhas a much larger code and data size. 2372252279Sjkim 2373252279Sjkim Current Release: 2374252279Sjkim Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2375252279Sjkim Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2376252279Sjkim Previous Release: 2377252279Sjkim Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2378252279Sjkim Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2379252279Sjkim 2380252279Sjkim 2381252279Sjkim2) iASL Compiler/Disassembler and Tools: 2382252279Sjkim 2383252279SjkimPortable AcpiDump: Implemented full support for the Linux and FreeBSD 2384252279Sjkimhosts. Now supports Linux, FreeBSD, and Windows. 2385252279Sjkim 2386252279SjkimDisassembler: Added some missing types for the HEST and EINJ tables: "Set 2387252279SjkimError Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2388252279Sjkim 2389252279SjkimiASL/Preprocessor: Implemented full support for nested 2390252279Sjkim#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2391252279Sjkim 2392252279SjkimDisassembler: Expanded maximum output string length to 64K. Was 256 bytes 2393252279Sjkimmax. The original purpose of this constraint was to limit the amount of 2394252279Sjkimdebug output. However, the string function in question (UtPrintString) is 2395252279Sjkimnow used for the disassembler also, where 256 bytes is insufficient. 2396252279SjkimReported by RehabMan@GitHub. 2397252279Sjkim 2398252279SjkimiASL/DataTables: Fixed some problems and issues with compilation of DMAR 2399252279Sjkimtables. ACPICA BZ 999. Lv Zheng. 2400252279Sjkim 2401252279SjkimiASL: Fixed a couple of error exit issues that could result in a "Could 2402252279Sjkimnot delete <file>" message during ASL compilation. 2403252279Sjkim 2404252279SjkimAcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2405252279Sjkimthe actual signatures for these tables are "FACP" and "APIC", 2406252279Sjkimrespectively. 2407252279Sjkim 2408252279SjkimAcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2409252279Sjkimtables are allowed to have multiple instances. 2410252279Sjkim 2411252279Sjkim---------------------------------------- 2412250838Sjkim17 May 2013. Summary of changes for version 20130517: 2413249663Sjkim 2414250838Sjkim1) ACPICA kernel-resident subsystem: 2415249663Sjkim 2416250838SjkimFixed a regression introduced in version 20130328 for _INI methods. This 2417250838Sjkimchange fixes a problem introduced in 20130328 where _INI methods are no 2418250838Sjkimlonger executed properly because of a memory block that was not 2419250838Sjkiminitialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2420250838Sjkim<tomasz.nowicki@linaro.org>. 2421249663Sjkim 2422253690SjkimFixed a possible problem with the new extended sleep registers in the 2423253690SjkimACPI 2424250838Sjkim5.0 FADT. Do not use these registers (even if populated) unless the HW- 2425250838Sjkimreduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 2426250838Sjkim1020. Lv Zheng. 2427250838Sjkim 2428253690SjkimImplemented return value repair code for _CST predefined objects: Sort 2429253690Sjkimthe 2430250838Sjkimlist and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2431250838Sjkim 2432250838SjkimImplemented a debug-only option to disable loading of SSDTs from the 2433250838SjkimRSDT/XSDT during ACPICA initialization. This can be useful for debugging 2434250838SjkimACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2435250838Sjkimacglobal.h - ACPICA BZ 1005. Lv Zheng. 2436250838Sjkim 2437250838SjkimFixed some issues in the ACPICA initialization and termination code: 2438250838SjkimTomasz Nowicki <tomasz.nowicki@linaro.org> 2439250838Sjkim1) Clear events initialized flag upon event component termination. ACPICA 2440250838SjkimBZ 1013. 2441250838Sjkim2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 2442250838Sjkim3) Delete global lock pending lock during termination. ACPICA BZ 1012. 2443250838Sjkim4) Clear debug buffer global on termination to prevent possible multiple 2444250838Sjkimdelete. ACPICA BZ 1010. 2445250838Sjkim 2446253690SjkimStandardized all switch() blocks across the entire source base. After 2447253690Sjkimmany 2448250838Sjkimyears, different formatting for switch() had crept in. This change makes 2449250838Sjkimthe formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2450250838Sjkim 2451250838SjkimSplit some files to enhance ACPICA modularity and configurability: 2452250838Sjkim1) Split buffer dump routines into utilities/utbuffer.c 2453250838Sjkim2) Split internal error message routines into utilities/uterror.c 2454250838Sjkim3) Split table print utilities into tables/tbprint.c 2455250838Sjkim4) Split iASL command-line option processing into asloptions.c 2456250838Sjkim 2457250838SjkimMakefile enhancements: 2458250838Sjkim1) Support for all new files above. 2459250838Sjkim2) Abort make on errors from any subcomponent. Chao Guan. 2460250838Sjkim3) Add build support for Apple Mac OS X. Liang Qi. 2461250838Sjkim 2462250838SjkimExample Code and Data Size: These are the sizes for the OS-independent 2463250838Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2464250838Sjkimdebug version of the code includes the debug output trace mechanism and 2465250838Sjkimhas a much larger code and data size. 2466250838Sjkim 2467250838Sjkim Current Release: 2468250838Sjkim Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2469250838Sjkim Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2470250838Sjkim Previous Release: 2471250838Sjkim Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2472250838Sjkim Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2473250838Sjkim 2474250838Sjkim 2475250838Sjkim2) iASL Compiler/Disassembler and Tools: 2476250838Sjkim 2477250838SjkimNew utility: Implemented an easily portable version of the acpidump 2478253690Sjkimutility to extract ACPI tables from the system (or a file) in an ASCII 2479253690Sjkimhex 2480250838Sjkimdump format. The top-level code implements the various command line 2481250838Sjkimoptions, file I/O, and table dump routines. To port to a new host, only 2482250838Sjkimthree functions need to be implemented to get tables -- since this 2483250838Sjkimfunctionality is OS-dependent. See the tools/acpidump/apmain.c module and 2484250838Sjkimthe ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 2485250838Sjkim1) The Windows version obtains the ACPI tables from the Registry. 2486250838Sjkim2) The Linux version is under development. 2487250838Sjkim3) Other hosts - If an OS-dependent module is submitted, it will be 2488250838Sjkimdistributed with ACPICA. 2489250838Sjkim 2490250838SjkimiASL: Fixed a regression for -D preprocessor option (define symbol). A 2491250838Sjkimrestructuring/change to the initialization sequence caused this option to 2492250838Sjkimno longer work properly. 2493250838Sjkim 2494250838SjkimiASL: Implemented a mechanism to disable specific warnings and remarks. 2495250838SjkimAdds a new command line option, "-vw <messageid> as well as "#pragma 2496250838Sjkimdisable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 2497250838Sjkim 2498250838SjkimiASL: Fix for too-strict package object validation. The package object 2499250838Sjkimvalidation for return values from the predefined names is a bit too 2500250838Sjkimstrict, it does not allow names references within the package (which will 2501250838Sjkimbe resolved at runtime.) These types of references cannot be validated at 2502250838Sjkimcompile time. This change ignores named references within package objects 2503250838Sjkimfor names that return or define static packages. 2504250838Sjkim 2505250838SjkimDebugger: Fixed the 80-character command line limitation for the History 2506250838Sjkimcommand. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 2507250838Sjkim 2508250838SjkimiASL: Added control method and package support for the -so option 2509250838Sjkim(generates AML offset table for BIOS support.) 2510250838Sjkim 2511250838SjkimiASL: issue a remark if a non-serialized method creates named objects. If 2512250838Sjkima thread blocks within the method for any reason, and another thread 2513253690Sjkimenters the method, the method will fail because an attempt will be made 2514253690Sjkimto 2515250838Sjkimcreate the same (named) object twice. In this case, issue a remark that 2516250838Sjkimthe method should be marked serialized. NOTE: may become a warning later. 2517250838SjkimACPICA BZ 909. 2518250838Sjkim 2519250838Sjkim---------------------------------------- 2520250838Sjkim18 April 2013. Summary of changes for version 20130418: 2521250838Sjkim 2522249663Sjkim1) ACPICA kernel-resident subsystem: 2523249663Sjkim 2524249663SjkimFixed a possible buffer overrun during some rare but specific field unit 2525249663Sjkimread operations. This overrun can only happen if the DSDT version is 1 -- 2526249663Sjkimmeaning that all AML integers are 32 bits -- and the field length is 2527253690Sjkimbetween 33 and 55 bits long. During the read, an internal buffer object 2528253690Sjkimis 2529253690Sjkimcreated for the field unit because the field is larger than an integer 2530253690Sjkim(32 2531249663Sjkimbits). However, in this case, the buffer will be incorrectly written 2532253690Sjkimbeyond the end because the buffer length is less than the internal 2533253690Sjkimminimum 2534249663Sjkimof 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 2535249663Sjkimlong, but a full 8 bytes will be written. 2536249663Sjkim 2537249663SjkimUpdated the Embedded Controller "orphan" _REG method support. This refers 2538249663Sjkimto _REG methods under the EC device that have no corresponding operation 2539249663Sjkimregion. This is allowed by the ACPI specification. This update removes a 2540249663Sjkimdependency on the existence an ECDT table. It will execute an orphan _REG 2541249663Sjkimmethod as long as the operation region handler for the EC is installed at 2542249663Sjkimthe EC device node and not the namespace root. Rui Zhang (original 2543249663Sjkimupdate), Bob Moore (update/integrate). 2544249663Sjkim 2545249663SjkimImplemented run-time argument typechecking for all predefined ACPI names 2546249663Sjkim(_STA, _BIF, etc.) This change performs object typechecking on all 2547249663Sjkimincoming arguments for all predefined names executed via 2548249663SjkimAcpiEvaluateObject. This ensures that ACPI-related device drivers are 2549249663Sjkimpassing correct object types as well as the correct number of arguments 2550249663Sjkim(therefore identifying any issues immediately). Also, the ASL/namespace 2551249663Sjkimdefinition of the predefined name is checked against the ACPI 2552249663Sjkimspecification for the proper argument count. Adds one new file, 2553249663Sjkimnsarguments.c 2554249663Sjkim 2555249663SjkimChanged an exception code for the ASL UnLoad() operator. Changed the 2556249663Sjkimexception code for the case where the input DdbHandle is invalid, from 2557249663SjkimAE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 2558249663Sjkim 2559249663SjkimUnix/Linux makefiles: Removed the use of the -O2 optimization flag in the 2560249663Sjkimglobal makefile. The use of this flag causes compiler errors on earlier 2561249663Sjkimversions of GCC, so it has been removed for compatibility. 2562249663Sjkim 2563249663SjkimMiscellaneous cleanup: 2564249663Sjkim1) Removed some unused/obsolete macros 2565249663Sjkim2) Fixed a possible memory leak in the _OSI support 2566249663Sjkim3) Removed an unused variable in the predefined name support 2567249663Sjkim4) Windows OSL: remove obsolete reference to a memory list field 2568249663Sjkim 2569249663SjkimExample Code and Data Size: These are the sizes for the OS-independent 2570249663Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2571249663Sjkimdebug version of the code includes the debug output trace mechanism and 2572249663Sjkimhas a much larger code and data size. 2573249663Sjkim 2574249663Sjkim Current Release: 2575249663Sjkim Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2576249663Sjkim Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2577249663Sjkim Previous Release: 2578249663Sjkim Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2579249663Sjkim Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2580249663Sjkim 2581249663Sjkim 2582249663Sjkim2) iASL Compiler/Disassembler and Tools: 2583249663Sjkim 2584249663SjkimAcpiExec: Added installation of a handler for the SystemCMOS address 2585253690Sjkimspace. This prevents control method abort if a method accesses this 2586253690Sjkimspace. 2587249663Sjkim 2588249663SjkimAcpiExec: Added support for multiple EC devices, and now install EC 2589249663Sjkimoperation region handler(s) at the actual EC device instead of the 2590249663Sjkimnamespace root. This reflects the typical behavior of host operating 2591249663Sjkimsystems. 2592249663Sjkim 2593249663SjkimAcpiExec: Updated to ensure that all operation region handlers are 2594249663Sjkiminstalled before the _REG methods are executed. This prevents a _REG 2595249663Sjkimmethod from aborting if it accesses an address space has no handler. 2596249663SjkimAcpiExec installs a handler for every possible address space. 2597249663Sjkim 2598249663SjkimDebugger: Enhanced the "handlers" command to display non-root handlers. 2599249663SjkimThis change enhances the handlers command to display handlers associated 2600249663Sjkimwith individual devices throughout the namespace, in addition to the 2601253690Sjkimcurrently supported display of handlers associated with the root 2602253690Sjkimnamespace 2603249663Sjkimnode. 2604249663Sjkim 2605249663SjkimASL Test Suite: Several test suite errors have been identified and 2606249663Sjkimresolved, reducing the total error count during execution. Chao Guan. 2607249663Sjkim 2608249663Sjkim---------------------------------------- 2609249112Sjkim28 March 2013. Summary of changes for version 20130328: 2610249112Sjkim 2611249112Sjkim1) ACPICA kernel-resident subsystem: 2612249112Sjkim 2613249112SjkimFixed several possible race conditions with the internal object reference 2614249112Sjkimcounting mechanism. Some of the external ACPICA interfaces update object 2615249112Sjkimreference counts without holding the interpreter or namespace lock. This 2616249112Sjkimchange adds a spinlock to protect reference count updates on the internal 2617249112SjkimACPICA objects. Reported by and with assistance from Andriy Gapon 2618249112Sjkim(avg@FreeBSD.org). 2619249112Sjkim 2620249112SjkimFADT support: Removed an extraneous warning for very large GPE register 2621249112Sjkimsets. This change removes a size mismatch warning if the legacy length 2622249112Sjkimfield for a GPE register set is larger than the 64-bit GAS structure can 2623249112Sjkimaccommodate. GPE register sets can be larger than the 255-bit width 2624249112Sjkimlimitation of the GAS structure. Linn Crosetto (linn@hp.com). 2625249112Sjkim 2626249112Sjkim_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 2627249112Sjkimreturn from this interface. Handles a possible timeout case if 2628249112SjkimACPI_WAIT_FOREVER is modified by the host to be a value less than 2629249112Sjkim"forever". Jung-uk Kim. 2630249112Sjkim 2631253690SjkimPredefined name support: Add allowed/required argument type information 2632253690Sjkimto 2633249112Sjkimthe master predefined info table. This change adds the infrastructure to 2634249112Sjkimenable typechecking on incoming arguments for all predefined 2635249112Sjkimmethods/objects. It does not actually contain the code that will fully 2636249112Sjkimutilize this information, this is still under development. Also condenses 2637249112Sjkimsome duplicate code for the predefined names into a new module, 2638249112Sjkimutilities/utpredef.c 2639249112Sjkim 2640249112SjkimExample Code and Data Size: These are the sizes for the OS-independent 2641249112Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2642249112Sjkimdebug version of the code includes the debug output trace mechanism and 2643249112Sjkimhas a much larger code and data size. 2644249112Sjkim 2645249112Sjkim Previous Release: 2646249112Sjkim Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2647249112Sjkim Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2648249112Sjkim Current Release: 2649249112Sjkim Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 2650249112Sjkim Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 2651249112Sjkim 2652249112Sjkim 2653249112Sjkim2) iASL Compiler/Disassembler and Tools: 2654249112Sjkim 2655253690SjkimiASL: Implemented a new option to simplify the development of ACPI- 2656253690Sjkimrelated 2657249112SjkimBIOS code. Adds support for a new "offset table" output file. The -so 2658249112Sjkimoption will create a C table containing the AML table offsets of various 2659253690Sjkimnamed objects in the namespace so that BIOS code can modify them easily 2660253690Sjkimat 2661249112Sjkimboot time. This can simplify BIOS runtime code by eliminating expensive 2662249112Sjkimsearches for "magic values", enhancing boot times and adding greater 2663249112Sjkimreliability. With assistance from Lee Hamel. 2664249112Sjkim 2665249112SjkimiASL: Allow additional predefined names to return zero-length packages. 2666249112SjkimNow, all predefined names that are defined by the ACPI specification to 2667249112Sjkimreturn a "variable-length package of packages" are allowed to return a 2668249112Sjkimzero length top-level package. This allows the BIOS to tell the host that 2669249112Sjkimthe requested feature is not supported, and supports existing BIOS/ASL 2670249112Sjkimcode and practices. 2671249112Sjkim 2672249112SjkimiASL: Changed the "result not used" warning to an error. This is the case 2673249112Sjkimwhere an ASL operator is effectively a NOOP because the result of the 2674249112Sjkimoperation is not stored anywhere. For example: 2675249112Sjkim Add (4, Local0) 2676249112SjkimThere is no target (missing 3rd argument), nor is the function return 2677249112Sjkimvalue used. This is potentially a very serious problem -- since the code 2678249112Sjkimwas probably intended to do something, but for whatever reason, the value 2679249112Sjkimwas not stored. Therefore, this issue has been upgraded from a warning to 2680249112Sjkiman error. 2681249112Sjkim 2682249112SjkimAcpiHelp: Added allowable/required argument types to the predefined names 2683249112Sjkiminfo display. This feature utilizes the recent update to the predefined 2684249112Sjkimnames table (above). 2685249112Sjkim 2686249112Sjkim---------------------------------------- 2687246849Sjkim14 February 2013. Summary of changes for version 20130214: 2688246849Sjkim 2689246849Sjkim1) ACPICA Kernel-resident Subsystem: 2690246849Sjkim 2691246849SjkimFixed a possible regression on some hosts: Reinstated the safe return 2692246849Sjkimmacros (return_ACPI_STATUS, etc.) that ensure that the argument is 2693246849Sjkimevaluated only once. Although these macros are not needed for the ACPICA 2694253690Sjkimcode itself, they are often used by ACPI-related host device drivers 2695253690Sjkimwhere 2696246849Sjkimthe safe feature may be necessary. 2697246849Sjkim 2698246849SjkimFixed several issues related to the ACPI 5.0 reduced hardware support 2699253690Sjkim(SOC): Now ensure that if the platform declares itself as hardware- 2700253690Sjkimreduced 2701246849Sjkimvia the FADT, the following functions become NOOPs (and always return 2702246849SjkimAE_OK) because ACPI is always enabled by definition on these machines: 2703246849Sjkim AcpiEnable 2704246849Sjkim AcpiDisable 2705246849Sjkim AcpiHwGetMode 2706246849Sjkim AcpiHwSetMode 2707246849Sjkim 2708246849SjkimDynamic Object Repair: Implemented additional runtime repairs for 2709246849Sjkimpredefined name return values. Both of these repairs can simplify code in 2710246849Sjkimthe related device drivers that invoke these methods: 2711246849Sjkim1) For the _STR and _MLS names, automatically repair/convert an ASCII 2712246849Sjkimstring to a Unicode buffer. 2713253690Sjkim2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 2714253690Sjkima 2715246849Sjkimlone end tag descriptor in the following cases: A Return(0) was executed, 2716246849Sjkima null buffer was returned, or no object at all was returned (non-slack 2717246849Sjkimmode only). Adds a new file, nsconvert.c 2718246849SjkimACPICA BZ 998. Bob Moore, Lv Zheng. 2719246849Sjkim 2720253690SjkimResource Manager: Added additional code to prevent possible infinite 2721253690Sjkimloops 2722246849Sjkimwhile traversing corrupted or ill-formed resource template buffers. Check 2723246849Sjkimfor zero-length resource descriptors in all code that loops through 2724246849Sjkimresource templates (the length field is used to index through the 2725246849Sjkimtemplate). This change also hardens the external AcpiWalkResources and 2726246849SjkimAcpiWalkResourceBuffer interfaces. 2727246849Sjkim 2728246849SjkimLocal Cache Manager: Enhanced the main data structure to eliminate an 2729246849Sjkimunnecessary mechanism to access the next object in the list. Actually 2730246849Sjkimprovides a small performance enhancement for hosts that use the local 2731246849SjkimACPICA cache manager. Jung-uk Kim. 2732246849Sjkim 2733246849SjkimExample Code and Data Size: These are the sizes for the OS-independent 2734246849Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2735246849Sjkimdebug version of the code includes the debug output trace mechanism and 2736246849Sjkimhas a much larger code and data size. 2737246849Sjkim 2738246849Sjkim Previous Release: 2739246849Sjkim Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2740246849Sjkim Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2741246849Sjkim Current Release: 2742246849Sjkim Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 2743246849Sjkim Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 2744246849Sjkim 2745246849Sjkim 2746246849Sjkim2) iASL Compiler/Disassembler and Tools: 2747246849Sjkim 2748246849SjkimiASL/Disassembler: Fixed several issues with the definition of the ACPI 2749246849Sjkim5.0 RASF table (RAS Feature Table). This change incorporates late changes 2750246849Sjkimthat were made to the ACPI 5.0 specification. 2751246849Sjkim 2752246849SjkimiASL/Disassembler: Added full support for the following new ACPI tables: 2753246849Sjkim 1) The MTMR table (MID Timer Table) 2754246849Sjkim 2) The VRTC table (Virtual Real Time Clock Table). 2755246849SjkimIncludes header file, disassembler, table compiler, and template support 2756246849Sjkimfor both tables. 2757246849Sjkim 2758246849SjkimiASL: Implemented compile-time validation of package objects returned by 2759246849Sjkimpredefined names. This new feature validates static package objects 2760246849Sjkimreturned by the various predefined names defined to return packages. Both 2761246849Sjkimobject types and package lengths are validated, for both parent packages 2762253690Sjkimand sub-packages, if any. The code is similar in structure and behavior 2763253690Sjkimto 2764246849Sjkimthe runtime repair mechanism within the AML interpreter and uses the 2765246849Sjkimexisting predefined name information table. Adds a new file, aslprepkg.c. 2766246849SjkimACPICA BZ 938. 2767246849Sjkim 2768246849SjkimiASL: Implemented auto-detection of binary ACPI tables for disassembly. 2769246849SjkimThis feature detects a binary file with a valid ACPI table header and 2770246849Sjkiminvokes the disassembler automatically. Eliminates the need to 2771246849Sjkimspecifically invoke the disassembler with the -d option. ACPICA BZ 862. 2772246849Sjkim 2773246849SjkimiASL/Disassembler: Added several warnings for the case where there are 2774246849Sjkimunresolved control methods during the disassembly. This can potentially 2775246849Sjkimcause errors when the output file is compiled, because the disassembler 2776246849Sjkimassumes zero method arguments in these cases (it cannot determine the 2777246849Sjkimactual number of arguments without resolution/definition of the method). 2778246849Sjkim 2779246849SjkimDebugger: Added support to display all resources with a single command. 2780253690SjkimInvocation of the resources command with no arguments will now display 2781253690Sjkimall 2782246849Sjkimresources within the current namespace. 2783246849Sjkim 2784246849SjkimAcpiHelp: Added descriptive text for each ACPICA exception code displayed 2785246849Sjkimvia the -e option. 2786246849Sjkim 2787246849Sjkim---------------------------------------- 2788245582Sjkim17 January 2013. Summary of changes for version 20130117: 2789243347Sjkim 2790243347Sjkim1) ACPICA Kernel-resident Subsystem: 2791243347Sjkim 2792245582SjkimUpdated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 2793245582Sjkimreturn either 1 or 2 integers. Although the ACPI spec defines the \_Sx 2794253690Sjkimobjects to return a package containing one integer, most BIOS code 2795253690Sjkimreturns 2796253690Sjkimtwo integers and the previous code reflects that. However, we also need 2797253690Sjkimto 2798245582Sjkimsupport BIOS code that actually implements to the ACPI spec, and this 2799245582Sjkimchange reflects this. 2800245582Sjkim 2801245582SjkimFixed two issues with the ACPI_DEBUG_PRINT macros: 2802245582Sjkim1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 2803245582SjkimC compilers that require this support. 2804245582Sjkim2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 2805245582SjkimACPI_DEBUG is already used by many of the various hosts. 2806245582Sjkim 2807245582SjkimUpdated all ACPICA copyrights and signons to 2013. Added the 2013 2808245582Sjkimcopyright to all module headers and signons, including the standard Linux 2809245582Sjkimheader. This affects virtually every file in the ACPICA core subsystem, 2810245582SjkimiASL compiler, all ACPICA utilities, and the test suites. 2811245582Sjkim 2812245582SjkimExample Code and Data Size: These are the sizes for the OS-independent 2813245582Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2814245582Sjkimdebug version of the code includes the debug output trace mechanism and 2815245582Sjkimhas a much larger code and data size. 2816245582Sjkim 2817245582Sjkim Previous Release: 2818245582Sjkim Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2819245582Sjkim Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2820245582Sjkim Current Release: 2821245582Sjkim Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 2822245582Sjkim Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 2823245582Sjkim 2824245582Sjkim 2825245582Sjkim2) iASL Compiler/Disassembler and Tools: 2826245582Sjkim 2827245582SjkimGeneric Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 2828245582Sjkimprevent a possible fault on some hosts. Some C libraries modify the arg 2829245582Sjkimpointer parameter to vfprintf making it difficult to call it twice in the 2830245582SjkimAcpiOsVprintf function. Use a local buffer to workaround this issue. This 2831245582Sjkimdoes not affect the Windows OSL since the Win C library does not modify 2832245582Sjkimthe arg pointer. Chao Guan, Bob Moore. 2833245582Sjkim 2834245582SjkimiASL: Fixed a possible infinite loop when the maximum error count is 2835245582Sjkimreached. If an output file other than the .AML file is specified (such as 2836245582Sjkima listing file), and the maximum number of errors is reached, do not 2837245582Sjkimattempt to flush data to the output file(s) as the compiler is aborting. 2838245582SjkimThis can cause an infinite loop as the max error count code essentially 2839245582Sjkimkeeps calling itself. 2840245582Sjkim 2841253690SjkimiASL/Disassembler: Added an option (-in) to ignore NOOP 2842253690Sjkimopcodes/operators. 2843245582SjkimImplemented for both the compiler and the disassembler. Often, the NOOP 2844253690Sjkimopcode is used as padding for packages that are changed dynamically by 2845253690Sjkimthe 2846245582SjkimBIOS. When disassembled and recompiled, these NOOPs will cause syntax 2847245582Sjkimerrors. This option causes the disassembler to ignore all NOOP opcodes 2848253690Sjkim(0xA3), and it also causes the compiler to ignore all ASL source code 2849253690SjkimNOOP 2850245582Sjkimstatements as well. 2851245582Sjkim 2852245582SjkimDebugger: Enhanced the Sleep command to execute all sleep states. This 2853245582Sjkimchange allows Sleep to be invoked with no arguments and causes the 2854245582Sjkimdebugger to execute all of the sleep states, 0-5, automatically. 2855245582Sjkim 2856245582Sjkim---------------------------------------- 2857245582Sjkim20 December 2012. Summary of changes for version 20121220: 2858245582Sjkim 2859245582Sjkim1) ACPICA Kernel-resident Subsystem: 2860245582Sjkim 2861245582SjkimImplemented a new interface, AcpiWalkResourceBuffer. This interface is an 2862245582Sjkimalternate entry point for AcpiWalkResources and improves the usability of 2863245582Sjkimthe resource manager by accepting as input a buffer containing the output 2864245582Sjkimof either a _CRS, _PRS, or _AEI method. The key functionality is that the 2865245582Sjkiminput buffer is not deleted by this interface so that it can be used by 2866245582Sjkimthe host later. See the ACPICA reference for details. 2867245582Sjkim 2868245582SjkimInterpreter: Add a warning if a 64-bit constant appears in a 32-bit table 2869245582Sjkim(DSDT version < 2). The constant will be truncated and this warning 2870245582Sjkimreflects that behavior. 2871245582Sjkim 2872245582SjkimResource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 2873245582SjkimExtendedInterrupt, and GpioInt descriptors. This change adds support to 2874245582Sjkimboth get and set the new wake bit in these descriptors, separately from 2875245582Sjkimthe existing share bit. Reported by Aaron Lu. 2876245582Sjkim 2877245582SjkimInterpreter: Fix Store() when an implicit conversion is not possible. For 2878245582Sjkimexample, in the cases such as a store of a string to an existing package 2879245582Sjkimobject, implement the store as a CopyObject(). This is a small departure 2880253690Sjkimfrom the ACPI specification which states that the control method should 2881253690Sjkimbe 2882245582Sjkimaborted in this case. However, the ASLTS suite depends on this behavior. 2883245582Sjkim 2884245582SjkimPerformance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 2885245582Sjkimmacros: check if debug output is currently enabled as soon as possible to 2886245582Sjkimminimize performance impact if debug is in fact not enabled. 2887245582Sjkim 2888245582SjkimSource code restructuring: Cleanup to improve modularity. The following 2889245582Sjkimnew files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 2890245582Sjkimpsopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 2891245582SjkimAssociated makefiles and project files have been updated. 2892245582Sjkim 2893245582SjkimChanged an exception code for LoadTable operator. For the case where one 2894245582Sjkimof the input strings is too long, change the returned exception code from 2895245582SjkimAE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 2896245582Sjkim 2897245582SjkimFixed a possible memory leak in dispatcher error path. On error, delete 2898245582Sjkimthe mutex object created during method mutex creation. Reported by 2899245582Sjkimtim.gardner@canonical.com. 2900245582Sjkim 2901245582SjkimExample Code and Data Size: These are the sizes for the OS-independent 2902245582Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2903245582Sjkimdebug version of the code includes the debug output trace mechanism and 2904245582Sjkimhas a much larger code and data size. 2905245582Sjkim 2906245582Sjkim Previous Release: 2907245582Sjkim Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2908245582Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2909245582Sjkim Current Release: 2910245582Sjkim Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 2911245582Sjkim Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 2912245582Sjkim 2913245582Sjkim 2914245582Sjkim2) iASL Compiler/Disassembler and Tools: 2915245582Sjkim 2916245582SjkimiASL: Disallow a method call as argument to the ObjectType ASL operator. 2917245582SjkimThis change tracks an errata to the ACPI 5.0 document. The AML grammar 2918245582Sjkimwill not allow the interpreter to differentiate between a method and a 2919245582Sjkimmethod invocation when these are used as an argument to the ObjectType 2920253690Sjkimoperator. The ACPI specification change is to disallow a method 2921253690Sjkiminvocation 2922245582Sjkim(UserTerm) for the ObjectType operator. 2923245582Sjkim 2924245582SjkimFinish support for the TPM2 and CSRT tables in the headers, table 2925245582Sjkimcompiler, and disassembler. 2926245582Sjkim 2927245582SjkimUnix user-space OSL: Fix a problem with WaitSemaphore where the timeout 2928253690Sjkimalways expires immediately if the semaphore is not available. The 2929253690Sjkimoriginal 2930253690Sjkimcode was using a relative-time timeout, but sem_timedwait requires the 2931253690Sjkimuse 2932245582Sjkimof an absolute time. 2933245582Sjkim 2934245582SjkimiASL: Added a remark if the Timer() operator is used within a 32-bit 2935245582Sjkimtable. This operator returns a 64-bit time value that will be truncated 2936245582Sjkimwithin a 32-bit table. 2937245582Sjkim 2938245582SjkimiASL Source code restructuring: Cleanup to improve modularity. The 2939245582Sjkimfollowing new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 2940245582Sjkimaslmethod.c, and aslfileio.c. Associated makefiles and project files have 2941245582Sjkimbeen updated. 2942245582Sjkim 2943245582Sjkim 2944245582Sjkim---------------------------------------- 2945245582Sjkim14 November 2012. Summary of changes for version 20121114: 2946245582Sjkim 2947245582Sjkim1) ACPICA Kernel-resident Subsystem: 2948245582Sjkim 2949243347SjkimImplemented a performance enhancement for ACPI/AML Package objects. This 2950243347Sjkimchange greatly increases the performance of Package objects within the 2951253690Sjkiminterpreter. It changes the processing of reference counts for packages 2952253690Sjkimby 2953243347Sjkimoptimizing for the most common case where the package sub-objects are 2954253690Sjkimeither Integers, Strings, or Buffers. Increases the overall performance 2955253690Sjkimof 2956253690Sjkimthe ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2957253690Sjkim2X.) 2958243347SjkimChao Guan. ACPICA BZ 943. 2959243347Sjkim 2960243347SjkimImplemented and deployed common macros to extract flag bits from resource 2961253690Sjkimdescriptors. Improves readability and maintainability of the code. Fixes 2962253690Sjkima 2963243347Sjkimproblem with the UART serial bus descriptor for the number of data bits 2964243347Sjkimflags (was incorrectly 2 bits, should be 3). 2965243347Sjkim 2966243347SjkimEnhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 2967243347Sjkimof the macros and changed the SETx macros to the style of (destination, 2968243347Sjkimsource). Also added ACPI_CASTx companion macros. Lv Zheng. 2969243347Sjkim 2970243347SjkimExample Code and Data Size: These are the sizes for the OS-independent 2971243347Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2972243347Sjkimdebug version of the code includes the debug output trace mechanism and 2973243347Sjkimhas a much larger code and data size. 2974243347Sjkim 2975243347Sjkim Previous Release: 2976243347Sjkim Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 2977243347Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2978243347Sjkim Current Release: 2979243347Sjkim Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 2980243347Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 2981243347Sjkim 2982243347Sjkim 2983243347Sjkim2) iASL Compiler/Disassembler and Tools: 2984243347Sjkim 2985243347SjkimDisassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 2986243347Sjkimadds the ShareAndWake and ExclusiveAndWake flags which were added to the 2987243347SjkimIrq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 2988243347Sjkim 2989243347SjkimDisassembler: Fixed a problem with external declaration generation. Fixes 2990243347Sjkima problem where an incorrect pathname could be generated for an external 2991243347Sjkimdeclaration if the original reference to the object includes leading 2992243347Sjkimcarats (^). ACPICA BZ 984. 2993243347Sjkim 2994243347SjkimDebugger: Completed a major update for the Disassemble<method> command. 2995243347SjkimThis command was out-of-date and did not properly disassemble control 2996253690Sjkimmethods that had any reasonable complexity. This fix brings the command 2997253690Sjkimup 2998243347Sjkimto the same level as the rest of the disassembler. Adds one new file, 2999243347Sjkimdmdeferred.c, which is existing code that is now common with the main 3000243347Sjkimdisassembler and the debugger disassemble command. ACPICA MZ 978. 3001243347Sjkim 3002243347SjkimiASL: Moved the parser entry prototype to avoid a duplicate declaration. 3003253690SjkimNewer versions of Bison emit this prototype, so moved the prototype out 3004253690Sjkimof 3005253690Sjkimthe iASL header to where it is actually used in order to avoid a 3006253690Sjkimduplicate 3007243347Sjkimdeclaration. 3008243347Sjkim 3009243347SjkimiASL/Tools: Standardized use of the stream I/O functions: 3010243347Sjkim 1) Ensure check for I/O error after every fopen/fread/fwrite 3011243347Sjkim 2) Ensure proper order of size/count arguments for fread/fwrite 3012243347Sjkim 3) Use test of (Actual != Requested) after all fwrite, and most fread 3013243347Sjkim 4) Standardize I/O error messages 3014253690SjkimImproves reliability and maintainability of the code. Bob Moore, Lv 3015253690SjkimZheng. 3016243347SjkimACPICA BZ 981. 3017243347Sjkim 3018243347SjkimDisassembler: Prevent duplicate External() statements. During generation 3019243347Sjkimof external statements, detect similar pathnames that are actually 3020243347Sjkimduplicates such as these: 3021243347Sjkim External (\ABCD) 3022243347Sjkim External (ABCD) 3023243347SjkimRemove all leading '\' characters from pathnames during the external 3024243347Sjkimstatement generation so that duplicates will be detected and tossed. 3025243347SjkimACPICA BZ 985. 3026243347Sjkim 3027243347SjkimTools: Replace low-level I/O with stream I/O functions. Replace 3028243347Sjkimopen/read/write/close with the stream I/O equivalents 3029243347Sjkimfopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3030243347SjkimMoore. 3031243347Sjkim 3032243347SjkimAcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3033243347Sjkimname header so that AcpiXtract recognizes the output file/table. 3034243347Sjkim 3035243347SjkimiASL: Remove obsolete -2 option flag. Originally intended to force the 3036243347Sjkimcompiler/disassembler into an ACPI 2.0 mode, this was never implemented 3037243347Sjkimand the entire concept is now obsolete. 3038243347Sjkim 3039243347Sjkim---------------------------------------- 3040241973Sjkim18 October 2012. Summary of changes for version 20121018: 3041241973Sjkim 3042241973Sjkim 3043241973Sjkim1) ACPICA Kernel-resident Subsystem: 3044241973Sjkim 3045241973SjkimUpdated support for the ACPI 5.0 MPST table. Fixes some problems 3046241973Sjkimintroduced by late changes to the table as it was added to the ACPI 5.0 3047241973Sjkimspecification. Includes header, disassembler, and data table compiler 3048241973Sjkimsupport as well as a new version of the MPST template. 3049241973Sjkim 3050241973SjkimAcpiGetObjectInfo: Enhanced the device object support to include the ACPI 3051241973Sjkim5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3052241973Sjkimmethods: _HID, _CID, and _UID. 3053241973Sjkim 3054241973SjkimChanged ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3055241973SjkimACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3056241973Sjkimname collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3057241973Sjkimnames for their various drivers. Affects the AcpiGetObjectInfo external 3058241973Sjkiminterface, and other internal interfaces as well. 3059241973Sjkim 3060241973SjkimAdded and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3061241973SjkimThis macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3062241973Sjkimon machines that support non-aligned transfers. Optimizes for this case 3063241973Sjkimrather than using a strncpy. With assistance from Zheng Lv. 3064241973Sjkim 3065241973SjkimResource Manager: Small fix for buffer size calculation. Fixed a one byte 3066241973Sjkimerror in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3067241973Sjkim 3068241973SjkimAdded a new debug print message for AML mutex objects that are force- 3069241973Sjkimreleased. At control method termination, any currently acquired mutex 3070241973Sjkimobjects are force-released. Adds a new debug-only message for each one 3071241973Sjkimthat is released. 3072241973Sjkim 3073241973SjkimAudited/updated all ACPICA return macros and the function debug depth 3074241973Sjkimcounter: 1) Ensure that all functions that use the various TRACE macros 3075241973Sjkimalso use the appropriate ACPICA return macros. 2) Ensure that all normal 3076241973Sjkimreturn statements surround the return expression (value) with parens to 3077241973Sjkimensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3078241973SjkimZheng Lv, Bob Moore. ACPICA Bugzilla 972. 3079241973Sjkim 3080241973SjkimGlobal source code changes/maintenance: All extra lines at the start and 3081241973Sjkimend of each source file have been removed for consistency. Also, within 3082241973Sjkimcomments, all new sentences start with a single space instead of a double 3083241973Sjkimspace, again for consistency across the code base. 3084241973Sjkim 3085241973SjkimExample Code and Data Size: These are the sizes for the OS-independent 3086241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3087241973Sjkimdebug version of the code includes the debug output trace mechanism and 3088241973Sjkimhas a much larger code and data size. 3089241973Sjkim 3090241973Sjkim Previous Release: 3091241973Sjkim Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3092241973Sjkim Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3093241973Sjkim Current Release: 3094241973Sjkim Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3095241973Sjkim Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3096241973Sjkim 3097241973Sjkim 3098241973Sjkim2) iASL Compiler/Disassembler and Tools: 3099241973Sjkim 3100241973SjkimAcpiExec: Improved the algorithm used for memory leak/corruption 3101241973Sjkimdetection. Added some intelligence to the code that maintains the global 3102241973Sjkimlist of allocated memory. The list is now ordered by allocated memory 3103241973Sjkimaddress, significantly improving performance. When running AcpiExec on 3104241973Sjkimthe ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3105241973Sjkimon the platform and/or the environment. Note, this performance 3106241973Sjkimenhancement affects the AcpiExec utility only, not the kernel-resident 3107241973SjkimACPICA code. 3108241973Sjkim 3109241973SjkimEnhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3110241973Sjkimthe disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3111241973Sjkimincorrect table offset reported for invalid opcodes. Report the original 3112241973Sjkim32-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3113241973Sjkim 3114241973SjkimDisassembler: Enhanced the -vt option to emit the binary table data in 3115241973Sjkimhex format to assist with debugging. 3116241973Sjkim 3117241973SjkimFixed a potential filename buffer overflow in osunixdir.c. Increased the 3118241973Sjkimsize of file structure. Colin Ian King. 3119241973Sjkim 3120241973Sjkim---------------------------------------- 3121240716Sjkim13 September 2012. Summary of changes for version 20120913: 3122240716Sjkim 3123240716Sjkim 3124240716Sjkim1) ACPICA Kernel-resident Subsystem: 3125240716Sjkim 3126240716SjkimACPI 5.0: Added two new notify types for the Hardware Error Notification 3127241973SjkimStructure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3128241973Sjkimand 3129240716SjkimMCE(6). 3130240716Sjkim 3131240716SjkimTable Manager: Merged/removed duplicate code in the root table resize 3132241973Sjkimfunctions. One function is external, the other is internal. Lv Zheng, 3133241973SjkimACPICA 3134240716SjkimBZ 846. 3135240716Sjkim 3136240716SjkimMakefiles: Completely removed the obsolete "Linux" makefiles under 3137253690Sjkimacpica/generate/linux. These makefiles are obsolete and have been 3138253690Sjkimreplaced 3139241973Sjkimby 3140240716Sjkimthe generic unix makefiles under acpica/generate/unix. 3141240716Sjkim 3142241973SjkimMakefiles: Ensure that binary files always copied properly. Minor rule 3143241973Sjkimchange 3144240716Sjkimto ensure that the final binary output files are always copied up to the 3145240716Sjkimappropriate binary directory (bin32 or bin64.) 3146240716Sjkim 3147240716SjkimExample Code and Data Size: These are the sizes for the OS-independent 3148241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3149241973Sjkimdebug 3150241973Sjkimversion of the code includes the debug output trace mechanism and has a 3151241973Sjkimmuch 3152240716Sjkimlarger code and data size. 3153240716Sjkim 3154240716Sjkim Previous Release: 3155240716Sjkim Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3156240716Sjkim Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3157240716Sjkim Current Release: 3158240716Sjkim Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3159240716Sjkim Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3160240716Sjkim 3161240716Sjkim 3162240716Sjkim2) iASL Compiler/Disassembler and Tools: 3163240716Sjkim 3164240716SjkimDisassembler: Fixed a possible fault during the disassembly of resource 3165240716Sjkimdescriptors when a second parse is required because of the invocation of 3166240716Sjkimexternal control methods within the table. With assistance from 3167240716Sjkimadq@lidskialf.net. ACPICA BZ 976. 3168240716Sjkim 3169241973SjkimiASL: Fixed a namepath optimization problem. An error can occur if the 3170241973Sjkimparse 3171241973Sjkimnode that contains the namepath to be optimized does not have a parent 3172241973Sjkimnode 3173240716Sjkimthat is a named object. This change fixes the problem. 3174240716Sjkim 3175241973SjkimiASL: Fixed a regression where the AML file is not deleted on errors. The 3176241973SjkimAML 3177253690Sjkimoutput file should be deleted if there are any errors during the 3178253690Sjkimcompiler. 3179241973SjkimThe 3180240716Sjkimonly exception is if the -f (force output) option is used. ACPICA BZ 974. 3181240716Sjkim 3182241973SjkimiASL: Added a feature to automatically increase internal line buffer 3183241973Sjkimsizes. 3184240716SjkimVia realloc(), automatically increase the internal line buffer sizes as 3185241973Sjkimnecessary to support very long source code lines. The current version of 3186241973Sjkimthe 3187241973Sjkimpreprocessor requires a buffer long enough to contain full source code 3188241973Sjkimlines. 3189240716SjkimThis change increases the line buffer(s) if the input lines go beyond the 3190241973Sjkimcurrent buffer size. This eliminates errors that occurred when a source 3191241973Sjkimcode 3192240716Sjkimline was longer than the buffer. 3193240716Sjkim 3194240716SjkimiASL: Fixed a problem with constant folding in method declarations. The 3195241973SjkimSyncLevel term is a ByteConstExpr, and incorrect code would be generated 3196241973Sjkimif a 3197240716SjkimType3 opcode was used. 3198240716Sjkim 3199241973SjkimDebugger: Improved command help support. For incorrect argument count, 3200241973Sjkimdisplay 3201240716Sjkimfull help for the command. For help command itself, allow an argument to 3202240716Sjkimspecify a command. 3203240716Sjkim 3204240716SjkimTest Suites: Several bug fixes for the ASLTS suite reduces the number of 3205240716Sjkimerrors during execution of the suite. Guan Chao. 3206240716Sjkim 3207240716Sjkim---------------------------------------- 3208239340Sjkim16 August 2012. Summary of changes for version 20120816: 3209239340Sjkim 3210239340Sjkim 3211239340Sjkim1) ACPICA Kernel-resident Subsystem: 3212239340Sjkim 3213241973SjkimRemoved all use of the deprecated _GTS and _BFS predefined methods. The 3214241973Sjkim_GTS 3215239340Sjkim(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3216241973Sjkimdeprecated and will probably be removed from the ACPI specification. 3217241973SjkimWindows 3218241973Sjkimdoes not invoke them, and reportedly never will. The final nail in the 3219241973Sjkimcoffin 3220239340Sjkimis that the ACPI specification states that these methods must be run with 3221241973Sjkiminterrupts off, which is not going to happen in a kernel interpreter. 3222241973SjkimNote: 3223239340SjkimLinux has removed all use of the methods also. It was discovered that 3224241973Sjkiminvoking these functions caused failures on some machines, probably 3225241973Sjkimbecause 3226241973Sjkimthey were never tested since Windows does not call them. Affects two 3227241973Sjkimexternal 3228239340Sjkiminterfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3229239340SjkimACPICA BZ 969. 3230239340Sjkim 3231239340SjkimImplemented support for complex bit-packed buffers returned from the _PLD 3232239340Sjkim(Physical Location of Device) predefined method. Adds a new external 3233253690Sjkiminterface, AcpiDecodePldBuffer that parses the buffer into a more usable 3234253690SjkimC 3235239340Sjkimstructure. Note: C Bitfields cannot be used for this type of predefined 3236241973Sjkimstructure since the memory layout of individual bitfields is not defined 3237241973Sjkimby 3238241973Sjkimthe C language. In addition, there are endian concerns where a compiler 3239241973Sjkimwill 3240239340Sjkimchange the bitfield ordering based on the machine type. The new ACPICA 3241239340Sjkiminterface eliminates these issues, and should be called after _PLD is 3242239340Sjkimexecuted. ACPICA BZ 954. 3243239340Sjkim 3244241973SjkimImplemented a change to allow a scope change to root (via "Scope (\)") 3245241973Sjkimduring 3246239340Sjkimexecution of module-level ASL code (code that is executed at table load 3247239340Sjkimtime.) Lin Ming. 3248239340Sjkim 3249253690SjkimAdded the Windows8/Server2012 string for the _OSI method. This change 3250253690Sjkimadds 3251241973Sjkima 3252241973Sjkimnew _OSI string, "Windows 2012" for both Windows 8 and Windows Server 3253241973Sjkim2012. 3254239340Sjkim 3255241973SjkimAdded header support for the new ACPI tables DBG2 (Debug Port Table Type 3256241973Sjkim2) 3257239340Sjkimand CSRT (Core System Resource Table). 3258239340Sjkim 3259239340SjkimAdded struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3260239340Sjkimnames. This simplifies access to the buffers returned by these predefined 3261239340Sjkimnames. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3262239340Sjkim 3263239340SjkimGPE support: Removed an extraneous parameter from the various low-level 3264239340Sjkiminternal GPE functions. Tang Feng. 3265239340Sjkim 3266239340SjkimRemoved the linux makefiles from the unix packages. The generate/linux 3267253690Sjkimmakefiles are obsolete and have been removed from the unix tarball 3268253690Sjkimrelease 3269241973Sjkimpackages. The replacement makefiles are under generate/unix, and there is 3270241973Sjkima 3271239340Sjkimtop-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3272239340Sjkim 3273239340SjkimUpdates for Unix makefiles: 3274239340Sjkim1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 3275253690Sjkim2) Update linker flags (move to end of command line) for AcpiExec 3276253690Sjkimutility. 3277239340SjkimGuan Chao. 3278239340Sjkim 3279239340SjkimSplit ACPICA initialization functions to new file, utxfinit.c. Split from 3280239340Sjkimutxface.c to improve modularity and reduce file size. 3281239340Sjkim 3282239340SjkimExample Code and Data Size: These are the sizes for the OS-independent 3283239340Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3284241973Sjkimdebug version of the code includes the debug output trace mechanism and 3285241973Sjkimhas a 3286239340Sjkimmuch larger code and data size. 3287239340Sjkim 3288239340Sjkim Previous Release: 3289239340Sjkim Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3290239340Sjkim Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3291239340Sjkim Current Release: 3292239340Sjkim Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3293239340Sjkim Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3294239340Sjkim 3295239340Sjkim 3296239340Sjkim2) iASL Compiler/Disassembler and Tools: 3297239340Sjkim 3298239340SjkimiASL: Fixed a problem with constant folding for fixed-length constant 3299239340Sjkimexpressions. The constant-folding code was not being invoked for constant 3300253690Sjkimexpressions that allow the use of type 3/4/5 opcodes to generate 3301253690Sjkimconstants 3302241973Sjkimfor expressions such as ByteConstExpr, WordConstExpr, etc. This could 3303241973Sjkimresult 3304239340Sjkimin the generation of invalid AML bytecode. ACPICA BZ 970. 3305239340Sjkim 3306239340SjkimiASL: Fixed a generation issue on newer versions of Bison. Newer versions 3307253690Sjkimapparently automatically emit some of the necessary externals. This 3308253690Sjkimchange 3309239340Sjkimhandles these versions in order to eliminate generation warnings. 3310239340Sjkim 3311239340SjkimDisassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3312239340Sjkim 3313241973SjkimDisassembler: Add support to decode _PLD buffers. The decoded buffer 3314241973Sjkimappears 3315239340Sjkimwithin comments in the output file. 3316239340Sjkim 3317239340SjkimDebugger: Fixed a regression with the "Threads" command where 3318239340SjkimAE_BAD_PARAMETER was always returned. 3319239340Sjkim 3320239340Sjkim---------------------------------------- 3321238381Sjkim11 July 2012. Summary of changes for version 20120711: 3322238381Sjkim 3323238381Sjkim1) ACPICA Kernel-resident Subsystem: 3324238381Sjkim 3325238381SjkimFixed a possible fault in the return package object repair code. Fixes a 3326253690Sjkimproblem that can occur when a lone package object is wrapped with an 3327253690Sjkimouter 3328241973Sjkimpackage object in order to force conformance to the ACPI specification. 3329241973SjkimCan 3330241973Sjkimaffect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3331241973Sjkim_DLM, 3332238381Sjkim_CSD, _PSD, _TSD. 3333238381Sjkim 3334238381SjkimRemoved code to disable/enable bus master arbitration (ARB_DIS bit in the 3335238381SjkimPM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3336241973SjkimARB_DIS bit must be implemented in the host-dependent C3 processor power 3337241973Sjkimstate 3338241973Sjkimsupport. Note, ARB_DIS is obsolete and only applies to older chipsets, 3339241973Sjkimboth 3340238381SjkimIntel and other vendors. (for Intel: ICH4-M and earlier) 3341238381Sjkim 3342241973SjkimThis change removes the code to disable/enable bus master arbitration 3343241973Sjkimduring 3344241973Sjkimsuspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3345241973Sjkimcauses 3346241973Sjkimresume problems on some machines. The change has been in use for over 3347241973Sjkimseven 3348238381Sjkimyears within Linux. 3349238381Sjkim 3350241973SjkimImplemented two new external interfaces to support host-directed dynamic 3351241973SjkimACPI 3352241973Sjkimtable load and unload. They are intended to simplify the host 3353241973Sjkimimplementation 3354238381Sjkimof hot-plug support: 3355238381Sjkim AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3356241973Sjkim AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3357241973Sjkimtable. 3358238381SjkimSee the ACPICA reference for additional details. Adds one new file, 3359238381Sjkimcomponents/tables/tbxfload.c 3360238381Sjkim 3361241973SjkimImplemented and deployed two new interfaces for errors and warnings that 3362241973Sjkimare 3363238381Sjkimknown to be caused by BIOS/firmware issues: 3364238381Sjkim AcpiBiosError: Prints "ACPI Firmware Error" message. 3365238381Sjkim AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3366241973SjkimDeployed these new interfaces in the ACPICA Table Manager code for ACPI 3367241973Sjkimtable 3368241973Sjkimand FADT errors. Additional deployment to be completed as appropriate in 3369241973Sjkimthe 3370238381Sjkimfuture. The associated conditional macros are ACPI_BIOS_ERROR and 3371253690SjkimACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3372253690SjkimACPICA 3373241973SjkimBZ 3374238381Sjkim843. 3375238381Sjkim 3376238381SjkimImplicit notify support: ensure that no memory allocation occurs within a 3377241973Sjkimcritical region. This fix moves a memory allocation outside of the time 3378241973Sjkimthat a 3379253690Sjkimspinlock is held. Fixes issues on systems that do not allow this 3380253690Sjkimbehavior. 3381238381SjkimJung-uk Kim. 3382238381Sjkim 3383241973SjkimSplit exception code utilities and tables into a new file, 3384241973Sjkimutilities/utexcep.c 3385238381Sjkim 3386238381SjkimExample Code and Data Size: These are the sizes for the OS-independent 3387241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3388241973Sjkimdebug 3389241973Sjkimversion of the code includes the debug output trace mechanism and has a 3390241973Sjkimmuch 3391238381Sjkimlarger code and data size. 3392238381Sjkim 3393238381Sjkim Previous Release: 3394238381Sjkim Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3395238381Sjkim Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3396238381Sjkim Current Release: 3397238381Sjkim Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3398238381Sjkim Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3399238381Sjkim 3400238381Sjkim 3401238381Sjkim2) iASL Compiler/Disassembler and Tools: 3402238381Sjkim 3403241973SjkimiASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3404241973Sjkimof 3405238381Sjkim0. Jung-uk Kim. 3406238381Sjkim 3407241973SjkimDebugger: Enhanced the "tables" command to emit additional information 3408241973Sjkimabout 3409238381Sjkimthe current set of ACPI tables, including the owner ID and flags decode. 3410238381Sjkim 3411238381SjkimDebugger: Reimplemented the "unload" command to use the new 3412241973SjkimAcpiUnloadParentTable external interface. This command was disable 3413241973Sjkimpreviously 3414238381Sjkimdue to need for an unload interface. 3415238381Sjkim 3416241973SjkimAcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3417241973Sjkimoption 3418238381Sjkimwill decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3419238381Sjkim 3420238381Sjkim---------------------------------------- 3421237412Sjkim20 June 2012. Summary of changes for version 20120620: 3422237412Sjkim 3423237412Sjkim 3424237412Sjkim1) ACPICA Kernel-resident Subsystem: 3425237412Sjkim 3426241973SjkimImplemented support to expand the "implicit notify" feature to allow 3427241973Sjkimmultiple 3428241973Sjkimdevices to be notified by a single GPE. This feature automatically 3429241973Sjkimgenerates a 3430237412Sjkimruntime device notification in the absence of a BIOS-provided GPE control 3431241973Sjkimmethod (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3432241973Sjkimnotify is 3433253690Sjkimprovided by ACPICA for Windows compatibility, and is a workaround for 3434253690SjkimBIOS 3435241973SjkimAML 3436241973Sjkimcode errors. See the description of the AcpiSetupGpeForWake interface in 3437241973Sjkimthe 3438237412SjkimAPCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3439237412Sjkim 3440237412SjkimChanged some comments and internal function names to simplify and ensure 3441237412Sjkimcorrectness of the Linux code translation. No functional changes. 3442237412Sjkim 3443237412SjkimExample Code and Data Size: These are the sizes for the OS-independent 3444241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3445241973Sjkimdebug 3446241973Sjkimversion of the code includes the debug output trace mechanism and has a 3447241973Sjkimmuch 3448237412Sjkimlarger code and data size. 3449237412Sjkim 3450237412Sjkim Previous Release: 3451237412Sjkim Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3452237412Sjkim Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3453237412Sjkim Current Release: 3454237412Sjkim Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3455237412Sjkim Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3456237412Sjkim 3457237412Sjkim 3458237412Sjkim2) iASL Compiler/Disassembler and Tools: 3459237412Sjkim 3460241973SjkimDisassembler: Added support to emit short, commented descriptions for the 3461241973SjkimACPI 3462237412Sjkimpredefined names in order to improve the readability of the disassembled 3463237412Sjkimoutput. ACPICA BZ 959. Changes include: 3464241973Sjkim 1) Emit descriptions for all standard predefined names (_INI, _STA, 3465241973Sjkim_PRW, 3466237412Sjkimetc.) 3467237412Sjkim 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 3468241973Sjkim 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 3469241973Sjkimetc.) 3470237412Sjkim 3471241973SjkimAcpiSrc: Fixed several long-standing Linux code translation issues. 3472241973SjkimArgument 3473253690Sjkimdescriptions in function headers are now translated properly to lower 3474253690Sjkimcase 3475241973Sjkimand 3476253690Sjkimunderscores. ACPICA BZ 961. Also fixes translation problems such as 3477253690Sjkimthese: 3478237412Sjkim(old -> new) 3479237412Sjkim i_aSL -> iASL 3480237412Sjkim 00-7_f -> 00-7F 3481237412Sjkim 16_k -> 16K 3482237412Sjkim local_fADT -> local_FADT 3483237412Sjkim execute_oSI -> execute_OSI 3484237412Sjkim 3485241973SjkimiASL: Fixed a problem where null bytes were inadvertently emitted into 3486241973Sjkimsome 3487237412Sjkimlisting files. 3488237412Sjkim 3489241973SjkimiASL: Added the existing debug options to the standard help screen. There 3490241973Sjkimare 3491237412Sjkimno longer two different help screens. ACPICA BZ 957. 3492237412Sjkim 3493241973SjkimAcpiHelp: Fixed some typos in the various predefined name descriptions. 3494241973SjkimAlso 3495237412Sjkimexpand some of the descriptions where appropriate. 3496237412Sjkim 3497241973SjkimiASL: Fixed the -ot option (display compile times/statistics). Was not 3498241973Sjkimworking 3499237412Sjkimproperly for standard output; only worked for the debug file case. 3500237412Sjkim 3501237412Sjkim---------------------------------------- 3502235945Sjkim18 May 2012. Summary of changes for version 20120518: 3503235945Sjkim 3504235945Sjkim 3505235945Sjkim1) ACPICA Core Subsystem: 3506235945Sjkim 3507241973SjkimAdded a new OSL interface, AcpiOsWaitEventsComplete. This interface is 3508241973Sjkimdefined 3509241973Sjkimto block until asynchronous events such as notifies and GPEs have 3510241973Sjkimcompleted. 3511235945SjkimWithin ACPICA, it is only called before a notify or GPE handler is 3512235945Sjkimremoved/uninstalled. It also may be useful for the host OS within related 3513241973Sjkimdrivers such as the Embedded Controller driver. See the ACPICA reference 3514241973Sjkimfor 3515235945Sjkimadditional information. ACPICA BZ 868. 3516235945Sjkim 3517241973SjkimACPI Tables: Added a new error message for a possible overflow failure 3518241973Sjkimduring 3519253690Sjkimthe conversion of FADT 32-bit legacy register addresses to internal 3520253690Sjkimcommon 3521241973Sjkim64- 3522241973Sjkimbit GAS structure representation. The GAS has a one-byte "bit length" 3523241973Sjkimfield, 3524235945Sjkimthus limiting the register length to 255 bits. ACPICA BZ 953. 3525235945Sjkim 3526235945SjkimExample Code and Data Size: These are the sizes for the OS-independent 3527241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3528241973Sjkimdebug 3529241973Sjkimversion of the code includes the debug output trace mechanism and has a 3530241973Sjkimmuch 3531235945Sjkimlarger code and data size. 3532235945Sjkim 3533235945Sjkim Previous Release: 3534235945Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3535235945Sjkim Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3536235945Sjkim Current Release: 3537235945Sjkim Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3538235945Sjkim Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3539235945Sjkim 3540235945Sjkim 3541235945Sjkim2) iASL Compiler/Disassembler and Tools: 3542235945Sjkim 3543241973SjkimiASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 3544241973Sjkimmacro. 3545235945SjkimThis keyword was added late in the ACPI 5.0 release cycle and was not 3546235945Sjkimimplemented until now. 3547235945Sjkim 3548235945SjkimDisassembler: Added support for Operation Region externals. Adds missing 3549235945Sjkimsupport for operation regions that are defined in another table, and 3550241973Sjkimreferenced locally via a Field or BankField ASL operator. Now generates 3551241973Sjkimthe 3552235945Sjkimcorrect External statement. 3553235945Sjkim 3554241973SjkimDisassembler: Several additional fixes for the External() statement 3555241973Sjkimgeneration 3556235945Sjkimrelated to some ASL operators. Also, order the External() statements 3557253690Sjkimalphabetically in the disassembler output. Fixes the External() 3558253690Sjkimgeneration 3559241973Sjkimfor 3560235945Sjkimthe Create* field, Alias, and Scope operators: 3561241973Sjkim 1) Create* buffer field operators - fix type mismatch warning on 3562241973Sjkimdisassembly 3563235945Sjkim 2) Alias - implement missing External support 3564235945Sjkim 3) Scope - fix to make sure all necessary externals are emitted. 3565235945Sjkim 3566241973SjkimiASL: Improved pathname support. For include files, merge the prefix 3567241973Sjkimpathname 3568235945Sjkimwith the file pathname and eliminate unnecessary components. Convert 3569241973Sjkimbackslashes in all pathnames to forward slashes, for readability. Include 3570241973Sjkimfile 3571235945Sjkimpathname changes affect both #include and Include() type operators. 3572235945Sjkim 3573241973SjkimiASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 3574241973Sjkimend 3575241973Sjkimof a valid line by inserting a newline and then returning the EOF during 3576241973Sjkimthe 3577235945Sjkimnext call to GetNextLine. Prevents the line from being ignored due to EOF 3578235945Sjkimcondition. 3579235945Sjkim 3580241973SjkimiASL: Implemented some changes to enhance the IDE support (-vi option.) 3581241973SjkimError 3582253690Sjkimand Warning messages are now correctly recognized for both the source 3583253690Sjkimcode 3584235945Sjkimbrowser and the global error and warning counts. 3585235945Sjkim 3586235945Sjkim---------------------------------------- 3587234623Sjkim20 April 2012. Summary of changes for version 20120420: 3588234623Sjkim 3589234623Sjkim 3590234623Sjkim1) ACPICA Core Subsystem: 3591234623Sjkim 3592253690SjkimImplemented support for multiple notify handlers. This change adds 3593253690Sjkimsupport 3594241973Sjkimto 3595241973Sjkimallow multiple system and device notify handlers on Device, Thermal Zone, 3596241973Sjkimand 3597241973SjkimProcessor objects. This can simplify the host OS notification 3598241973Sjkimimplementation. 3599253690SjkimAlso re-worked and restructured the entire notify support code to 3600253690Sjkimsimplify 3601234623Sjkimhandler installation, handler removal, notify event queuing, and notify 3602234623Sjkimdispatch to handler(s). Note: there can still only be two global notify 3603241973Sjkimhandlers - one for system notifies and one for device notifies. There are 3604241973Sjkimno 3605234623Sjkimchanges to the existing handler install/remove interfaces. Lin Ming, Bob 3606234623SjkimMoore, Rafael Wysocki. 3607234623Sjkim 3608234623SjkimFixed a regression in the package repair code where the object reference 3609234623Sjkimcount was calculated incorrectly. Regression was introduced in the commit 3610234623Sjkim"Support to add Package wrappers". 3611234623Sjkim 3612241973SjkimFixed a couple possible memory leaks in the AML parser, in the error 3613241973Sjkimrecovery 3614234623Sjkimpath. Jesper Juhl, Lin Ming. 3615234623Sjkim 3616234623SjkimExample Code and Data Size: These are the sizes for the OS-independent 3617234623Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3618241973Sjkimdebug version of the code includes the debug output trace mechanism and 3619241973Sjkimhas a 3620234623Sjkimmuch larger code and data size. 3621234623Sjkim 3622234623Sjkim Previous Release: 3623234623Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3624234623Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3625234623Sjkim Current Release: 3626234623Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3627234623Sjkim Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3628234623Sjkim 3629234623Sjkim 3630234623Sjkim2) iASL Compiler/Disassembler and Tools: 3631234623Sjkim 3632241973SjkimiASL: Fixed a problem with the resource descriptor support where the 3633241973Sjkimlength 3634234623Sjkimof the StartDependentFn and StartDependentFnNoPrio descriptors were not 3635241973Sjkimincluded in cumulative descriptor offset, resulting in incorrect values 3636241973Sjkimfor 3637241973Sjkimresource tags within resource descriptors appearing after a 3638241973SjkimStartDependent* 3639234623Sjkimdescriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 3640234623Sjkim 3641253690SjkimiASL and Preprocessor: Implemented full support for the #line directive 3642253690Sjkimto 3643241973Sjkimcorrectly track original source file line numbers through the .i 3644241973Sjkimpreprocessor 3645234623Sjkimoutput file - for error and warning messages. 3646234623Sjkim 3647241973SjkimiASL: Expand the allowable byte constants for address space IDs. 3648241973SjkimPreviously, 3649234623Sjkimthe allowable range was 0x80-0xFF (user-defined spaces), now the range is 3650234623Sjkim0x0A-0xFF to allow for custom and new IDs without changing the compiler. 3651234623Sjkim 3652234623SjkimiASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 3653234623Sjkim 3654234623SjkimiASL: Add option to completely disable the preprocessor (-Pn). 3655234623Sjkim 3656234623SjkimiASL: Now emit all error/warning messages to standard error (stderr) by 3657234623Sjkimdefault (instead of the previous stdout). 3658234623Sjkim 3659241973SjkimASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 3660241973SjkimUpdate 3661234623Sjkimfor resource descriptor offset fix above. Update/cleanup error output 3662234623Sjkimroutines. Enable and send iASL errors/warnings to an error logfile 3663253690Sjkim(error.txt). Send all other iASL output to a logfile (compiler.txt). 3664253690SjkimFixed 3665234623Sjkimseveral extraneous "unrecognized operator" messages. 3666234623Sjkim 3667234623Sjkim---------------------------------------- 3668233250Sjkim20 March 2012. Summary of changes for version 20120320: 3669233250Sjkim 3670233250Sjkim 3671233250Sjkim1) ACPICA Core Subsystem: 3672233250Sjkim 3673233250SjkimEnhanced the sleep/wake interfaces to optionally execute the _GTS method 3674253690Sjkim(Going To Sleep) and the _BFS method (Back From Sleep). Windows 3675253690Sjkimapparently 3676233250Sjkimdoes not execute these methods, and therefore these methods are often 3677233250Sjkimuntested. It has been seen on some systems where the execution of these 3678241973Sjkimmethods causes errors and also prevents the machine from entering S5. It 3679241973Sjkimis 3680241973Sjkimtherefore suggested that host operating systems do not execute these 3681241973Sjkimmethods 3682241973Sjkimby default. In the future, perhaps these methods can be optionally 3683241973Sjkimexecuted 3684241973Sjkimbased on the age of the system and/or what is the newest version of 3685241973SjkimWindows 3686241973Sjkimthat the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 3687241973Sjkimand 3688233250SjkimAcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 3689233250SjkimMing. 3690233250Sjkim 3691241973SjkimFixed a problem where the length of the local/common FADT was set too 3692241973Sjkimearly. 3693233250SjkimThe local FADT table length cannot be set to the common length until the 3694241973Sjkimoriginal length has been examined. There is code that checks the table 3695241973Sjkimlength 3696253690Sjkimand sets various fields appropriately. This can affect older machines 3697253690Sjkimwith 3698253690Sjkimearly FADT versions. For example, this can cause inadvertent writes to 3699253690Sjkimthe 3700233250SjkimCST_CNT register. Julian Anastasov. 3701233250Sjkim 3702241973SjkimFixed a mapping issue related to a physical table override. Use the 3703241973Sjkimdeferred 3704241973Sjkimmapping mechanism for tables loaded via the physical override OSL 3705241973Sjkiminterface. 3706241973SjkimThis allows for early mapping before the virtual memory manager is 3707241973Sjkimavailable. 3708233250SjkimThomas Renninger, Bob Moore. 3709233250Sjkim 3710241973SjkimEnhanced the automatic return-object repair code: Repair a common problem 3711241973Sjkimwith 3712253690Sjkimpredefined methods that are defined to return a variable-length Package 3713253690Sjkimof 3714241973Sjkimsub-objects. If there is only one sub-object, some BIOS ASL code 3715241973Sjkimmistakenly 3716253690Sjkimsimply returns the single object instead of a Package with one sub- 3717253690Sjkimobject. 3718241973SjkimThis new support will repair this error by wrapping a Package object 3719241973Sjkimaround 3720241973Sjkimthe original object, creating the correct and expected Package with one 3721241973Sjkimsub- 3722241973Sjkimobject. Names that can be repaired in this manner include: _ALR, _CSD, 3723241973Sjkim_HPX, 3724241973Sjkim_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 3725241973Sjkim939. 3726233250Sjkim 3727233250SjkimChanged the exception code returned for invalid ACPI paths passed as 3728233250Sjkimparameters to external interfaces such as AcpiEvaluateObject. Was 3729233250SjkimAE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 3730233250Sjkim 3731233250SjkimExample Code and Data Size: These are the sizes for the OS-independent 3732241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3733241973Sjkimdebug 3734241973Sjkimversion of the code includes the debug output trace mechanism and has a 3735241973Sjkimmuch 3736233250Sjkimlarger code and data size. 3737233250Sjkim 3738233250Sjkim Previous Release: 3739233250Sjkim Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3740233250Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3741233250Sjkim Current Release: 3742233250Sjkim Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3743233250Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3744233250Sjkim 3745233250Sjkim 3746233250Sjkim2) iASL Compiler/Disassembler and Tools: 3747233250Sjkim 3748241973SjkimiASL: Added the infrastructure and initial implementation of a integrated 3749241973SjkimC- 3750241973Sjkimlike preprocessor. This will simplify BIOS development process by 3751241973Sjkimeliminating 3752241973Sjkimthe need for a separate preprocessing step during builds. On Windows, it 3753241973Sjkimalso 3754233250Sjkimeliminates the need to install a separate C compiler. ACPICA BZ 761. Some 3755241973Sjkimfeatures including full #define() macro support are still under 3756241973Sjkimdevelopment. 3757233250SjkimThese preprocessor directives are supported: 3758233250Sjkim #define 3759233250Sjkim #elif 3760233250Sjkim #else 3761233250Sjkim #endif 3762233250Sjkim #error 3763233250Sjkim #if 3764233250Sjkim #ifdef 3765233250Sjkim #ifndef 3766233250Sjkim #include 3767233250Sjkim #pragma message 3768233250Sjkim #undef 3769233250Sjkim #warning 3770233250SjkimIn addition, these new command line options are supported: 3771233250Sjkim -D <symbol> Define symbol for preprocessor use 3772233250Sjkim -li Create preprocessed output file (*.i) 3773233250Sjkim -P Preprocess only and create preprocessor output file (*.i) 3774233250Sjkim 3775241973SjkimTable Compiler: Fixed a problem where the equals operator within an 3776241973Sjkimexpression 3777233250Sjkimdid not work properly. 3778233250Sjkim 3779241973SjkimUpdated iASL to use the current versions of Bison/Flex. Updated the 3780241973SjkimWindows 3781241973Sjkimproject file to invoke these tools from the standard location. ACPICA BZ 3782241973Sjkim904. 3783233250SjkimVersions supported: 3784233250Sjkim Flex for Windows: V2.5.4 3785233250Sjkim Bison for Windows: V2.4.1 3786233250Sjkim 3787233250Sjkim---------------------------------------- 3788231844Sjkim15 February 2012. Summary of changes for version 20120215: 3789231844Sjkim 3790231844Sjkim 3791231844Sjkim1) ACPICA Core Subsystem: 3792231844Sjkim 3793231844SjkimThere have been some major changes to the sleep/wake support code, as 3794231844Sjkimdescribed below (a - e). 3795231844Sjkim 3796231844Sjkima) The AcpiLeaveSleepState has been split into two interfaces, similar to 3797231844SjkimAcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 3798241973SjkimAcpiLeaveSleepStatePrep. This allows the host to perform actions between 3799241973Sjkimthe 3800241973Sjkimtime the _BFS method is called and the _WAK method is called. NOTE: all 3801241973Sjkimhosts 3802241973Sjkimmust update their wake/resume code or else sleep/wake will not work 3803241973Sjkimproperly. 3804231844SjkimRafael Wysocki. 3805231844Sjkim 3806241973Sjkimb) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 3807241973Sjkim_WAK 3808241973Sjkimmethod. Some machines require that the GPEs are enabled before the _WAK 3809241973Sjkimmethod 3810231844Sjkimis executed. Thomas Renninger. 3811231844Sjkim 3812253690Sjkimc) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 3813253690Sjkimbit. 3814241973SjkimSome BIOS code assumes that WAK_STS will be cleared on resume and use it 3815241973Sjkimto 3816231844Sjkimdetermine whether the system is rebooting or resuming. Matthew Garrett. 3817231844Sjkim 3818241973Sjkimd) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 3819241973SjkimSleep) to 3820231844Sjkimmatch the ACPI specification requirement. Rafael Wysocki. 3821231844Sjkim 3822231844Sjkime) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 3823231844Sjkimregisters within the V5 FADT. This support adds two new files: 3824241973Sjkimhardware/hwesleep.c implements the support for the new registers. Moved 3825241973Sjkimall 3826231844Sjkimsleep/wake external interfaces to hardware/hwxfsleep.c. 3827231844Sjkim 3828231844Sjkim 3829231844SjkimAdded a new OSL interface for ACPI table overrides, 3830231844SjkimAcpiOsPhysicalTableOverride. This interface allows the host to override a 3831231844Sjkimtable via a physical address, instead of the logical address required by 3832231844SjkimAcpiOsTableOverride. This simplifies the host implementation. Initial 3833241973Sjkimimplementation by Thomas Renninger. The ACPICA implementation creates a 3834241973Sjkimsingle 3835231844Sjkimshared function for table overrides that attempts both a logical and a 3836231844Sjkimphysical override. 3837231844Sjkim 3838231844SjkimExpanded the OSL memory read/write interfaces to 64-bit data 3839231844Sjkim(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 3840241973Sjkimtransfer support for GAS register structures passed to AcpiRead and 3841241973SjkimAcpiWrite. 3842231844Sjkim 3843241973SjkimImplemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 3844241973Sjkimcustom 3845241973Sjkimbuild of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 3846241973Sjkimmodel. 3847241973SjkimSee the ACPICA reference for details. ACPICA BZ 942. This option removes 3848241973Sjkimabout 3849253690Sjkim10% of the code and 5% of the static data, and the following hardware 3850253690SjkimACPI 3851231844Sjkimfeatures become unavailable: 3852231844Sjkim PM Event and Control registers 3853231844Sjkim SCI interrupt (and handler) 3854231844Sjkim Fixed Events 3855231844Sjkim General Purpose Events (GPEs) 3856231844Sjkim Global Lock 3857231844Sjkim ACPI PM timer 3858231844Sjkim FACS table (Waking vectors and Global Lock) 3859231844Sjkim 3860241973SjkimUpdated the unix tarball directory structure to match the ACPICA git 3861241973Sjkimsource 3862231844Sjkimtree. This ensures that the generic unix makefiles work properly (in 3863253690Sjkimgenerate/unix). Also updated the Linux makefiles to match. ACPICA BZ 3864253690Sjkim867. 3865231844Sjkim 3866241973SjkimUpdated the return value of the _REV predefined method to integer value 5 3867241973Sjkimto 3868231844Sjkimreflect ACPI 5.0 support. 3869231844Sjkim 3870241973SjkimMoved the external ACPI PM timer interface prototypes to the public 3871241973Sjkimacpixf.h 3872231844Sjkimfile where they belong. 3873231844Sjkim 3874231844SjkimExample Code and Data Size: These are the sizes for the OS-independent 3875241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3876241973Sjkimdebug 3877241973Sjkimversion of the code includes the debug output trace mechanism and has a 3878241973Sjkimmuch 3879231844Sjkimlarger code and data size. 3880231844Sjkim 3881231844Sjkim Previous Release: 3882231844Sjkim Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3883231844Sjkim Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3884231844Sjkim Current Release: 3885231844Sjkim Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 3886231844Sjkim Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 3887231844Sjkim 3888231844Sjkim 3889231844Sjkim2) iASL Compiler/Disassembler and Tools: 3890231844Sjkim 3891231844SjkimDisassembler: Fixed a problem with the new ACPI 5.0 serial resource 3892231844Sjkimdescriptors (I2C, SPI, UART) where the resource produce/consumer bit was 3893231844Sjkimincorrectly displayed. 3894231844Sjkim 3895231844SjkimAcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 3896231844Sjkimspecification. 3897231844Sjkim 3898231844Sjkim---------------------------------------- 3899229989Sjkim11 January 2012. Summary of changes for version 20120111: 3900229989Sjkim 3901229989Sjkim 3902229989Sjkim1) ACPICA Core Subsystem: 3903229989Sjkim 3904241973SjkimImplemented a new mechanism to allow host device drivers to check for 3905241973Sjkimaddress 3906241973Sjkimrange conflicts with ACPI Operation Regions. Both SystemMemory and 3907241973SjkimSystemIO 3908241973Sjkimaddress spaces are supported. A new external interface, 3909241973SjkimAcpiCheckAddressRange, 3910241973Sjkimallows drivers to check an address range against the ACPI namespace. See 3911241973Sjkimthe 3912229989SjkimACPICA reference for additional details. Adds one new file, 3913229989Sjkimutilities/utaddress.c. Lin Ming, Bob Moore. 3914229989Sjkim 3915253690SjkimFixed several issues with the ACPI 5.0 FADT support: Add the sleep 3916253690SjkimControl 3917241973Sjkimand 3918229989SjkimStatus registers, update the ACPI 5.0 flags, and update internal data 3919241973Sjkimstructures to handle an FADT larger than 256 bytes. The size of the ACPI 3920241973Sjkim5.0 3921229989SjkimFADT is 268 bytes. 3922229989Sjkim 3923241973SjkimUpdated all ACPICA copyrights and signons to 2012. Added the 2012 3924241973Sjkimcopyright to 3925229989Sjkimall module headers and signons, including the standard Linux header. This 3926241973Sjkimaffects virtually every file in the ACPICA core subsystem, iASL compiler, 3927241973Sjkimand 3928229989Sjkimall ACPICA utilities. 3929229989Sjkim 3930229989SjkimExample Code and Data Size: These are the sizes for the OS-independent 3931241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3932241973Sjkimdebug 3933241973Sjkimversion of the code includes the debug output trace mechanism and has a 3934241973Sjkimmuch 3935229989Sjkimlarger code and data size. 3936229989Sjkim 3937229989Sjkim Previous Release: 3938229989Sjkim Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 3939229989Sjkim Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 3940229989Sjkim Current Release: 3941229989Sjkim Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 3942229989Sjkim Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 3943229989Sjkim 3944229989Sjkim 3945229989Sjkim2) iASL Compiler/Disassembler and Tools: 3946229989Sjkim 3947229989SjkimDisassembler: fixed a problem with the automatic resource tag generation 3948229989Sjkimsupport. Fixes a problem where the resource tags are inadvertently not 3949241973Sjkimconstructed if the table being disassembled contains external references 3950241973Sjkimto 3951241973Sjkimcontrol methods. Moved the actual construction of the tags to after the 3952241973Sjkimfinal 3953241973Sjkimnamespace is constructed (after 2nd parse is invoked due to external 3954241973Sjkimcontrol 3955229989Sjkimmethod references.) ACPICA BZ 941. 3956229989Sjkim 3957241973SjkimTable Compiler: Make all "generic" operators caseless. These are the 3958241973Sjkimoperators 3959241973Sjkimlike UINT8, String, etc. Making these caseless improves ease-of-use. 3960241973SjkimACPICA BZ 3961229989Sjkim934. 3962229989Sjkim 3963229989Sjkim---------------------------------------- 3964228110Sjkim23 November 2011. Summary of changes for version 20111123: 3965222544Sjkim 3966228110Sjkim0) ACPI 5.0 Support: 3967228110Sjkim 3968228110SjkimThis release contains full support for the ACPI 5.0 specification, as 3969228110Sjkimsummarized below. 3970228110Sjkim 3971228110SjkimReduced Hardware Support: 3972228110Sjkim------------------------- 3973228110Sjkim 3974253690SjkimThis support allows for ACPI systems without the usual ACPI hardware. 3975253690SjkimThis 3976241973Sjkimsupport is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 3977241973Sjkimwill 3978241973Sjkimnot attempt to initialize or use any of the usual ACPI hardware. Note, 3979241973Sjkimwhen 3980228110Sjkimthis flag is set, all of the following ACPI hardware is assumed to be not 3981228110Sjkimpresent and is not initialized or accessed: 3982228110Sjkim 3983228110Sjkim General Purpose Events (GPEs) 3984228110Sjkim Fixed Events (PM1a/PM1b and PM Control) 3985228110Sjkim Power Management Timer and Console Buttons (power/sleep) 3986228110Sjkim Real-time Clock Alarm 3987228110Sjkim Global Lock 3988228110Sjkim System Control Interrupt (SCI) 3989228110Sjkim The FACS is assumed to be non-existent 3990228110Sjkim 3991228110SjkimACPI Tables: 3992228110Sjkim------------ 3993228110Sjkim 3994228110SjkimAll new tables and updates to existing tables are fully supported in the 3995253690SjkimACPICA headers (for use by device drivers), the disassembler, and the 3996253690SjkimiASL 3997228110SjkimData Table Compiler. ACPI 5.0 defines these new tables: 3998228110Sjkim 3999228110Sjkim BGRT /* Boot Graphics Resource Table */ 4000228110Sjkim DRTM /* Dynamic Root of Trust for Measurement table */ 4001228110Sjkim FPDT /* Firmware Performance Data Table */ 4002228110Sjkim GTDT /* Generic Timer Description Table */ 4003228110Sjkim MPST /* Memory Power State Table */ 4004228110Sjkim PCCT /* Platform Communications Channel Table */ 4005228110Sjkim PMTT /* Platform Memory Topology Table */ 4006228110Sjkim RASF /* RAS Feature table */ 4007228110Sjkim 4008228110SjkimOperation Regions/SpaceIDs: 4009228110Sjkim--------------------------- 4010228110Sjkim 4011228110SjkimAll new operation regions are fully supported by the iASL compiler, the 4012241973Sjkimdisassembler, and the ACPICA runtime code (for dispatch to region 4013241973Sjkimhandlers.) 4014228110SjkimThe new operation region Space IDs are: 4015228110Sjkim 4016228110Sjkim GeneralPurposeIo 4017228110Sjkim GenericSerialBus 4018228110Sjkim 4019228110SjkimResource Descriptors: 4020228110Sjkim--------------------- 4021228110Sjkim 4022253690SjkimAll new ASL resource descriptors are fully supported by the iASL 4023253690Sjkimcompiler, 4024241973Sjkimthe 4025241973SjkimASL/AML disassembler, and the ACPICA runtime Resource Manager code 4026241973Sjkim(including 4027228110Sjkimall new predefined resource tags). New descriptors are: 4028228110Sjkim 4029228110Sjkim FixedDma 4030228110Sjkim GpioIo 4031228110Sjkim GpioInt 4032228110Sjkim I2cSerialBus 4033228110Sjkim SpiSerialBus 4034228110Sjkim UartSerialBus 4035228110Sjkim 4036228110SjkimASL/AML Operators, New and Modified: 4037228110Sjkim------------------------------------ 4038228110Sjkim 4039241973SjkimOne new operator is added, the Connection operator, which is used to 4040241973Sjkimassociate 4041253690Sjkima GeneralPurposeIo or GenericSerialBus resource descriptor with 4042253690Sjkimindividual 4043241973Sjkimfield objects within an operation region. Several new protocols are 4044241973Sjkimassociated 4045228110Sjkimwith the AccessAs operator. All are fully supported by the iASL compiler, 4046228110Sjkimdisassembler, and runtime ACPICA AML interpreter: 4047228110Sjkim 4048253690Sjkim Connection // Declare Field Connection 4049253690Sjkimattributes 4050228110Sjkim AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4051253690Sjkim AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4052253690SjkimProtocol 4053228110Sjkim AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4054241973Sjkim RawDataBuffer // Data type for Vendor Data 4055241973Sjkimfields 4056228110Sjkim 4057228110SjkimPredefined ASL/AML Objects: 4058228110Sjkim--------------------------- 4059228110Sjkim 4060241973SjkimAll new predefined objects/control-methods are supported by the iASL 4061241973Sjkimcompiler 4062241973Sjkimand the ACPICA runtime validation/repair (arguments and return values.) 4063241973SjkimNew 4064228110Sjkimpredefined names include the following: 4065228110Sjkim 4066228110SjkimStandard Predefined Names (Objects or Control Methods): 4067228110Sjkim _AEI, _CLS, _CPC, _CWS, _DEP, 4068228110Sjkim _DLM, _EVT, _GCP, _CRT, _GWS, 4069228110Sjkim _HRV, _PRE, _PSE, _SRT, _SUB. 4070228110Sjkim 4071228110SjkimResource Tags (Names used to access individual fields within resource 4072228110Sjkimdescriptors): 4073228110Sjkim _DBT, _DPL, _DRS, _END, _FLC, 4074228110Sjkim _IOR, _LIN, _MOD, _PAR, _PHA, 4075228110Sjkim _PIN, _PPI, _POL, _RXL, _SLV, 4076228110Sjkim _SPE, _STB, _TXL, _VEN. 4077228110Sjkim 4078228110SjkimACPICA External Interfaces: 4079228110Sjkim--------------------------- 4080228110Sjkim 4081228110SjkimSeveral new interfaces have been defined for use by ACPI-related device 4082228110Sjkimdrivers and other host OS services: 4083228110Sjkim 4084241973SjkimAcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4085241973Sjkimto 4086228110Sjkimacquire and release AML mutexes that are defined in the DSDT/SSDT tables 4087253690Sjkimprovided by the BIOS. They are intended to be used in conjunction with 4088253690Sjkimthe 4089228110SjkimACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4090228110Sjkimmutual exclusion with the AML code/interpreter. 4091228110Sjkim 4092241973SjkimAcpiGetEventResources: Returns the (formatted) resource descriptors as 4093241973Sjkimdefined 4094241973Sjkimby the ACPI 5.0 _AEI object (ACPI Event Information). This object 4095241973Sjkimprovides 4096241973Sjkimresource descriptors associated with hardware-reduced platform events, 4097241973Sjkimsimilar 4098228110Sjkimto the AcpiGetCurrentResources interface. 4099228110Sjkim 4100228110SjkimOperation Region Handlers: For General Purpose IO and Generic Serial Bus 4101241973Sjkimoperation regions, information about the Connection() object and any 4102241973Sjkimoptional 4103228110Sjkimlength information is passed to the region handler within the Context 4104228110Sjkimparameter. 4105228110Sjkim 4106241973SjkimAcpiBufferToResource: This interface converts a raw AML buffer containing 4107241973Sjkima 4108241973Sjkimresource template or resource descriptor to the ACPI_RESOURCE internal 4109241973Sjkimformat 4110241973Sjkimsuitable for use by device drivers. Can be used by an operation region 4111241973Sjkimhandler 4112228110Sjkimto convert the Connection() buffer object into a ACPI_RESOURCE. 4113228110Sjkim 4114228110SjkimMiscellaneous/Tools/TestSuites: 4115228110Sjkim------------------------------- 4116228110Sjkim 4117228110SjkimSupport for extended _HID names (Four alpha characters instead of three). 4118228110SjkimSupport for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4119228110SjkimSupport for ACPI 5.0 features in the ASLTS test suite. 4120228110SjkimFully updated documentation (ACPICA and iASL reference documents.) 4121228110Sjkim 4122228110SjkimACPI Table Definition Language: 4123228110Sjkim------------------------------- 4124228110Sjkim 4125241973SjkimSupport for this language was implemented and released as a subsystem of 4126241973Sjkimthe 4127228110SjkimiASL compiler in 2010. (See the iASL compiler User Guide.) 4128228110Sjkim 4129228110Sjkim 4130228110SjkimNon-ACPI 5.0 changes for this release: 4131228110Sjkim-------------------------------------- 4132228110Sjkim 4133228110Sjkim1) ACPICA Core Subsystem: 4134228110Sjkim 4135253690SjkimFix a problem with operation region declarations where a failure can 4136253690Sjkimoccur 4137241973Sjkimif 4138228110Sjkimthe region name and an argument that evaluates to an object (such as the 4139241973Sjkimregion address) are in different namespace scopes. Lin Ming, ACPICA BZ 4140241973Sjkim937. 4141228110Sjkim 4142241973SjkimDo not abort an ACPI table load if an invalid space ID is found within. 4143241973SjkimThis 4144228110Sjkimwill be caught later if the offending method is executed. ACPICA BZ 925. 4145228110Sjkim 4146228110SjkimFixed an issue with the FFixedHW space ID where the ID was not always 4147228110Sjkimrecognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4148228110Sjkim 4149228110SjkimFixed a problem with the 32-bit generation of the unix-specific OSL 4150228110Sjkim(osunixxf.c). Lin Ming, ACPICA BZ 936. 4151228110Sjkim 4152241973SjkimSeveral changes made to enable generation with the GCC 4.6 compiler. 4153241973SjkimACPICA BZ 4154228110Sjkim935. 4155228110Sjkim 4156241973SjkimNew error messages: Unsupported I/O requests (not 8/16/32 bit), and 4157241973SjkimIndex/Bank 4158228110Sjkimfield registers out-of-range. 4159228110Sjkim 4160228110Sjkim2) iASL Compiler/Disassembler and Tools: 4161228110Sjkim 4162241973SjkimiASL: Implemented the __PATH__ operator, which returns the full pathname 4163241973Sjkimof 4164228110Sjkimthe current source file. 4165228110Sjkim 4166228110SjkimAcpiHelp: Automatically display expanded keyword information for all ASL 4167228110Sjkimoperators. 4168228110Sjkim 4169228110SjkimDebugger: Add "Template" command to disassemble/dump resource template 4170228110Sjkimbuffers. 4171228110Sjkim 4172228110SjkimAdded a new master script to generate and execute the ASLTS test suite. 4173228110SjkimAutomatically handles 32- and 64-bit generation. See tests/aslts.sh 4174228110Sjkim 4175241973SjkimiASL: Fix problem with listing generation during processing of the 4176241973SjkimSwitch() 4177228110Sjkimoperator where AML listing was disabled until the entire Switch block was 4178228110Sjkimcompleted. 4179228110Sjkim 4180228110SjkimiASL: Improve support for semicolon statement terminators. Fix "invalid 4181241973Sjkimcharacter" message for some cases when the semicolon is used. Semicolons 4182241973Sjkimare 4183228110Sjkimnow allowed after every <Term> grammar element. ACPICA BZ 927. 4184228110Sjkim 4185241973SjkimiASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4186241973Sjkim923. 4187228110Sjkim 4188253690SjkimDisassembler: Fix problem with disassembly of the DataTableRegion 4189253690Sjkimoperator 4190241973Sjkimwhere an inadvertent "Unhandled deferred opcode" message could be 4191241973Sjkimgenerated. 4192228110Sjkim 4193228110Sjkim3) Example Code and Data Size 4194228110Sjkim 4195228110SjkimThese are the sizes for the OS-independent acpica.lib produced by the 4196228110SjkimMicrosoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4197241973Sjkimincludes the debug output trace mechanism and has a much larger code and 4198241973Sjkimdata 4199228110Sjkimsize. 4200228110Sjkim 4201228110Sjkim Previous Release: 4202228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4203228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4204228110Sjkim Current Release: 4205228110Sjkim Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4206228110Sjkim Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4207228110Sjkim 4208228110Sjkim---------------------------------------- 4209228110Sjkim22 September 2011. Summary of changes for version 20110922: 4210228110Sjkim 4211228110Sjkim0) ACPI 5.0 News: 4212228110Sjkim 4213241973SjkimSupport for ACPI 5.0 in ACPICA has been underway for several months and 4214241973Sjkimwill 4215228110Sjkimbe released at the same time that ACPI 5.0 is officially released. 4216228110Sjkim 4217253690SjkimThe ACPI 5.0 specification is on track for release in the next few 4218253690Sjkimmonths. 4219228110Sjkim 4220228110Sjkim1) ACPICA Core Subsystem: 4221228110Sjkim 4222228110SjkimFixed a problem where the maximum sleep time for the Sleep() operator was 4223253690Sjkimintended to be limited to two seconds, but was inadvertently limited to 4224253690Sjkim20 4225228110Sjkimseconds instead. 4226228110Sjkim 4227253690SjkimLinux and Unix makefiles: Added header file dependencies to ensure 4228253690Sjkimcorrect 4229241973Sjkimgeneration of ACPICA core code and utilities. Also simplified the 4230241973Sjkimmakefiles 4231241973Sjkimconsiderably through the use of the vpath variable to specify search 4232241973Sjkimpaths. 4233228110SjkimACPICA BZ 924. 4234228110Sjkim 4235228110Sjkim2) iASL Compiler/Disassembler and Tools: 4236228110Sjkim 4237241973SjkimiASL: Implemented support to check the access length for all fields 4238241973Sjkimcreated to 4239241973Sjkimaccess named Resource Descriptor fields. For example, if a resource field 4240241973Sjkimis 4241253690Sjkimdefined to be two bits, a warning is issued if a CreateXxxxField() is 4242253690Sjkimused 4243253690Sjkimwith an incorrect bit length. This is implemented for all current 4244253690Sjkimresource 4245228110Sjkimdescriptor names. ACPICA BZ 930. 4246228110Sjkim 4247241973SjkimDisassembler: Fixed a byte ordering problem with the output of 24-bit and 4248241973Sjkim56- 4249228110Sjkimbit integers. 4250228110Sjkim 4251228110SjkimiASL: Fixed a couple of issues associated with variable-length package 4252241973Sjkimobjects. 1) properly handle constants like One, Ones, Zero -- do not make 4253241973Sjkima 4254241973SjkimVAR_PACKAGE when these are used as a package length. 2) Allow the 4255241973SjkimVAR_PACKAGE 4256241973Sjkimopcode (in addition to PACKAGE) when validating object types for 4257241973Sjkimpredefined 4258228110Sjkimnames. 4259228110Sjkim 4260241973SjkimiASL: Emit statistics for all output files (instead of just the ASL input 4261241973Sjkimand 4262228110SjkimAML output). Includes listings, hex files, etc. 4263228110Sjkim 4264241973SjkimiASL: Added -G option to the table compiler to allow the compilation of 4265241973Sjkimcustom 4266253690SjkimACPI tables. The only part of a table that is required is the standard 4267253690Sjkim36- 4268241973Sjkimbyte 4269228110SjkimACPI header. 4270228110Sjkim 4271241973SjkimAcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4272241973Sjkimheaders), 4273253690Sjkimwhich also adds correct 64-bit support. Also, now all output filenames 4274253690Sjkimare 4275228110Sjkimcompletely lower case. 4276228110Sjkim 4277228110SjkimAcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4278228110Sjkimloading table files. A warning is issued for any such tables. The only 4279241973Sjkimexception is an FADT. This also fixes a possible fault when attempting to 4280241973Sjkimload 4281228110Sjkimnon-AML tables. ACPICA BZ 932. 4282228110Sjkim 4283253690SjkimAcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4284253690Sjkima 4285228110Sjkimmissing table terminator could cause a fault when using the -p option. 4286228110Sjkim 4287228110SjkimAcpiSrc: Fixed a possible divide-by-zero fault when generating file 4288228110Sjkimstatistics. 4289228110Sjkim 4290228110Sjkim3) Example Code and Data Size 4291228110Sjkim 4292228110SjkimThese are the sizes for the OS-independent acpica.lib produced by the 4293228110SjkimMicrosoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4294241973Sjkimincludes the debug output trace mechanism and has a much larger code and 4295241973Sjkimdata 4296228110Sjkimsize. 4297228110Sjkim 4298228110Sjkim Previous Release (VC 9.0): 4299228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4300228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4301228110Sjkim Current Release (VC 9.0): 4302228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4303228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4304228110Sjkim 4305228110Sjkim 4306228110Sjkim---------------------------------------- 4307228110Sjkim23 June 2011. Summary of changes for version 20110623: 4308228110Sjkim 4309222544Sjkim1) ACPI CA Core Subsystem: 4310222544Sjkim 4311241973SjkimUpdated the predefined name repair mechanism to not attempt repair of a 4312241973Sjkim_TSS 4313241973Sjkimreturn object if a _PSS object is present. We can only sort the _TSS 4314241973Sjkimreturn 4315253690Sjkimpackage if there is no _PSS within the same scope. This is because if 4316253690Sjkim_PSS 4317241973Sjkimis 4318241973Sjkimpresent, the ACPI specification dictates that the _TSS Power Dissipation 4319241973Sjkimfield 4320241973Sjkimis to be ignored, and therefore some BIOSs leave garbage values in the 4321241973Sjkim_TSS 4322241973SjkimPower field(s). In this case, it is best to just return the _TSS package 4323241973Sjkimas- 4324228110Sjkimis. Reported by, and fixed with assistance from Fenghua Yu. 4325228110Sjkim 4326241973SjkimAdded an option to globally disable the control method return value 4327241973Sjkimvalidation 4328253690Sjkimand repair. This runtime option can be used to disable return value 4329253690Sjkimrepair 4330241973Sjkimif 4331253690Sjkimthis is causing a problem on a particular machine. Also added an option 4332253690Sjkimto 4333228110SjkimAcpiExec (-dr) to set this disable flag. 4334228110Sjkim 4335241973SjkimAll makefiles and project files: Major changes to improve generation of 4336241973SjkimACPICA 4337228110Sjkimtools. ACPICA BZ 912: 4338228110Sjkim Reduce default optimization levels to improve compatibility 4339228110Sjkim For Linux, add strict-aliasing=0 for gcc 4 4340228110Sjkim Cleanup and simplify use of command line defines 4341228110Sjkim Cleanup multithread library support 4342228110Sjkim Improve usage messages 4343228110Sjkim 4344241973SjkimLinux-specific header: update handling of THREAD_ID and pthread. For the 4345241973Sjkim32- 4346241973Sjkimbit case, improve casting to eliminate possible warnings, especially with 4347241973Sjkimthe 4348228110Sjkimacpica tools. 4349228110Sjkim 4350228110SjkimExample Code and Data Size: These are the sizes for the OS-independent 4351241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4352241973Sjkimdebug 4353241973Sjkimversion of the code includes the debug output trace mechanism and has a 4354241973Sjkimmuch 4355228110Sjkimlarger code and data size. 4356228110Sjkim 4357228110Sjkim Previous Release (VC 9.0): 4358228110Sjkim Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4359228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4360228110Sjkim Current Release (VC 9.0): 4361228110Sjkim Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4362228110Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4363228110Sjkim 4364228110Sjkim2) iASL Compiler/Disassembler and Tools: 4365228110Sjkim 4366241973SjkimWith this release, a new utility named "acpihelp" has been added to the 4367241973SjkimACPICA 4368241973Sjkimpackage. This utility summarizes the ACPI specification chapters for the 4369241973SjkimASL 4370228110Sjkimand AML languages. It generates under Linux/Unix as well as Windows, and 4371228110Sjkimprovides the following functionality: 4372228110Sjkim Find/display ASL operator(s) -- with description and syntax. 4373228110Sjkim Find/display ASL keyword(s) -- with exact spelling and descriptions. 4374228110Sjkim Find/display ACPI predefined name(s) -- with description, number 4375228110Sjkim of arguments, and the return value data type. 4376241973Sjkim Find/display AML opcode name(s) -- with opcode, arguments, and 4377241973Sjkimgrammar. 4378253690Sjkim Decode/display AML opcode -- with opcode name, arguments, and 4379253690Sjkimgrammar. 4380228110Sjkim 4381241973SjkimService Layers: Make multi-thread support configurable. Conditionally 4382241973Sjkimcompile 4383253690Sjkimthe multi-thread support so that threading libraries will not be linked 4384253690Sjkimif 4385241973Sjkimnot 4386228110Sjkimnecessary. The only tool that requires multi-thread support is AcpiExec. 4387228110Sjkim 4388241973SjkimiASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4389241973Sjkimof 4390228110SjkimBison appear to want the interface to yyerror to be a const char * (or at 4391241973Sjkimleast this is a problem when generating iASL on some systems.) ACPICA BZ 4392241973Sjkim923 4393228110SjkimPierre Lejeune. 4394228110Sjkim 4395241973SjkimTools: Fix for systems where O_BINARY is not defined. Only used for 4396241973SjkimWindows 4397228110Sjkimversions of the tools. 4398228110Sjkim 4399228110Sjkim---------------------------------------- 4400228110Sjkim27 May 2011. Summary of changes for version 20110527: 4401228110Sjkim 4402228110Sjkim1) ACPI CA Core Subsystem: 4403228110Sjkim 4404241973SjkimASL Load() operator: Reinstate most restrictions on the incoming ACPI 4405241973Sjkimtable 4406222544Sjkimsignature. Now, only allow SSDT, OEMx, and a null signature. History: 4407222544Sjkim 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4408222544Sjkim (PSDT is now obsolete.) 4409222544Sjkim 2) We added support for OEMx tables, signature "OEM" plus a fourth 4410222544Sjkim "don't care" character. 4411222544Sjkim 3) Valid tables were encountered with a null signature, so we just 4412222544Sjkim gave up on validating the signature, (05/2008). 4413222544Sjkim 4) We encountered non-AML tables such as the MADT, which caused 4414222544Sjkim interpreter errors and kernel faults. So now, we once again allow 4415222544Sjkim only SSDT, OEMx, and now, also a null signature. (05/2011). 4416222544Sjkim 4417253690SjkimAdded the missing _TDL predefined name to the global name list in order 4418253690Sjkimto 4419241973Sjkimenable validation. Affects both the core ACPICA code and the iASL 4420241973Sjkimcompiler. 4421222544Sjkim 4422222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 4423241973Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4424241973Sjkimdebug 4425241973Sjkimversion of the code includes the debug output trace mechanism and has a 4426241973Sjkimmuch 4427222544Sjkimlarger code and data size. 4428222544Sjkim 4429222544Sjkim Previous Release (VC 9.0): 4430222544Sjkim Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4431222544Sjkim Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4432222544Sjkim Current Release (VC 9.0): 4433222544Sjkim Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4434222544Sjkim Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4435222544Sjkim 4436222544Sjkim2) iASL Compiler/Disassembler and Tools: 4437222544Sjkim 4438241973SjkimDebugger/AcpiExec: Implemented support for "complex" method arguments on 4439241973Sjkimthe 4440241973Sjkimdebugger command line. This adds support beyond simple integers -- 4441241973Sjkimincluding 4442222544SjkimStrings, Buffers, and Packages. Includes support for nested packages. 4443241973SjkimIncreased the default command line buffer size to accommodate these 4444241973Sjkimarguments. 4445222544SjkimSee the ACPICA reference for details and syntax. ACPICA BZ 917. 4446222544Sjkim 4447241973SjkimDebugger/AcpiExec: Implemented support for "default" method arguments for 4448241973Sjkimthe 4449241973SjkimExecute/Debug command. Now, the debugger will always invoke a control 4450241973Sjkimmethod 4451241973Sjkimwith the required number of arguments -- even if the command line 4452241973Sjkimspecifies 4453241973Sjkimnone or insufficient arguments. It uses default integer values for any 4454241973Sjkimmissing 4455222544Sjkimarguments. Also fixes a bug where only six method arguments maximum were 4456222544Sjkimsupported instead of the required seven. 4457222544Sjkim 4458241973SjkimDebugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 4459241973Sjkimand 4460222544Sjkimalso return status in order to prevent buffer overruns. See the ACPICA 4461222544Sjkimreference for details and syntax. ACPICA BZ 921 4462222544Sjkim 4463222544SjkimiASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 4464222544Sjkimmakefiles to simplify support for the two different but similar parser 4465222544Sjkimgenerators, bison and yacc. 4466222544Sjkim 4467241973SjkimUpdated the generic unix makefile for gcc 4. The default gcc version is 4468241973Sjkimnow 4469222544Sjkimexpected to be 4 or greater, since options specific to gcc 4 are used. 4470222544Sjkim 4471222544Sjkim---------------------------------------- 4472220663Sjkim13 April 2011. Summary of changes for version 20110413: 4473220663Sjkim 4474220663Sjkim1) ACPI CA Core Subsystem: 4475220663Sjkim 4476241973SjkimImplemented support to execute a so-called "orphan" _REG method under the 4477222544SjkimEC 4478241973Sjkimdevice. This change will force the execution of a _REG method underneath 4479241973Sjkimthe 4480241973SjkimEC 4481220663Sjkimdevice even if there is no corresponding operation region of type 4482220663SjkimEmbeddedControl. Fixes a problem seen on some machines and apparently is 4483220663Sjkimcompatible with Windows behavior. ACPICA BZ 875. 4484220663Sjkim 4485253690SjkimAdded more predefined methods that are eligible for automatic NULL 4486253690Sjkimpackage 4487253690Sjkimelement removal. This change adds another group of predefined names to 4488253690Sjkimthe 4489222544Sjkimlist 4490220663Sjkimof names that can be repaired by having NULL package elements dynamically 4491253690Sjkimremoved. This group are those methods that return a single variable- 4492253690Sjkimlength 4493241973Sjkimpackage containing simple data types such as integers, buffers, strings. 4494241973SjkimThis 4495241973Sjkimincludes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 4496241973Sjkim_PSL, 4497222544Sjkim_Sx, 4498220663Sjkimand _TZD. ACPICA BZ 914. 4499220663Sjkim 4500222544SjkimSplit and segregated all internal global lock functions to a new file, 4501222544Sjkimevglock.c. 4502220663Sjkim 4503241973SjkimUpdated internal address SpaceID for DataTable regions. Moved this 4504241973Sjkiminternal 4505222544Sjkimspace 4506241973Sjkimid in preparation for ACPI 5.0 changes that will include some new space 4507241973SjkimIDs. 4508222544SjkimThis 4509220663Sjkimchange should not affect user/host code. 4510220663Sjkim 4511222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 4512222544Sjkimacpica.lib 4513241973Sjkimproduced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4514241973Sjkimversion of 4515241973Sjkimthe code includes the debug output trace mechanism and has a much larger 4516241973Sjkimcode 4517222544Sjkimand 4518220663Sjkimdata size. 4519220663Sjkim 4520220663Sjkim Previous Release (VC 9.0): 4521220663Sjkim Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4522220663Sjkim Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4523220663Sjkim Current Release (VC 9.0): 4524220663Sjkim Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4525220663Sjkim Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4526220663Sjkim 4527220663Sjkim2) iASL Compiler/Disassembler and Tools: 4528220663Sjkim 4529241973SjkimiASL/DTC: Major update for new grammar features. Allow generic data types 4530241973Sjkimin 4531253690Sjkimcustom ACPI tables. Field names are now optional. Any line can be split 4532253690Sjkimto 4533241973Sjkimmultiple lines using the continuation char (\). Large buffers now use 4534241973Sjkimline- 4535222544Sjkimcontinuation character(s) and no colon on the continuation lines. See the 4536222544Sjkimgrammar 4537241973Sjkimupdate in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 4538241973SjkimMoore. 4539220663Sjkim 4540241973SjkimiASL: Mark ASL "Return()" and the simple "Return" as "Null" return 4541241973Sjkimstatements. 4542241973SjkimSince the parser stuffs a "zero" as the return value for these statements 4543241973Sjkim(due 4544222544Sjkimto 4545241973Sjkimthe underlying AML grammar), they were seen as "return with value" by the 4546241973SjkimiASL 4547241973Sjkimsemantic checking. They are now seen correctly as "null" return 4548241973Sjkimstatements. 4549220663Sjkim 4550241973SjkimiASL: Check if a_REG declaration has a corresponding Operation Region. 4551241973SjkimAdds a 4552241973Sjkimcheck for each _REG to ensure that there is in fact a corresponding 4553241973Sjkimoperation 4554222544Sjkimregion declaration in the same scope. If not, the _REG method is not very 4555222544Sjkimuseful 4556220663Sjkimsince it probably won't be executed. ACPICA BZ 915. 4557220663Sjkim 4558253690SjkimiASL/DTC: Finish support for expression evaluation. Added a new 4559253690Sjkimexpression 4560222544Sjkimparser 4561222544Sjkimthat implements c-style operator precedence and parenthesization. ACPICA 4562222544Sjkimbugzilla 4563220663Sjkim908. 4564220663Sjkim 4565241973SjkimDisassembler/DTC: Remove support for () and <> style comments in data 4566241973Sjkimtables. 4567222544SjkimNow 4568241973Sjkimthat DTC has full expression support, we don't want to have comment 4569241973Sjkimstrings 4570222544Sjkimthat 4571241973Sjkimstart with a parentheses or a less-than symbol. Now, only the standard /* 4572241973Sjkimand 4573222544Sjkim// 4574220663Sjkimcomments are supported, as well as the bracket [] comments. 4575220663Sjkim 4576222544SjkimAcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 4577222544Sjkim"unusual" 4578241973Sjkimheaders in the acpidump file. Update the header validation to support 4579241973Sjkimthese 4580253690Sjkimtables. Problem introduced in previous AcpiXtract version in the change 4581253690Sjkimto 4582220663Sjkimsupport "wrong checksum" error messages emitted by acpidump utility. 4583220663Sjkim 4584253690SjkimiASL: Add a * option to generate all template files (as a synonym for 4585253690SjkimALL) 4586241973Sjkimas 4587222544Sjkimin 4588220663Sjkim"iasl -T *" or "iasl -T ALL". 4589220663Sjkim 4590241973SjkimiASL/DTC: Do not abort compiler on fatal errors. We do not want to 4591241973Sjkimcompletely 4592241973Sjkimabort the compiler on "fatal" errors, simply should abort the current 4593241973Sjkimcompile. 4594220663SjkimThis allows multiple compiles with a single (possibly wildcard) compiler 4595220663Sjkiminvocation. 4596220663Sjkim 4597220663Sjkim---------------------------------------- 4598219707Sjkim16 March 2011. Summary of changes for version 20110316: 4599219707Sjkim 4600219707Sjkim1) ACPI CA Core Subsystem: 4601219707Sjkim 4602241973SjkimFixed a problem caused by a _PRW method appearing at the namespace root 4603241973Sjkimscope 4604241973Sjkimduring the setup of wake GPEs. A fault could occur if a _PRW directly 4605241973Sjkimunder 4606222544Sjkimthe 4607219707Sjkimroot object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 4608219707Sjkim 4609241973SjkimImplemented support for "spurious" Global Lock interrupts. On some 4610241973Sjkimsystems, a 4611253690Sjkimglobal lock interrupt can occur without the pending flag being set. Upon 4612253690Sjkima 4613241973SjkimGL 4614241973Sjkiminterrupt, we now ensure that a thread is actually waiting for the lock 4615241973Sjkimbefore 4616219707Sjkimsignaling GL availability. Rafael Wysocki, Bob Moore. 4617219707Sjkim 4618222544SjkimExample Code and Data Size: These are the sizes for the OS-independent 4619222544Sjkimacpica.lib 4620241973Sjkimproduced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4621241973Sjkimversion of 4622241973Sjkimthe code includes the debug output trace mechanism and has a much larger 4623241973Sjkimcode 4624222544Sjkimand 4625219707Sjkimdata size. 4626219707Sjkim 4627219707Sjkim Previous Release (VC 9.0): 4628219707Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4629219707Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4630219707Sjkim Current Release (VC 9.0): 4631219707Sjkim Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4632219707Sjkim Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4633219707Sjkim 4634219707Sjkim2) iASL Compiler/Disassembler and Tools: 4635219707Sjkim 4636241973SjkimImplemented full support for the "SLIC" ACPI table. Includes support in 4637241973Sjkimthe 4638241973Sjkimheader files, disassembler, table compiler, and template generator. Bob 4639241973SjkimMoore, 4640219707SjkimLin Ming. 4641219707Sjkim 4642253690SjkimAcpiXtract: Correctly handle embedded comments and messages from 4643253690SjkimAcpiDump. 4644241973SjkimApparently some or all versions of acpidump will occasionally emit a 4645241973Sjkimcomment 4646222544Sjkimlike 4647219707Sjkim"Wrong checksum", etc., into the dump file. This was causing problems for 4648219707SjkimAcpiXtract. ACPICA BZ 905. 4649219707Sjkim 4650241973SjkimiASL: Fix the Linux makefile by removing an inadvertent double file 4651241973Sjkiminclusion. 4652219707SjkimACPICA BZ 913. 4653219707Sjkim 4654222544SjkimAcpiExec: Update installation of operation region handlers. Install one 4655222544Sjkimhandler 4656241973Sjkimfor a user-defined address space. This is used by the ASL test suite 4657241973Sjkim(ASLTS). 4658219707Sjkim 4659219707Sjkim---------------------------------------- 4660218590Sjkim11 February 2011. Summary of changes for version 20110211: 4661218590Sjkim 4662218590Sjkim1) ACPI CA Core Subsystem: 4663218590Sjkim 4664253690SjkimAdded a mechanism to defer _REG methods for some early-installed 4665253690Sjkimhandlers. 4666253690SjkimMost user handlers should be installed before call to 4667253690SjkimAcpiEnableSubsystem. 4668218590SjkimHowever, Event handlers and region handlers should be installed after 4669241973SjkimAcpiInitializeObjects. Override handlers for the "default" regions should 4670241973Sjkimbe 4671218590Sjkiminstalled early, however. This change executes all _REG methods for the 4672218590Sjkimdefault regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 4673218590Sjkimchicken/egg issues between them. ACPICA BZ 848. 4674218590Sjkim 4675241973SjkimImplemented an optimization for GPE detection. This optimization will 4676241973Sjkimsimply 4677218590Sjkimignore GPE registers that contain no enabled GPEs -- there is no need to 4678218590Sjkimread the register since this information is available internally. This 4679253690Sjkimbecomes more important on machines with a large GPE space. ACPICA 4680253690Sjkimbugzilla 4681218590Sjkim884. Lin Ming. Suggestion from Joe Liu. 4682218590Sjkim 4683253690SjkimRemoved all use of the highly unreliable FADT revision field. The 4684253690Sjkimrevision 4685241973Sjkimnumber in the FADT has been found to be completely unreliable and cannot 4686241973Sjkimbe 4687241973Sjkimtrusted. Only the actual table length can be used to infer the version. 4688241973SjkimThis 4689253690Sjkimchange updates the ACPICA core and the disassembler so that both no 4690253690Sjkimlonger 4691218590Sjkimeven look at the FADT version and instead depend solely upon the FADT 4692218590Sjkimlength. 4693218590Sjkim 4694218590SjkimFix an unresolved name issue for the no-debug and no-error-message source 4695241973Sjkimgeneration cases. The _AcpiModuleName was left undefined in these cases, 4696241973Sjkimbut 4697218590Sjkimit is actually needed as a parameter to some interfaces. Define 4698218590Sjkim_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 4699218590Sjkim 4700218590SjkimSplit several large files (makefiles and project files updated) 4701218590Sjkim utglobal.c -> utdecode.c 4702218590Sjkim dbcomds.c -> dbmethod.c dbnames.c 4703218590Sjkim dsopcode.c -> dsargs.c dscontrol.c 4704218590Sjkim dsload.c -> dsload2.c 4705218590Sjkim aslanalyze.c -> aslbtypes.c aslwalks.c 4706218590Sjkim 4707218590SjkimExample Code and Data Size: These are the sizes for the OS-independent 4708218590Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4709241973Sjkimdebug version of the code includes the debug output trace mechanism and 4710241973Sjkimhas 4711218590Sjkima much larger code and data size. 4712218590Sjkim 4713218590Sjkim Previous Release (VC 9.0): 4714218590Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4715218590Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4716218590Sjkim Current Release (VC 9.0): 4717218590Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4718218590Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4719218590Sjkim 4720218590Sjkim2) iASL Compiler/Disassembler and Tools: 4721218590Sjkim 4722218590SjkimiASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 4723218590SjkimThese are useful C-style macros with the standard definitions. ACPICA 4724218590Sjkimbugzilla 898. 4725218590Sjkim 4726241973SjkimiASL/DTC: Added support for integer expressions and labels. Support for 4727241973Sjkimfull 4728241973Sjkimexpressions for all integer fields in all ACPI tables. Support for labels 4729241973Sjkimin 4730218590Sjkim"generic" portions of tables such as UEFI. See the iASL reference manual. 4731218590Sjkim 4732218590SjkimDebugger: Added a command to display the status of global handlers. The 4733218590Sjkim"handlers" command will display op region, fixed event, and miscellaneous 4734241973Sjkimglobal handlers. installation status -- and for op regions, whether 4735241973Sjkimdefault 4736218590Sjkimor user-installed handler will be used. 4737218590Sjkim 4738253690SjkimiASL: Warn if reserved method incorrectly returns a value. Many 4739253690Sjkimpredefined 4740241973Sjkimnames are defined such that they do not return a value. If implemented as 4741241973Sjkima 4742218590Sjkimmethod, issue a warning if such a name explicitly returns a value. ACPICA 4743218590SjkimBugzilla 855. 4744218590Sjkim 4745241973SjkimiASL: Added detection of GPE method name conflicts. Detects a conflict 4746241973Sjkimwhere 4747241973Sjkimthere are two GPE methods of the form _Lxy and _Exy in the same scope. 4748241973Sjkim(For 4749218590Sjkimexample, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 4750218590Sjkim 4751218590SjkimiASL/DTC: Fixed a couple input scanner issues with comments and line 4752241973Sjkimnumbers. Comment remover could get confused and miss a comment ending. 4753241973SjkimFixed 4754218590Sjkima problem with line counter maintenance. 4755218590Sjkim 4756241973SjkimiASL/DTC: Reduced the severity of some errors from fatal to error. There 4757241973Sjkimis 4758218590Sjkimno need to abort on simple errors within a field definition. 4759218590Sjkim 4760241973SjkimDebugger: Simplified the output of the help command. All help output now 4761241973Sjkimin 4762218590Sjkima single screen, instead of help subcommands. ACPICA Bugzilla 897. 4763218590Sjkim 4764218590Sjkim---------------------------------------- 4765217365Sjkim12 January 2011. Summary of changes for version 20110112: 4766217365Sjkim 4767217365Sjkim1) ACPI CA Core Subsystem: 4768217365Sjkim 4769241973SjkimFixed a race condition between method execution and namespace walks that 4770241973Sjkimcan 4771217365Sjkimpossibly cause a fault. The problem was apparently introduced in version 4772253690Sjkim20100528 as a result of a performance optimization that reduces the 4773253690Sjkimnumber 4774241973Sjkimof 4775217365Sjkimnamespace walks upon method exit by using the delete_namespace_subtree 4776241973Sjkimfunction instead of the delete_namespace_by_owner function used 4777241973Sjkimpreviously. 4778217365SjkimBug is a missing namespace lock in the delete_namespace_subtree function. 4779217365Sjkimdana.myers@oracle.com 4780217365Sjkim 4781217365SjkimFixed several issues and a possible fault with the automatic "serialized" 4782241973Sjkimmethod support. History: This support changes a method to "serialized" on 4783241973Sjkimthe 4784217365Sjkimfly if the method generates an AE_ALREADY_EXISTS error, indicating the 4785253690Sjkimpossibility that it cannot handle reentrancy. This fix repairs a couple 4786253690Sjkimof 4787217365Sjkimissues seen in the field, especially on machines with many cores: 4788217365Sjkim 4789217365Sjkim 1) Delete method children only upon the exit of the last thread, 4790217365Sjkim so as to not delete objects out from under other running threads 4791217365Sjkim (and possibly causing a fault.) 4792217365Sjkim 2) Set the "serialized" bit for the method only upon the exit of the 4793217365Sjkim Last thread, so as to not cause deadlock when running threads 4794217365Sjkim attempt to exit. 4795217365Sjkim 3) Cleanup the use of the AML "MethodFlags" and internal method flags 4796217365Sjkim so that there is no longer any confusion between the two. 4797217365Sjkim 4798217365Sjkim Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 4799217365Sjkim 4800241973SjkimDebugger: Now lock the namespace for duration of a namespace dump. 4801241973SjkimPrevents 4802217365Sjkimissues if the namespace is changing dynamically underneath the debugger. 4803217365SjkimEspecially affects temporary namespace nodes, since the debugger displays 4804217365Sjkimthese also. 4805217365Sjkim 4806217365SjkimUpdated the ordering of include files. The ACPICA headers should appear 4807241973Sjkimbefore any compiler-specific headers (stdio.h, etc.) so that acenv.h can 4808241973Sjkimset 4809241973Sjkimany necessary compiler-specific defines, etc. Affects the ACPI-related 4810241973Sjkimtools 4811217365Sjkimand utilities. 4812217365Sjkim 4813241973SjkimUpdated all ACPICA copyrights and signons to 2011. Added the 2011 4814241973Sjkimcopyright 4815241973Sjkimto all module headers and signons, including the Linux header. This 4816241973Sjkimaffects 4817217365Sjkimvirtually every file in the ACPICA core subsystem, iASL compiler, and all 4818217365Sjkimutilities. 4819217365Sjkim 4820217365SjkimAdded project files for MS Visual Studio 2008 (VC++ 9.0). The original 4821241973Sjkimproject files for VC++ 6.0 are now obsolete. New project files can be 4822241973Sjkimfound 4823217365Sjkimunder acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 4824217365Sjkimdetails. 4825217365Sjkim 4826217365SjkimExample Code and Data Size: These are the sizes for the OS-independent 4827217365Sjkimacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4828241973Sjkimdebug version of the code includes the debug output trace mechanism and 4829241973Sjkimhas a 4830217365Sjkimmuch larger code and data size. 4831217365Sjkim 4832217365Sjkim Previous Release (VC 6.0): 4833217365Sjkim Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4834217365Sjkim Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4835217365Sjkim Current Release (VC 9.0): 4836217365Sjkim Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 4837217365Sjkim Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 4838217365Sjkim 4839217365Sjkim2) iASL Compiler/Disassembler and Tools: 4840217365Sjkim 4841241973SjkimiASL: Added generic data types to the Data Table compiler. Add "generic" 4842241973Sjkimdata 4843253690Sjkimtypes such as UINT32, String, Unicode, etc., to simplify the generation 4844253690Sjkimof 4845217365Sjkimplatform-defined tables such as UEFI. Lin Ming. 4846217365Sjkim 4847241973SjkimiASL: Added listing support for the Data Table Compiler. Adds listing 4848241973Sjkimsupport 4849217365Sjkim(-l) to display actual binary output for each line of input code. 4850217365Sjkim 4851217365Sjkim---------------------------------------- 4852216471Sjkim09 December 2010. Summary of changes for version 20101209: 4853216471Sjkim 4854216471Sjkim1) ACPI CA Core Subsystem: 4855216471Sjkim 4856241973SjkimCompleted the major overhaul of the GPE support code that was begun in 4857241973SjkimJuly 4858216471Sjkim2010. Major features include: removal of _PRW execution in ACPICA (host 4859216471Sjkimexecutes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 4860241973Sjkimchanges to existing interfaces, simplification of GPE handler operation, 4861241973Sjkimand 4862216471Sjkima handful of new interfaces: 4863216471Sjkim 4864216471Sjkim AcpiUpdateAllGpes 4865216471Sjkim AcpiFinishGpe 4866216471Sjkim AcpiSetupGpeForWake 4867216471Sjkim AcpiSetGpeWakeMask 4868216471Sjkim One new file, evxfgpe.c to consolidate all external GPE interfaces. 4869216471Sjkim 4870216471SjkimSee the ACPICA Programmer Reference for full details and programming 4871253690Sjkiminformation. See the new section 4.4 "General Purpose Event (GPE) 4872253690SjkimSupport" 4873241973Sjkimfor a full overview, and section 8.7 "ACPI General Purpose Event 4874241973SjkimManagement" 4875253690Sjkimfor programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 4876253690SjkimMing, 4877216471SjkimBob Moore, Rafael Wysocki. 4878216471Sjkim 4879241973SjkimImplemented a new GPE feature for Windows compatibility, the "Implicit 4880241973SjkimWake 4881253690SjkimGPE Notify". This feature will automatically issue a Notify(2) on a 4882253690Sjkimdevice 4883216471Sjkimwhen a Wake GPE is received if there is no corresponding GPE method or 4884216471Sjkimhandler. ACPICA BZ 870. 4885216471Sjkim 4886241973SjkimFixed a problem with the Scope() operator during table parse and load 4887241973Sjkimphase. 4888241973SjkimDuring load phase (table load or method execution), the scope operator 4889241973Sjkimshould 4890241973Sjkimnot enter the target into the namespace. Instead, it should open a new 4891241973Sjkimscope 4892216471Sjkimat the target location. Linux BZ 19462, ACPICA BZ 882. 4893216471Sjkim 4894216471SjkimExample Code and Data Size: These are the sizes for the OS-independent 4895216471Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4896241973Sjkimdebug version of the code includes the debug output trace mechanism and 4897241973Sjkimhas a 4898216471Sjkimmuch larger code and data size. 4899216471Sjkim 4900216471Sjkim Previous Release: 4901216471Sjkim Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 4902216471Sjkim Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 4903216471Sjkim Current Release: 4904216471Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4905216471Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4906216471Sjkim 4907216471Sjkim2) iASL Compiler/Disassembler and Tools: 4908216471Sjkim 4909241973SjkimiASL: Relax the alphanumeric restriction on _CID strings. These strings 4910241973Sjkimare 4911241973Sjkim"bus-specific" per the ACPI specification, and therefore any characters 4912241973Sjkimare 4913241973Sjkimacceptable. The only checks that can be performed are for a null string 4914241973Sjkimand 4915216471Sjkimperhaps for a leading asterisk. ACPICA BZ 886. 4916216471Sjkim 4917216471SjkimiASL: Fixed a problem where a syntax error that caused a premature EOF 4918216471Sjkimcondition on the source file emitted a very confusing error message. The 4919216471Sjkimpremature EOF is now detected correctly. ACPICA BZ 891. 4920216471Sjkim 4921241973SjkimDisassembler: Decode the AccessSize within a Generic Address Structure 4922241973Sjkim(byte 4923216471Sjkimaccess, word access, etc.) Note, this field does not allow arbitrary bit 4924216471Sjkimaccess, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 4925216471Sjkim 4926241973SjkimNew: AcpiNames utility - Example namespace dump utility. Shows an example 4927241973Sjkimof 4928216471SjkimACPICA configuration for a minimal namespace dump utility. Uses table and 4929253690Sjkimnamespace managers, but no AML interpreter. Does not add any 4930253690Sjkimfunctionality 4931216471Sjkimover AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 4932216471Sjkimpartition and configure ACPICA. ACPICA BZ 883. 4933216471Sjkim 4934241973SjkimAML Debugger: Increased the debugger buffer size for method return 4935241973Sjkimobjects. 4936253690SjkimWas 4K, increased to 16K. Also enhanced error messages for debugger 4937253690Sjkimmethod 4938216471Sjkimexecution, including the buffer overflow case. 4939216471Sjkim 4940216471Sjkim---------------------------------------- 4941213806Sjkim13 October 2010. Summary of changes for version 20101013: 4942213806Sjkim 4943213806Sjkim1) ACPI CA Core Subsystem: 4944213806Sjkim 4945241973SjkimAdded support to clear the PCIEXP_WAKE event. When clearing ACPI events, 4946241973Sjkimnow 4947213806Sjkimclear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 4948213806SjkimHwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 4949213806Sjkim 4950241973SjkimChanged the type of the predefined namespace object _TZ from ThermalZone 4951241973Sjkimto 4952253690SjkimDevice. This was found to be confusing to the host software that 4953253690Sjkimprocesses 4954253690Sjkimthe various thermal zones, since _TZ is not really a ThermalZone. 4955253690SjkimHowever, 4956241973Sjkima 4957213806SjkimNotify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 4958213806SjkimZhang. 4959213806Sjkim 4960213806SjkimAdded Windows Vista SP2 to the list of supported _OSI strings. The actual 4961213806Sjkimstring is "Windows 2006 SP2". 4962213806Sjkim 4963241973SjkimEliminated duplicate code in AcpiUtExecute* functions. Now that the 4964241973Sjkimnsrepair 4965213806Sjkimcode automatically repairs _HID-related strings, this type of code is no 4966253690Sjkimlonger needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 4967253690Sjkim878. 4968213806Sjkim 4969213806SjkimExample Code and Data Size: These are the sizes for the OS-independent 4970213806Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4971241973Sjkimdebug version of the code includes the debug output trace mechanism and 4972241973Sjkimhas a 4973213806Sjkimmuch larger code and data size. 4974213806Sjkim 4975213806Sjkim Previous Release: 4976213806Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4977213806Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4978213806Sjkim Current Release: 4979213806Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 4980213806Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 4981213806Sjkim 4982213806Sjkim2) iASL Compiler/Disassembler and Tools: 4983213806Sjkim 4984253690SjkimiASL: Implemented additional compile-time validation for _HID strings. 4985253690SjkimThe 4986253690Sjkimnon-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 4987253690Sjkimlength 4988241973Sjkimof 4989241973Sjkimthe string must be exactly seven or eight characters. For both _HID and 4990241973Sjkim_CID 4991213806Sjkimstrings, all characters must be alphanumeric. ACPICA BZ 874. 4992213806Sjkim 4993213806SjkimiASL: Allow certain "null" resource descriptors. Some BIOS code creates 4994241973Sjkimdescriptors that are mostly or all zeros, with the expectation that they 4995241973Sjkimwill 4996241973Sjkimbe filled in at runtime. iASL now allows this as long as there is a 4997241973Sjkim"resource 4998213806Sjkimtag" (name) associated with the descriptor, which gives the ASL a handle 4999213806Sjkimneeded to modify the descriptor. ACPICA BZ 873. 5000213806Sjkim 5001253690SjkimAdded single-thread support to the generic Unix application OSL. 5002253690SjkimPrimarily 5003253690Sjkimfor iASL support, this change removes the use of semaphores in the 5004253690Sjkimsingle- 5005213806Sjkimthreaded ACPICA tools/applications - increasing performance. The 5006213806Sjkim_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5007213806Sjkimoption. ACPICA BZ 879. 5008213806Sjkim 5009241973SjkimAcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5010241973Sjkimsupport 5011213806Sjkimfor 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5012213806Sjkim 5013213806SjkimiASL: Moved all compiler messages to a new file, aslmessages.h. 5014213806Sjkim 5015213806Sjkim---------------------------------------- 5016212761Sjkim15 September 2010. Summary of changes for version 20100915: 5017212761Sjkim 5018212761Sjkim1) ACPI CA Core Subsystem: 5019212761Sjkim 5020241973SjkimRemoved the AcpiOsDerivePciId OSL interface. The various host 5021241973Sjkimimplementations 5022212761Sjkimof this function were not OS-dependent and are now obsolete and can be 5023212761Sjkimremoved from all host OSLs. This function has been replaced by 5024212761SjkimAcpiHwDerivePciId, which is now part of the ACPICA core code. 5025212761SjkimAcpiHwDerivePciId has been implemented without recursion. Adds one new 5026212761Sjkimmodule, hwpci.c. ACPICA BZ 857. 5027212761Sjkim 5028212761SjkimImplemented a dynamic repair for _HID and _CID strings. The following 5029212761Sjkimproblems are now repaired at runtime: 1) Remove a leading asterisk in the 5030212761Sjkimstring, and 2) the entire string is uppercased. Both repairs are in 5031253690Sjkimaccordance with the ACPI specification and will simplify host driver 5032253690Sjkimcode. 5033212761SjkimACPICA BZ 871. 5034212761Sjkim 5035212761SjkimThe ACPI_THREAD_ID type is no longer configurable, internally it is now 5036241973Sjkimalways UINT64. This simplifies the ACPICA code, especially any printf 5037241973Sjkimoutput. 5038212761SjkimUINT64 is the only common data type for all thread_id types across all 5039241973Sjkimoperating systems. It is now up to the host OSL to cast the native 5040241973Sjkimthread_id 5041241973Sjkimtype to UINT64 before returning the value to ACPICA (via 5042241973SjkimAcpiOsGetThreadId). 5043212761SjkimLin Ming, Bob Moore. 5044212761Sjkim 5045241973SjkimAdded the ACPI_INLINE type to enhance the ACPICA configuration. The 5046241973Sjkim"inline" 5047241973Sjkimkeyword is not standard across compilers, and this type allows inline to 5048241973Sjkimbe 5049212761Sjkimconfigured on a per-compiler basis. Lin Ming. 5050212761Sjkim 5051253690SjkimMade the system global AcpiGbl_SystemAwakeAndRunning publically 5052253690Sjkimavailable. 5053241973SjkimAdded an extern for this boolean in acpixf.h. Some hosts utilize this 5054241973Sjkimvalue 5055212761Sjkimduring suspend/restore operations. ACPICA BZ 869. 5056212761Sjkim 5057241973SjkimAll code that implements error/warning messages with the "ACPI:" prefix 5058241973Sjkimhas 5059212761Sjkimbeen moved to a new module, utxferror.c. 5060212761Sjkim 5061241973SjkimThe UINT64_OVERLAY was moved to utmath.c, which is the only module where 5062241973Sjkimit 5063212761Sjkimis used. ACPICA BZ 829. Lin Ming, Bob Moore. 5064212761Sjkim 5065212761SjkimExample Code and Data Size: These are the sizes for the OS-independent 5066212761Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5067241973Sjkimdebug version of the code includes the debug output trace mechanism and 5068241973Sjkimhas a 5069212761Sjkimmuch larger code and data size. 5070212761Sjkim 5071212761Sjkim Previous Release: 5072212761Sjkim Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5073212761Sjkim Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5074212761Sjkim Current Release: 5075212761Sjkim Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5076212761Sjkim Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5077212761Sjkim 5078212761Sjkim2) iASL Compiler/Disassembler and Tools: 5079212761Sjkim 5080253690SjkimiASL/Disassembler: Write ACPI errors to stderr instead of the output 5081253690Sjkimfile. 5082241973SjkimThis keeps the output files free of random error messages that may 5083241973Sjkimoriginate 5084253690Sjkimfrom within the namespace/interpreter code. Used this opportunity to 5085253690Sjkimmerge 5086212761Sjkimall ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5087212761Sjkim866. Lin Ming, Bob Moore. 5088212761Sjkim 5089241973SjkimTools: update some printfs for ansi warnings on size_t. Handle width 5090241973Sjkimchange 5091212761Sjkimof size_t on 32-bit versus 64-bit generations. Lin Ming. 5092212761Sjkim 5093212761Sjkim---------------------------------------- 5094210976Sjkim06 August 2010. Summary of changes for version 20100806: 5095210976Sjkim 5096210976Sjkim1) ACPI CA Core Subsystem: 5097210976Sjkim 5098241973SjkimDesigned and implemented a new host interface to the _OSI support code. 5099241973SjkimThis 5100253690Sjkimwill allow the host to dynamically add or remove multiple _OSI strings, 5101253690Sjkimas 5102241973Sjkimwell as install an optional handler that is called for each _OSI 5103241973Sjkiminvocation. 5104241973SjkimAlso added a new AML debugger command, 'osi' to display and modify the 5105241973Sjkimglobal 5106241973Sjkim_OSI string table, and test support in the AcpiExec utility. See the 5107241973SjkimACPICA 5108210976Sjkimreference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5109210976SjkimNew Functions: 5110210976Sjkim AcpiInstallInterface - Add an _OSI string. 5111210976Sjkim AcpiRemoveInterface - Delete an _OSI string. 5112210976Sjkim AcpiInstallInterfaceHandler - Install optional _OSI handler. 5113210976SjkimObsolete Functions: 5114210976Sjkim AcpiOsValidateInterface - no longer used. 5115210976SjkimNew Files: 5116210976Sjkim source/components/utilities/utosi.c 5117210976Sjkim 5118210976SjkimRe-introduced the support to enable multi-byte transfers for Embedded 5119241973SjkimController (EC) operation regions. A reported problem was found to be a 5120241973Sjkimbug 5121241973Sjkimin the host OS, not in the multi-byte support. Previously, the maximum 5122241973Sjkimdata 5123241973Sjkimsize passed to the EC operation region handler was a single byte. There 5124241973Sjkimare 5125241973Sjkimoften EC Fields larger than one byte that need to be transferred, and it 5126241973Sjkimis 5127241973Sjkimuseful for the EC driver to lock these as a single transaction. This 5128241973Sjkimchange 5129210976Sjkimenables single transfers larger than 8 bits. This effectively changes the 5130210976Sjkimaccess to the EC space from ByteAcc to AnyAcc, and will probably require 5131241973Sjkimchanges to the host OS Embedded Controller driver to enable 16/32/64/256- 5132241973Sjkimbit 5133210976Sjkimtransfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5134210976Sjkim 5135210976SjkimFixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5136210976Sjkimprototype in acpiosxf.h had the output value pointer as a (void *). 5137210976SjkimIt should be a (UINT64 *). This may affect some host OSL code. 5138210976Sjkim 5139241973SjkimFixed a couple problems with the recently modified Linux makefiles for 5140241973SjkimiASL 5141210976Sjkimand AcpiExec. These new makefiles place the generated object files in the 5142241973Sjkimlocal directory so that there can be no collisions between the files that 5143241973Sjkimare 5144210976Sjkimshared between them that are compiled with different options. 5145210976Sjkim 5146210976SjkimExample Code and Data Size: These are the sizes for the OS-independent 5147210976Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5148241973Sjkimdebug version of the code includes the debug output trace mechanism and 5149241973Sjkimhas a 5150210976Sjkimmuch larger code and data size. 5151210976Sjkim 5152210976Sjkim Previous Release: 5153210976Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5154210976Sjkim Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5155210976Sjkim Current Release: 5156210976Sjkim Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5157210976Sjkim Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5158210976Sjkim 5159210976Sjkim2) iASL Compiler/Disassembler and Tools: 5160210976Sjkim 5161253690SjkimiASL/Disassembler: Added a new option (-da, "disassemble all") to load 5162253690Sjkimthe 5163210976Sjkimnamespace from and disassemble an entire group of AML files. Useful for 5164241973Sjkimloading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5165241973Sjkimand 5166210976Sjkimdisassembling with one simple command. ACPICA BZ 865. Lin Ming. 5167210976Sjkim 5168253690SjkimiASL: Allow multiple invocations of -e option. This change allows 5169253690Sjkimmultiple 5170241973Sjkimuses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5171241973Sjkim834. 5172210976SjkimLin Ming. 5173210976Sjkim 5174210976Sjkim---------------------------------------- 5175209746Sjkim02 July 2010. Summary of changes for version 20100702: 5176209746Sjkim 5177209746Sjkim1) ACPI CA Core Subsystem: 5178209746Sjkim 5179209746SjkimImplemented several updates to the recently added GPE reference count 5180241973Sjkimsupport. The model for "wake" GPEs is changing to give the host OS 5181241973Sjkimcomplete 5182241973Sjkimcontrol of these GPEs. Eventually, the ACPICA core will not execute any 5183241973Sjkim_PRW 5184241973Sjkimmethods, since the host already must execute them. Also, additional 5185241973Sjkimchanges 5186209746Sjkimwere made to help ensure that the reference counts are kept in proper 5187209746Sjkimsynchronization with reality. Rafael J. Wysocki. 5188209746Sjkim 5189209746Sjkim1) Ensure that GPEs are not enabled twice during initialization. 5190209746Sjkim2) Ensure that GPE enable masks stay in sync with the reference count. 5191209746Sjkim3) Do not inadvertently enable GPEs when writing GPE registers. 5192209746Sjkim4) Remove the internal wake reference counter and add new AcpiGpeWakeup 5193209746Sjkiminterface. This interface will set or clear individual GPEs for wakeup. 5194241973Sjkim5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5195241973Sjkiminterfaces 5196209746Sjkimare now used for "runtime" GPEs only. 5197209746Sjkim 5198253690SjkimChanged the behavior of the GPE install/remove handler interfaces. The 5199253690SjkimGPE 5200241973Sjkimis 5201241973Sjkimno longer disabled during this process, as it was found to cause problems 5202241973Sjkimon 5203209746Sjkimsome machines. Rafael J. Wysocki. 5204209746Sjkim 5205209746SjkimReverted a change introduced in version 20100528 to enable Embedded 5206241973SjkimController multi-byte transfers. This change was found to cause problems 5207241973Sjkimwith 5208209746SjkimIndex Fields and possibly Bank Fields. It will be reintroduced when these 5209209746Sjkimproblems have been resolved. 5210209746Sjkim 5211253690SjkimFixed a problem with references to Alias objects within Package Objects. 5212253690SjkimA 5213209746Sjkimreference to an Alias within the definition of a Package was not always 5214253690Sjkimresolved properly. Aliases to objects like Processors, Thermal zones, 5215253690Sjkimetc. 5216253690Sjkimwere resolved to the actual object instead of a reference to the object 5217253690Sjkimas 5218241973Sjkimit 5219209746Sjkimshould be. Package objects are only allowed to contain integer, string, 5220209746Sjkimbuffer, package, and reference objects. Redhat bugzilla 608648. 5221209746Sjkim 5222209746SjkimExample Code and Data Size: These are the sizes for the OS-independent 5223209746Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5224241973Sjkimdebug version of the code includes the debug output trace mechanism and 5225241973Sjkimhas a 5226209746Sjkimmuch larger code and data size. 5227209746Sjkim 5228209746Sjkim Previous Release: 5229209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5230209746Sjkim Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5231209746Sjkim Current Release: 5232209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5233209746Sjkim Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5234209746Sjkim 5235209746Sjkim2) iASL Compiler/Disassembler and Tools: 5236209746Sjkim 5237209746SjkimiASL: Implemented a new compiler subsystem to allow definition and 5238241973Sjkimcompilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5239241973SjkimThese 5240209746Sjkimare called "ACPI Data Tables", and the new compiler is the "Data Table 5241209746SjkimCompiler". This compiler is intended to simplify the existing error-prone 5242209746Sjkimprocess of creating these tables for the BIOS, as well as allowing the 5243241973Sjkimdisassembly, modification, recompilation, and override of existing ACPI 5244241973Sjkimdata 5245209746Sjkimtables. See the iASL User Guide for detailed information. 5246209746Sjkim 5247241973SjkimiASL: Implemented a new Template Generator option in support of the new 5248241973SjkimData 5249209746SjkimTable Compiler. This option will create examples of all known ACPI tables 5250209746Sjkimthat can be used as the basis for table development. See the iASL 5251209746Sjkimdocumentation and the -T option. 5252209746Sjkim 5253209746SjkimDisassembler and headers: Added support for the WDDT ACPI table (Watchdog 5254209746SjkimDescriptor Table). 5255209746Sjkim 5256209746SjkimUpdated the Linux makefiles for iASL and AcpiExec to place the generated 5257209746Sjkimobject files in the local directory so that there can be no collisions 5258209746Sjkimbetween the shared files between them that are generated with different 5259209746Sjkimoptions. 5260209746Sjkim 5261253690SjkimAdded support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5262253690SjkimUse 5263209746Sjkimthe #define __APPLE__ to enable this support. 5264209746Sjkim 5265209746Sjkim---------------------------------------- 5266209746Sjkim28 May 2010. Summary of changes for version 20100528: 5267209746Sjkim 5268209746SjkimNote: The ACPI 4.0a specification was released on April 5, 2010 and is 5269209746Sjkimavailable at www.acpi.info. This is primarily an errata release. 5270209746Sjkim 5271209746Sjkim1) ACPI CA Core Subsystem: 5272209746Sjkim 5273241973SjkimUndefined ACPI tables: We are looking for the definitions for the 5274241973Sjkimfollowing 5275209746SjkimACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5276209746Sjkim 5277253690SjkimImplemented support to enable multi-byte transfers for Embedded 5278253690SjkimController 5279253690Sjkim(EC) operation regions. Previously, the maximum data size passed to the 5280253690SjkimEC 5281241973Sjkimoperation region handler was a single byte. There are often EC Fields 5282241973Sjkimlarger 5283241973Sjkimthan one byte that need to be transferred, and it is useful for the EC 5284241973Sjkimdriver 5285241973Sjkimto lock these as a single transaction. This change enables single 5286241973Sjkimtransfers 5287241973Sjkimlarger than 8 bits. This effectively changes the access to the EC space 5288241973Sjkimfrom 5289241973SjkimByteAcc to AnyAcc, and will probably require changes to the host OS 5290241973SjkimEmbedded 5291241973SjkimController driver to enable 16/32/64/256-bit transfers in addition to 8- 5292241973Sjkimbit 5293209746Sjkimtransfers. Alexey Starikovskiy, Lin Ming 5294209746Sjkim 5295241973SjkimImplemented a performance enhancement for namespace search and access. 5296241973SjkimThis 5297241973Sjkimchange enhances the performance of namespace searches and walks by adding 5298241973Sjkima 5299241973Sjkimbackpointer to the parent in each namespace node. On large namespaces, 5300241973Sjkimthis 5301241973Sjkimchange can improve overall ACPI performance by up to 9X. Adding a pointer 5302241973Sjkimto 5303241973Sjkimeach namespace node increases the overall size of the internal namespace 5304241973Sjkimby 5305209746Sjkimabout 5%, since each namespace entry usually consists of both a namespace 5306209746Sjkimnode and an ACPI operand object. However, this is the first growth of the 5307209746Sjkimnamespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5308209746Sjkim 5309241973SjkimImplemented a performance optimization that reduces the number of 5310241973Sjkimnamespace 5311241973Sjkimwalks. On control method exit, only walk the namespace if the method is 5312241973Sjkimknown 5313241973Sjkimto have created namespace objects outside of its local scope. Previously, 5314241973Sjkimthe 5315241973Sjkimentire namespace was traversed on each control method exit. This change 5316241973Sjkimcan 5317241973Sjkimimprove overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5318241973SjkimMoore. 5319209746Sjkim 5320241973SjkimAdded support to truncate I/O addresses to 16 bits for Windows 5321241973Sjkimcompatibility. 5322209746SjkimSome ASL code has been seen in the field that inadvertently has bits set 5323253690Sjkimabove bit 15. This feature is optional and is enabled if the BIOS 5324253690Sjkimrequests 5325209746Sjkimany Windows OSI strings. It can also be enabled by the host OS. Matthew 5326209746SjkimGarrett, Bob Moore. 5327209746Sjkim 5328209746SjkimAdded support to limit the maximum time for the ASL Sleep() operator. To 5329209746Sjkimprevent accidental deep sleeps, limit the maximum time that Sleep() will 5330209746Sjkimactually sleep. Configurable, the default maximum is two seconds. ACPICA 5331209746Sjkimbugzilla 854. 5332209746Sjkim 5333241973SjkimAdded run-time validation support for the _WDG and_WED Microsoft 5334241973Sjkimpredefined 5335241973Sjkimmethods. These objects are defined by "Windows Instrumentation", and are 5336241973Sjkimnot 5337209746Sjkimpart of the ACPI spec. ACPICA BZ 860. 5338209746Sjkim 5339209746SjkimExpanded all statistic counters used during namespace and device 5340241973Sjkiminitialization from 16 to 32 bits in order to support very large 5341241973Sjkimnamespaces. 5342209746Sjkim 5343241973SjkimReplaced all instances of %d in printf format specifiers with %u since 5344241973Sjkimnearly 5345209746Sjkimall integers in ACPICA are unsigned. 5346209746Sjkim 5347241973SjkimFixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5348241973Sjkimreturned 5349209746Sjkimas AE_NO_HANDLER. 5350209746Sjkim 5351209746SjkimExample Code and Data Size: These are the sizes for the OS-independent 5352209746Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5353241973Sjkimdebug version of the code includes the debug output trace mechanism and 5354241973Sjkimhas a 5355209746Sjkimmuch larger code and data size. 5356209746Sjkim 5357209746Sjkim Previous Release: 5358209746Sjkim Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5359209746Sjkim Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5360209746Sjkim Current Release: 5361209746Sjkim Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5362209746Sjkim Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5363209746Sjkim 5364209746Sjkim2) iASL Compiler/Disassembler and Tools: 5365209746Sjkim 5366209746SjkimiASL: Added compiler support for the _WDG and_WED Microsoft predefined 5367241973Sjkimmethods. These objects are defined by "Windows Instrumentation", and are 5368241973Sjkimnot 5369209746Sjkimpart of the ACPI spec. ACPICA BZ 860. 5370209746Sjkim 5371209746SjkimAcpiExec: added option to disable the memory tracking mechanism. The -dt 5372209746Sjkimoption will disable the tracking mechanism, which improves performance 5373209746Sjkimconsiderably. 5374209746Sjkim 5375209746SjkimAcpiExec: Restructured the command line options into -d (disable) and -e 5376209746Sjkim(enable) options. 5377209746Sjkim 5378209746Sjkim---------------------------------------- 5379207344Sjkim28 April 2010. Summary of changes for version 20100428: 5380207344Sjkim 5381207344Sjkim1) ACPI CA Core Subsystem: 5382207344Sjkim 5383207344SjkimImplemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5384241973Sjkimincluding FADT-based and GPE Block Devices, execute any _PRW methods in 5385241973Sjkimthe 5386207344Sjkimnew table, and process any _Lxx/_Exx GPE methods in the new table. Any 5387207344Sjkimruntime GPE that is referenced by an _Lxx/_Exx method in the new table is 5388207344Sjkimimmediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5389207344SjkimDevices. Provides compatibility with other ACPI implementations. Two new 5390241973Sjkimfiles added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5391241973SjkimMoore. 5392207344Sjkim 5393253690SjkimFixed a regression introduced in version 20100331 within the table 5394253690Sjkimmanager 5395253690Sjkimwhere initial table loading could fail. This was introduced in the fix 5396253690Sjkimfor 5397253690SjkimAcpiReallocateRootTable. Also, renamed some of fields in the table 5398253690Sjkimmanager 5399207344Sjkimdata structures to clarify their meaning and use. 5400207344Sjkim 5401207344SjkimFixed a possible allocation overrun during internal object copy in 5402241973SjkimAcpiUtCopySimpleObject. The original code did not correctly handle the 5403241973Sjkimcase 5404241973Sjkimwhere the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5405241973Sjkim847. 5406207344Sjkim 5407207344SjkimUpdated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5408241973Sjkimpossible access beyond end-of-allocation. Also, now fully validate 5409241973Sjkimdescriptor 5410207344Sjkim(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5411207344Sjkim 5412207344SjkimExample Code and Data Size: These are the sizes for the OS-independent 5413207344Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5414241973Sjkimdebug version of the code includes the debug output trace mechanism and 5415241973Sjkimhas a 5416207344Sjkimmuch larger code and data size. 5417207344Sjkim 5418207344Sjkim Previous Release: 5419207344Sjkim Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5420207344Sjkim Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5421207344Sjkim Current Release: 5422207344Sjkim Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5423207344Sjkim Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5424207344Sjkim 5425207344Sjkim2) iASL Compiler/Disassembler and Tools: 5426207344Sjkim 5427207344SjkimiASL: Implemented Min/Max/Len/Gran validation for address resource 5428253690Sjkimdescriptors. This change implements validation for the address fields 5429253690Sjkimthat 5430207344Sjkimare common to all address-type resource descriptors. These checks are 5431207344Sjkimimplemented: Checks for valid Min/Max, length within the Min/Max window, 5432253690Sjkimvalid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5433253690Sjkimper 5434241973Sjkimtable 6-40 in the ACPI 4.0a specification. Also split the large 5435241973Sjkimaslrestype1.c 5436207344Sjkimand aslrestype2.c files into five new files. ACPICA BZ 840. 5437207344Sjkim 5438241973SjkimiASL: Added support for the _Wxx predefined names. This support was 5439241973Sjkimmissing 5440207344Sjkimand these names were not recognized by the compiler as valid predefined 5441207344Sjkimnames. ACPICA BZ 851. 5442207344Sjkim 5443241973SjkimiASL: Added an error for all predefined names that are defined to return 5444241973Sjkimno 5445241973Sjkimvalue and thus must be implemented as Control Methods. These include all 5446241973Sjkimof 5447207344Sjkimthe _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5448207344Sjkimnames such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5449207344Sjkim 5450253690SjkimiASL: Implemented the -ts option to emit hex AML data in ASL format, as 5451253690Sjkiman 5452241973SjkimASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5453241973Sjkimbe 5454253690Sjkimdynamically loaded via the Load() operator. Also cleaned up output for 5455253690Sjkimthe 5456241973Sjkim- 5457207344Sjkimta and -tc options. ACPICA BZ 853. 5458207344Sjkim 5459207344SjkimTests: Added a new file with examples of extended iASL error checking. 5460207344SjkimDemonstrates the advanced error checking ability of the iASL compiler. 5461207344SjkimAvailable at tests/misc/badcode.asl. 5462207344Sjkim 5463207344Sjkim---------------------------------------- 5464206117Sjkim31 March 2010. Summary of changes for version 20100331: 5465206117Sjkim 5466206117Sjkim1) ACPI CA Core Subsystem: 5467206117Sjkim 5468241973SjkimCompleted a major update for the GPE support in order to improve support 5469241973Sjkimfor 5470241973Sjkimshared GPEs and to simplify both host OS and ACPICA code. Added a 5471241973Sjkimreference 5472241973Sjkimcount mechanism to support shared GPEs that require multiple device 5473241973Sjkimdrivers. 5474206117SjkimSeveral external interfaces have changed. One external interface has been 5475206117Sjkimremoved. One new external interface was added. Most of the GPE external 5476206117Sjkiminterfaces now use the GPE spinlock instead of the events mutex (and the 5477253690SjkimFlags parameter for many GPE interfaces has been removed.) See the 5478253690Sjkimupdated 5479241973SjkimACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 5480241973SjkimRafael 5481206117SjkimWysocki. ACPICA BZ 831. 5482206117Sjkim 5483206117SjkimChanged: 5484206117Sjkim AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 5485206117SjkimRemoved: 5486206117Sjkim AcpiSetGpeType 5487206117SjkimNew: 5488206117Sjkim AcpiSetGpe 5489206117Sjkim 5490241973SjkimImplemented write support for DataTable operation regions. These regions 5491241973Sjkimare 5492241973Sjkimdefined via the DataTableRegion() operator. Previously, only read support 5493241973Sjkimwas 5494241973Sjkimimplemented. The ACPI specification allows DataTableRegions to be 5495241973Sjkimread/write, 5496206117Sjkimhowever. 5497206117Sjkim 5498206117SjkimImplemented a new subsystem option to force a copy of the DSDT to local 5499253690Sjkimmemory. Optionally copy the entire DSDT to local memory (instead of 5500253690Sjkimsimply 5501241973Sjkimmapping it.) There are some (albeit very rare) BIOSs that corrupt or 5502241973Sjkimreplace 5503253690Sjkimthe original DSDT, creating the need for this option. Default is FALSE, 5504253690Sjkimdo 5505206117Sjkimnot copy the DSDT. 5506206117Sjkim 5507206117SjkimImplemented detection of a corrupted or replaced DSDT. This change adds 5508241973Sjkimsupport to detect a DSDT that has been corrupted and/or replaced from 5509241973Sjkimoutside 5510241973Sjkimthe OS (by firmware). This is typically catastrophic for the system, but 5511241973Sjkimhas 5512206117Sjkimbeen seen on some machines. Once this problem has been detected, the DSDT 5513206117Sjkimcopy option can be enabled via system configuration. Lin Ming, Bob Moore. 5514206117Sjkim 5515241973SjkimFixed two problems with AcpiReallocateRootTable during the root table 5516241973Sjkimcopy. 5517206117SjkimWhen copying the root table to the new allocation, the length used was 5518241973Sjkimincorrect. The new size was used instead of the current table size, 5519241973Sjkimmeaning 5520241973Sjkimtoo much data was copied. Also, the count of available slots for ACPI 5521241973Sjkimtables 5522206117Sjkimwas not set correctly. Alexey Starikovskiy, Bob Moore. 5523206117Sjkim 5524206117SjkimExample Code and Data Size: These are the sizes for the OS-independent 5525206117Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5526241973Sjkimdebug version of the code includes the debug output trace mechanism and 5527241973Sjkimhas a 5528206117Sjkimmuch larger code and data size. 5529206117Sjkim 5530206117Sjkim Previous Release: 5531206117Sjkim Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5532206117Sjkim Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5533206117Sjkim Current Release: 5534206117Sjkim Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5535206117Sjkim Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5536206117Sjkim 5537206117Sjkim2) iASL Compiler/Disassembler and Tools: 5538206117Sjkim 5539206117SjkimiASL: Implement limited typechecking for values returned from predefined 5540206117Sjkimcontrol methods. The type of any returned static (unnamed) object is now 5541206117Sjkimvalidated. For example, Return(1). ACPICA BZ 786. 5542206117Sjkim 5543241973SjkimiASL: Fixed a predefined name object verification regression. Fixes a 5544241973Sjkimproblem 5545206117Sjkimintroduced in version 20100304. An error is incorrectly generated if a 5546206117Sjkimpredefined name is declared as a static named object with a value defined 5547206117Sjkimusing the keywords "Zero", "One", or "Ones". Lin Ming. 5548206117Sjkim 5549253690SjkimiASL: Added Windows 7 support for the -g option (get local ACPI tables) 5550253690Sjkimby 5551206117Sjkimreducing the requested registry access rights. ACPICA BZ 842. 5552206117Sjkim 5553241973SjkimDisassembler: fixed a possible fault when generating External() 5554241973Sjkimstatements. 5555253690SjkimIntroduced in commit ae7d6fd: Properly handle externals with parent- 5556253690Sjkimprefix 5557206117Sjkim(carat). Fixes a string length allocation calculation. Lin Ming. 5558206117Sjkim 5559206117Sjkim---------------------------------------- 5560204773Sjkim04 March 2010. Summary of changes for version 20100304: 5561204773Sjkim 5562204773Sjkim1) ACPI CA Core Subsystem: 5563204773Sjkim 5564204773SjkimFixed a possible problem with the AML Mutex handling function 5565204773SjkimAcpiExReleaseMutex where the function could fault under the very rare 5566241973Sjkimcondition when the interpreter has blocked, the interpreter lock is 5567241973Sjkimreleased, 5568204773Sjkimthe interpreter is then reentered via the same thread, and attempts to 5569241973Sjkimacquire an AML mutex that was previously acquired. FreeBSD report 140979. 5570241973SjkimLin 5571204773SjkimMing. 5572204773Sjkim 5573204773SjkimImplemented additional configuration support for the AML "Debug Object". 5574204773SjkimOutput from the debug object can now be enabled via a global variable, 5575241973SjkimAcpiGbl_EnableAmlDebugObject. This will assist with remote machine 5576241973Sjkimdebugging. 5577241973SjkimThis debug output is now available in the release version of ACPICA 5578241973Sjkiminstead 5579253690Sjkimof just the debug version. Also, the entire debug output module can now 5580253690Sjkimbe 5581204773Sjkimconfigured out of the ACPICA build if desired. One new file added, 5582204773Sjkimexecuter/exdebug.c. Lin Ming, Bob Moore. 5583204773Sjkim 5584204773SjkimAdded header support for the ACPI MCHI table (Management Controller Host 5585241973SjkimInterface Table). This table was added in ACPI 4.0, but the defining 5586241973Sjkimdocument 5587204773Sjkimhas only recently become available. 5588204773Sjkim 5589241973SjkimStandardized output of integer values for ACPICA warnings/errors. Always 5590241973Sjkimuse 5591241973Sjkim0x prefix for hex output, always use %u for unsigned integer decimal 5592241973Sjkimoutput. 5593253690SjkimAffects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 5594253690Sjkim400 5595204773Sjkiminvocations.) These invocations were converted from the original 5596204773SjkimACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 5597204773Sjkim 5598204773SjkimExample Code and Data Size: These are the sizes for the OS-independent 5599204773Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5600241973Sjkimdebug version of the code includes the debug output trace mechanism and 5601241973Sjkimhas a 5602204773Sjkimmuch larger code and data size. 5603204773Sjkim 5604204773Sjkim Previous Release: 5605204773Sjkim Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5606204773Sjkim Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5607204773Sjkim Current Release: 5608204773Sjkim Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5609204773Sjkim Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5610204773Sjkim 5611204773Sjkim2) iASL Compiler/Disassembler and Tools: 5612204773Sjkim 5613204773SjkimiASL: Implemented typechecking support for static (non-control method) 5614204773Sjkimpredefined named objects that are declared with the Name() operator. For 5615204773Sjkimexample, the type of this object is now validated to be of type Integer: 5616241973SjkimName(_BBN, 1). This change migrates the compiler to using the core 5617241973Sjkimpredefined 5618204773Sjkimname table instead of maintaining a local version. Added a new file, 5619204773Sjkimaslpredef.c. ACPICA BZ 832. 5620204773Sjkim 5621204773SjkimDisassembler: Added support for the ACPI 4.0 MCHI table. 5622204773Sjkim 5623204773Sjkim---------------------------------------- 5624202771Sjkim21 January 2010. Summary of changes for version 20100121: 5625202771Sjkim 5626202771Sjkim1) ACPI CA Core Subsystem: 5627202771Sjkim 5628202771SjkimAdded the 2010 copyright to all module headers and signons. This affects 5629202771Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, the 5630202771Sjkimtools/utilities, and the test suites. 5631202771Sjkim 5632241973SjkimImplemented a change to the AcpiGetDevices interface to eliminate 5633241973Sjkimunnecessary 5634202771Sjkiminvocations of the _STA method. In the case where a specific _HID is 5635202771Sjkimrequested, do not run _STA until a _HID match is found. This eliminates 5636241973Sjkimpotentially dozens of _STA calls during a search for a particular 5637241973Sjkimdevice/HID, 5638202771Sjkimwhich in turn can improve boot times. ACPICA BZ 828. Lin Ming. 5639202771Sjkim 5640241973SjkimImplemented an additional repair for predefined method return values. 5641241973SjkimAttempt 5642253690Sjkimto repair unexpected NULL elements within returned Package objects. 5643253690SjkimCreate 5644241973Sjkiman 5645241973SjkimInteger of value zero, a NULL String, or a zero-length Buffer as 5646241973Sjkimappropriate. 5647202771SjkimACPICA BZ 818. Lin Ming, Bob Moore. 5648202771Sjkim 5649241973SjkimRemoved the obsolete ACPI_INTEGER data type. This type was introduced as 5650241973Sjkimthe 5651241973Sjkimcode was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 5652241973Sjkim(with 5653241973Sjkim64-bit AML integers). It is now obsolete and this change removes it from 5654241973Sjkimthe 5655241973SjkimACPICA code base, replaced by UINT64. The original typedef has been 5656241973Sjkimretained 5657253690Sjkimfor now for compatibility with existing device driver code. ACPICA BZ 5658253690Sjkim824. 5659202771Sjkim 5660253690SjkimRemoved the unused UINT32_STRUCT type, and the obsolete Integer64 field 5661253690Sjkimin 5662202771Sjkimthe parse tree object. 5663202771Sjkim 5664241973SjkimAdded additional warning options for the gcc-4 generation. Updated the 5665241973Sjkimsource 5666241973Sjkimaccordingly. This includes some code restructuring to eliminate 5667241973Sjkimunreachable 5668253690Sjkimcode, elimination of some gotos, elimination of unused return values, 5669253690Sjkimsome 5670202771Sjkimadditional casting, and removal of redundant declarations. 5671202771Sjkim 5672202771SjkimExample Code and Data Size: These are the sizes for the OS-independent 5673202771Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5674241973Sjkimdebug version of the code includes the debug output trace mechanism and 5675241973Sjkimhas a 5676202771Sjkimmuch larger code and data size. 5677202771Sjkim 5678202771Sjkim Previous Release: 5679202771Sjkim Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5680202771Sjkim Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5681202771Sjkim Current Release: 5682202771Sjkim Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 5683202771Sjkim Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 5684202771Sjkim 5685202771Sjkim2) iASL Compiler/Disassembler and Tools: 5686202771Sjkim 5687202771SjkimNo functional changes for this release. 5688202771Sjkim 5689202771Sjkim---------------------------------------- 5690200553Sjkim14 December 2009. Summary of changes for version 20091214: 5691200553Sjkim 5692200553Sjkim1) ACPI CA Core Subsystem: 5693200553Sjkim 5694253690SjkimEnhanced automatic data type conversions for predefined name repairs. 5695253690SjkimThis 5696241973Sjkimchange expands the automatic repairs/conversions for predefined name 5697241973Sjkimreturn 5698253690Sjkimvalues to make Integers, Strings, and Buffers fully interchangeable. 5699253690SjkimAlso, 5700241973Sjkima 5701241973SjkimBuffer can be converted to a Package of Integers if necessary. The 5702241973Sjkimnsrepair.c 5703200553Sjkimmodule was completely restructured. Lin Ming, Bob Moore. 5704200553Sjkim 5705241973SjkimImplemented automatic removal of null package elements during predefined 5706241973Sjkimname 5707200553Sjkimrepairs. This change will automatically remove embedded and trailing NULL 5708253690Sjkimpackage elements from returned package objects that are defined to 5709253690Sjkimcontain 5710241973Sjkima 5711241973Sjkimvariable number of sub-packages. The driver is then presented with a 5712241973Sjkimpackage 5713200553Sjkimwith no null elements to deal with. ACPICA BZ 819. 5714200553Sjkim 5715200553SjkimImplemented a repair for the predefined _FDE and _GTM names. The expected 5716253690Sjkimreturn value for both names is a Buffer of 5 DWORDs. This repair fixes 5717253690Sjkimtwo 5718253690Sjkimpossible problems (both seen in the field), where a package of integers 5719253690Sjkimis 5720241973Sjkimreturned, or a buffer of BYTEs is returned. With assistance from Jung-uk 5721241973SjkimKim. 5722200553Sjkim 5723241973SjkimImplemented additional module-level code support. This change will 5724241973Sjkimproperly 5725241973Sjkimexecute module-level code that is not at the root of the namespace (under 5726241973Sjkima 5727241973SjkimDevice object, etc.). Now executes the code within the current scope 5728241973Sjkiminstead 5729200553Sjkimof the root. ACPICA BZ 762. Lin Ming. 5730200553Sjkim 5731253690SjkimFixed possible mutex acquisition errors when running _REG methods. Fixes 5732253690Sjkima 5733253690Sjkimproblem where mutex errors can occur when running a _REG method that is 5734253690Sjkimin 5735253690Sjkimthe same scope as a method-defined operation region or an operation 5736253690Sjkimregion 5737241973Sjkimunder a module-level IF block. This type of code is rare, so the problem 5738241973Sjkimhas 5739200553Sjkimnot been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 5740200553Sjkim 5741253690SjkimFixed a possible memory leak during module-level code execution. An 5742253690Sjkimobject 5743200553Sjkimcould be leaked for each block of executed module-level code if the 5744241973Sjkiminterpreter slack mode is enabled This change deletes any implicitly 5745241973Sjkimreturned 5746200553Sjkimobject from the module-level code block. Lin Ming. 5747200553Sjkim 5748253690SjkimRemoved messages for successful predefined repair(s). The repair 5749253690Sjkimmechanism 5750241973Sjkimwas considered too wordy. Now, messages are only unconditionally emitted 5751241973Sjkimif 5752200553Sjkimthe return object cannot be repaired. Existing messages for successful 5753241973Sjkimrepairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 5754241973Sjkim827. 5755200553Sjkim 5756200553SjkimExample Code and Data Size: These are the sizes for the OS-independent 5757200553Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5758241973Sjkimdebug version of the code includes the debug output trace mechanism and 5759241973Sjkimhas a 5760200553Sjkimmuch larger code and data size. 5761200553Sjkim 5762200553Sjkim Previous Release: 5763200553Sjkim Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5764200553Sjkim Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5765200553Sjkim Current Release: 5766200553Sjkim Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 5767200553Sjkim Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 5768200553Sjkim 5769200553Sjkim2) iASL Compiler/Disassembler and Tools: 5770200553Sjkim 5771241973SjkimiASL: Fixed a regression introduced in 20091112 where intermediate .SRC 5772241973Sjkimfiles 5773200553Sjkimwere no longer automatically removed at the termination of the compile. 5774200553Sjkim 5775200553Sjkimacpiexec: Implemented the -f option to specify default region fill value. 5776200553SjkimThis option specifies the value used to initialize buffers that simulate 5777241973Sjkimoperation regions. Default value is zero. Useful for debugging problems 5778241973Sjkimthat 5779200553Sjkimdepend on a specific initial value for a region or field. 5780200553Sjkim 5781200553Sjkim---------------------------------------- 5782199337Sjkim12 November 2009. Summary of changes for version 20091112: 5783199337Sjkim 5784199337Sjkim1) ACPI CA Core Subsystem: 5785199337Sjkim 5786199337SjkimImplemented a post-order callback to AcpiWalkNamespace. The existing 5787199337Sjkiminterface only has a pre-order callback. This change adds an additional 5788241973Sjkimparameter for a post-order callback which will be more useful for bus 5789241973Sjkimscans. 5790199337SjkimACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 5791199337Sjkim 5792199337SjkimModified the behavior of the operation region memory mapping cache for 5793241973SjkimSystemMemory. Ensure that the memory mappings created for operation 5794241973Sjkimregions 5795199337Sjkimdo not cross 4K page boundaries. Crossing a page boundary while mapping 5796241973Sjkimregions can cause kernel warnings on some hosts if the pages have 5797241973Sjkimdifferent 5798241973Sjkimattributes. Such regions are probably BIOS bugs, and this is the 5799241973Sjkimworkaround. 5800199337SjkimLinux BZ 14445. Lin Ming. 5801199337Sjkim 5802199337SjkimImplemented an automatic repair for predefined methods that must return 5803241973Sjkimsorted lists. This change will repair (by sorting) packages returned by 5804241973Sjkim_ALR, 5805241973Sjkim_PSS, and _TSS. Drivers can now assume that the packages are correctly 5806241973Sjkimsorted 5807199337Sjkimand do not contain NULL package elements. Adds one new file, 5808199337Sjkimnamespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 5809199337Sjkim 5810241973SjkimFixed a possible fault during predefined name validation if a return 5811241973SjkimPackage 5812199337Sjkimobject contains NULL elements. Also adds a warning if a NULL element is 5813241973Sjkimfollowed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 5814241973Sjkimmay 5815199337Sjkiminclude repair or removal of all such NULL elements where possible. 5816199337Sjkim 5817241973SjkimImplemented additional module-level executable AML code support. This 5818241973Sjkimchange 5819199337Sjkimwill execute module-level code that is not at the root of the namespace 5820241973Sjkim(under a Device object, etc.) at table load time. Module-level executable 5821241973SjkimAML 5822199337Sjkimcode has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 5823199337Sjkim 5824241973SjkimImplemented a new internal function to create Integer objects. This 5825241973Sjkimfunction 5826199337Sjkimsimplifies miscellaneous object creation code. ACPICA BZ 823. 5827199337Sjkim 5828253690SjkimReduced the severity of predefined repair messages, Warning to Info. 5829253690SjkimSince 5830241973Sjkimthe object was successfully repaired, a warning is too severe. Reduced to 5831241973Sjkiman 5832241973Sjkiminfo message for now. These messages may eventually be changed to debug- 5833241973Sjkimonly. 5834199337SjkimACPICA BZ 812. 5835199337Sjkim 5836199337SjkimExample Code and Data Size: These are the sizes for the OS-independent 5837199337Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5838241973Sjkimdebug version of the code includes the debug output trace mechanism and 5839241973Sjkimhas a 5840199337Sjkimmuch larger code and data size. 5841199337Sjkim 5842199337Sjkim Previous Release: 5843199337Sjkim Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5844199337Sjkim Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5845199337Sjkim Current Release: 5846199337Sjkim Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 5847199337Sjkim Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 5848199337Sjkim 5849199337Sjkim2) iASL Compiler/Disassembler and Tools: 5850199337Sjkim 5851241973SjkimiASL: Implemented Switch() with While(1) so that Break works correctly. 5852241973SjkimThis 5853241973Sjkimchange correctly implements the Switch operator with a surrounding 5854241973SjkimWhile(1) 5855199337Sjkimso that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 5856199337Sjkim 5857241973SjkimiASL: Added a message if a package initializer list is shorter than 5858241973Sjkimpackage 5859241973Sjkimlength. Adds a new remark for a Package() declaration if an initializer 5860241973Sjkimlist 5861199337Sjkimexists, but is shorter than the declared length of the package. Although 5862199337Sjkimtechnically legal, this is probably a coding error and it is seen in the 5863199337Sjkimfield. ACPICA BZ 815. Lin Ming, Bob Moore. 5864199337Sjkim 5865241973SjkimiASL: Fixed a problem where the compiler could fault after the maximum 5866241973Sjkimnumber 5867199337Sjkimof errors was reached (200). 5868199337Sjkim 5869241973Sjkimacpixtract: Fixed a possible warning for pointer cast if the compiler 5870241973Sjkimwarning 5871199337Sjkimlevel set very high. 5872199337Sjkim 5873199337Sjkim---------------------------------------- 5874198237Sjkim13 October 2009. Summary of changes for version 20091013: 5875197104Sjkim 5876197104Sjkim1) ACPI CA Core Subsystem: 5877197104Sjkim 5878241973SjkimFixed a problem where an Operation Region _REG method could be executed 5879241973Sjkimmore 5880241973Sjkimthan once. If a custom address space handler is installed by the host 5881241973Sjkimbefore 5882253690Sjkimthe "initialize operation regions" phase of the ACPICA initialization, 5883253690Sjkimany 5884198237Sjkim_REG methods for that address space could be executed twice. This change 5885198237Sjkimfixes the problem. ACPICA BZ 427. Lin Ming. 5886198237Sjkim 5887198237SjkimFixed a possible memory leak for the Scope() ASL operator. When the exact 5888198237Sjkiminvocation of "Scope(\)" is executed (change scope to root), one internal 5889198237Sjkimoperand object was leaked. Lin Ming. 5890198237Sjkim 5891198237SjkimImplemented a run-time repair for the _MAT predefined method. If the _MAT 5892198237Sjkimreturn value is defined as a Field object in the AML, and the field 5893241973Sjkimsize is less than or equal to the default width of an integer (32 or 5894241973Sjkim64),_MAT 5895198237Sjkimcan incorrectly return an Integer instead of a Buffer. ACPICA now 5896198237Sjkimautomatically repairs this problem. ACPICA BZ 810. 5897198237Sjkim 5898241973SjkimImplemented a run-time repair for the _BIF and _BIX predefined methods. 5899241973SjkimThe 5900198237Sjkim"OEM Information" field is often incorrectly returned as an Integer with 5901241973Sjkimvalue zero if the field is not supported by the platform. This is due to 5902241973Sjkiman 5903198237Sjkimambiguity in the ACPI specification. The field should always be a string. 5904198237SjkimACPICA now automatically repairs this problem by returning a NULL string 5905198237Sjkimwithin the returned Package. ACPICA BZ 807. 5906198237Sjkim 5907198237SjkimExample Code and Data Size: These are the sizes for the OS-independent 5908198237Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5909241973Sjkimdebug version of the code includes the debug output trace mechanism and 5910241973Sjkimhas a 5911198237Sjkimmuch larger code and data size. 5912198237Sjkim 5913198237Sjkim Previous Release: 5914198237Sjkim Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5915198237Sjkim Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5916198237Sjkim Current Release: 5917198237Sjkim Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 5918198237Sjkim Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 5919198237Sjkim 5920198237Sjkim2) iASL Compiler/Disassembler and Tools: 5921198237Sjkim 5922198237SjkimDisassembler: Fixed a problem where references to external symbols that 5923253690Sjkimcontained one or more parent-prefixes (carats) were not handled 5924253690Sjkimcorrectly, 5925198237Sjkimpossibly causing a fault. ACPICA BZ 806. Lin Ming. 5926198237Sjkim 5927198237SjkimDisassembler: Restructured the code so that all functions that handle 5928198237Sjkimexternal symbols are in a single module. One new file is added, 5929198237Sjkimcommon/dmextern.c. 5930198237Sjkim 5931198237SjkimAML Debugger: Added a max count argument for the Batch command (which 5932198237Sjkimexecutes multiple predefined methods within the namespace.) 5933198237Sjkim 5934198237SjkimiASL: Updated the compiler documentation (User Reference.) Available at 5935198237Sjkimhttp://www.acpica.org/documentation/. ACPICA BZ 750. 5936198237Sjkim 5937198237SjkimAcpiXtract: Updated for Lint and other formatting changes. Close all open 5938198237Sjkimfiles. 5939198237Sjkim 5940198237Sjkim---------------------------------------- 5941198237Sjkim03 September 2009. Summary of changes for version 20090903: 5942198237Sjkim 5943198237Sjkim1) ACPI CA Core Subsystem: 5944198237Sjkim 5945197104SjkimFor Windows Vista compatibility, added the automatic execution of an _INI 5946197104Sjkimmethod located at the namespace root (\_INI). This method is executed at 5947253690Sjkimtable load time. This support is in addition to the automatic execution 5948253690Sjkimof 5949197104Sjkim\_SB._INI. Lin Ming. 5950197104Sjkim 5951253690SjkimFixed a possible memory leak in the interpreter for AML package objects 5952253690Sjkimif 5953241973Sjkimthe package initializer list is longer than the defined size of the 5954241973Sjkimpackage. 5955241973SjkimThis apparently can only happen if the BIOS changes the package size on 5956241973Sjkimthe 5957197104Sjkimfly (seen in a _PSS object), as ASL compilers do not allow this. The 5958241973Sjkiminterpreter will truncate the package to the defined size (and issue an 5959241973Sjkimerror 5960241973Sjkimmessage), but previously could leave the extra objects undeleted if they 5961241973Sjkimwere 5962241973Sjkimpre-created during the argument processing (such is the case if the 5963241973Sjkimpackage 5964197104Sjkimconsists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 5965197104Sjkim 5966197104SjkimFixed a problem seen when a Buffer or String is stored to itself via ASL. 5967253690SjkimThis has been reported in the field. Previously, ACPICA would zero out 5968253690Sjkimthe 5969197104Sjkimbuffer/string. Now, the operation is treated as a noop. Provides Windows 5970197104Sjkimcompatibility. ACPICA BZ 803. Lin Ming. 5971197104Sjkim 5972197104SjkimRemoved an extraneous error message for ASL constructs of the form 5973241973SjkimStore(LocalX,LocalX) when LocalX is uninitialized. These curious 5974241973Sjkimstatements 5975253690Sjkimare seen in many BIOSs and are once again treated as NOOPs and no error 5976253690Sjkimis 5977197104Sjkimemitted when they are encountered. ACPICA BZ 785. 5978197104Sjkim 5979197104SjkimFixed an extraneous warning message if a _DSM reserved method returns a 5980197104SjkimPackage object. _DSM can return any type of object, so validation on the 5981197104Sjkimreturn type cannot be performed. ACPICA BZ 802. 5982197104Sjkim 5983197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 5984197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5985241973Sjkimdebug version of the code includes the debug output trace mechanism and 5986241973Sjkimhas a 5987197104Sjkimmuch larger code and data size. 5988197104Sjkim 5989197104Sjkim Previous Release: 5990197104Sjkim Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 5991197104Sjkim Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 5992197104Sjkim Current Release: 5993197104Sjkim Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 5994197104Sjkim Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 5995197104Sjkim 5996197104Sjkim2) iASL Compiler/Disassembler and Tools: 5997197104Sjkim 5998197104SjkimiASL: Fixed a problem with the use of the Alias operator and Resource 5999197104SjkimTemplates. The correct alias is now constructed and no error is emitted. 6000197104SjkimACPICA BZ 738. 6001197104Sjkim 6002241973SjkimiASL: Implemented the -I option to specify additional search directories 6003241973Sjkimfor 6004197104Sjkiminclude files. Allows multiple additional search paths for include files. 6005253690SjkimDirectories are searched in the order specified on the command line 6006253690Sjkim(after 6007197104Sjkimthe local directory is searched.) ACPICA BZ 800. 6008197104Sjkim 6009197104SjkimiASL: Fixed a problem where the full pathname for include files was not 6010197104Sjkimemitted for warnings/errors. This caused the IDE support to not work 6011197104Sjkimproperly. ACPICA BZ 765. 6012197104Sjkim 6013197104SjkimiASL: Implemented the -@ option to specify a Windows-style response file 6014197104Sjkimcontaining additional command line options. ACPICA BZ 801. 6015197104Sjkim 6016253690SjkimAcpiExec: Added support to load multiple AML files simultaneously (such 6017253690Sjkimas 6018241973Sjkima 6019197104SjkimDSDT and multiple SSDTs). Also added support for wildcards within the AML 6020197104Sjkimpathname. These features allow all machine tables to be easily loaded and 6021197104Sjkimdebugged together. ACPICA BZ 804. 6022197104Sjkim 6023241973SjkimDisassembler: Added missing support for disassembly of HEST table Error 6024241973SjkimBank 6025197104Sjkimsubtables. 6026197104Sjkim 6027197104Sjkim---------------------------------------- 6028197104Sjkim30 July 2009. Summary of changes for version 20090730: 6029197104Sjkim 6030197104SjkimThe ACPI 4.0 implementation for ACPICA is complete with this release. 6031197104Sjkim 6032197104Sjkim1) ACPI CA Core Subsystem: 6033197104Sjkim 6034197104SjkimACPI 4.0: Added header file support for all new and changed ACPI tables. 6035253690SjkimCompletely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6036253690Sjkimnew 6037241973Sjkimfor ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6038241973SjkimBERT, 6039241973SjkimEINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6040241973SjkimThere 6041197104Sjkimhave been some ACPI 4.0 changes to other existing tables. Split the large 6042197104Sjkimactbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6043197104Sjkim 6044241973SjkimACPI 4.0: Implemented predefined name validation for all new names. There 6045241973Sjkimare 6046241973Sjkim31 new names in ACPI 4.0. The predefined validation module was split into 6047241973Sjkimtwo 6048197104Sjkimfiles. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6049197104Sjkim 6050197104SjkimImplemented support for so-called "module-level executable code". This is 6051241973Sjkimexecutable AML code that exists outside of any control method and is 6052241973Sjkimintended 6053241973Sjkimto be executed at table load time. Although illegal since ACPI 2.0, this 6054241973Sjkimtype 6055253690Sjkimof code still exists and is apparently still being created. Blocks of 6056253690Sjkimthis 6057253690Sjkimcode are now detected and executed as intended. Currently, the code 6058253690Sjkimblocks 6059197104Sjkimmust exist under either an If, Else, or While construct; these are the 6060197104Sjkimtypical cases seen in the field. ACPICA BZ 762. Lin Ming. 6061197104Sjkim 6062197104SjkimImplemented an automatic dynamic repair for predefined names that return 6063241973Sjkimnested Package objects. This applies to predefined names that are defined 6064241973Sjkimto 6065197104Sjkimreturn a variable-length Package of sub-packages. If the number of sub- 6066241973Sjkimpackages is one, BIOS code is occasionally seen that creates a simple 6067241973Sjkimsingle 6068197104Sjkimpackage with no sub-packages. This code attempts to fix the problem by 6069241973Sjkimwrapping a new package object around the existing package. These methods 6070241973Sjkimcan 6071253690Sjkimbe repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6072253690SjkimBZ 6073197104Sjkim790. 6074197104Sjkim 6075241973SjkimFixed a regression introduced in 20090625 for the AcpiGetDevices 6076241973Sjkiminterface. 6077241973SjkimThe _HID/_CID matching was broken and no longer matched IDs correctly. 6078241973SjkimACPICA 6079197104SjkimBZ 793. 6080197104Sjkim 6081197104SjkimFixed a problem with AcpiReset where the reset would silently fail if the 6082241973Sjkimregister was one of the protected I/O ports. AcpiReset now bypasses the 6083241973Sjkimport 6084241973Sjkimvalidation mechanism. This may eventually be driven into the 6085241973SjkimAcpiRead/Write 6086197104Sjkiminterfaces. 6087197104Sjkim 6088197104SjkimFixed a regression related to the recent update of the AcpiRead/Write 6089241973Sjkiminterfaces. A sleep/suspend could fail if the optional PM2 Control 6090241973Sjkimregister 6091197104Sjkimdoes not exist during an attempt to write the Bus Master Arbitration bit. 6092253690Sjkim(However, some hosts already delete the code that writes this bit, and 6093253690Sjkimthe 6094197104Sjkimcode may in fact be obsolete at this date.) ACPICA BZ 799. 6095197104Sjkim 6096241973SjkimFixed a problem where AcpiTerminate could fault if inadvertently called 6097241973Sjkimtwice 6098197104Sjkimin succession. ACPICA BZ 795. 6099197104Sjkim 6100197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 6101197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6102241973Sjkimdebug version of the code includes the debug output trace mechanism and 6103241973Sjkimhas a 6104197104Sjkimmuch larger code and data size. 6105197104Sjkim 6106197104Sjkim Previous Release: 6107197104Sjkim Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6108197104Sjkim Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6109197104Sjkim Current Release: 6110197104Sjkim Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6111197104Sjkim Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6112197104Sjkim 6113197104Sjkim2) iASL Compiler/Disassembler and Tools: 6114197104Sjkim 6115197104SjkimACPI 4.0: Implemented disassembler support for all new ACPI tables and 6116197104Sjkimchanges to existing tables. ACPICA BZ 775. 6117197104Sjkim 6118197104Sjkim---------------------------------------- 6119197104Sjkim25 June 2009. Summary of changes for version 20090625: 6120197104Sjkim 6121197104SjkimThe ACPI 4.0 Specification was released on June 16 and is available at 6122197104Sjkimwww.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6123197104Sjkimcontinue for the next few releases. 6124197104Sjkim 6125197104Sjkim1) ACPI CA Core Subsystem: 6126197104Sjkim 6127197104SjkimACPI 4.0: Implemented interpreter support for the IPMI operation region 6128241973Sjkimaddress space. Includes support for bi-directional data buffers and an 6129241973SjkimIPMI 6130241973Sjkimaddress space handler (to be installed by an IPMI device driver.) ACPICA 6131241973SjkimBZ 6132197104Sjkim773. Lin Ming. 6133197104Sjkim 6134253690SjkimACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6135253690SjkimIncludes 6136197104Sjkimsupport in both the header files and the disassembler. 6137197104Sjkim 6138197104SjkimCompleted a major update for the AcpiGetObjectInfo external interface. 6139197104SjkimChanges include: 6140197104Sjkim - Support for variable, unlimited length HID, UID, and CID strings. 6141241973Sjkim - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6142241973Sjkimetc.) 6143197104Sjkim - Call the _SxW power methods on behalf of a device object. 6144197104Sjkim - Determine if a device is a PCI root bridge. 6145197104Sjkim - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6146253690SjkimThese changes will require an update to all callers of this interface. 6147253690SjkimSee 6148241973Sjkimthe updated ACPICA Programmer Reference for details. One new source file 6149241973Sjkimhas 6150197104Sjkimbeen added - utilities/utids.c. ACPICA BZ 368, 780. 6151197104Sjkim 6152197104SjkimUpdated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6153241973Sjkimtransfers. The Value parameter has been extended from 32 bits to 64 bits 6154241973Sjkimin 6155253690Sjkimorder to support new ACPI 4.0 tables. These changes will require an 6156253690Sjkimupdate 6157241973Sjkimto 6158197104Sjkimall callers of these interfaces. See the ACPICA Programmer Reference for 6159197104Sjkimdetails. ACPICA BZ 768. 6160197104Sjkim 6161241973SjkimFixed several problems with AcpiAttachData. The handler was not invoked 6162241973Sjkimwhen 6163241973Sjkimthe host node was deleted. The data sub-object was not automatically 6164241973Sjkimdeleted 6165253690Sjkimwhen the host node was deleted. The interface to the handler had an 6166253690Sjkimunused 6167197104Sjkimparameter, this was removed. ACPICA BZ 778. 6168197104Sjkim 6169197104SjkimEnhanced the function that dumps ACPI table headers. All non-printable 6170241973Sjkimcharacters in the string fields are now replaced with '?' (Signature, 6171241973SjkimOemId, 6172197104SjkimOemTableId, and CompilerId.) ACPI tables with non-printable characters in 6173197104Sjkimthese fields are occasionally seen in the field. ACPICA BZ 788. 6174197104Sjkim 6175197104SjkimFixed a problem with predefined method repair code where the code that 6176253690Sjkimattempts to repair/convert an object of incorrect type is only executed 6177253690Sjkimon 6178241973Sjkimthe first time the predefined method is called. The mechanism that 6179241973Sjkimdisables 6180197104Sjkimwarnings on subsequent calls was interfering with the repair mechanism. 6181197104SjkimACPICA BZ 781. 6182197104Sjkim 6183253690SjkimFixed a possible memory leak in the predefined validation/repair code 6184253690Sjkimwhen 6185241973Sjkima 6186197104Sjkimbuffer is automatically converted to an expected string object. 6187197104Sjkim 6188241973SjkimRemoved obsolete 16-bit files from the distribution and from the current 6189241973Sjkimgit 6190197104Sjkimtree head. ACPICA BZ 776. 6191197104Sjkim 6192197104SjkimExample Code and Data Size: These are the sizes for the OS-independent 6193197104Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6194241973Sjkimdebug version of the code includes the debug output trace mechanism and 6195241973Sjkimhas a 6196197104Sjkimmuch larger code and data size. 6197197104Sjkim 6198197104Sjkim Previous Release: 6199197104Sjkim Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6200197104Sjkim Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6201197104Sjkim Current Release: 6202197104Sjkim Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6203197104Sjkim Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6204197104Sjkim 6205197104Sjkim2) iASL Compiler/Disassembler and Tools: 6206197104Sjkim 6207197104SjkimACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6208197104Sjkimoperation region keyword. ACPICA BZ 771, 772. Lin Ming. 6209197104Sjkim 6210197104SjkimACPI 4.0: iASL - implemented compile-time validation support for all new 6211197104Sjkimpredefined names and control methods (31 total). ACPICA BZ 769. 6212197104Sjkim 6213197104Sjkim---------------------------------------- 6214193267Sjkim21 May 2009. Summary of changes for version 20090521: 6215193267Sjkim 6216193267Sjkim1) ACPI CA Core Subsystem: 6217193267Sjkim 6218241973SjkimDisabled the preservation of the SCI enable bit in the PM1 control 6219241973Sjkimregister. 6220253690SjkimThe SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6221253690Sjkimto 6222241973Sjkimbe 6223193267Sjkima "preserved" bit - "OSPM always preserves this bit position", section 6224193267Sjkim4.7.3.2.1. However, some machines fail if this bit is in fact preserved 6225193267Sjkimbecause the bit needs to be explicitly set by the OS as a workaround. No 6226193267Sjkimmachines fail if the bit is not preserved. Therefore, ACPICA no longer 6227193267Sjkimattempts to preserve this bit. 6228193267Sjkim 6229193267SjkimFixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6230193267Sjkimincorrectly formed _PRT package could cause a fault. Added validation to 6231193267Sjkimensure that each package element is actually a sub-package. 6232193267Sjkim 6233241973SjkimImplemented a new interface to install or override a single control 6234241973Sjkimmethod, 6235241973SjkimAcpiInstallMethod. This interface is useful when debugging in order to 6236241973Sjkimrepair 6237241973Sjkiman existing method or to install a missing method without having to 6238241973Sjkimoverride 6239193267Sjkimthe entire ACPI table. See the ACPICA Programmer Reference for use and 6240193267Sjkimexamples. Lin Ming, Bob Moore. 6241193267Sjkim 6242193267SjkimFixed several reference count issues with the DdbHandle object that is 6243241973Sjkimcreated from a Load or LoadTable operator. Prevent premature deletion of 6244241973Sjkimthe 6245253690Sjkimobject. Also, mark the object as invalid once the table has been 6246253690Sjkimunloaded. 6247241973SjkimThis is needed because the handle itself may not be deleted after the 6248241973Sjkimtable 6249193267Sjkimunload, depending on whether it has been stored in a named object by the 6250193267Sjkimcaller. Lin Ming. 6251193267Sjkim 6252193267SjkimFixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6253241973Sjkimmutexes of the same sync level are acquired but then not released in 6254241973Sjkimstrict 6255241973Sjkimopposite order, the internally maintained Current Sync Level becomes 6256241973Sjkimconfused 6257193267Sjkimand can cause subsequent execution errors. ACPICA BZ 471. 6258193267Sjkim 6259193267SjkimChanged the allowable release order for ASL mutex objects. The ACPI 4.0 6260241973Sjkimspecification has been changed to make the SyncLevel for mutex objects 6261241973Sjkimmore 6262253690Sjkimuseful. When releasing a mutex, the SyncLevel of the mutex must now be 6263253690Sjkimthe 6264241973Sjkimsame as the current sync level. This makes more sense than the previous 6265241973Sjkimrule 6266193267Sjkim(SyncLevel less than or equal). This change updates the code to match the 6267193267Sjkimspecification. 6268193267Sjkim 6269241973SjkimFixed a problem with the local version of the AcpiOsPurgeCache function. 6270241973SjkimThe 6271193267Sjkim(local) cache must be locked during all cache object deletions. Andrew 6272193267SjkimBaumann. 6273193267Sjkim 6274241973SjkimUpdated the Load operator to use operation region interfaces. This 6275241973Sjkimreplaces 6276241973Sjkimdirect memory mapping with region access calls. Now, all region accesses 6277241973Sjkimgo 6278193267Sjkimthrough the installed region handler as they should. 6279193267Sjkim 6280241973SjkimSimplified and optimized the NsGetNextNode function. Reduced parameter 6281241973Sjkimcount 6282193267Sjkimand reduced code for this frequently used function. 6283193267Sjkim 6284193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6285193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6286241973Sjkimdebug version of the code includes the debug output trace mechanism and 6287241973Sjkimhas a 6288193267Sjkimmuch larger code and data size. 6289193267Sjkim 6290193267Sjkim Previous Release: 6291193267Sjkim Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6292193267Sjkim Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6293193267Sjkim Current Release: 6294193267Sjkim Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6295193267Sjkim Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6296193267Sjkim 6297193267Sjkim2) iASL Compiler/Disassembler and Tools: 6298193267Sjkim 6299241973SjkimDisassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6300241973Sjkimproblems 6301241973Sjkimwith sub-table disassembly and handling invalid sub-tables. Attempt 6302241973Sjkimrecovery 6303193267Sjkimafter an invalid sub-table ID. 6304193267Sjkim 6305193267Sjkim---------------------------------------- 6306193267Sjkim22 April 2009. Summary of changes for version 20090422: 6307193267Sjkim 6308193267Sjkim1) ACPI CA Core Subsystem: 6309193267Sjkim 6310253690SjkimFixed a compatibility issue with the recently released I/O port 6311253690Sjkimprotection 6312193267Sjkimmechanism. For windows compatibility, 1) On a port protection violation, 6313241973Sjkimsimply ignore the request and do not return an exception (allow the 6314241973Sjkimcontrol 6315193267Sjkimmethod to continue execution.) 2) If only part of the request overlaps a 6316241973Sjkimprotected port, read/write the individual ports that are not protected. 6317241973SjkimLinux 6318193267SjkimBZ 13036. Lin Ming 6319193267Sjkim 6320241973SjkimEnhanced the execution of the ASL/AML BreakPoint operator so that it 6321241973Sjkimactually 6322193267Sjkimbreaks into the AML debugger if the debugger is present. This matches the 6323193267SjkimACPI-defined behavior. 6324193267Sjkim 6325193267SjkimFixed several possible warnings related to the use of the configurable 6326193267SjkimACPI_THREAD_ID. This type can now be configured as either an integer or a 6327193267Sjkimpointer with no warnings. Also fixes several warnings in printf-like 6328193267Sjkimstatements for the 64-bit build when the type is configured as a pointer. 6329193267SjkimACPICA BZ 766, 767. 6330193267Sjkim 6331241973SjkimFixed a number of possible warnings when compiling with gcc 4+ (depending 6332241973Sjkimon 6333241973Sjkimwarning options.) Examples include printf formats, aliasing, unused 6334241973Sjkimglobals, 6335193267Sjkimmissing prototypes, missing switch default statements, use of non-ANSI 6336241973Sjkimlibrary functions, use of non-ANSI constructs. See generate/unix/Makefile 6337241973Sjkimfor 6338193267Sjkima list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6339193267Sjkim 6340193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6341193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6342241973Sjkimdebug version of the code includes the debug output trace mechanism and 6343241973Sjkimhas a 6344193267Sjkimmuch larger code and data size. 6345193267Sjkim 6346193267Sjkim Previous Release: 6347193267Sjkim Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6348193267Sjkim Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6349193267Sjkim Current Release: 6350193267Sjkim Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6351193267Sjkim Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6352193267Sjkim 6353193267Sjkim2) iASL Compiler/Disassembler and Tools: 6354193267Sjkim 6355253690SjkimiASL: Fixed a generation warning from Bison 2.3 and fixed several 6356253690Sjkimwarnings 6357241973Sjkimon 6358193267Sjkimthe 64-bit build. 6359193267Sjkim 6360241973SjkimiASL: Fixed a problem where the Unix/Linux versions of the compiler could 6361241973Sjkimnot 6362193267Sjkimcorrectly digest Windows/DOS formatted files (with CR/LF). 6363193267Sjkim 6364193267SjkimiASL: Added a new option for "quiet mode" (-va) that produces only the 6365193267Sjkimcompilation summary, not individual errors and warnings. Useful for large 6366193267Sjkimbatch compilations. 6367193267Sjkim 6368253690SjkimAcpiExec: Implemented a new option (-z) to enable a forced 6369253690Sjkimsemaphore/mutex 6370253690Sjkimtimeout that can be used to detect hang conditions during execution of 6371253690SjkimAML 6372241973Sjkimcode (includes both internal semaphores and AML-defined mutexes and 6373241973Sjkimevents.) 6374193267Sjkim 6375193267SjkimAdded new makefiles for the generation of acpica in a generic unix-like 6376253690Sjkimenvironment. These makefiles are intended to generate the acpica tools 6377253690Sjkimand 6378193267Sjkimutilities from the original acpica git source tree structure. 6379193267Sjkim 6380193267SjkimTest Suites: Updated and cleaned up the documentation files. Updated the 6381241973Sjkimcopyrights to 2009, affecting all source files. Use the new version of 6382241973SjkimiASL 6383241973Sjkimwith quiet mode. Increased the number of available semaphores in the 6384241973SjkimWindows 6385241973SjkimOSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6386241973Sjkimadded 6387193267Sjkiman alternate implementation of the semaphore timeout to allow aslts to 6388193267Sjkimexecute fully on Cygwin. 6389193267Sjkim 6390193267Sjkim---------------------------------------- 6391193267Sjkim20 March 2009. Summary of changes for version 20090320: 6392193267Sjkim 6393193267Sjkim1) ACPI CA Core Subsystem: 6394193267Sjkim 6395241973SjkimFixed a possible race condition between AcpiWalkNamespace and dynamic 6396241973Sjkimtable 6397241973Sjkimunloads. Added a reader/writer locking mechanism to allow multiple 6398241973Sjkimconcurrent 6399241973Sjkimnamespace walks (readers), but block a dynamic table unload until it can 6400241973Sjkimgain 6401241973Sjkimexclusive write access to the namespace. This fixes a problem where a 6402241973Sjkimtable 6403241973Sjkimunload could (possibly catastrophically) delete the portion of the 6404241973Sjkimnamespace 6405241973Sjkimthat is currently being examined by a walk. Adds a new file, utlock.c, 6406241973Sjkimthat 6407193267Sjkimimplements the reader/writer lock mechanism. ACPICA BZ 749. 6408193267Sjkim 6409241973SjkimFixed a regression introduced in version 20090220 where a change to the 6410241973SjkimFADT 6411241973Sjkimhandling could cause the ACPICA subsystem to access non-existent I/O 6412241973Sjkimports. 6413193267Sjkim 6414241973SjkimModified the handling of FADT register and table (FACS/DSDT) addresses. 6415241973SjkimThe 6416193267SjkimFADT can contain both 32-bit and 64-bit versions of these addresses. 6417241973SjkimPreviously, the 64-bit versions were favored, meaning that if both 32 and 6418241973Sjkim64 6419193267Sjkimversions were valid, but not equal, the 64-bit version was used. This was 6420241973Sjkimfound to cause some machines to fail. Now, in this case, the 32-bit 6421241973Sjkimversion 6422193267Sjkimis used instead. This now matches the Windows behavior. 6423193267Sjkim 6424241973SjkimImplemented a new mechanism to protect certain I/O ports. Provides 6425241973SjkimMicrosoft 6426193267Sjkimcompatibility and protects the standard PC I/O ports from access via AML 6427193267Sjkimcode. Adds a new file, hwvalid.c 6428193267Sjkim 6429193267SjkimFixed a possible extraneous warning message from the FADT support. The 6430193267Sjkimmessage warns of a 32/64 length mismatch between the legacy and GAS 6431193267Sjkimdefinitions for a register. 6432193267Sjkim 6433241973SjkimRemoved the obsolete AcpiOsValidateAddress OSL interface. This interface 6434241973Sjkimis 6435241973Sjkimmade obsolete by the port protection mechanism above. It was previously 6436241973Sjkimused 6437241973Sjkimto validate the entire address range of an operation region, which could 6438241973Sjkimbe 6439193267Sjkimincorrect if the range included illegal ports, but fields within the 6440193267Sjkimoperation region did not actually access those ports. Validation is now 6441193267Sjkimperformed on a per-field basis instead of the entire region. 6442193267Sjkim 6443193267SjkimModified the handling of the PM1 Status Register ignored bit (bit 11.) 6444253690SjkimIgnored bits must be "preserved" according to the ACPI spec. Usually, 6445253690Sjkimthis 6446241973Sjkimmeans a read/modify/write when writing to the register. However, for 6447241973Sjkimstatus 6448241973Sjkimregisters, writing a one means clear the event. Writing a zero means 6449241973Sjkimpreserve 6450253690Sjkimthe event (do not clear.) This behavior is clarified in the ACPI 4.0 6451253690Sjkimspec, 6452193267Sjkimand the ACPICA code now simply always writes a zero to the ignored bit. 6453193267Sjkim 6454241973SjkimModified the handling of ignored bits for the PM1 A/B Control Registers. 6455241973SjkimAs 6456193267Sjkimper the ACPI specification, for the control registers, preserve 6457241973Sjkim(read/modify/write) all bits that are defined as either reserved or 6458241973Sjkimignored. 6459193267Sjkim 6460193267SjkimUpdated the handling of write-only bits in the PM1 A/B Control Registers. 6461193267SjkimWhen reading the register, zero the write-only bits as per the ACPI spec. 6462193267SjkimACPICA BZ 443. Lin Ming. 6463193267Sjkim 6464193267SjkimRemoved "Linux" from the list of supported _OSI strings. Linux no longer 6465241973Sjkimwants to reply true to this request. The Windows strings are the only 6466241973Sjkimpaths 6467193267Sjkimthrough the AML that are tested and known to work properly. 6468193267Sjkim 6469193267Sjkim Previous Release: 6470193267Sjkim Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6471193267Sjkim Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6472193267Sjkim Current Release: 6473193267Sjkim Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6474193267Sjkim Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6475193267Sjkim 6476193267Sjkim2) iASL Compiler/Disassembler and Tools: 6477193267Sjkim 6478241973SjkimAcpiexec: Split the large aeexec.c file into two new files, aehandlers.c 6479241973Sjkimand 6480193267Sjkimaetables.c 6481193267Sjkim 6482193267Sjkim---------------------------------------- 6483193267Sjkim20 February 2009. Summary of changes for version 20090220: 6484193267Sjkim 6485193267Sjkim1) ACPI CA Core Subsystem: 6486193267Sjkim 6487241973SjkimOptimized the ACPI register locking. Removed locking for reads from the 6488241973SjkimACPI 6489253690Sjkimbit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 6490253690Sjkimis 6491193267Sjkimnot required when reading the single-bit registers. The 6492253690SjkimAcpiGetRegisterUnlocked function is no longer needed and has been 6493253690Sjkimremoved. 6494253690SjkimThis will improve performance for reads on these registers. ACPICA BZ 6495253690Sjkim760. 6496193267Sjkim 6497193267SjkimFixed the parameter validation for AcpiRead/Write. Now return 6498253690SjkimAE_BAD_PARAMETER if the input register pointer is null, and 6499253690SjkimAE_BAD_ADDRESS 6500241973Sjkimif 6501241973Sjkimthe register has an address of zero. Previously, these cases simply 6502241973Sjkimreturned 6503241973SjkimAE_OK. For optional registers such as PM1B status/enable/control, the 6504241973Sjkimcaller 6505193267Sjkimshould check for a valid register address before calling. ACPICA BZ 748. 6506193267Sjkim 6507193267SjkimRenamed the external ACPI bit register access functions. Renamed 6508193267SjkimAcpiGetRegister and AcpiSetRegister to clarify the purpose of these 6509253690Sjkimfunctions. The new names are AcpiReadBitRegister and 6510253690SjkimAcpiWriteBitRegister. 6511241973SjkimAlso, restructured the code for these functions by simplifying the code 6512241973Sjkimpath 6513193267Sjkimand condensing duplicate code to reduce code size. 6514193267Sjkim 6515193267SjkimAdded new functions to transparently handle the possibly split PM1 A/B 6516253690Sjkimregisters. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 6517253690Sjkimfunctions 6518253690Sjkimnow handle the split registers for PM1 Status, Enable, and Control. 6519253690SjkimACPICA 6520241973SjkimBZ 6521193267Sjkim746. 6522193267Sjkim 6523241973SjkimAdded a function to handle the PM1 control registers, 6524241973SjkimAcpiHwWritePm1Control. 6525241973SjkimThis function writes both of the PM1 control registers (A/B). These 6526241973Sjkimregisters 6527241973Sjkimare different than the PM1 A/B status and enable registers in that 6528241973Sjkimdifferent 6529253690Sjkimvalues can be written to the A/B registers. Most notably, the SLP_TYP 6530253690Sjkimbits 6531241973Sjkimcan be different, as per the values returned from the _Sx predefined 6532241973Sjkimmethods. 6533193267Sjkim 6534241973SjkimRemoved an extra register write within AcpiHwClearAcpiStatus. This 6535241973Sjkimfunction 6536241973Sjkimwas writing an optional PM1B status register twice. The existing call to 6537241973Sjkimthe 6538241973Sjkimlow-level AcpiHwRegisterWrite automatically handles a possibly split PM1 6539241973SjkimA/B 6540193267Sjkimregister. ACPICA BZ 751. 6541193267Sjkim 6542241973SjkimSplit out the PM1 Status registers from the FADT. Added new globals for 6543241973Sjkimthese 6544193267Sjkimregisters (A/B), similar to the way the PM1 Enable registers are handled. 6545253690SjkimInstead of overloading the FADT Event Register blocks. This makes the 6546253690Sjkimcode 6547193267Sjkimclearer and less prone to error. 6548193267Sjkim 6549241973SjkimFixed the warning message for when the platform contains too many ACPI 6550241973Sjkimtables 6551241973Sjkimfor the default size of the global root table data structure. The 6552241973Sjkimcalculation 6553193267Sjkimfor the truncation value was incorrect. 6554193267Sjkim 6555193267SjkimRemoved the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 6556253690Sjkimobsolete macro, since it is now a simple reference to ->common.type. 6557253690SjkimThere 6558193267Sjkimwere about 150 invocations of the macro across 41 files. ACPICA BZ 755. 6559193267Sjkim 6560193267SjkimRemoved the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 6561193267SjkimTYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 6562193267Sjkimsimply SLEEP_TYPE. ACPICA BZ 754. 6563193267Sjkim 6564193267SjkimConditionally compile the AcpiSetFirmwareWakingVector64 function. This 6565193267Sjkimfunction is only needed on 64-bit host operating systems and is thus not 6566193267Sjkimincluded for 32-bit hosts. 6567193267Sjkim 6568241973SjkimDebug output: print the input and result for invocations of the _OSI 6569241973Sjkimreserved 6570253690Sjkimcontrol method via the ACPI_LV_INFO debug level. Also, reduced some of 6571253690Sjkimthe 6572193267Sjkimverbosity of this debug level. Len Brown. 6573193267Sjkim 6574193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6575193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6576241973Sjkimdebug version of the code includes the debug output trace mechanism and 6577241973Sjkimhas a 6578193267Sjkimmuch larger code and data size. 6579193267Sjkim 6580193267Sjkim Previous Release: 6581193267Sjkim Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6582193267Sjkim Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6583193267Sjkim Current Release: 6584193267Sjkim Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6585193267Sjkim Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6586193267Sjkim 6587193267Sjkim2) iASL Compiler/Disassembler and Tools: 6588193267Sjkim 6589193267SjkimDisassembler: Decode the FADT PM_Profile field. Emit ascii names for the 6590193267Sjkimvarious legal performance profiles. 6591193267Sjkim 6592193267Sjkim---------------------------------------- 6593193267Sjkim23 January 2009. Summary of changes for version 20090123: 6594193267Sjkim 6595193267Sjkim1) ACPI CA Core Subsystem: 6596193267Sjkim 6597193267SjkimAdded the 2009 copyright to all module headers and signons. This affects 6598193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 6599193267Sjkimthe tools/utilities. 6600193267Sjkim 6601241973SjkimImplemented a change to allow the host to override any ACPI table, 6602241973Sjkimincluding 6603241973Sjkimdynamically loaded tables. Previously, only the DSDT could be replaced by 6604241973Sjkimthe 6605241973Sjkimhost. With this change, the AcpiOsTableOverride interface is called for 6606241973Sjkimeach 6607241973Sjkimtable found in the RSDT/XSDT during ACPICA initialization, and also 6608241973Sjkimwhenever 6609193267Sjkima table is dynamically loaded via the AML Load operator. 6610193267Sjkim 6611193267SjkimUpdated FADT flag definitions, especially the Boot Architecture flags. 6612193267Sjkim 6613253690SjkimDebugger: For the Find command, automatically pad the input ACPI name 6614253690Sjkimwith 6615253690Sjkimunderscores if the name is shorter than 4 characters. This enables a 6616253690Sjkimmatch 6617193267Sjkimwith the actual namespace entry which is itself padded with underscores. 6618193267Sjkim 6619193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6620193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6621241973Sjkimdebug version of the code includes the debug output trace mechanism and 6622241973Sjkimhas a 6623193267Sjkimmuch larger code and data size. 6624193267Sjkim 6625193267Sjkim Previous Release: 6626193267Sjkim Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6627193267Sjkim Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6628193267Sjkim Current Release: 6629193267Sjkim Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 6630193267Sjkim Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 6631193267Sjkim 6632193267Sjkim2) iASL Compiler/Disassembler and Tools: 6633193267Sjkim 6634193267SjkimFix build error under Bison-2.4. 6635193267Sjkim 6636241973SjkimDissasembler: Enhanced FADT support. Added decoding of the Boot 6637241973SjkimArchitecture 6638193267Sjkimflags. Now decode all flags, regardless of the FADT version. Flag output 6639193267Sjkimincludes the FADT version which first defined each flag. 6640193267Sjkim 6641241973SjkimThe iASL -g option now dumps the RSDT to a file (in addition to the FADT 6642241973Sjkimand 6643193267SjkimDSDT). Windows only. 6644193267Sjkim 6645193267Sjkim---------------------------------------- 6646193267Sjkim04 December 2008. Summary of changes for version 20081204: 6647193267Sjkim 6648193267Sjkim1) ACPI CA Core Subsystem: 6649193267Sjkim 6650241973SjkimThe ACPICA Programmer Reference has been completely updated and revamped 6651241973Sjkimfor 6652193267Sjkimthis release. This includes updates to the external interfaces, OSL 6653193267Sjkiminterfaces, the overview sections, and the debugger reference. 6654193267Sjkim 6655193267SjkimSeveral new ACPICA interfaces have been implemented and documented in the 6656193267Sjkimprogrammer reference: 6657193267SjkimAcpiReset - Writes the reset value to the FADT-defined reset register. 6658193267SjkimAcpiDisableAllGpes - Disable all available GPEs. 6659193267SjkimAcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 6660193267SjkimAcpiGetGpeDevice - Get the GPE block device associated with a GPE. 6661193267SjkimAcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 6662193267SjkimAcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 6663193267SjkimAcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 6664193267Sjkim 6665241973SjkimMost of the public ACPI hardware-related interfaces have been moved to a 6666241973Sjkimnew 6667193267Sjkimfile, components/hardware/hwxface.c 6668193267Sjkim 6669193267SjkimEnhanced the FADT parsing and low-level ACPI register access: The ACPI 6670193267Sjkimregister lengths within the FADT are now used, and the low level ACPI 6671193267Sjkimregister access no longer hardcodes the ACPI register lengths. Given that 6672241973Sjkimthere may be some risk in actually trusting the FADT register lengths, a 6673241973Sjkimrun- 6674253690Sjkimtime option was added to fall back to the default hardcoded lengths if 6675253690Sjkimthe 6676193267SjkimFADT proves to contain incorrect values - UseDefaultRegisterWidths. This 6677241973Sjkimoption is set to true for now, and a warning is issued if a suspicious 6678241973SjkimFADT 6679193267Sjkimregister length is overridden with the default value. 6680193267Sjkim 6681241973SjkimFixed a reference count issue in NsRepairObject. This problem was 6682241973Sjkimintroduced 6683193267Sjkimin version 20081031 as part of a fix to repair Buffer objects within 6684193267SjkimPackages. Lin Ming. 6685193267Sjkim 6686193267SjkimAdded semaphore support to the Linux/Unix application OS-services layer 6687193267Sjkim(OSL). ACPICA BZ 448. Lin Ming. 6688193267Sjkim 6689241973SjkimAdded the ACPI_MUTEX_TYPE configuration option to select whether mutexes 6690241973Sjkimwill 6691193267Sjkimbe implemented in the OSL, or will binary semaphores be used instead. 6692193267Sjkim 6693193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6694193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6695241973Sjkimdebug version of the code includes the debug output trace mechanism and 6696241973Sjkimhas a 6697193267Sjkimmuch larger code and data size. 6698193267Sjkim 6699193267Sjkim Previous Release: 6700193267Sjkim Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6701193267Sjkim Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6702193267Sjkim Current Release: 6703193267Sjkim Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 6704193267Sjkim Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 6705193267Sjkim 6706193267Sjkim2) iASL Compiler/Disassembler and Tools: 6707193267Sjkim 6708253690SjkimiASL: Completed the '-e' option to include additional ACPI tables in 6709253690Sjkimorder 6710241973Sjkimto 6711253690Sjkimaid with disassembly and External statement generation. ACPICA BZ 742. 6712253690SjkimLin 6713193267SjkimMing. 6714193267Sjkim 6715193267SjkimiASL: Removed the "named object in while loop" error. The compiler cannot 6716193267Sjkimdetermine how many times a loop will execute. ACPICA BZ 730. 6717193267Sjkim 6718241973SjkimDisassembler: Implemented support for FADT revision 2 (MS extension). 6719241973SjkimACPICA 6720193267SjkimBZ 743. 6721193267Sjkim 6722253690SjkimDisassembler: Updates for several ACPI data tables (HEST, EINJ, and 6723253690SjkimMCFG). 6724193267Sjkim 6725193267Sjkim---------------------------------------- 6726193267Sjkim31 October 2008. Summary of changes for version 20081031: 6727193267Sjkim 6728193267Sjkim1) ACPI CA Core Subsystem: 6729193267Sjkim 6730241973SjkimRestructured the ACPICA header files into public/private. acpi.h now 6731241973Sjkimincludes 6732241973Sjkimonly the "public" acpica headers. All other acpica headers are "private" 6733241973Sjkimand 6734241973Sjkimshould not be included by acpica users. One new file, accommon.h is used 6735241973Sjkimto 6736241973Sjkiminclude the commonly used private headers for acpica code generation. 6737241973SjkimFuture 6738193267Sjkimplans include moving all private headers to a new subdirectory. 6739193267Sjkim 6740193267SjkimImplemented an automatic Buffer->String return value conversion for 6741253690Sjkimpredefined ACPI methods. For these methods (such as _BIF), added 6742253690Sjkimautomatic 6743241973Sjkimconversion for return objects that are required to be a String, but a 6744241973SjkimBuffer 6745241973Sjkimwas found instead. This can happen when reading string battery data from 6746241973Sjkiman 6747253690Sjkimoperation region, because it used to be difficult to convert the data 6748253690Sjkimfrom 6749253690Sjkimbuffer to string from within the ASL. Ensures that the host OS is 6750253690Sjkimprovided 6751193267Sjkimwith a valid null-terminated string. Linux BZ 11822. 6752193267Sjkim 6753241973SjkimUpdated the FACS waking vector interfaces. Split 6754241973SjkimAcpiSetFirmwareWakingVector 6755241973Sjkiminto two: one for the 32-bit vector, another for the 64-bit vector. This 6756241973Sjkimis 6757253690Sjkimrequired because the host OS must setup the wake much differently for 6758253690Sjkimeach 6759253690Sjkimvector (real vs. protected mode, etc.) and the interface itself should 6760253690Sjkimnot 6761241973Sjkimbe 6762253690Sjkimdeciding which vector to use. Also, eliminated the 6763253690SjkimGetFirmwareWakingVector 6764253690Sjkiminterface, as it served no purpose (only the firmware reads the vector, 6765253690SjkimOS 6766193267Sjkimonly writes the vector.) ACPICA BZ 731. 6767193267Sjkim 6768253690SjkimImplemented a mechanism to escape infinite AML While() loops. Added a 6769253690Sjkimloop 6770253690Sjkimcounter to force exit from AML While loops if the count becomes too 6771253690Sjkimlarge. 6772193267SjkimThis can occur in poorly written AML when the hardware does not respond 6773253690Sjkimwithin a while loop and the loop does not implement a timeout. The 6774253690Sjkimmaximum 6775241973Sjkimloop count is configurable. A new exception code is returned when a loop 6776241973Sjkimis 6777193267Sjkimbroken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 6778193267Sjkim 6779193267SjkimOptimized the execution of AML While loops. Previously, a control state 6780193267Sjkimobject was allocated and freed for each execution of the loop. The 6781253690Sjkimoptimization is to simply reuse the control state for each iteration. 6782253690SjkimThis 6783193267Sjkimspeeds up the raw loop execution time by about 5%. 6784193267Sjkim 6785241973SjkimEnhanced the implicit return mechanism. For Windows compatibility, return 6786241973Sjkiman 6787241973Sjkimimplicit integer of value zero for methods that contain no executable 6788241973Sjkimcode. 6789193267SjkimSuch methods are seen in the field as stubs (presumably), and can cause 6790193267Sjkimdrivers to fail if they expect a return value. Lin Ming. 6791193267Sjkim 6792193267SjkimAllow multiple backslashes as root prefixes in namepaths. In a fully 6793241973Sjkimqualified namepath, allow multiple backslash prefixes. This can happen 6794241973Sjkim(and 6795193267Sjkimis seen in the field) because of the use of a double-backslash in strings 6796253690Sjkim(since backslash is the escape character) causing confusion. ACPICA BZ 6797253690Sjkim739 6798193267SjkimLin Ming. 6799193267Sjkim 6800193267SjkimEmit a warning if two different FACS or DSDT tables are discovered in the 6801241973SjkimFADT. Checks if there are two valid but different addresses for the FACS 6802241973Sjkimand 6803193267SjkimDSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 6804193267Sjkim 6805241973SjkimConsolidated the method argument count validation code. Merged the code 6806241973Sjkimthat 6807193267Sjkimvalidates control method argument counts into the predefined validation 6808241973Sjkimmodule. Eliminates possible multiple warnings for incorrect argument 6809241973Sjkimcounts. 6810193267Sjkim 6811193267SjkimImplemented ACPICA example code. Includes code for ACPICA initialization, 6812193267Sjkimhandler installation, and calling a control method. Available at 6813193267Sjkimsource/tools/examples. 6814193267Sjkim 6815241973SjkimAdded a global pointer for FACS table to simplify internal FACS access. 6816241973SjkimUse 6817241973Sjkimthe global pointer instead of using AcpiGetTableByIndex for each FACS 6818241973Sjkimaccess. 6819193267SjkimThis simplifies the code for the Global Lock and the Firmware Waking 6820193267SjkimVector(s). 6821193267Sjkim 6822193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6823193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6824241973Sjkimdebug version of the code includes the debug output trace mechanism and 6825241973Sjkimhas a 6826193267Sjkimmuch larger code and data size. 6827193267Sjkim 6828193267Sjkim Previous Release: 6829193267Sjkim Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6830193267Sjkim Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6831193267Sjkim Current Release: 6832193267Sjkim Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 6833193267Sjkim Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 6834193267Sjkim 6835193267Sjkim2) iASL Compiler/Disassembler and Tools: 6836193267Sjkim 6837241973SjkimiASL: Improved disassembly of external method calls. Added the -e option 6838241973Sjkimto 6839253690Sjkimallow the inclusion of additional ACPI tables to help with the 6840253690Sjkimdisassembly 6841241973Sjkimof 6842193267Sjkimmethod invocations and the generation of external declarations during the 6843193267Sjkimdisassembly. Certain external method invocations cannot be disassembled 6844241973Sjkimproperly without the actual declaration of the method. Use the -e option 6845241973Sjkimto 6846253690Sjkiminclude the table where the external method(s) are actually declared. 6847253690SjkimMost 6848193267Sjkimuseful for disassembling SSDTs that make method calls back to the master 6849241973SjkimDSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 6850241973Sjkim-d 6851193267Sjkim-e dsdt.aml ssdt1.aml 6852193267Sjkim 6853193267SjkimiASL: Fix to allow references to aliases within ASL namepaths. Fixes a 6854193267Sjkimproblem where the use of an alias within a namepath would result in a not 6855193267Sjkimfound error or cause the compiler to fault. Also now allows forward 6856193267Sjkimreferences from the Alias operator itself. ACPICA BZ 738. 6857193267Sjkim 6858193267Sjkim---------------------------------------- 6859193267Sjkim26 September 2008. Summary of changes for version 20080926: 6860193267Sjkim 6861193267Sjkim1) ACPI CA Core Subsystem: 6862193267Sjkim 6863241973SjkimDesigned and implemented a mechanism to validate predefined ACPI methods 6864241973Sjkimand 6865241973Sjkimobjects. This code validates the predefined ACPI objects (objects whose 6866241973Sjkimnames 6867193267Sjkimstart with underscore) that appear in the namespace, at the time they are 6868193267Sjkimevaluated. The argument count and the type of the returned object are 6869241973Sjkimvalidated against the ACPI specification. The purpose of this validation 6870241973Sjkimis 6871241973Sjkimto detect problems with the BIOS-implemented predefined ACPI objects 6872241973Sjkimbefore 6873241973Sjkimthe results are returned to the ACPI-related drivers. Future enhancements 6874241973Sjkimmay 6875193267Sjkiminclude actual repair of incorrect return objects where possible. Two new 6876193267Sjkimfiles are nspredef.c and acpredef.h. 6877193267Sjkim 6878253690SjkimFixed a fault in the AML parser if a memory allocation fails during the 6879253690SjkimOp 6880193267Sjkimcompletion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 6881193267Sjkim 6882241973SjkimFixed an issue with implicit return compatibility. This change improves 6883241973Sjkimthe 6884241973Sjkimimplicit return mechanism to be more compatible with the MS interpreter. 6885241973SjkimLin 6886193267SjkimMing, ACPICA BZ 349. 6887193267Sjkim 6888241973SjkimImplemented support for zero-length buffer-to-string conversions. Allow 6889241973Sjkimzero 6890241973Sjkimlength strings during interpreter buffer-to-string conversions. For 6891241973Sjkimexample, 6892193267Sjkimduring the ToDecimalString and ToHexString operators, as well as implicit 6893193267Sjkimconversions. Fiodor Suietov, ACPICA BZ 585. 6894193267Sjkim 6895193267SjkimFixed two possible memory leaks in the error exit paths of 6896253690SjkimAcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 6897253690Sjkimare 6898193267Sjkimsimilar in that they use a stack of state objects in order to eliminate 6899193267Sjkimrecursion. The stack must be fully unwound and deallocated if an error 6900193267Sjkimoccurs. Lin Ming. ACPICA BZ 383. 6901193267Sjkim 6902241973SjkimRemoved the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 6903241973Sjkimglobal 6904193267SjkimACPI register table. This bit does not exist and is unused. Lin Ming, Bob 6905193267SjkimMoore ACPICA BZ 442. 6906193267Sjkim 6907193267SjkimRemoved the obsolete version number in module headers. Removed the 6908241973Sjkim"$Revision" number that appeared in each module header. This version 6909241973Sjkimnumber 6910241973Sjkimwas useful under SourceSafe and CVS, but has no meaning under git. It is 6911241973Sjkimnot 6912193267Sjkimonly incorrect, it could also be misleading. 6913193267Sjkim 6914193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6915193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6916241973Sjkimdebug version of the code includes the debug output trace mechanism and 6917241973Sjkimhas a 6918193267Sjkimmuch larger code and data size. 6919193267Sjkim 6920193267Sjkim Previous Release: 6921193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6922193267Sjkim Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6923193267Sjkim Current Release: 6924193267Sjkim Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 6925193267Sjkim Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 6926193267Sjkim 6927193267Sjkim---------------------------------------- 6928193267Sjkim29 August 2008. Summary of changes for version 20080829: 6929193267Sjkim 6930193267Sjkim1) ACPI CA Core Subsystem: 6931193267Sjkim 6932193267SjkimCompleted a major cleanup of the internal ACPI_OPERAND_OBJECT of type 6933253690SjkimReference. Changes include the elimination of cheating on the Object 6934253690Sjkimfield 6935193267Sjkimfor the DdbHandle subtype, addition of a reference class field to 6936241973Sjkimdifferentiate the various reference types (instead of an AML opcode), and 6937241973Sjkimthe 6938193267Sjkimcleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 6939193267Sjkim 6940193267SjkimReduce an error to a warning for an incorrect method argument count. 6941193267SjkimPreviously aborted with an error if too few arguments were passed to a 6942241973Sjkimcontrol method via the external ACPICA interface. Now issue a warning 6943241973Sjkiminstead 6944253690Sjkimand continue. Handles the case where the method inadvertently declares 6945253690Sjkimtoo 6946241973Sjkimmany arguments, but does not actually use the extra ones. Applies mainly 6947241973Sjkimto 6948193267Sjkimthe predefined methods. Lin Ming. Linux BZ 11032. 6949193267Sjkim 6950241973SjkimDisallow the evaluation of named object types with no intrinsic value. 6951241973SjkimReturn 6952241973SjkimAE_TYPE for objects that have no value and therefore evaluation is 6953241973Sjkimundefined: 6954241973SjkimDevice, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 6955241973Sjkimof 6956241973Sjkimthese types were allowed, but an exception would be generated at some 6957241973Sjkimpoint 6958193267Sjkimduring the evaluation. Now, the error is generated up front. 6959193267Sjkim 6960193267SjkimFixed a possible memory leak in the AcpiNsGetExternalPathname function 6961193267Sjkim(nsnames.c). Fixes a leak in the error exit path. 6962193267Sjkim 6963241973SjkimRemoved the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 6964241973Sjkimdebug 6965241973Sjkimlevels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 6966241973SjkimACPI_EXCEPTION 6967193267Sjkiminterfaces. Also added ACPI_DB_EVENTS to correspond with the existing 6968193267SjkimACPI_LV_EVENTS. 6969193267Sjkim 6970193267SjkimRemoved obsolete and/or unused exception codes from the acexcep.h header. 6971241973SjkimThere is the possibility that certain device drivers may be affected if 6972241973Sjkimthey 6973193267Sjkimuse any of these exceptions. 6974193267Sjkim 6975241973SjkimThe ACPICA documentation has been added to the public git source tree, 6976241973Sjkimunder 6977193267Sjkimacpica/documents. Included are the ACPICA programmer reference, the iASL 6978193267Sjkimcompiler reference, and the changes.txt release logfile. 6979193267Sjkim 6980193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 6981193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6982241973Sjkimdebug version of the code includes the debug output trace mechanism and 6983241973Sjkimhas a 6984193267Sjkimmuch larger code and data size. 6985193267Sjkim 6986193267Sjkim Previous Release: 6987193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6988193267Sjkim Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 6989193267Sjkim Current Release: 6990193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 6991193267Sjkim Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 6992193267Sjkim 6993193267Sjkim2) iASL Compiler/Disassembler and Tools: 6994193267Sjkim 6995193267SjkimAllow multiple argument counts for the predefined _SCP method. ACPI 3.0 6996193267Sjkimdefines _SCP with 3 arguments. Previous versions defined it with only 1 6997193267Sjkimargument. iASL now allows both definitions. 6998193267Sjkim 6999253690SjkimiASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7000253690Sjkimzero- 7001193267Sjkimlength subtables when disassembling ACPI tables. Also fixed a couple of 7002241973Sjkimerrors where a full 16-bit table type field was not extracted from the 7003241973Sjkiminput 7004193267Sjkimproperly. 7005193267Sjkim 7006193267Sjkimacpisrc: Improve comment counting mechanism for generating source code 7007241973Sjkimstatistics. Count first and last lines of multi-line comments as 7008241973Sjkimwhitespace, 7009241973Sjkimnot comment lines. Handle Linux legal header in addition to standard 7010241973Sjkimacpica 7011193267Sjkimheader. 7012193267Sjkim 7013193267Sjkim---------------------------------------- 7014193267Sjkim 7015193267Sjkim29 July 2008. Summary of changes for version 20080729: 7016193267Sjkim 7017193267Sjkim1) ACPI CA Core Subsystem: 7018193267Sjkim 7019193267SjkimFix a possible deadlock in the GPE dispatch. Remove call to 7020241973SjkimAcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7021241973Sjkimattempt 7022241973Sjkimto acquire the GPE lock but can deadlock since the GPE lock is already 7023241973Sjkimheld 7024241973Sjkimat dispatch time. This code was introduced in version 20060831 as a 7025241973Sjkimresponse 7026193267Sjkimto Linux BZ 6881 and has since been removed from Linux. 7027193267Sjkim 7028241973SjkimAdd a function to dereference returned reference objects. Examines the 7029241973Sjkimreturn 7030241973Sjkimobject from a call to AcpiEvaluateObject. Any Index or RefOf references 7031241973Sjkimare 7032253690Sjkimautomatically dereferenced in an attempt to return something useful 7033253690Sjkim(these 7034241973Sjkimreference types cannot be converted into an external ACPI_OBJECT.) 7035241973SjkimProvides 7036193267SjkimMS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7037193267Sjkim 7038193267Sjkimx2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7039193267Sjkimsubtables for the MADT and one new subtable for the SRAT. Includes 7040241973Sjkimdisassembler and AcpiSrc support. Data from the Intel 64 Architecture 7041241973Sjkimx2APIC 7042193267SjkimSpecification, June 2008. 7043193267Sjkim 7044241973SjkimAdditional error checking for pathname utilities. Add error check after 7045241973Sjkimall 7046193267Sjkimcalls to AcpiNsGetPathnameLength. Add status return from 7047241973SjkimAcpiNsBuildExternalPath and check after all calls. Add parameter 7048241973Sjkimvalidation 7049193267Sjkimto AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7050193267Sjkim 7051241973SjkimReturn status from the global init function AcpiUtGlobalInitialize. This 7052241973Sjkimis 7053253690Sjkimused by both the kernel subsystem and the utilities such as iASL 7054253690Sjkimcompiler. 7055253690SjkimThe function could possibly fail when the caches are initialized. Yang 7056253690SjkimYi. 7057193267Sjkim 7058193267SjkimAdd a function to decode reference object types to strings. Created for 7059193267Sjkimimproved error messages. 7060193267Sjkim 7061241973SjkimImprove object conversion error messages. Better error messages during 7062241973Sjkimobject 7063241973Sjkimconversion from internal to the external ACPI_OBJECT. Used for external 7064241973Sjkimcalls 7065193267Sjkimto AcpiEvaluateObject. 7066193267Sjkim 7067193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7068193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7069241973Sjkimdebug version of the code includes the debug output trace mechanism and 7070241973Sjkimhas a 7071193267Sjkimmuch larger code and data size. 7072193267Sjkim 7073193267Sjkim Previous Release: 7074193267Sjkim Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7075193267Sjkim Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7076193267Sjkim Current Release: 7077193267Sjkim Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7078193267Sjkim Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7079193267Sjkim 7080193267Sjkim2) iASL Compiler/Disassembler and Tools: 7081193267Sjkim 7082253690SjkimDebugger: fix a possible hang when evaluating non-methods. Fixes a 7083253690Sjkimproblem 7084253690Sjkimintroduced in version 20080701. If the object being evaluated (via 7085253690Sjkimexecute 7086241973Sjkimcommand) is not a method, the debugger can hang while trying to obtain 7087241973Sjkimnon- 7088193267Sjkimexistent parameters. 7089193267Sjkim 7090193267SjkimiASL: relax error for using reserved "_T_x" identifiers. These names can 7091193267Sjkimappear in a disassembled ASL file if they were emitted by the original 7092193267Sjkimcompiler. Instead of issuing an error or warning and forcing the user to 7093193267Sjkimmanually change these names, issue a remark instead. 7094193267Sjkim 7095241973SjkimiASL: error if named object created in while loop. Emit an error if any 7096241973Sjkimnamed 7097253690Sjkimobject is created within a While loop. If allowed, this code will 7098253690Sjkimgenerate 7099241973Sjkima 7100253690Sjkimrun-time error on the second iteration of the loop when an attempt is 7101253690Sjkimmade 7102241973Sjkimto 7103193267Sjkimcreate the same named object twice. ACPICA bugzilla 730. 7104193267Sjkim 7105241973SjkimiASL: Support absolute pathnames for include files. Add support for 7106241973Sjkimabsolute 7107253690Sjkimpathnames within the Include operator. previously, only relative 7108253690Sjkimpathnames 7109193267Sjkimwere supported. 7110193267Sjkim 7111241973SjkimiASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7112241973SjkimDescriptor. 7113193267SjkimThe ACPI spec requires one interrupt minimum. BZ 423 7114193267Sjkim 7115193267SjkimiASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7116193267SjkimHandles the case for the Interrupt Resource Descriptor where 7117193267Sjkimthe ResourceSource argument is omitted but ResourceSourceIndex 7118193267Sjkimis present. Now leave room for the Index. BZ 426 7119193267Sjkim 7120241973SjkimiASL: Prevent error message if CondRefOf target does not exist. Fixes 7121241973Sjkimcases 7122193267Sjkimwhere an error message is emitted if the target does not exist. BZ 516 7123193267Sjkim 7124193267SjkimiASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7125241973Sjkim(get ACPI tables on Windows). This was apparently broken in version 7126241973Sjkim20070919. 7127193267Sjkim 7128241973SjkimAcpiXtract: Handle EOF while extracting data. Correctly handle the case 7129241973Sjkimwhere 7130193267Sjkimthe EOF happens immediately after the last table in the input file. Print 7131193267Sjkimcompletion message. Previously, no message was displayed in this case. 7132193267Sjkim 7133193267Sjkim---------------------------------------- 7134193267Sjkim01 July 2008. Summary of changes for version 20080701: 7135193267Sjkim 7136193267Sjkim0) Git source tree / acpica.org 7137193267Sjkim 7138193267SjkimFixed a problem where a git-clone from http would not transfer the entire 7139193267Sjkimsource tree. 7140193267Sjkim 7141193267Sjkim1) ACPI CA Core Subsystem: 7142193267Sjkim 7143193267SjkimImplemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7144241973Sjkimenable bit. Now performs a read-change-write of the enable register 7145241973Sjkiminstead 7146241973Sjkimof simply writing out the cached enable mask. This will prevent 7147241973Sjkiminadvertent 7148241973Sjkimenabling of GPEs if a rogue GPE is received during initialization (before 7149241973SjkimGPE 7150193267Sjkimhandlers are installed.) 7151193267Sjkim 7152193267SjkimImplemented a copy for dynamically loaded tables. Previously, dynamically 7153193267Sjkimloaded tables were simply mapped - but on some machines this memory is 7154193267Sjkimcorrupted after suspend. Now copy the table to a local buffer. For the 7155193267SjkimOpRegion case, added checksum verify. Use the table length from the table 7156193267Sjkimheader, not the region length. For the Buffer case, use the table length 7157193267Sjkimalso. Dennis Noordsij, Bob Moore. BZ 10734 7158193267Sjkim 7159241973SjkimFixed a problem where the same ACPI table could not be dynamically loaded 7160241973Sjkimand 7161241973Sjkimunloaded more than once. Without this change, a table cannot be loaded 7162241973Sjkimagain 7163193267Sjkimonce it has been loaded/unloaded one time. The current mechanism does not 7164241973Sjkimunregister a table upon an unload. During a load, if the same table is 7165241973Sjkimfound, 7166193267Sjkimthis no longer returns an exception. BZ 722 7167193267Sjkim 7168193267SjkimFixed a problem where the wrong descriptor length was calculated for the 7169253690SjkimEndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7170253690SjkimEndTag 7171193267Sjkimare calculated as 12 bytes long, but the actual length in the internal 7172241973Sjkimdescriptor is 16 because of the round-up to 8 on the 64-bit build. 7173241973SjkimReported 7174193267Sjkimby Linn Crosetto. BZ 728 7175193267Sjkim 7176241973SjkimFixed a possible memory leak in the Unload operator. The DdbHandle 7177241973Sjkimreturned 7178241973Sjkimby Load() did not have its reference count decremented during unload, 7179241973Sjkimleading 7180193267Sjkimto a memory leak. Lin Ming. BZ 727 7181193267Sjkim 7182193267SjkimFixed a possible memory leak when deleting thermal/processor objects. Any 7183193267Sjkimassociated notify handlers (and objects) were not being deleted. Fiodor 7184193267SjkimSuietov. BZ 506 7185193267Sjkim 7186241973SjkimFixed the ordering of the ASCII names in the global mutex table to match 7187241973Sjkimthe 7188241973Sjkimactual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7189241973Sjkimonly. 7190193267SjkimVegard Nossum. BZ 726 7191193267Sjkim 7192193267SjkimEnhanced the AcpiGetObjectInfo interface to return the number of required 7193241973Sjkimarguments if the object is a control method. Added this call to the 7194241973Sjkimdebugger 7195193267Sjkimso the proper number of default arguments are passed to a method. This 7196193267Sjkimprevents a warning when executing methods from AcpiExec. 7197193267Sjkim 7198193267SjkimAdded a check for an invalid handle in AcpiGetObjectInfo. Return 7199193267SjkimAE_BAD_PARAMETER if input handle is invalid. BZ 474 7200193267Sjkim 7201193267SjkimFixed an extraneous warning from exconfig.c on the 64-bit build. 7202193267Sjkim 7203193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7204193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7205241973Sjkimdebug version of the code includes the debug output trace mechanism and 7206241973Sjkimhas a 7207193267Sjkimmuch larger code and data size. 7208193267Sjkim 7209193267Sjkim Previous Release: 7210193267Sjkim Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7211193267Sjkim Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7212193267Sjkim Current Release: 7213193267Sjkim Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7214193267Sjkim Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7215193267Sjkim 7216193267Sjkim2) iASL Compiler/Disassembler and Tools: 7217193267Sjkim 7218193267SjkimiASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7219193267Sjkimresource descriptor names. 7220193267Sjkim 7221241973SjkimiASL: Detect invalid ASCII characters in input (windows version). Removed 7222241973Sjkimthe 7223193267Sjkim"-CF" flag from the flex compile, enables correct detection of non-ASCII 7224193267Sjkimcharacters in the input. BZ 441 7225193267Sjkim 7226241973SjkimiASL: Eliminate warning when result of LoadTable is not used. Eliminate 7227241973Sjkimthe 7228193267Sjkim"result of operation not used" warning when the DDB handle returned from 7229193267SjkimLoadTable is not used. The warning is not needed. BZ 590 7230193267Sjkim 7231253690SjkimAcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7232253690Sjkimmethod 7233241973Sjkimto 7234241973Sjkimpass address of table to the AML. Added option to disable OpRegion 7235241973Sjkimsimulation 7236241973Sjkimto allow creation of an OpRegion with a real address that was passed to 7237241973Sjkim_CFG. 7238253690SjkimAll of this allows testing of the Load and Unload operators from 7239253690SjkimAcpiExec. 7240193267Sjkim 7241241973SjkimDebugger: update tables command for unloaded tables. Handle unloaded 7242241973Sjkimtables 7243193267Sjkimand use the standard table header output routine. 7244193267Sjkim 7245193267Sjkim---------------------------------------- 7246193267Sjkim09 June 2008. Summary of changes for version 20080609: 7247193267Sjkim 7248193267Sjkim1) ACPI CA Core Subsystem: 7249193267Sjkim 7250241973SjkimImplemented a workaround for reversed _PRT entries. A significant number 7251241973Sjkimof 7252193267SjkimBIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7253241973Sjkimchange dynamically detects and repairs this problem. Provides 7254241973Sjkimcompatibility 7255193267Sjkimwith MS ACPI. BZ 6859 7256193267Sjkim 7257193267SjkimSimplified the internal ACPI hardware interfaces to eliminate the locking 7258193267Sjkimflag parameter from Register Read/Write. Added a new external interface, 7259193267SjkimAcpiGetRegisterUnlocked. 7260193267Sjkim 7261241973SjkimFixed a problem where the invocation of a GPE control method could hang. 7262241973SjkimThis 7263193267Sjkimwas a regression introduced in 20080514. The new method argument count 7264193267Sjkimvalidation mechanism can enter an infinite loop when a GPE method is 7265241973Sjkimdispatched. Problem fixed by removing the obsolete code that passed GPE 7266241973Sjkimblock 7267241973Sjkiminformation to the notify handler via the control method parameter 7268241973Sjkimpointer. 7269193267Sjkim 7270241973SjkimFixed a problem where the _SST execution status was incorrectly returned 7271241973Sjkimto 7272253690Sjkimthe caller of AcpiEnterSleepStatePrep. This was a regression introduced 7273253690Sjkimin 7274193267Sjkim20080514. _SST is optional and a NOT_FOUND exception should never be 7275193267Sjkimreturned. BZ 716 7276193267Sjkim 7277241973SjkimFixed a problem where a deleted object could be accessed from within the 7278241973SjkimAML 7279241973Sjkimparser. This was a regression introduced in version 20080123 as a fix for 7280241973Sjkimthe 7281193267SjkimUnload operator. Lin Ming. BZ 10669 7282193267Sjkim 7283241973SjkimCleaned up the debug operand dump mechanism. Eliminated unnecessary 7284241973Sjkimoperands 7285193267Sjkimand eliminated the use of a negative index in a loop. Operands are now 7286241973Sjkimdisplayed in the correct order, not backwards. This also fixes a 7287241973Sjkimregression 7288193267Sjkimintroduced in 20080514 on 64-bit systems where the elimination of 7289241973SjkimACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7290241973Sjkim715 7291193267Sjkim 7292241973SjkimFixed a possible memory leak in EvPciConfigRegionSetup where the error 7293241973Sjkimexit 7294193267Sjkimpath did not delete a locally allocated structure. 7295193267Sjkim 7296193267SjkimUpdated definitions for the DMAR and SRAT tables to synchronize with the 7297193267Sjkimcurrent specifications. Includes disassembler support. 7298193267Sjkim 7299193267SjkimFixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7300241973Sjkimloop termination value was used. Loop terminated on iteration early, 7301241973Sjkimmissing 7302193267Sjkimone mutex. Linn Crosetto 7303193267Sjkim 7304193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7305193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7306241973Sjkimdebug version of the code includes the debug output trace mechanism and 7307241973Sjkimhas a 7308193267Sjkimmuch larger code and data size. 7309193267Sjkim 7310193267Sjkim Previous Release: 7311193267Sjkim Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7312193267Sjkim Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7313193267Sjkim Current Release: 7314193267Sjkim Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7315193267Sjkim Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7316193267Sjkim 7317193267Sjkim2) iASL Compiler/Disassembler and Tools: 7318193267Sjkim 7319193267SjkimDisassembler: Implemented support for EisaId() within _CID objects. Now 7320193267Sjkimdisassemble integer _CID objects back to EisaId invocations, including 7321193267Sjkimmultiple integers within _CID packages. Includes single-step support for 7322193267Sjkimdebugger also. 7323193267Sjkim 7324193267SjkimDisassembler: Added support for DMAR and SRAT table definition changes. 7325193267Sjkim 7326193267Sjkim---------------------------------------- 7327193267Sjkim14 May 2008. Summary of changes for version 20080514: 7328193267Sjkim 7329193267Sjkim1) ACPI CA Core Subsystem: 7330193267Sjkim 7331193267SjkimFixed a problem where GPEs were enabled too early during the ACPICA 7332193267Sjkiminitialization. This could lead to "handler not installed" errors on some 7333241973Sjkimmachines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7334241973SjkimThis 7335241973Sjkimensures that all operation regions and devices throughout the namespace 7336241973Sjkimhave 7337193267Sjkimbeen initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7338193267Sjkim 7339193267SjkimImplemented a change to the enter sleep code. Moved execution of the _GTS 7340241973Sjkimmethod to just before setting sleep enable bit. The execution was moved 7341241973Sjkimfrom 7342193267SjkimAcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7343193267Sjkimimmediately before the SLP_EN bit is set, as per the ACPI specification. 7344193267SjkimLuming Yu, BZ 1653. 7345193267Sjkim 7346241973SjkimImplemented a fix to disable unknown GPEs (2nd version). Now always 7347241973Sjkimdisable 7348193267Sjkimthe GPE, even if ACPICA thinks that that it is already disabled. It is 7349241973Sjkimpossible that the AML or some other code has enabled the GPE unbeknownst 7350241973Sjkimto 7351193267Sjkimthe ACPICA code. 7352193267Sjkim 7353241973SjkimFixed a problem with the Field operator where zero-length fields would 7354241973Sjkimreturn 7355241973Sjkiman AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7356241973SjkimASL 7357193267Sjkimfield declarations in Field(), BankField(), and IndexField(). BZ 10606. 7358193267Sjkim 7359241973SjkimImplemented a fix for the Load operator, now load the table at the 7360241973Sjkimnamespace 7361241973Sjkimroot. This reverts a change introduced in version 20071019. The table is 7362241973Sjkimnow 7363193267Sjkimloaded at the namespace root even though this goes against the ACPI 7364241973Sjkimspecification. This provides compatibility with other ACPI 7365241973Sjkimimplementations. 7366241973SjkimThe ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7367241973SjkimMing. 7368193267Sjkim 7369241973SjkimFixed a problem where ACPICA would not Load() tables with unusual 7370241973Sjkimsignatures. 7371193267SjkimNow ignore ACPI table signature for Load() operator. Only "SSDT" is 7372193267Sjkimacceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7373241973SjkimTherefore, signature validation is worthless. Apparently MS ACPI accepts 7374241973Sjkimsuch 7375193267Sjkimsignatures, ACPICA must be compatible. BZ 10454. 7376193267Sjkim 7377241973SjkimFixed a possible negative array index in AcpiUtValidateException. Added 7378241973SjkimNULL 7379253690Sjkimfields to the exception string arrays to eliminate a -1 subtraction on 7380253690Sjkimthe 7381193267SjkimSubStatus field. 7382193267Sjkim 7383193267SjkimUpdated the debug tracking macros to reduce overall code and data size. 7384193267SjkimChanged ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7385193267Sjkiminstead of pointers to static strings. Jan Beulich and Bob Moore. 7386193267Sjkim 7387193267SjkimImplemented argument count checking in control method invocation via 7388253690SjkimAcpiEvaluateObject. Now emit an error if too few arguments, warning if 7389253690Sjkimtoo 7390241973Sjkimmany. This applies only to extern programmatic control method execution, 7391241973Sjkimnot 7392193267Sjkimmethod-to-method calls within the AML. Lin Ming. 7393193267Sjkim 7394241973SjkimEliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7395241973Sjkimno 7396241973Sjkimlonger needed, especially with the removal of 16-bit support. It was 7397241973Sjkimreplaced 7398253690Sjkimmostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7399253690Sjkimbit 7400241973Sjkimon 7401193267Sjkim32/64-bit platforms is required. 7402193267Sjkim 7403193267SjkimAdded the C const qualifier for appropriate string constants -- mostly 7404193267SjkimMODULE_NAME and printf format strings. Jan Beulich. 7405193267Sjkim 7406193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7407193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7408241973Sjkimdebug version of the code includes the debug output trace mechanism and 7409241973Sjkimhas a 7410193267Sjkimmuch larger code and data size. 7411193267Sjkim 7412193267Sjkim Previous Release: 7413193267Sjkim Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7414193267Sjkim Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7415193267Sjkim Current Release: 7416193267Sjkim Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7417193267Sjkim Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7418193267Sjkim 7419193267Sjkim2) iASL Compiler/Disassembler and Tools: 7420193267Sjkim 7421253690SjkimImplemented ACPI table revision ID validation in the disassembler. Zero 7422253690Sjkimis 7423241973Sjkimalways invalid. For DSDTs, the ID controls the interpreter integer width. 7424241973Sjkim1 7425193267Sjkimmeans 32-bit and this is unusual. 2 or greater is 64-bit. 7426193267Sjkim 7427193267Sjkim---------------------------------------- 7428193267Sjkim21 March 2008. Summary of changes for version 20080321: 7429193267Sjkim 7430193267Sjkim1) ACPI CA Core Subsystem: 7431193267Sjkim 7432193267SjkimImplemented an additional change to the GPE support in order to suppress 7433253690Sjkimspurious or stray GPEs. The AcpiEvDisableGpe function will now 7434253690Sjkimpermanently 7435241973Sjkimdisable incoming GPEs that are neither enabled nor disabled -- meaning 7436241973Sjkimthat 7437241973Sjkimthe GPE is unknown to the system. This should prevent future interrupt 7438241973Sjkimfloods 7439193267Sjkimfrom that GPE. BZ 6217 (Zhang Rui) 7440193267Sjkim 7441193267SjkimFixed a problem where NULL package elements were not returned to the 7442193267SjkimAcpiEvaluateObject interface correctly. The element was simply ignored 7443241973Sjkiminstead of returning a NULL ACPI_OBJECT package element, potentially 7444241973Sjkimcausing 7445241973Sjkima buffer overflow and/or confusing the caller who expected a fixed number 7446241973Sjkimof 7447193267Sjkimelements. BZ 10132 (Lin Ming, Bob Moore) 7448193267Sjkim 7449241973SjkimFixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7450241973SjkimDword, 7451241973SjkimQword), Field, BankField, and IndexField operators when invoked from 7452241973Sjkiminside 7453241973Sjkiman executing control method. In this case, these operators created 7454241973Sjkimnamespace 7455193267Sjkimnodes that were incorrectly left marked as permanent nodes instead of 7456193267Sjkimtemporary nodes. This could cause a problem if there is race condition 7457241973Sjkimbetween an exiting control method and a running namespace walk. (Reported 7458241973Sjkimby 7459193267SjkimLinn Crosetto) 7460193267Sjkim 7461193267SjkimFixed a problem where the CreateField and CreateXXXField operators would 7462241973Sjkimincorrectly allow duplicate names (the name of the field) with no 7463241973Sjkimexception 7464193267Sjkimgenerated. 7465193267Sjkim 7466241973SjkimImplemented several changes for Notify handling. Added support for new 7467241973SjkimNotify 7468193267Sjkimvalues (ACPI 2.0+) and improved the Notify debug output. Notify on 7469253690SjkimPowerResource objects is no longer allowed, as per the ACPI 7470253690Sjkimspecification. 7471193267Sjkim(Bob Moore, Zhang Rui) 7472193267Sjkim 7473241973SjkimAll Reference Objects returned via the AcpiEvaluateObject interface are 7474241973Sjkimnow 7475241973Sjkimmarked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 7476241973Sjkimfor 7477241973SjkimNULL objects - either NULL package elements or unresolved named 7478241973Sjkimreferences. 7479193267Sjkim 7480253690SjkimFixed a problem where an extraneous debug message was produced for 7481253690Sjkimpackage 7482193267Sjkimobjects (when debugging enabled). The message "Package List length larger 7483253690Sjkimthan NumElements count" is now produced in the correct case, and is now 7484253690Sjkiman 7485193267Sjkimerror message rather than a debug message. Added a debug message for the 7486241973Sjkimopposite case, where NumElements is larger than the Package List (the 7487241973Sjkimpackage 7488193267Sjkimwill be padded out with NULL elements as per the ACPI spec.) 7489193267Sjkim 7490241973SjkimImplemented several improvements for the output of the ASL "Debug" object 7491241973Sjkimto 7492193267Sjkimclarify and keep all data for a given object on one output line. 7493193267Sjkim 7494253690SjkimFixed two size calculation issues with the variable-length Start 7495253690SjkimDependent 7496193267Sjkimresource descriptor. 7497193267Sjkim 7498193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7499193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7500241973Sjkimdebug version of the code includes the debug output trace mechanism and 7501241973Sjkimhas 7502193267Sjkima much larger code and data size. 7503193267Sjkim 7504193267Sjkim Previous Release: 7505193267Sjkim Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7506193267Sjkim Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7507193267Sjkim Current Release: 7508193267Sjkim Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7509193267Sjkim Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7510193267Sjkim 7511193267Sjkim2) iASL Compiler/Disassembler and Tools: 7512193267Sjkim 7513253690SjkimFixed a problem with the use of the Switch operator where execution of 7514253690Sjkimthe 7515193267Sjkimcontaining method by multiple concurrent threads could cause an 7516193267SjkimAE_ALREADY_EXISTS exception. This is caused by the fact that there is no 7517193267Sjkimactual Switch opcode, it must be simulated with local named temporary 7518241973Sjkimvariables and if/else pairs. The solution chosen was to mark any method 7519241973Sjkimthat 7520241973Sjkimuses Switch as Serialized, thus preventing multiple thread entries. BZ 7521241973Sjkim469. 7522193267Sjkim 7523193267Sjkim---------------------------------------- 7524193267Sjkim13 February 2008. Summary of changes for version 20080213: 7525193267Sjkim 7526193267Sjkim1) ACPI CA Core Subsystem: 7527193267Sjkim 7528241973SjkimImplemented another MS compatibility design change for GPE/Notify 7529241973Sjkimhandling. 7530241973SjkimGPEs are now cleared/enabled asynchronously to allow all pending notifies 7531241973Sjkimto 7532193267Sjkimcomplete first. It is expected that the OSL will queue the enable request 7533241973Sjkimbehind all pending notify requests (may require changes to the local host 7534241973SjkimOSL 7535193267Sjkimin AcpiOsExecute). Alexey Starikovskiy. 7536193267Sjkim 7537193267SjkimFixed a problem where buffer and package objects passed as arguments to a 7538241973Sjkimcontrol method via the external AcpiEvaluateObject interface could cause 7539241973Sjkiman 7540193267SjkimAE_AML_INTERNAL exception depending on the order and type of operators 7541193267Sjkimexecuted by the target control method. 7542193267Sjkim 7543193267SjkimFixed a problem where resource descriptor size optimization could cause a 7544253690Sjkimproblem when a _CRS resource template is passed to a _SRS method. The 7545253690Sjkim_SRS 7546193267Sjkimresource template must use the same descriptors (with the same size) as 7547241973Sjkimreturned from _CRS. This change affects the following resource 7548241973Sjkimdescriptors: 7549241973SjkimIRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 7550241973Sjkim9487) 7551193267Sjkim 7552241973SjkimFixed a problem where a CopyObject to RegionField, BankField, and 7553241973SjkimIndexField 7554241973Sjkimobjects did not perform an implicit conversion as it should. These types 7555241973Sjkimmust 7556241973Sjkimretain their initial type permanently as per the ACPI specification. 7557241973SjkimHowever, 7558193267Sjkima CopyObject to all other object types should not perform an implicit 7559193267Sjkimconversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 7560193267Sjkim 7561193267SjkimFixed a problem with the AcpiGetDevices interface where the mechanism to 7562193267Sjkimmatch device CIDs did not examine the entire list of available CIDs, but 7563193267Sjkiminstead aborted on the first non-matching CID. Andrew Patterson. 7564193267Sjkim 7565241973SjkimFixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 7566241973Sjkimwas 7567193267Sjkiminadvertently changed to return a 16-bit value instead of a 32-bit value, 7568193267Sjkimtruncating the upper dword of a 64-bit value. This macro is only used to 7569193267Sjkimdisplay debug output, so no incorrect calculations were made. Also, 7570193267Sjkimreimplemented the macro so that a 64-bit shift is not performed by 7571193267Sjkiminefficient compilers. 7572193267Sjkim 7573193267SjkimAdded missing va_end statements that should correspond with each va_start 7574193267Sjkimstatement. 7575193267Sjkim 7576193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7577193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7578241973Sjkimdebug version of the code includes the debug output trace mechanism and 7579241973Sjkimhas 7580193267Sjkima much larger code and data size. 7581193267Sjkim 7582193267Sjkim Previous Release: 7583193267Sjkim Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7584193267Sjkim Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7585193267Sjkim Current Release: 7586193267Sjkim Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7587193267Sjkim Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7588193267Sjkim 7589193267Sjkim2) iASL Compiler/Disassembler and Tools: 7590193267Sjkim 7591193267SjkimImplemented full disassembler support for the following new ACPI tables: 7592193267SjkimBERT, EINJ, and ERST. Implemented partial disassembler support for the 7593193267Sjkimcomplicated HEST table. These tables support the Windows Hardware Error 7594193267SjkimArchitecture (WHEA). 7595193267Sjkim 7596193267Sjkim---------------------------------------- 7597193267Sjkim23 January 2008. Summary of changes for version 20080123: 7598193267Sjkim 7599193267Sjkim1) ACPI CA Core Subsystem: 7600193267Sjkim 7601193267SjkimAdded the 2008 copyright to all module headers and signons. This affects 7602193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 7603193267Sjkimthe tools/utilities. 7604193267Sjkim 7605253690SjkimFixed a problem with the SizeOf operator when used with Package and 7606253690SjkimBuffer 7607253690Sjkimobjects. These objects have deferred execution for some arguments, and 7608253690Sjkimthe 7609241973Sjkimexecution is now completed before the SizeOf is executed. This problem 7610241973Sjkimcaused 7611241973Sjkimunexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 7612241973SjkimBZ 7613193267Sjkim9558 7614193267Sjkim 7615253690SjkimImplemented an enhancement to the interpreter "slack mode". In the 7616253690Sjkimabsence 7617241973Sjkimof 7618253690Sjkiman explicit return or an implicitly returned object from the last 7619253690Sjkimexecuted 7620241973Sjkimopcode, a control method will now implicitly return an integer of value 0 7621241973Sjkimfor 7622193267SjkimMicrosoft compatibility. (Lin Ming) BZ 392 7623193267Sjkim 7624253690SjkimFixed a problem with the Load operator where an exception was not 7625253690Sjkimreturned 7626241973Sjkimin 7627193267Sjkimthe case where the table is already loaded. (Lin Ming) BZ 463 7628193267Sjkim 7629241973SjkimImplemented support for the use of DDBHandles as an Indexed Reference, as 7630241973Sjkimper 7631193267Sjkimthe ACPI spec. (Lin Ming) BZ 486 7632193267Sjkim 7633241973SjkimImplemented support for UserTerm (Method invocation) for the Unload 7634241973Sjkimoperator 7635193267Sjkimas per the ACPI spec. (Lin Ming) BZ 580 7636193267Sjkim 7637253690SjkimFixed a problem with the LoadTable operator where the OemId and 7638253690SjkimOemTableId 7639241973Sjkiminput strings could cause unexpected failures if they were shorter than 7640241973Sjkimthe 7641193267Sjkimmaximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 7642193267Sjkim 7643241973SjkimImplemented support for UserTerm (Method invocation) for the Unload 7644241973Sjkimoperator 7645193267Sjkimas per the ACPI spec. (Lin Ming) BZ 580 7646193267Sjkim 7647241973SjkimImplemented header file support for new ACPI tables - BERT, ERST, EINJ, 7648241973SjkimHEST, 7649193267SjkimIBFT, UEFI, WDAT. Disassembler support is forthcoming. 7650193267Sjkim 7651193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7652193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7653241973Sjkimdebug version of the code includes the debug output trace mechanism and 7654241973Sjkimhas 7655193267Sjkima much larger code and data size. 7656193267Sjkim 7657193267Sjkim Previous Release: 7658193267Sjkim Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7659193267Sjkim Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7660193267Sjkim Current Release: 7661193267Sjkim Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 7662193267Sjkim Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 7663193267Sjkim 7664193267Sjkim2) iASL Compiler/Disassembler and Tools: 7665193267Sjkim 7666241973SjkimImplemented support in the disassembler for checksum validation on 7667241973Sjkimincoming 7668241973Sjkimbinary DSDTs and SSDTs. If incorrect, a message is displayed within the 7669241973Sjkimtable 7670193267Sjkimheader dump at the start of the disassembly. 7671193267Sjkim 7672253690SjkimImplemented additional debugging information in the namespace listing 7673253690Sjkimfile 7674241973Sjkimcreated during compilation. In addition to the namespace hierarchy, the 7675241973Sjkimfull 7676193267Sjkimpathname to each namespace object is displayed. 7677193267Sjkim 7678241973SjkimFixed a problem with the disassembler where invalid ACPI tables could 7679241973Sjkimcause 7680193267Sjkimfaults or infinite loops. 7681193267Sjkim 7682193267SjkimFixed an unexpected parse error when using the optional "parameter types" 7683193267Sjkimlist in a control method declaration. (Lin Ming) BZ 397 7684193267Sjkim 7685253690SjkimFixed a problem where two External declarations with the same name did 7686253690Sjkimnot 7687193267Sjkimcause an error (Lin Ming) BZ 509 7688193267Sjkim 7689193267SjkimImplemented support for full TermArgs (adding Argx, Localx and method 7690241973Sjkiminvocation) for the ParameterData parameter to the LoadTable operator. 7691241973Sjkim(Lin 7692193267SjkimMing) BZ 583,587 7693193267Sjkim 7694193267Sjkim---------------------------------------- 7695193267Sjkim19 December 2007. Summary of changes for version 20071219: 7696193267Sjkim 7697193267Sjkim1) ACPI CA Core Subsystem: 7698193267Sjkim 7699193267SjkimImplemented full support for deferred execution for the TermArg string 7700193267Sjkimarguments for DataTableRegion. This enables forward references and full 7701241973Sjkimoperand resolution for the three string arguments. Similar to 7702241973SjkimOperationRegion 7703193267Sjkimdeferred argument execution.) Lin Ming. BZ 430 7704193267Sjkim 7705253690SjkimImplemented full argument resolution support for the BankValue argument 7706253690Sjkimto 7707241973SjkimBankField. Previously, only constants were supported, now any TermArg may 7708241973Sjkimbe 7709193267Sjkimused. Lin Ming BZ 387, 393 7710193267Sjkim 7711193267SjkimFixed a problem with AcpiGetDevices where the search of a branch of the 7712193267Sjkimdevice tree could be terminated prematurely. In accordance with the ACPI 7713241973Sjkimspecification, the search down the current branch is terminated if a 7714241973Sjkimdevice 7715241973Sjkimis both not present and not functional (instead of just not present.) 7716241973SjkimYakui 7717193267SjkimZhao. 7718193267Sjkim 7719241973SjkimFixed a problem where "unknown" GPEs could be allowed to fire repeatedly 7720241973Sjkimif 7721253690Sjkimthe underlying AML code changed the GPE enable registers. Now, any 7722253690Sjkimunknown 7723241973Sjkimincoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 7724241973Sjkimdisabled 7725193267Sjkiminstead of simply ignored. Rui Zhang. 7726193267Sjkim 7727253690SjkimFixed a problem with Index Fields where the Index register was 7728253690Sjkimincorrectly 7729193267Sjkimlimited to a maximum of 32 bits. Now any size may be used. 7730193267Sjkim 7731253690SjkimFixed a couple memory leaks associated with "implicit return" objects 7732253690Sjkimwhen 7733193267Sjkimthe AML Interpreter slack mode is enabled. Lin Ming BZ 349 7734193267Sjkim 7735193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7736193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7737241973Sjkimdebug version of the code includes the debug output trace mechanism and 7738241973Sjkimhas 7739193267Sjkima much larger code and data size. 7740193267Sjkim 7741193267Sjkim Previous Release: 7742193267Sjkim Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7743193267Sjkim Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7744193267Sjkim Current Release: 7745193267Sjkim Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 7746193267Sjkim Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 7747193267Sjkim 7748193267Sjkim---------------------------------------- 7749193267Sjkim14 November 2007. Summary of changes for version 20071114: 7750193267Sjkim 7751193267Sjkim1) ACPI CA Core Subsystem: 7752193267Sjkim 7753193267SjkimImplemented event counters for each of the Fixed Events, the ACPI SCI 7754193267Sjkim(interrupt) itself, and control methods executed. Named 7755241973SjkimAcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 7756241973SjkimThese 7757193267Sjkimshould be useful for debugging and statistics. 7758193267Sjkim 7759193267SjkimImplemented a new external interface, AcpiGetStatistics, to retrieve the 7760193267Sjkimcontents of the various event counters. Returns the current values for 7761193267SjkimAcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 7762241973SjkimAcpiMethodCount. The interface can be expanded in the future if new 7763241973Sjkimcounters 7764253690Sjkimare added. Device drivers should use this interface rather than access 7765253690Sjkimthe 7766193267Sjkimcounters directly. 7767193267Sjkim 7768253690SjkimFixed a problem with the FromBCD and ToBCD operators. With some 7769253690Sjkimcompilers, 7770253690Sjkimthe ShortDivide function worked incorrectly, causing problems with the 7771253690SjkimBCD 7772193267Sjkimfunctions with large input values. A truncation from 64-bit to 32-bit 7773193267Sjkiminadvertently occurred. Internal BZ 435. Lin Ming 7774193267Sjkim 7775241973SjkimFixed a problem with Index references passed as method arguments. 7776241973SjkimReferences 7777241973Sjkimpassed as arguments to control methods were dereferenced immediately 7778241973Sjkim(before 7779253690Sjkimcontrol was passed to the called method). The references are now 7780253690Sjkimcorrectly 7781193267Sjkimpassed directly to the called method. BZ 5389. Lin Ming 7782193267Sjkim 7783241973SjkimFixed a problem with CopyObject used in conjunction with the Index 7784241973Sjkimoperator. 7785241973SjkimThe reference was incorrectly dereferenced before the copy. The reference 7786241973Sjkimis 7787193267Sjkimnow correctly copied. BZ 5391. Lin Ming 7788193267Sjkim 7789241973SjkimFixed a problem with Control Method references within Package objects. 7790241973SjkimThese 7791193267Sjkimreferences are now correctly generated. This completes the package 7792193267Sjkimconstruction overhaul that began in version 20071019. 7793193267Sjkim 7794193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7795193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7796241973Sjkimdebug version of the code includes the debug output trace mechanism and 7797241973Sjkimhas 7798193267Sjkima much larger code and data size. 7799193267Sjkim 7800193267Sjkim Previous Release: 7801193267Sjkim Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7802193267Sjkim Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7803193267Sjkim Current Release: 7804193267Sjkim Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 7805193267Sjkim Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 7806193267Sjkim 7807193267Sjkim 7808193267Sjkim2) iASL Compiler/Disassembler and Tools: 7809193267Sjkim 7810193267SjkimThe AcpiExec utility now installs handlers for all of the predefined 7811193267SjkimOperation Region types. New types supported are: PCI_Config, CMOS, and 7812193267SjkimPCIBARTarget. 7813193267Sjkim 7814241973SjkimFixed a problem with the 64-bit version of AcpiExec where the extended 7815241973Sjkim(64- 7816193267Sjkimbit) address fields for the DSDT and FACS within the FADT were not being 7817253690Sjkimused, causing truncation of the upper 32-bits of these addresses. Lin 7818253690SjkimMing 7819193267Sjkimand Bob Moore 7820193267Sjkim 7821193267Sjkim---------------------------------------- 7822193267Sjkim19 October 2007. Summary of changes for version 20071019: 7823193267Sjkim 7824193267Sjkim1) ACPI CA Core Subsystem: 7825193267Sjkim 7826193267SjkimFixed a problem with the Alias operator when the target of the alias is a 7827253690Sjkimnamed ASL operator that opens a new scope -- Scope, Device, 7828253690SjkimPowerResource, 7829193267SjkimProcessor, and ThermalZone. In these cases, any children of the original 7830241973Sjkimoperator could not be accessed via the alias, potentially causing 7831241973Sjkimunexpected 7832193267SjkimAE_NOT_FOUND exceptions. (BZ 9067) 7833193267Sjkim 7834193267SjkimFixed a problem with the Package operator where all named references were 7835241973Sjkimcreated as object references and left otherwise unresolved. According to 7836241973Sjkimthe 7837241973SjkimACPI specification, a Package can only contain Data Objects or references 7838241973Sjkimto 7839193267Sjkimcontrol methods. The implication is that named references to Data Objects 7840193267Sjkim(Integer, Buffer, String, Package, BufferField, Field) should be resolved 7841193267Sjkimimmediately upon package creation. This is the approach taken with this 7842193267Sjkimchange. References to all other named objects (Methods, Devices, Scopes, 7843193267Sjkimetc.) are all now properly created as reference objects. (BZ 5328) 7844193267Sjkim 7845193267SjkimReverted a change to Notify handling that was introduced in version 7846193267Sjkim20070508. This version changed the Notify handling from asynchronous to 7847241973Sjkimfully synchronous (Device driver Notify handling with respect to the 7848241973SjkimNotify 7849193267SjkimASL operator). It was found that this change caused more problems than it 7850193267Sjkimsolved and was removed by most users. 7851193267Sjkim 7852241973SjkimFixed a problem with the Increment and Decrement operators where the type 7853241973Sjkimof 7854193267Sjkimthe target object could be unexpectedly and incorrectly changed. (BZ 353) 7855193267SjkimLin Ming. 7856193267Sjkim 7857193267SjkimFixed a problem with the Load and LoadTable operators where the table 7858193267Sjkimlocation within the namespace was ignored. Instead, the table was always 7859193267Sjkimloaded into the root or current scope. Lin Ming. 7860193267Sjkim 7861193267SjkimFixed a problem with the Load operator when loading a table from a buffer 7862193267Sjkimobject. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 7863193267Sjkim 7864241973SjkimFixed a problem with the Debug object where a store of a DdbHandle 7865241973Sjkimreference 7866193267Sjkimobject to the Debug object could cause a fault. 7867193267Sjkim 7868241973SjkimAdded a table checksum verification for the Load operator, in the case 7869241973Sjkimwhere 7870193267Sjkimthe load is from a buffer. (BZ 578). 7871193267Sjkim 7872241973SjkimImplemented additional parameter validation for the LoadTable operator. 7873241973SjkimThe 7874241973Sjkimlength of the input strings SignatureString, OemIdString, and OemTableId 7875241973Sjkimare 7876193267Sjkimnow checked for maximum lengths. (BZ 582) Lin Ming. 7877193267Sjkim 7878193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7879193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7880241973Sjkimdebug version of the code includes the debug output trace mechanism and 7881241973Sjkimhas 7882193267Sjkima much larger code and data size. 7883193267Sjkim 7884193267Sjkim Previous Release: 7885193267Sjkim Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7886193267Sjkim Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7887193267Sjkim Current Release: 7888193267Sjkim Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 7889193267Sjkim Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 7890193267Sjkim 7891193267Sjkim 7892193267Sjkim2) iASL Compiler/Disassembler: 7893193267Sjkim 7894193267SjkimFixed a problem where if a single file was specified and the file did not 7895193267Sjkimexist, no error message was emitted. (Introduced with wildcard support in 7896193267Sjkimversion 20070917.) 7897193267Sjkim 7898193267Sjkim---------------------------------------- 7899193267Sjkim19 September 2007. Summary of changes for version 20070919: 7900193267Sjkim 7901193267Sjkim1) ACPI CA Core Subsystem: 7902193267Sjkim 7903193267SjkimDesigned and implemented new external interfaces to install and remove 7904241973Sjkimhandlers for ACPI table-related events. Current events that are defined 7905241973Sjkimare 7906193267SjkimLOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 7907193267Sjkimthey are dynamically loaded and unloaded. See AcpiInstallTableHandler and 7908193267SjkimAcpiRemoveTableHandler. (Lin Ming and Bob Moore) 7909193267Sjkim 7910193267SjkimFixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 7911193267Sjkim(acpi_serialized option on Linux) could cause some systems to hang during 7912193267Sjkiminitialization. (Bob Moore) BZ 8171 7913193267Sjkim 7914193267SjkimFixed a problem where objects of certain types (Device, ThermalZone, 7915193267SjkimProcessor, PowerResource) can be not found if they are declared and 7916193267Sjkimreferenced from within the same control method (Lin Ming) BZ 341 7917193267Sjkim 7918193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7919193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7920241973Sjkimdebug version of the code includes the debug output trace mechanism and 7921241973Sjkimhas 7922193267Sjkima much larger code and data size. 7923193267Sjkim 7924193267Sjkim Previous Release: 7925193267Sjkim Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7926193267Sjkim Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7927193267Sjkim Current Release: 7928193267Sjkim Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 7929193267Sjkim Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 7930193267Sjkim 7931193267Sjkim 7932193267Sjkim2) iASL Compiler/Disassembler: 7933193267Sjkim 7934253690SjkimImplemented support to allow multiple files to be compiled/disassembled 7935253690Sjkimin 7936241973Sjkima 7937241973Sjkimsingle invocation. This includes command line wildcard support for both 7938241973Sjkimthe 7939193267SjkimWindows and Unix versions of the compiler. This feature simplifies the 7940253690Sjkimdisassembly and compilation of multiple ACPI tables in a single 7941253690Sjkimdirectory. 7942193267Sjkim 7943193267Sjkim---------------------------------------- 7944193267Sjkim08 May 2007. Summary of changes for version 20070508: 7945193267Sjkim 7946193267Sjkim1) ACPI CA Core Subsystem: 7947193267Sjkim 7948241973SjkimImplemented a Microsoft compatibility design change for the handling of 7949241973Sjkimthe 7950193267SjkimNotify AML operator. Previously, notify handlers were dispatched and 7951193267Sjkimexecuted completely asynchronously in a deferred thread. The new design 7952253690Sjkimstill executes the notify handlers in a different thread, but the 7953253690Sjkimoriginal 7954253690Sjkimthread that executed the Notify() now waits at a synchronization point 7955253690Sjkimfor 7956241973Sjkimthe notify handler to complete. Some machines depend on a synchronous 7957241973SjkimNotify 7958193267Sjkimoperator in order to operate correctly. 7959193267Sjkim 7960193267SjkimImplemented support to allow Package objects to be passed as method 7961193267Sjkimarguments to the external AcpiEvaluateObject interface. Previously, this 7962193267Sjkimwould return the AE_NOT_IMPLEMENTED exception. This feature had not been 7963193267Sjkimimplemented since there were no reserved control methods that required it 7964193267Sjkimuntil recently. 7965193267Sjkim 7966241973SjkimFixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 7967241973Sjkimthat 7968193267Sjkimcontained invalid non-zero values in reserved fields could cause later 7969253690Sjkimfailures because these fields have meaning in later revisions of the 7970253690SjkimFADT. 7971241973SjkimFor incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 7972241973Sjkimfields 7973193267Sjkimare: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 7974193267Sjkim 7975253690SjkimFixed a problem where the Global Lock handle was not properly updated if 7976253690Sjkima 7977253690Sjkimthread that acquired the Global Lock via executing AML code then 7978253690Sjkimattempted 7979241973Sjkimto acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 7980241973SjkimJoe 7981193267SjkimLiu. 7982193267Sjkim 7983193267SjkimFixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 7984193267Sjkimcould be corrupted if the interrupt being removed was at the head of the 7985193267Sjkimlist. Reported by Linn Crosetto. 7986193267Sjkim 7987193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 7988193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7989241973Sjkimdebug version of the code includes the debug output trace mechanism and 7990241973Sjkimhas 7991193267Sjkima much larger code and data size. 7992193267Sjkim 7993193267Sjkim Previous Release: 7994193267Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 7995193267Sjkim Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 7996193267Sjkim Current Release: 7997193267Sjkim Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 7998193267Sjkim Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 7999193267Sjkim 8000193267Sjkim---------------------------------------- 8001167802Sjkim20 March 2007. Summary of changes for version 20070320: 8002167802Sjkim 8003167802Sjkim1) ACPI CA Core Subsystem: 8004167802Sjkim 8005193267SjkimImplemented a change to the order of interpretation and evaluation of AML 8006193267Sjkimoperand objects within the AML interpreter. The interpreter now evaluates 8007193267Sjkimoperands in the order that they appear in the AML stream (and the 8008253690Sjkimcorresponding ASL code), instead of in the reverse order (after the 8009253690Sjkimentire 8010253690Sjkimoperand list has been parsed). The previous behavior caused several 8011253690Sjkimsubtle 8012193267Sjkimincompatibilities with the Microsoft AML interpreter as well as being 8013193267Sjkimsomewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8014167802Sjkim 8015241973SjkimImplemented a change to the ACPI Global Lock support. All interfaces to 8016241973Sjkimthe 8017193267Sjkimglobal lock now allow the same thread to acquire the lock multiple times. 8018241973SjkimThis affects the AcpiAcquireGlobalLock external interface to the global 8019241973Sjkimlock 8020193267Sjkimas well as the internal use of the global lock to support AML fields -- a 8021241973Sjkimcontrol method that is holding the global lock can now simultaneously 8022241973Sjkimaccess 8023253690SjkimAML fields that require global lock protection. Previously, in both 8024253690Sjkimcases, 8025241973Sjkimthis would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8026241973Sjkimto 8027193267SjkimAcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8028241973SjkimController. There is no change to the behavior of the AML Acquire 8029241973Sjkimoperator, 8030193267Sjkimas this can already be used to acquire a mutex multiple times by the same 8031193267Sjkimthread. BZ 8066. With assistance from Alexey Starikovskiy. 8032167802Sjkim 8033193267SjkimFixed a problem where invalid objects could be referenced in the AML 8034253690SjkimInterpreter after error conditions. During operand evaluation, ensure 8035253690Sjkimthat 8036193267Sjkimthe internal "Return Object" field is cleared on error and only valid 8037241973Sjkimpointers are stored there. Caused occasional access to deleted objects 8038241973Sjkimthat 8039193267Sjkimresulted in "large reference count" warning messages. Valery Podrezov. 8040167802Sjkim 8041241973SjkimFixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8042241973Sjkimon 8043193267Sjkimdeeply nested control method invocations. BZ 7873, local BZ 487. Valery 8044193267SjkimPodrezov. 8045167802Sjkim 8046193267SjkimFixed an internal problem with the handling of result objects on the 8047193267Sjkiminterpreter result stack. BZ 7872. Valery Podrezov. 8048167802Sjkim 8049241973SjkimRemoved obsolete code that handled the case where AML_NAME_OP is the 8050241973Sjkimtarget 8051193267Sjkimof a reference (Reference.Opcode). This code was no longer necessary. BZ 8052193267Sjkim7874. Valery Podrezov. 8053167802Sjkim 8054253690SjkimRemoved obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8055253690Sjkimwas 8056241973Sjkima 8057193267Sjkimremnant from the previously discontinued 16-bit support. 8058167802Sjkim 8059193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8060193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8061241973Sjkimdebug version of the code includes the debug output trace mechanism and 8062241973Sjkimhas 8063193267Sjkima much larger code and data size. 8064167802Sjkim 8065167802Sjkim Previous Release: 8066167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8067167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8068167802Sjkim Current Release: 8069167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8070167802Sjkim Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8071167802Sjkim 8072167802Sjkim---------------------------------------- 8073167802Sjkim26 January 2007. Summary of changes for version 20070126: 8074167802Sjkim 8075167802Sjkim1) ACPI CA Core Subsystem: 8076167802Sjkim 8077193267SjkimAdded the 2007 copyright to all module headers and signons. This affects 8078193267Sjkimvirtually every file in the ACPICA core subsystem, the iASL compiler, and 8079193267Sjkimthe utilities. 8080167802Sjkim 8081193267SjkimImplemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8082241973Sjkimduring a table load. A bad pointer was passed in the case where the DSDT 8083241973Sjkimis 8084193267Sjkimoverridden, causing a fault in this case. 8085167802Sjkim 8086193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8087193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8088241973Sjkimdebug version of the code includes the debug output trace mechanism and 8089241973Sjkimhas 8090193267Sjkima much larger code and data size. 8091167802Sjkim 8092167802Sjkim Previous Release: 8093167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8094167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8095167802Sjkim Current Release: 8096167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8097167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8098167802Sjkim 8099167802Sjkim---------------------------------------- 8100167802Sjkim15 December 2006. Summary of changes for version 20061215: 8101167802Sjkim 8102167802Sjkim1) ACPI CA Core Subsystem: 8103167802Sjkim 8104241973SjkimSupport for 16-bit ACPICA has been completely removed since it is no 8105241973Sjkimlonger 8106193267Sjkimnecessary and it clutters the code. All 16-bit macros, types, and 8107241973Sjkimconditional compiles have been removed, cleaning up and simplifying the 8108241973Sjkimcode 8109193267Sjkimacross the entire subsystem. DOS support is no longer needed since the 8110193267Sjkimbootable Linux firmware kit is now available. 8111167802Sjkim 8112193267SjkimThe handler for the Global Lock is now removed during AcpiTerminate to 8113193267Sjkimenable a clean subsystem restart, via the implementation of the 8114193267SjkimAcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8115193267SjkimHP) 8116167802Sjkim 8117253690SjkimImplemented enhancements to the multithreading support within the 8118253690Sjkimdebugger 8119241973Sjkimto enable improved multithreading debugging and evaluation of the 8120241973Sjkimsubsystem. 8121167802Sjkim(Valery Podrezov) 8122167802Sjkim 8123241973SjkimDebugger: Enhanced the Statistics/Memory command to emit the total 8124241973Sjkim(maximum) 8125241973Sjkimmemory used during the execution, as well as the maximum memory consumed 8126241973Sjkimby 8127193267Sjkimeach of the various object types. (Valery Podrezov) 8128167802Sjkim 8129193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8130193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8131241973Sjkimdebug version of the code includes the debug output trace mechanism and 8132241973Sjkimhas 8133193267Sjkima much larger code and data size. 8134193267Sjkim 8135167802Sjkim Previous Release: 8136167802Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8137167802Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8138167802Sjkim Current Release: 8139167802Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8140167802Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8141167802Sjkim 8142167802Sjkim 8143167802Sjkim2) iASL Compiler/Disassembler and Tools: 8144167802Sjkim 8145193267SjkimAcpiExec: Implemented a new option (-m) to display full memory use 8146193267Sjkimstatistics upon subsystem/program termination. (Valery Podrezov) 8147167802Sjkim 8148167802Sjkim---------------------------------------- 8149167802Sjkim09 November 2006. Summary of changes for version 20061109: 8150167802Sjkim 8151167802Sjkim1) ACPI CA Core Subsystem: 8152167802Sjkim 8153253690SjkimOptimized the Load ASL operator in the case where the source operand is 8154253690Sjkiman 8155193267Sjkimoperation region. Simply map the operation region memory, instead of 8156193267Sjkimperforming a bytewise read. (Region must be of type SystemMemory, see 8157193267Sjkimbelow.) 8158167802Sjkim 8159193267SjkimFixed the Load ASL operator for the case where the source operand is a 8160241973Sjkimregion field. A buffer object is also allowed as the source operand. BZ 8161241973Sjkim480 8162167802Sjkim 8163241973SjkimFixed a problem where the Load ASL operator allowed the source operand to 8164241973Sjkimbe 8165193267Sjkiman operation region of any type. It is now restricted to regions of type 8166193267SjkimSystemMemory, as per the ACPI specification. BZ 481 8167167802Sjkim 8168193267SjkimAdditional cleanup and optimizations for the new Table Manager code. 8169167802Sjkim 8170253690SjkimAcpiEnable will now fail if all of the required ACPI tables are not 8171253690Sjkimloaded 8172193267Sjkim(FADT, FACS, DSDT). BZ 477 8173167802Sjkim 8174241973SjkimAdded #pragma pack(8/4) to acobject.h to ensure that the structures in 8175241973Sjkimthis 8176193267Sjkimheader are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8177193267Sjkimmanually optimized to be aligned and will not work if it is byte-packed. 8178167802Sjkim 8179193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8180193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8181241973Sjkimdebug version of the code includes the debug output trace mechanism and 8182241973Sjkimhas 8183193267Sjkima much larger code and data size. 8184167802Sjkim 8185167802Sjkim Previous Release: 8186167802Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8187167802Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8188167802Sjkim Current Release: 8189167802Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8190167802Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8191167802Sjkim 8192167802Sjkim 8193167802Sjkim2) iASL Compiler/Disassembler and Tools: 8194167802Sjkim 8195193267SjkimFixed a problem where the presence of the _OSI predefined control method 8196193267Sjkimwithin complex expressions could cause an internal compiler error. 8197167802Sjkim 8198193267SjkimAcpiExec: Implemented full region support for multiple address spaces. 8199193267SjkimSpaceId is now part of the REGION object. BZ 429 8200167802Sjkim 8201167802Sjkim---------------------------------------- 8202167802Sjkim11 October 2006. Summary of changes for version 20061011: 8203167802Sjkim 8204167802Sjkim1) ACPI CA Core Subsystem: 8205167802Sjkim 8206193267SjkimCompleted an AML interpreter performance enhancement for control method 8207193267Sjkimexecution. Previously a 2-pass parse/execution, control methods are now 8208193267Sjkimcompletely parsed and executed in a single pass. This improves overall 8209193267Sjkiminterpreter performance by ~25%, reduces code size, and reduces CPU stack 8210193267Sjkimuse. (Valery Podrezov + interpreter changes in version 20051202 that 8211193267Sjkimeliminated namespace loading during the pass one parse.) 8212167802Sjkim 8213241973SjkimImplemented _CID support for PCI Root Bridge detection. If the _HID does 8214241973Sjkimnot 8215241973Sjkimmatch the predefined PCI Root Bridge IDs, the _CID list (if present) is 8216241973Sjkimnow 8217193267Sjkimobtained and also checked for an ID match. 8218167802Sjkim 8219241973SjkimImplemented additional support for the PCI _ADR execution: upsearch until 8220241973Sjkima 8221193267Sjkimdevice scope is found before executing _ADR. This allows PCI_Config 8222253690Sjkimoperation regions to be declared locally within control methods 8223253690Sjkimunderneath 8224193267SjkimPCI device objects. 8225167802Sjkim 8226193267SjkimFixed a problem with a possible race condition between threads executing 8227193267SjkimAcpiWalkNamespace and the AML interpreter. This condition was removed by 8228253690Sjkimmodifying AcpiWalkNamespace to (by default) ignore all temporary 8229253690Sjkimnamespace 8230193267Sjkimentries created during any concurrent control method execution. An 8231193267Sjkimadditional namespace race condition is known to exist between 8232193267SjkimAcpiWalkNamespace and the Load/Unload ASL operators and is still under 8233193267Sjkiminvestigation. 8234167802Sjkim 8235193267SjkimRestructured the AML ParseLoop function, breaking it into several 8236253690Sjkimsubfunctions in order to reduce CPU stack use and improve 8237253690Sjkimmaintainability. 8238193267Sjkim(Mikhail Kouzmich) 8239167802Sjkim 8240253690SjkimAcpiGetHandle: Fix for parameter validation to detect invalid 8241253690Sjkimcombinations 8242193267Sjkimof prefix handle and pathname. BZ 478 8243167802Sjkim 8244193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8245193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8246241973Sjkimdebug version of the code includes the debug output trace mechanism and 8247241973Sjkimhas 8248193267Sjkima much larger code and data size. 8249167802Sjkim 8250167802Sjkim Previous Release: 8251167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8252167802Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8253167802Sjkim Current Release: 8254167802Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8255167802Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8256167802Sjkim 8257167802Sjkim2) iASL Compiler/Disassembler and Tools: 8258167802Sjkim 8259241973SjkimPorted the -g option (get local ACPI tables) to the new ACPICA Table 8260241973SjkimManager 8261193267Sjkimto restore original behavior. 8262167802Sjkim 8263167802Sjkim---------------------------------------- 8264167802Sjkim27 September 2006. Summary of changes for version 20060927: 8265167802Sjkim 8266167802Sjkim1) ACPI CA Core Subsystem: 8267167802Sjkim 8268193267SjkimRemoved the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8269193267SjkimThese functions now use a spinlock for mutual exclusion and the interrupt 8270193267Sjkimlevel indication flag is not needed. 8271167802Sjkim 8272193267SjkimFixed a problem with the Global Lock where the lock could appear to be 8273193267Sjkimobtained before it is actually obtained. The global lock semaphore was 8274253690Sjkiminadvertently created with one unit instead of zero units. (BZ 464) 8275253690SjkimFiodor 8276193267SjkimSuietov. 8277167802Sjkim 8278241973SjkimFixed a possible memory leak and fault in AcpiExResolveObjectToValue 8279241973Sjkimduring 8280193267Sjkima read from a buffer or region field. (BZ 458) Fiodor Suietov. 8281167802Sjkim 8282193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8283193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8284241973Sjkimdebug version of the code includes the debug output trace mechanism and 8285241973Sjkimhas 8286193267Sjkima much larger code and data size. 8287167802Sjkim 8288167802Sjkim Previous Release: 8289167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8290167802Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8291167802Sjkim Current Release: 8292167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8293167802Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8294167802Sjkim 8295167802Sjkim 8296167802Sjkim2) iASL Compiler/Disassembler and Tools: 8297167802Sjkim 8298253690SjkimFixed a compilation problem with the pre-defined Resource Descriptor 8299253690Sjkimfield 8300241973Sjkimnames where an "object does not exist" error could be incorrectly 8301241973Sjkimgenerated 8302193267Sjkimif the parent ResourceTemplate pathname places the template within a 8303193267Sjkimdifferent namespace scope than the current scope. (BZ 7212) 8304167802Sjkim 8305253690SjkimFixed a problem where the compiler could hang after syntax errors 8306253690Sjkimdetected 8307193267Sjkimin an ElseIf construct. (BZ 453) 8308167802Sjkim 8309193267SjkimFixed a problem with the AmlFilename parameter to the DefinitionBlock() 8310241973Sjkimoperator. An incorrect output filename was produced when this parameter 8311241973Sjkimwas 8312193267Sjkima null string (""). Now, the original input filename is used as the AML 8313193267Sjkimoutput filename, with an ".aml" extension. 8314167802Sjkim 8315253690SjkimImplemented a generic batch command mode for the AcpiExec utility 8316253690Sjkim(execute 8317193267Sjkimany AML debugger command) (Valery Podrezov). 8318167802Sjkim 8319167802Sjkim---------------------------------------- 8320167802Sjkim12 September 2006. Summary of changes for version 20060912: 8321167802Sjkim 8322167802Sjkim1) ACPI CA Core Subsystem: 8323167802Sjkim 8324193267SjkimEnhanced the implementation of the "serialized mode" of the interpreter 8325193267Sjkim(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8326241973Sjkimspecified, instead of creating a serialization semaphore per control 8327241973Sjkimmethod, 8328193267Sjkimthe interpreter lock is simply no longer released before a blocking 8329193267Sjkimoperation during control method execution. This effectively makes the AML 8330193267SjkimInterpreter single-threaded. The overhead of a semaphore per-method is 8331193267Sjkimeliminated. 8332167802Sjkim 8333241973SjkimFixed a regression where an error was no longer emitted if a control 8334241973Sjkimmethod 8335193267Sjkimattempts to create 2 objects of the same name. This once again returns 8336241973SjkimAE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8337241973Sjkimthat 8338193267Sjkimwill dynamically serialize the control method to possible prevent future 8339193267Sjkimerrors. (BZ 440) 8340167802Sjkim 8341193267SjkimIntegrated a fix for a problem with PCI Express HID detection in the PCI 8342193267SjkimConfig Space setup procedure. (BZ 7145) 8343167802Sjkim 8344193267SjkimMoved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8345193267SjkimAcpiHwInitialize function - the FADT registers are now validated when the 8346193267Sjkimtable is loaded. 8347167802Sjkim 8348253690SjkimAdded two new warnings during FADT verification - 1) if the FADT is 8349253690Sjkimlarger 8350253690Sjkimthan the largest known FADT version, and 2) if there is a mismatch 8351253690Sjkimbetween 8352241973Sjkima 8353241973Sjkim32-bit block address and the 64-bit X counterpart (when both are non- 8354241973Sjkimzero.) 8355167802Sjkim 8356193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8357193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8358241973Sjkimdebug version of the code includes the debug output trace mechanism and 8359241973Sjkimhas 8360193267Sjkima much larger code and data size. 8361167802Sjkim 8362167802Sjkim Previous Release: 8363167802Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8364167802Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8365167802Sjkim Current Release: 8366167802Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8367167802Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8368167802Sjkim 8369167802Sjkim 8370167802Sjkim2) iASL Compiler/Disassembler and Tools: 8371167802Sjkim 8372253690SjkimFixed a problem with the implementation of the Switch() operator where 8373253690Sjkimthe 8374253690Sjkimtemporary variable was declared too close to the actual Switch, instead 8375253690Sjkimof 8376193267Sjkimat method level. This could cause a problem if the Switch() operator is 8377193267Sjkimwithin a while loop, causing an error on the second iteration. (BZ 460) 8378167802Sjkim 8379193267SjkimDisassembler - fix for error emitted for unknown type for target of scope 8380193267Sjkimoperator. Now, ignore it and continue. 8381167802Sjkim 8382193267SjkimDisassembly of an FADT now verifies the input FADT and reports any errors 8383193267Sjkimfound. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8384167802Sjkim 8385253690SjkimDisassembly of raw data buffers with byte initialization data now 8386253690Sjkimprefixes 8387193267Sjkimeach output line with the current buffer offset. 8388167802Sjkim 8389193267SjkimDisassembly of ASF! table now includes all variable-length data fields at 8390193267Sjkimthe end of some of the subtables. 8391167802Sjkim 8392193267SjkimThe disassembler now emits a comment if a buffer appears to be a 8393241973SjkimResourceTemplate, but cannot be disassembled as such because the EndTag 8394241973Sjkimdoes 8395193267Sjkimnot appear at the very end of the buffer. 8396167802Sjkim 8397241973SjkimAcpiExec - Added the "-t" command line option to enable the serialized 8398241973Sjkimmode 8399193267Sjkimof the AML interpreter. 8400167802Sjkim 8401167802Sjkim---------------------------------------- 8402167802Sjkim31 August 2006. Summary of changes for version 20060831: 8403167802Sjkim 8404167802Sjkim1) ACPI CA Core Subsystem: 8405167802Sjkim 8406167802SjkimMiscellaneous fixes for the Table Manager: 8407193267Sjkim- Correctly initialize internal common FADT for all 64-bit "X" fields 8408167802Sjkim- Fixed a couple table mapping issues during table load 8409167802Sjkim- Fixed a couple alignment issues for IA64 8410167802Sjkim- Initialize input array to zero in AcpiInitializeTables 8411193267Sjkim- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8412193267SjkimAcpiGetTableByIndex 8413167802Sjkim 8414241973SjkimChange for GPE support: when a "wake" GPE is received, all wake GPEs are 8415241973Sjkimnow 8416193267Sjkimimmediately disabled to prevent the waking GPE from firing again and to 8417193267Sjkimprevent other wake GPEs from interrupting the wake process. 8418167802Sjkim 8419253690SjkimAdded the AcpiGpeCount global that tracks the number of processed GPEs, 8420253690Sjkimto 8421193267Sjkimbe used for debugging systems with a large number of ACPI interrupts. 8422167802Sjkim 8423193267SjkimImplemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8424193267Sjkimboth the ACPICA headers and the disassembler. 8425167802Sjkim 8426193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8427193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8428241973Sjkimdebug version of the code includes the debug output trace mechanism and 8429241973Sjkimhas 8430193267Sjkima much larger code and data size. 8431167802Sjkim 8432167802Sjkim Previous Release: 8433167802Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8434167802Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8435167802Sjkim Current Release: 8436167802Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8437167802Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8438167802Sjkim 8439167802Sjkim 8440167802Sjkim2) iASL Compiler/Disassembler and Tools: 8441167802Sjkim 8442167802SjkimDisassembler support for the DMAR ACPI table. 8443167802Sjkim 8444167802Sjkim---------------------------------------- 8445167802Sjkim23 August 2006. Summary of changes for version 20060823: 8446167802Sjkim 8447167802Sjkim1) ACPI CA Core Subsystem: 8448167802Sjkim 8449193267SjkimThe Table Manager component has been completely redesigned and 8450241973Sjkimreimplemented. The new design is much simpler, and reduces the overall 8451241973Sjkimcode 8452241973Sjkimand data size of the kernel-resident ACPICA by approximately 5%. Also, it 8453241973Sjkimis 8454193267Sjkimnow possible to obtain the ACPI tables very early during kernel 8455193267Sjkiminitialization, even before dynamic memory management is initialized. 8456193267Sjkim(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 8457167802Sjkim 8458167802SjkimObsolete ACPICA interfaces: 8459167802Sjkim 8460241973Sjkim- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 8461241973Sjkiminit 8462193267Sjkimtime). 8463167802Sjkim- AcpiLoadTable: Not needed. 8464167802Sjkim- AcpiUnloadTable: Not needed. 8465167802Sjkim 8466167802SjkimNew ACPICA interfaces: 8467167802Sjkim 8468241973Sjkim- AcpiInitializeTables: Must be called before the table manager can be 8469241973Sjkimused. 8470193267Sjkim- AcpiReallocateRootTable: Used to transfer the root table to dynamically 8471193267Sjkimallocated memory after it becomes available. 8472253690Sjkim- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 8473253690Sjkimtables 8474193267Sjkimin the RSDT/XSDT. 8475167802Sjkim 8476167802SjkimOther ACPICA changes: 8477167802Sjkim 8478241973Sjkim- AcpiGetTableHeader returns the actual mapped table header, not a copy. 8479241973SjkimUse 8480193267SjkimAcpiOsUnmapMemory to free this mapping. 8481193267Sjkim- AcpiGetTable returns the actual mapped table. The mapping is managed 8482193267Sjkiminternally and must not be deleted by the caller. Use of this interface 8483193267Sjkimcauses no additional dynamic memory allocation. 8484241973Sjkim- AcpiFindRootPointer: Support for physical addressing has been 8485241973Sjkimeliminated, 8486193267Sjkimit appeared to be unused. 8487193267Sjkim- The interface to AcpiOsMapMemory has changed to be consistent with the 8488193267Sjkimother allocation interfaces. 8489241973Sjkim- The interface to AcpiOsGetRootPointer has changed to eliminate 8490241973Sjkimunnecessary 8491193267Sjkimparameters. 8492253690Sjkim- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 8493253690Sjkim64- 8494193267Sjkimbit platforms. Was previously 64 bits on all platforms. 8495241973Sjkim- The interface to the ACPI Global Lock acquire/release macros have 8496241973Sjkimchanged 8497193267Sjkimslightly since ACPICA no longer keeps a local copy of the FACS with a 8498193267Sjkimconstructed pointer to the actual global lock. 8499167802Sjkim 8500167802SjkimPorting to the new table manager: 8501167802Sjkim 8502193267Sjkim- AcpiInitializeTables: Must be called once, and can be called anytime 8503241973Sjkimduring the OS initialization process. It allows the host to specify an 8504241973Sjkimarea 8505193267Sjkimof memory to be used to store the internal version of the RSDT/XSDT (root 8506241973Sjkimtable). This allows the host to access ACPI tables before memory 8507241973Sjkimmanagement 8508193267Sjkimis initialized and running. 8509241973Sjkim- AcpiReallocateRootTable: Can be called after memory management is 8510241973Sjkimrunning 8511193267Sjkimto copy the root table to a dynamically allocated array, freeing up the 8512193267Sjkimscratch memory specified in the call to AcpiInitializeTables. 8513193267Sjkim- AcpiSubsystemInitialize: This existing interface is independent of the 8514253690SjkimTable Manager, and does not have to be called before the Table Manager 8515253690Sjkimcan 8516193267Sjkimbe used, it only must be called before the rest of ACPICA can be used. 8517241973Sjkim- ACPI Tables: Some changes have been made to the names and structure of 8518241973Sjkimthe 8519241973Sjkimactbl.h and actbl1.h header files and may require changes to existing 8520241973Sjkimcode. 8521241973SjkimFor example, bitfields have been completely removed because of their lack 8522241973Sjkimof 8523193267Sjkimportability across C compilers. 8524193267Sjkim- Update interfaces to the Global Lock acquire/release macros if local 8525193267Sjkimversions are used. (see acwin.h) 8526167802Sjkim 8527167802SjkimObsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 8528167802Sjkim 8529167802SjkimNew files: tbfind.c 8530167802Sjkim 8531193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8532193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8533241973Sjkimdebug version of the code includes the debug output trace mechanism and 8534241973Sjkimhas 8535193267Sjkima much larger code and data size. 8536167802Sjkim 8537167802Sjkim Previous Release: 8538167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8539167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8540167802Sjkim Current Release: 8541167802Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8542167802Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8543167802Sjkim 8544167802Sjkim 8545167802Sjkim2) iASL Compiler/Disassembler and Tools: 8546167802Sjkim 8547167802SjkimNo changes for this release. 8548167802Sjkim 8549167802Sjkim---------------------------------------- 8550167802Sjkim21 July 2006. Summary of changes for version 20060721: 8551167802Sjkim 8552167802Sjkim1) ACPI CA Core Subsystem: 8553167802Sjkim 8554193267SjkimThe full source code for the ASL test suite used to validate the iASL 8555193267Sjkimcompiler and the ACPICA core subsystem is being released with the ACPICA 8556241973Sjkimsource for the first time. The source is contained in a separate package 8557241973Sjkimand 8558241973Sjkimconsists of over 1100 files that exercise all ASL/AML operators. The 8559241973Sjkimpackage 8560253690Sjkimshould appear on the Intel/ACPI web site shortly. (Valery Podrezov, 8561253690SjkimFiodor 8562167802SjkimSuietov) 8563167802Sjkim 8564193267SjkimCompleted a new design and implementation for support of the ACPI Global 8565193267SjkimLock. On the OS side, the global lock is now treated as a standard AML 8566193267Sjkimmutex. Previously, multiple OS threads could "acquire" the global lock 8567241973Sjkimsimultaneously. However, this could cause the BIOS to be starved out of 8568241973Sjkimthe 8569193267Sjkimlock - especially in cases such as the Embedded Controller driver where 8570193267Sjkimthere is a tight coupling between the OS and the BIOS. 8571167802Sjkim 8572193267SjkimImplemented an optimization for the ACPI Global Lock interrupt mechanism. 8573193267SjkimThe Global Lock interrupt handler no longer queues the execution of a 8574241973Sjkimseparate thread to signal the global lock semaphore. Instead, the 8575241973Sjkimsemaphore 8576193267Sjkimis signaled directly from the interrupt handler. 8577167802Sjkim 8578193267SjkimImplemented support within the AML interpreter for package objects that 8579253690Sjkimcontain a larger AML length (package list length) than the package 8580253690Sjkimelement 8581193267Sjkimcount. In this case, the length of the package is truncated to match the 8582241973Sjkimpackage element count. Some BIOS code apparently modifies the package 8583241973Sjkimlength 8584253690Sjkimon the fly, and this change supports this behavior. Provides 8585253690Sjkimcompatibility 8586193267Sjkimwith the MS AML interpreter. (With assistance from Fiodor Suietov) 8587167802Sjkim 8588253690SjkimImplemented a temporary fix for the BankValue parameter of a Bank Field 8589253690Sjkimto 8590193267Sjkimsupport all constant values, now including the Zero and One opcodes. 8591241973SjkimEvaluation of this parameter must eventually be converted to a full 8592241973SjkimTermArg 8593253690Sjkimevaluation. A not-implemented error is now returned (temporarily) for 8594253690Sjkimnon- 8595193267Sjkimconstant values for this parameter. 8596167802Sjkim 8597167802SjkimFixed problem reports (Fiodor Suietov) integrated: 8598241973Sjkim- Fix for premature object deletion after CopyObject on Operation Region 8599241973Sjkim(BZ 8600193267Sjkim350) 8601167802Sjkim 8602193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8603193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8604241973Sjkimdebug version of the code includes the debug output trace mechanism and 8605241973Sjkimhas 8606193267Sjkima much larger code and data size. 8607167802Sjkim 8608167802Sjkim Previous Release: 8609167802Sjkim Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 8610167802Sjkim Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 8611167802Sjkim Current Release: 8612167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8613167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8614167802Sjkim 8615167802Sjkim 8616167802Sjkim2) iASL Compiler/Disassembler and Tools: 8617167802Sjkim 8618167802SjkimNo changes for this release. 8619167802Sjkim 8620167802Sjkim---------------------------------------- 8621167802Sjkim07 July 2006. Summary of changes for version 20060707: 8622167802Sjkim 8623167802Sjkim1) ACPI CA Core Subsystem: 8624167802Sjkim 8625193267SjkimAdded the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 8626193267Sjkimthat do not allow the initialization of address pointers within packed 8627193267Sjkimstructures - even though the hardware itself may support misaligned 8628193267Sjkimtransfers. Some of the debug data structures are packed by default to 8629193267Sjkimminimize size. 8630167802Sjkim 8631241973SjkimAdded an error message for the case where AcpiOsGetThreadId() returns 8632241973Sjkimzero. 8633193267SjkimA non-zero value is required by the core ACPICA code to ensure the proper 8634193267Sjkimoperation of AML mutexes and recursive control methods. 8635167802Sjkim 8636193267SjkimThe DSDT is now the only ACPI table that determines whether the AML 8637241973Sjkiminterpreter is in 32-bit or 64-bit mode. Not really a functional change, 8638241973Sjkimbut 8639253690Sjkimthe hooks for per-table 32/64 switching have been removed from the code. 8640253690SjkimA 8641193267Sjkimclarification to the ACPI specification is forthcoming in ACPI 3.0B. 8642167802Sjkim 8643193267SjkimFixed a possible leak of an OwnerID in the error path of 8644193267SjkimAcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 8645241973Sjkimdeletion to a single place in AcpiTbUninstallTable to correct possible 8646241973Sjkimleaks 8647193267Sjkimwhen using the AcpiTbDeleteTablesByType interface (with assistance from 8648193267SjkimLance Ortiz.) 8649167802Sjkim 8650193267SjkimFixed a problem with Serialized control methods where the semaphore 8651193267Sjkimassociated with the method could be over-signaled after multiple method 8652193267Sjkiminvocations. 8653167802Sjkim 8654241973SjkimFixed two issues with the locking of the internal namespace data 8655241973Sjkimstructure. 8656193267SjkimBoth the Unload() operator and AcpiUnloadTable interface now lock the 8657193267Sjkimnamespace during the namespace deletion associated with the table unload 8658193267Sjkim(with assistance from Linn Crosetto.) 8659167802Sjkim 8660167802SjkimFixed problem reports (Valery Podrezov) integrated: 8661193267Sjkim- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 8662167802Sjkim 8663167802SjkimFixed problem reports (Fiodor Suietov) integrated: 8664167802Sjkim- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 8665193267Sjkim- On Address Space handler deletion, needless deactivation call (BZ 374) 8666253690Sjkim- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 8667253690Sjkim375) 8668241973Sjkim- Possible memory leak, Notify sub-objects of Processor, Power, 8669241973SjkimThermalZone 8670193267Sjkim(BZ 376) 8671193267Sjkim- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 8672167802Sjkim- Minimum Length of RSDT should be validated (BZ 379) 8673193267Sjkim- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 8674193267SjkimHandler (BZ (380) 8675241973Sjkim- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 8676241973Sjkimloaded 8677193267Sjkim(BZ 381) 8678167802Sjkim 8679193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8680193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8681241973Sjkimdebug version of the code includes the debug output trace mechanism and 8682241973Sjkimhas 8683193267Sjkima much larger code and data size. 8684167802Sjkim 8685167802Sjkim Previous Release: 8686167802Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8687167802Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8688167802Sjkim Current Release: 8689167802Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8690167802Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8691167802Sjkim 8692167802Sjkim 8693167802Sjkim2) iASL Compiler/Disassembler and Tools: 8694167802Sjkim 8695167802SjkimFixed problem reports: 8696193267SjkimCompiler segfault when ASL contains a long (>1024) String declaration (BZ 8697193267Sjkim436) 8698167802Sjkim 8699167802Sjkim---------------------------------------- 8700167802Sjkim23 June 2006. Summary of changes for version 20060623: 8701167802Sjkim 8702167802Sjkim1) ACPI CA Core Subsystem: 8703167802Sjkim 8704193267SjkimImplemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 8705193267Sjkimallows the type to be customized to the host OS for improved efficiency 8706193267Sjkim(since a spinlock is usually a very small object.) 8707167802Sjkim 8708253690SjkimImplemented support for "ignored" bits in the ACPI registers. According 8709253690Sjkimto 8710193267Sjkimthe ACPI specification, these bits should be preserved when writing the 8711241973Sjkimregisters via a read/modify/write cycle. There are 3 bits preserved in 8712241973Sjkimthis 8713193267Sjkimmanner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 8714167802Sjkim 8715253690SjkimImplemented the initial deployment of new OSL mutex interfaces. Since 8716253690Sjkimsome 8717193267Sjkimhost operating systems have separate mutex and semaphore objects, this 8718193267Sjkimfeature was requested. The base code now uses mutexes (and the new mutex 8719193267Sjkiminterfaces) wherever a binary semaphore was used previously. However, for 8720241973Sjkimthe current release, the mutex interfaces are defined as macros to map 8721241973Sjkimthem 8722241973Sjkimto the existing semaphore interfaces. Therefore, no OSL changes are 8723241973Sjkimrequired 8724193267Sjkimat this time. (See acpiosxf.h) 8725167802Sjkim 8726193267SjkimFixed several problems with the support for the control method SyncLevel 8727253690Sjkimparameter. The SyncLevel now works according to the ACPI specification 8728253690Sjkimand 8729253690Sjkimin concert with the Mutex SyncLevel parameter, since the current 8730253690SjkimSyncLevel 8731241973Sjkimis a property of the executing thread. Mutual exclusion for control 8732241973Sjkimmethods 8733193267Sjkimis now implemented with a mutex instead of a semaphore. 8734167802Sjkim 8735193267SjkimFixed three instances of the use of the C shift operator in the bitfield 8736253690Sjkimsupport code (exfldio.c) to avoid the use of a shift value larger than 8737253690Sjkimthe 8738241973Sjkimtarget data width. The behavior of C compilers is undefined in this case 8739241973Sjkimand 8740241973Sjkimcan cause unpredictable results, and therefore the case must be detected 8741241973Sjkimand 8742193267Sjkimavoided. (Fiodor Suietov) 8743167802Sjkim 8744193267SjkimAdded an info message whenever an SSDT or OEM table is loaded dynamically 8745253690Sjkimvia the Load() or LoadTable() ASL operators. This should improve 8746253690Sjkimdebugging 8747253690Sjkimcapability since it will show exactly what tables have been loaded 8748253690Sjkim(beyond 8749193267Sjkimthe tables present in the RSDT/XSDT.) 8750167802Sjkim 8751193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8752193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8753241973Sjkimdebug version of the code includes the debug output trace mechanism and 8754241973Sjkimhas 8755193267Sjkima much larger code and data size. 8756167802Sjkim 8757167802Sjkim Previous Release: 8758167802Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8759167802Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8760167802Sjkim Current Release: 8761167802Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 8762167802Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 8763167802Sjkim 8764167802Sjkim 8765167802Sjkim2) iASL Compiler/Disassembler and Tools: 8766167802Sjkim 8767167802SjkimNo changes for this release. 8768167802Sjkim 8769167802Sjkim---------------------------------------- 8770167802Sjkim08 June 2006. Summary of changes for version 20060608: 8771167802Sjkim 8772167802Sjkim1) ACPI CA Core Subsystem: 8773167802Sjkim 8774253690SjkimConverted the locking mutex used for the ACPI hardware to a spinlock. 8775253690SjkimThis 8776193267Sjkimchange should eliminate all problems caused by attempting to acquire a 8777193267Sjkimsemaphore at interrupt level, and it means that all ACPICA external 8778241973Sjkiminterfaces that directly access the ACPI hardware can be safely called 8779241973Sjkimfrom 8780241973Sjkiminterrupt level. OSL code that implements the semaphore interfaces should 8781241973Sjkimbe 8782193267Sjkimable to eliminate any workarounds for being called at interrupt level. 8783167802Sjkim 8784193267SjkimFixed a regression introduced in 20060526 where the ACPI device 8785241973Sjkiminitialization could be prematurely aborted with an AE_NOT_FOUND if a 8786241973Sjkimdevice 8787193267Sjkimdid not have an optional _INI method. 8788167802Sjkim 8789193267SjkimFixed an IndexField issue where a write to the Data Register should be 8790241973Sjkimlimited in size to the AccessSize (width) of the IndexField itself. (BZ 8791241973Sjkim433, 8792193267SjkimFiodor Suietov) 8793167802Sjkim 8794167802SjkimFixed problem reports (Valery Podrezov) integrated: 8795193267Sjkim- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 8796167802Sjkim 8797167802SjkimFixed problem reports (Fiodor Suietov) integrated: 8798193267Sjkim- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 8799167802Sjkim 8800193267SjkimRemoved four global mutexes that were obsolete and were no longer being 8801193267Sjkimused. 8802167802Sjkim 8803193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8804193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8805241973Sjkimdebug version of the code includes the debug output trace mechanism and 8806241973Sjkimhas 8807193267Sjkima much larger code and data size. 8808167802Sjkim 8809167802Sjkim Previous Release: 8810167802Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8811167802Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8812167802Sjkim Current Release: 8813167802Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 8814167802Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 8815167802Sjkim 8816167802Sjkim 8817167802Sjkim2) iASL Compiler/Disassembler and Tools: 8818167802Sjkim 8819193267SjkimFixed a fault when using -g option (get tables from registry) on Windows 8820193267Sjkimmachines. 8821167802Sjkim 8822167802SjkimFixed problem reports integrated: 8823193267Sjkim- Generate error if CreateField NumBits parameter is zero. (BZ 405) 8824193267Sjkim- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 8825193267SjkimSuietov) 8826167802Sjkim- Global table revision override (-r) is ignored (BZ 413) 8827167802Sjkim 8828167802Sjkim---------------------------------------- 8829167802Sjkim26 May 2006. Summary of changes for version 20060526: 8830167802Sjkim 8831167802Sjkim1) ACPI CA Core Subsystem: 8832167802Sjkim 8833193267SjkimRestructured, flattened, and simplified the internal interfaces for 8834241973Sjkimnamespace object evaluation - resulting in smaller code, less CPU stack 8835241973Sjkimuse, 8836193267Sjkimand fewer interfaces. (With assistance from Mikhail Kouzmich) 8837167802Sjkim 8838253690SjkimFixed a problem with the CopyObject operator where the first parameter 8839253690Sjkimwas 8840241973Sjkimnot typed correctly for the parser, interpreter, compiler, and 8841241973Sjkimdisassembler. 8842193267SjkimCaused various errors and unexpected behavior. 8843167802Sjkim 8844193267SjkimFixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 8845193267Sjkimproduced incorrect results with some C compilers. Since the behavior of C 8846193267Sjkimcompilers when the shift value is larger than the datatype width is 8847241973Sjkimapparently not well defined, the interpreter now detects this condition 8848241973Sjkimand 8849193267Sjkimsimply returns zero as expected in all such cases. (BZ 395) 8850167802Sjkim 8851167802SjkimFixed problem reports (Valery Podrezov) integrated: 8852193267Sjkim- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 8853193267Sjkim- Allow interpreter to handle nested method declarations (BZ 5361) 8854167802Sjkim 8855167802SjkimFixed problem reports (Fiodor Suietov) integrated: 8856253690Sjkim- AcpiTerminate doesn't free debug memory allocation list objects (BZ 8857253690Sjkim355) 8858241973Sjkim- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 8859241973Sjkim356) 8860193267Sjkim- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 8861193267Sjkim- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 8862167802Sjkim- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 8863193267Sjkim- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 8864167802Sjkim- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 8865167802Sjkim- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 8866241973Sjkim- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 8867241973Sjkim365) 8868193267Sjkim- Status of the Global Initialization Handler call not used (BZ 366) 8869193267Sjkim- Incorrect object parameter to Global Initialization Handler (BZ 367) 8870167802Sjkim 8871193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8872193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8873241973Sjkimdebug version of the code includes the debug output trace mechanism and 8874241973Sjkimhas 8875193267Sjkima much larger code and data size. 8876167802Sjkim 8877167802Sjkim Previous Release: 8878167802Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8879167802Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8880167802Sjkim Current Release: 8881167802Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 8882167802Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 8883167802Sjkim 8884167802Sjkim 8885167802Sjkim2) iASL Compiler/Disassembler and Tools: 8886167802Sjkim 8887193267SjkimModified the parser to allow the names IO, DMA, and IRQ to be used as 8888193267Sjkimnamespace identifiers with no collision with existing resource descriptor 8889193267Sjkimmacro names. This provides compatibility with other ASL compilers and is 8890253690Sjkimmost useful for disassembly/recompilation of existing tables without 8891253690Sjkimparse 8892167802Sjkimerrors. (With assistance from Thomas Renninger) 8893167802Sjkim 8894193267SjkimDisassembler: fixed an incorrect disassembly problem with the 8895193267SjkimDataTableRegion and CopyObject operators. Fixed a possible fault during 8896193267Sjkimdisassembly of some Alias operators. 8897167802Sjkim 8898167802Sjkim---------------------------------------- 8899167802Sjkim12 May 2006. Summary of changes for version 20060512: 8900167802Sjkim 8901167802Sjkim1) ACPI CA Core Subsystem: 8902167802Sjkim 8903193267SjkimReplaced the AcpiOsQueueForExecution interface with a new interface named 8904241973SjkimAcpiOsExecute. The major difference is that the new interface does not 8905241973Sjkimhave 8906253690Sjkima Priority parameter, this appeared to be useless and has been replaced 8907253690Sjkimby 8908241973Sjkima 8909193267SjkimType parameter. The Type tells the host what type of execution is being 8910193267Sjkimrequested, such as global lock handler, notify handler, GPE handler, etc. 8911241973SjkimThis allows the host to queue and execute the request as appropriate for 8912241973Sjkimthe 8913241973Sjkimrequest type, possibly using different work queues and different 8914241973Sjkimpriorities 8915193267Sjkimfor the various request types. This enables fixes for multithreading 8916241973Sjkimdeadlock problems such as BZ #5534, and will require changes to all 8917241973Sjkimexisting 8918193267SjkimOS interface layers. (Alexey Starikovskiy and Bob Moore) 8919167802Sjkim 8920253690SjkimFixed a possible memory leak associated with the support for the so- 8921253690Sjkimcalled 8922193267Sjkim"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 8923193267SjkimSuietov) 8924167802Sjkim 8925193267SjkimFixed a problem with the Load() operator where a table load from an 8926253690Sjkimoperation region could overwrite an internal table buffer by up to 7 8927253690Sjkimbytes 8928241973Sjkimand cause alignment faults on IPF systems. (With assistance from Luming 8929241973SjkimYu) 8930167802Sjkim 8931193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 8932193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8933241973Sjkimdebug version of the code includes the debug output trace mechanism and 8934241973Sjkimhas 8935193267Sjkima much larger code and data size. 8936167802Sjkim 8937167802Sjkim Previous Release: 8938167802Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 8939167802Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 8940167802Sjkim Current Release: 8941167802Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 8942167802Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 8943167802Sjkim 8944167802Sjkim 8945167802Sjkim 8946167802Sjkim2) iASL Compiler/Disassembler and Tools: 8947167802Sjkim 8948241973SjkimDisassembler: Implemented support to cross reference the internal 8949241973Sjkimnamespace 8950241973Sjkimand automatically generate ASL External() statements for symbols not 8951241973Sjkimdefined 8952193267Sjkimwithin the current table being disassembled. This will simplify the 8953253690Sjkimdisassembly and recompilation of interdependent tables such as SSDTs 8954253690Sjkimsince 8955193267Sjkimthese statements will no longer have to be added manually. 8956167802Sjkim 8957193267SjkimDisassembler: Implemented experimental support to automatically detect 8958241973Sjkiminvocations of external control methods and generate appropriate 8959241973SjkimExternal() 8960253690Sjkimstatements. This is problematic because the AML cannot be correctly 8961253690Sjkimparsed 8962253690Sjkimuntil the number of arguments for each control method is known. 8963253690SjkimCurrently, 8964193267Sjkimstandalone method invocations and invocations as the source operand of a 8965193267SjkimStore() statement are supported. 8966167802Sjkim 8967193267SjkimDisassembler: Implemented support for the ASL pseudo-operators LNotEqual, 8968193267SjkimLLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 8969193267SjkimLNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 8970193267Sjkimmore readable and likely closer to the original ASL source. 8971167802Sjkim 8972167802Sjkim---------------------------------------- 8973167802Sjkim21 April 2006. Summary of changes for version 20060421: 8974167802Sjkim 8975167802Sjkim1) ACPI CA Core Subsystem: 8976167802Sjkim 8977193267SjkimRemoved a device initialization optimization introduced in 20051216 where 8978193267Sjkimthe _STA method was not run unless an _INI was also present for the same 8979253690Sjkimdevice. This optimization could cause problems because it could allow 8980253690Sjkim_INI 8981193267Sjkimmethods to be run within a not-present device subtree. (If a not-present 8982241973Sjkimdevice had no _INI, _STA would not be run, the not-present status would 8983241973Sjkimnot 8984193267Sjkimbe discovered, and the children of the device would be incorrectly 8985167802Sjkimtraversed.) 8986167802Sjkim 8987193267SjkimImplemented a new _STA optimization where namespace subtrees that do not 8988193267Sjkimcontain _INI are identified and ignored during device initialization. 8989193267SjkimSelectively running _STA can significantly improve boot time on large 8990193267Sjkimmachines (with assistance from Len Brown.) 8991167802Sjkim 8992193267SjkimImplemented support for the device initialization case where the returned 8993241973Sjkim_STA flags indicate a device not-present but functioning. In this case, 8994241973Sjkim_INI 8995193267Sjkimis not run, but the device children are examined for presence, as per the 8996193267SjkimACPI specification. 8997167802Sjkim 8998193267SjkimImplemented an additional change to the IndexField support in order to 8999193267Sjkimconform to MS behavior. The value written to the Index Register is not 9000193267Sjkimsimply a byte offset, it is a byte offset in units of the access width of 9001193267Sjkimthe parent Index Field. (Fiodor Suietov) 9002167802Sjkim 9003193267SjkimDefined and deployed a new OSL interface, AcpiOsValidateAddress. This 9004193267Sjkiminterface is called during the creation of all AML operation regions, and 9005193267Sjkimallows the host OS to exert control over what addresses it will allow the 9006193267SjkimAML code to access. Operation Regions whose addresses are disallowed will 9007253690Sjkimcause a runtime exception when they are actually accessed (will not 9008253690Sjkimaffect 9009193267Sjkimor abort table loading.) See oswinxf or osunixxf for an example 9010167802Sjkimimplementation. 9011167802Sjkim 9012193267SjkimDefined and deployed a new OSL interface, AcpiOsValidateInterface. This 9013193267Sjkiminterface allows the host OS to match the various "optional" 9014193267Sjkiminterface/behavior strings for the _OSI predefined control method as 9015193267Sjkimappropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9016193267Sjkimfor an example implementation. 9017167802Sjkim 9018253690SjkimRestructured and corrected various problems in the exception handling 9019253690Sjkimcode 9020193267Sjkimpaths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9021193267Sjkim(with assistance from Takayoshi Kochi.) 9022167802Sjkim 9023253690SjkimModified the Linux source converter to ignore quoted string literals 9024253690Sjkimwhile 9025241973Sjkimconverting identifiers from mixed to lower case. This will correct 9026241973Sjkimproblems 9027193267Sjkimwith the disassembler and other areas where such strings must not be 9028193267Sjkimmodified. 9029167802Sjkim 9030193267SjkimThe ACPI_FUNCTION_* macros no longer require quotes around the function 9031241973Sjkimname. This allows the Linux source converter to convert the names, now 9032241973Sjkimthat 9033193267Sjkimthe converter ignores quoted strings. 9034167802Sjkim 9035193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 9036193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9037241973Sjkimdebug version of the code includes the debug output trace mechanism and 9038241973Sjkimhas 9039193267Sjkima much larger code and data size. 9040193267Sjkim 9041167802Sjkim Previous Release: 9042167802Sjkim 9043167802Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9044167802Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9045167802Sjkim Current Release: 9046167802Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9047167802Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9048167802Sjkim 9049167802Sjkim 9050167802Sjkim2) iASL Compiler/Disassembler and Tools: 9051167802Sjkim 9052241973SjkimImplemented 3 new warnings for iASL, and implemented multiple warning 9053241973Sjkimlevels 9054193267Sjkim(w2 flag). 9055167802Sjkim 9056241973Sjkim1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9057241973Sjkimnot 9058193267SjkimWAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9059193267Sjkimcheck for the possible timeout, a warning is issued. 9060167802Sjkim 9061241973Sjkim2) Useless operators: If an ASL operator does not specify an optional 9062241973Sjkimtarget 9063193267Sjkimoperand and it also does not use the function return value from the 9064253690Sjkimoperator, a warning is issued since the operator effectively does 9065253690Sjkimnothing. 9066167802Sjkim 9067193267Sjkim3) Unreferenced objects: If a namespace object is created, but never 9068253690Sjkimreferenced, a warning is issued. This is a warning level 2 since there 9069253690Sjkimare 9070253690Sjkimcases where this is ok, such as when a secondary table is loaded that 9071253690Sjkimuses 9072253690Sjkimthe unreferenced objects. Even so, care is taken to only flag objects 9073253690Sjkimthat 9074193267Sjkimdon't look like they will ever be used. For example, the reserved methods 9075193267Sjkim(starting with an underscore) are usually not referenced because it is 9076193267Sjkimexpected that the OS will invoke them. 9077167802Sjkim 9078167802Sjkim---------------------------------------- 9079167802Sjkim31 March 2006. Summary of changes for version 20060331: 9080167802Sjkim 9081167802Sjkim1) ACPI CA Core Subsystem: 9082167802Sjkim 9083193267SjkimImplemented header file support for the following additional ACPI tables: 9084241973SjkimASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9085241973Sjkimsupport, 9086241973Sjkimall current and known ACPI tables are now defined in the ACPICA headers 9087241973Sjkimand 9088193267Sjkimare available for use by device drivers and other software. 9089167802Sjkim 9090193267SjkimImplemented support to allow tables that contain ACPI names with invalid 9091193267Sjkimcharacters to be loaded. Previously, this would cause the table load to 9092193267Sjkimfail, but since there are several known cases of such tables on existing 9093253690Sjkimmachines, this change was made to enable ACPI support for them. Also, 9094253690Sjkimthis 9095193267Sjkimmatches the behavior of the Microsoft ACPI implementation. 9096167802Sjkim 9097241973SjkimFixed a couple regressions introduced during the memory optimization in 9098241973Sjkimthe 9099193267Sjkim20060317 release. The namespace node definition required additional 9100253690Sjkimreorganization and an internal datatype that had been changed to 8-bit 9101253690Sjkimwas 9102193267Sjkimrestored to 32-bit. (Valery Podrezov) 9103167802Sjkim 9104193267SjkimFixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9105193267Sjkimcould be passed through to AcpiOsReleaseObject which is unexpected. Such 9106193267Sjkimnull pointers are now trapped and ignored, matching the behavior of the 9107193267Sjkimprevious implementation before the deployment of AcpiOsReleaseObject. 9108167802Sjkim(Valery Podrezov, Fiodor Suietov) 9109167802Sjkim 9110241973SjkimFixed a memory mapping leak during the deletion of a SystemMemory 9111241973Sjkimoperation 9112193267Sjkimregion where a cached memory mapping was not deleted. This became a 9113241973Sjkimnoticeable problem for operation regions that are defined within 9114241973Sjkimfrequently 9115193267Sjkimused control methods. (Dana Meyers) 9116167802Sjkim 9117193267SjkimReorganized the ACPI table header files into two main files: one for the 9118253690SjkimACPI tables consumed by the ACPICA core, and another for the 9119253690Sjkimmiscellaneous 9120241973SjkimACPI tables that are consumed by the drivers and other software. The 9121241973Sjkimvarious 9122193267SjkimFADT definitions were merged into one common section and three different 9123193267Sjkimtables (ACPI 1.0, 1.0+, and 2.0) 9124167802Sjkim 9125193267SjkimExample Code and Data Size: These are the sizes for the OS-independent 9126193267Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9127241973Sjkimdebug version of the code includes the debug output trace mechanism and 9128241973Sjkimhas 9129193267Sjkima much larger code and data size. 9130167802Sjkim 9131167802Sjkim Previous Release: 9132167802Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9133167802Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9134167802Sjkim Current Release: 9135167802Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9136167802Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9137167802Sjkim 9138167802Sjkim 9139167802Sjkim2) iASL Compiler/Disassembler and Tools: 9140167802Sjkim 9141193267SjkimDisassembler: Implemented support to decode and format all non-AML ACPI 9142193267Sjkimtables (tables other than DSDTs and SSDTs.) This includes the new tables 9143241973Sjkimadded to the ACPICA headers, therefore all current and known ACPI tables 9144241973Sjkimare 9145193267Sjkimsupported. 9146167802Sjkim 9147193267SjkimDisassembler: The change to allow ACPI names with invalid characters also 9148241973Sjkimenables the disassembly of such tables. Invalid characters within names 9149241973Sjkimare 9150193267Sjkimchanged to '*' to make the name printable; the iASL compiler will still 9151193267Sjkimgenerate an error for such names, however, since this is an invalid ACPI 9152193267Sjkimcharacter. 9153167802Sjkim 9154241973SjkimImplemented an option for AcpiXtract (-a) to extract all tables found in 9155241973Sjkimthe 9156193267Sjkiminput file. The default invocation extracts only the DSDTs and SSDTs. 9157167802Sjkim 9158193267SjkimFixed a couple of gcc generation issues for iASL and AcpiExec and added a 9159193267Sjkimmakefile for the AcpiXtract utility. 9160167802Sjkim 9161167802Sjkim---------------------------------------- 9162167802Sjkim17 March 2006. Summary of changes for version 20060317: 9163167802Sjkim 9164167802Sjkim1) ACPI CA Core Subsystem: 9165167802Sjkim 9166193267SjkimImplemented the use of a cache object for all internal namespace nodes. 9167193267SjkimSince there are about 1000 static nodes in a typical system, this will 9168253690Sjkimdecrease memory use for cache implementations that minimize per- 9169253690Sjkimallocation 9170193267Sjkimoverhead (such as a slab allocator.) 9171167802Sjkim 9172241973SjkimRemoved the reference count mechanism for internal namespace nodes, since 9173241973Sjkimit 9174193267Sjkimwas deemed unnecessary. This reduces the size of each namespace node by 9175253690Sjkimabout 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9176253690Sjkimcase, 9177193267Sjkimand 32 bytes for the 64-bit case. 9178167802Sjkim 9179253690SjkimOptimized several internal data structures to reduce object size on 64- 9180253690Sjkimbit 9181193267Sjkimplatforms by packing data within the 64-bit alignment. This includes the 9182193267Sjkimfrequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9183193267Sjkiminstances corresponding to the namespace objects. 9184167802Sjkim 9185253690SjkimAdded two new strings for the predefined _OSI method: "Windows 2001.1 9186253690SjkimSP1" 9187193267Sjkimand "Windows 2006". 9188167802Sjkim 9189193267SjkimSplit the allocation tracking mechanism out to a separate file, from 9190193267Sjkimutalloc.c to uttrack.c. This mechanism appears to be only useful for 9191193267Sjkimapplication-level code. Kernels may wish to not include uttrack.c in 9192193267Sjkimdistributions. 9193167802Sjkim 9194241973SjkimRemoved all remnants of the obsolete ACPI_REPORT_* macros and the 9195241973Sjkimassociated 9196193267Sjkimcode. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9197193267Sjkimmacros.) 9198167802Sjkim 9199253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 9200253690Sjkimthe 9201241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 9202241973SjkimACPI 9203241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 9204241973Sjkimoutput 9205193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 9206193267Sjkimvalues will vary depending on the efficiency of the compiler and the 9207193267Sjkimcompiler options used during generation. 9208167802Sjkim 9209167802Sjkim Previous Release: 9210167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9211167802Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9212167802Sjkim Current Release: 9213167802Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9214167802Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9215167802Sjkim 9216167802Sjkim 9217167802Sjkim2) iASL Compiler/Disassembler and Tools: 9218167802Sjkim 9219253690SjkimImplemented an ANSI C version of the acpixtract utility. This version 9220253690Sjkimwill 9221193267Sjkimautomatically extract the DSDT and all SSDTs from the input acpidump text 9222193267Sjkimfile and dump the binary output to separate files. It can also display a 9223193267Sjkimsummary of the input file including the headers for each table found and 9224193267Sjkimwill extract any single ACPI table, with any signature. (See 9225167802Sjkimsource/tools/acpixtract) 9226167802Sjkim 9227167802Sjkim---------------------------------------- 9228167802Sjkim10 March 2006. Summary of changes for version 20060310: 9229167802Sjkim 9230167802Sjkim1) ACPI CA Core Subsystem: 9231167802Sjkim 9232193267SjkimTagged all external interfaces to the subsystem with the new 9233253690SjkimACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9234253690Sjkimassist 9235193267Sjkimkernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9236193267Sjkimmacro. The default definition is NULL. 9237167802Sjkim 9238253690SjkimAdded the ACPI_THREAD_ID type for the return value from 9239253690SjkimAcpiOsGetThreadId. 9240193267SjkimThis allows the host to define this as necessary to simplify kernel 9241193267Sjkimintegration. The default definition is ACPI_NATIVE_UINT. 9242167802Sjkim 9243241973SjkimFixed two interpreter problems related to error processing, the deletion 9244241973Sjkimof 9245193267Sjkimobjects, and placing invalid pointers onto the internal operator result 9246193267Sjkimstack. BZ 6028, 6151 (Valery Podrezov) 9247167802Sjkim 9248241973SjkimIncreased the reference count threshold where a warning is emitted for 9249241973Sjkimlarge 9250241973Sjkimreference counts in order to eliminate unnecessary warnings on systems 9251241973Sjkimwith 9252193267Sjkimlarge namespaces (especially 64-bit.) Increased the value from 0x400 to 9253193267Sjkim0x800. 9254167802Sjkim 9255253690SjkimDue to universal disagreement as to the meaning of the 'c' in the 9256253690Sjkimcalloc() 9257193267Sjkimfunction, the ACPI_MEM_CALLOCATE macro has been renamed to 9258193267SjkimACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9259193267SjkimACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9260193267SjkimACPI_FREE. 9261167802Sjkim 9262253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 9263253690Sjkimthe 9264241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 9265241973SjkimACPI 9266241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 9267241973Sjkimoutput 9268193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 9269193267Sjkimvalues will vary depending on the efficiency of the compiler and the 9270193267Sjkimcompiler options used during generation. 9271167802Sjkim 9272167802Sjkim Previous Release: 9273167802Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9274167802Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9275167802Sjkim Current Release: 9276167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9277167802Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9278167802Sjkim 9279167802Sjkim 9280167802Sjkim2) iASL Compiler/Disassembler: 9281167802Sjkim 9282193267SjkimDisassembler: implemented support for symbolic resource descriptor 9283253690Sjkimreferences. If a CreateXxxxField operator references a fixed offset 9284253690Sjkimwithin 9285241973Sjkima 9286241973Sjkimresource descriptor, a name is assigned to the descriptor and the offset 9287241973Sjkimis 9288193267Sjkimtranslated to the appropriate resource tag and pathname. The addition of 9289193267Sjkimthis support brings the disassembled code very close to the original ASL 9290253690Sjkimsource code and helps eliminate run-time errors when the disassembled 9291253690Sjkimcode 9292193267Sjkimis modified (and recompiled) in such a way as to invalidate the original 9293193267Sjkimfixed offsets. 9294167802Sjkim 9295253690SjkimImplemented support for a Descriptor Name as the last parameter to the 9296253690SjkimASL 9297193267SjkimRegister() macro. This parameter was inadvertently left out of the ACPI 9298193267Sjkimspecification, and will be added for ACPI 3.0b. 9299167802Sjkim 9300193267SjkimFixed a problem where the use of the "_OSI" string (versus the full path 9301193267Sjkim"\_OSI") caused an internal compiler error. ("No back ptr to op") 9302167802Sjkim 9303241973SjkimFixed a problem with the error message that occurs when an invalid string 9304241973Sjkimis 9305241973Sjkimused for a _HID object (such as one with an embedded asterisk: 9306241973Sjkim"*PNP010A".) 9307193267SjkimThe correct message is now displayed. 9308167802Sjkim 9309167802Sjkim---------------------------------------- 9310167802Sjkim17 February 2006. Summary of changes for version 20060217: 9311167802Sjkim 9312167802Sjkim1) ACPI CA Core Subsystem: 9313167802Sjkim 9314241973SjkimImplemented a change to the IndexField support to match the behavior of 9315241973Sjkimthe 9316241973SjkimMicrosoft AML interpreter. The value written to the Index register is now 9317241973Sjkima 9318253690Sjkimbyte offset, no longer an index based upon the width of the Data 9319253690Sjkimregister. 9320193267SjkimThis should fix IndexField problems seen on some machines where the Data 9321193267Sjkimregister is not exactly one byte wide. The ACPI specification will be 9322193267Sjkimclarified on this point. 9323167802Sjkim 9324193267SjkimFixed a problem where several resource descriptor types could overrun the 9325193267Sjkiminternal descriptor buffer due to size miscalculation: VendorShort, 9326193267SjkimVendorLong, and Interrupt. This was noticed on IA64 machines, but could 9327193267Sjkimaffect all platforms. 9328167802Sjkim 9329241973SjkimFixed a problem where individual resource descriptors were misaligned 9330241973Sjkimwithin 9331193267Sjkimthe internal buffer, causing alignment faults on IA64 platforms. 9332167802Sjkim 9333253690SjkimCode and Data Size: These are the sizes for the acpica.lib produced by 9334253690Sjkimthe 9335241973SjkimMicrosoft Visual C++ 6.0 32-bit compiler. The values do not include any 9336241973SjkimACPI 9337241973Sjkimdriver or OSPM code. The debug version of the code includes the debug 9338241973Sjkimoutput 9339193267Sjkimtrace mechanism and has a much larger code and data size. Note that these 9340193267Sjkimvalues will vary depending on the efficiency of the compiler and the 9341193267Sjkimcompiler options used during generation. 9342167802Sjkim 9343167802Sjkim Previous Release: 9344167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9345167802Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9346167802Sjkim Current Release: 9347167802Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9348167802Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9349167802Sjkim 9350167802Sjkim 9351167802Sjkim2) iASL Compiler/Disassembler: 9352167802Sjkim 9353193267SjkimImplemented support for new reserved names: _WDG and _WED are Microsoft 9354193267Sjkimextensions for Windows Instrumentation Management, _TDL is a new ACPI- 9355193267Sjkimdefined method (Throttling Depth Limit.) 9356167802Sjkim 9357193267SjkimFixed a problem where a zero-length VendorShort or VendorLong resource 9358193267Sjkimdescriptor was incorrectly emitted as a descriptor of length one. 9359167802Sjkim 9360167802Sjkim---------------------------------------- 9361167802Sjkim10 February 2006. Summary of changes for version 20060210: 9362167802Sjkim 9363167802Sjkim1) ACPI CA Core Subsystem: 9364167802Sjkim 9365193267SjkimRemoved a couple of extraneous ACPI_ERROR messages that appeared during 9366193267Sjkimnormal execution. These became apparent after the conversion from 9367193267SjkimACPI_DEBUG_PRINT. 9368167802Sjkim 9369241973SjkimFixed a problem where the CreateField operator could hang if the BitIndex 9370241973Sjkimor 9371193267SjkimNumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9372167802Sjkim 9373193267SjkimFixed a problem where a DeRefOf operation on a buffer object incorrectly 9374193267Sjkimfailed with an exception. This also fixes a couple of related RefOf and 9375193267SjkimDeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9376167802Sjkim 9377241973SjkimFixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9378241973Sjkimof 9379241973SjkimAE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9380241973SjkimBZ 9381193267Sjkim5480) 9382167802Sjkim 9383253690SjkimImplemented a memory cleanup at the end of the execution of each 9384253690Sjkimiteration 9385241973Sjkimof an AML While() loop, preventing the accumulation of outstanding 9386241973Sjkimobjects. 9387193267Sjkim(Valery Podrezov, BZ 5427) 9388167802Sjkim 9389241973SjkimEliminated a chunk of duplicate code in the object resolution code. 9390241973Sjkim(Valery 9391193267SjkimPodrezov, BZ 5336) 9392167802Sjkim 9393167802SjkimFixed several warnings during the 64-bit code generation. 9394167802Sjkim 9395253690SjkimThe AcpiSrc source code conversion tool now inserts one line of 9396253690Sjkimwhitespace 9397241973Sjkimafter an if() statement that is followed immediately by a comment, 9398241973Sjkimimproving 9399193267Sjkimreadability of the Linux code. 9400167802Sjkim 9401193267SjkimCode and Data Size: The current and previous library sizes for the core 9402193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9403253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9404253690SjkimThese 9405241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9406241973Sjkimthe 9407193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9408241973Sjkimand data size. Note that these values will vary depending on the 9409241973Sjkimefficiency 9410193267Sjkimof the compiler and the compiler options used during generation. 9411167802Sjkim 9412167802Sjkim Previous Release: 9413167802Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9414167802Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9415167802Sjkim Current Release: 9416167802Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9417167802Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9418167802Sjkim 9419167802Sjkim 9420167802Sjkim2) iASL Compiler/Disassembler: 9421167802Sjkim 9422241973SjkimFixed a problem with the disassembly of a BankField operator with a 9423241973Sjkimcomplex 9424193267Sjkimexpression for the BankValue parameter. 9425167802Sjkim 9426167802Sjkim---------------------------------------- 9427167802Sjkim27 January 2006. Summary of changes for version 20060127: 9428167802Sjkim 9429167802Sjkim1) ACPI CA Core Subsystem: 9430167802Sjkim 9431253690SjkimImplemented support in the Resource Manager to allow unresolved 9432253690Sjkimnamestring 9433241973Sjkimreferences within resource package objects for the _PRT method. This 9434241973Sjkimsupport 9435193267Sjkimis in addition to the previously implemented unresolved reference support 9436193267Sjkimwithin the AML parser. If the interpreter slack mode is enabled, these 9437241973Sjkimunresolved references will be passed through to the caller as a NULL 9438241973Sjkimpackage 9439167802Sjkimentry. 9440167802Sjkim 9441193267SjkimImplemented and deployed new macros and functions for error and warning 9442193267Sjkimmessages across the subsystem. These macros are simpler and generate less 9443193267Sjkimcode than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9444193267SjkimACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9445193267Sjkimmacros remain defined to allow ACPI drivers time to migrate to the new 9446193267Sjkimmacros. 9447167802Sjkim 9448253690SjkimImplemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9449253690Sjkimthe 9450193267SjkimAcquire/Release Lock OSL interfaces. 9451167802Sjkim 9452193267SjkimFixed a problem where Alias ASL operators are sometimes not correctly 9453193267Sjkimresolved, in both the interpreter and the iASL compiler. 9454167802Sjkim 9455241973SjkimFixed several problems with the implementation of the 9456241973SjkimConcatenateResTemplate 9457193267SjkimASL operator. As per the ACPI specification, zero length buffers are now 9458193267Sjkimtreated as a single EndTag. One-length buffers always cause a fatal 9459241973Sjkimexception. Non-zero length buffers that do not end with a full 2-byte 9460241973SjkimEndTag 9461167802Sjkimcause a fatal exception. 9462167802Sjkim 9463193267SjkimFixed a possible structure overwrite in the AcpiGetObjectInfo external 9464193267Sjkiminterface. (With assistance from Thomas Renninger) 9465167802Sjkim 9466193267SjkimCode and Data Size: The current and previous library sizes for the core 9467193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9468253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9469253690SjkimThese 9470241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9471241973Sjkimthe 9472193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9473241973Sjkimand data size. Note that these values will vary depending on the 9474241973Sjkimefficiency 9475193267Sjkimof the compiler and the compiler options used during generation. 9476167802Sjkim 9477167802Sjkim Previous Release: 9478167802Sjkim Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9479167802Sjkim Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9480167802Sjkim Current Release: 9481167802Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9482167802Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9483167802Sjkim 9484167802Sjkim 9485167802Sjkim2) iASL Compiler/Disassembler: 9486167802Sjkim 9487241973SjkimFixed an internal error that was generated for any forward references to 9488241973SjkimASL 9489193267SjkimAlias objects. 9490167802Sjkim 9491167802Sjkim---------------------------------------- 9492167802Sjkim13 January 2006. Summary of changes for version 20060113: 9493167802Sjkim 9494167802Sjkim1) ACPI CA Core Subsystem: 9495167802Sjkim 9496193267SjkimAdded 2006 copyright to all module headers and signons. This affects 9497193267Sjkimvirtually every file in the ACPICA core subsystem, iASL compiler, and the 9498193267Sjkimutilities. 9499193267Sjkim 9500253690SjkimEnhanced the ACPICA error reporting in order to simplify user migration 9501253690Sjkimto 9502193267Sjkimthe non-debug version of ACPICA. Replaced all instances of the 9503253690SjkimACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 9504253690Sjkimdebug 9505193267Sjkimlevels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 9506241973Sjkimrespectively. This preserves all error and warning messages in the non- 9507241973Sjkimdebug 9508193267Sjkimversion of the ACPICA code (this has been referred to as the "debug lite" 9509193267Sjkimoption.) Over 200 cases were converted to create a total of over 380 9510253690Sjkimerror/warning messages across the ACPICA code. This increases the code 9511253690Sjkimand 9512241973Sjkimdata size of the default non-debug version of the code somewhat (about 9513241973Sjkim13K), 9514193267Sjkimbut all error/warning reporting may be disabled if desired (and code 9515193267Sjkimeliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 9516241973Sjkimconfiguration option. The size of the debug version of ACPICA remains 9517241973Sjkimabout 9518193267Sjkimthe same. 9519167802Sjkim 9520193267SjkimFixed a memory leak within the AML Debugger "Set" command. One object was 9521193267Sjkimnot properly deleted for every successful invocation of the command. 9522167802Sjkim 9523193267SjkimCode and Data Size: The current and previous library sizes for the core 9524193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9525253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9526253690SjkimThese 9527241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9528241973Sjkimthe 9529193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9530241973Sjkimand data size. Note that these values will vary depending on the 9531241973Sjkimefficiency 9532193267Sjkimof the compiler and the compiler options used during generation. 9533167802Sjkim 9534167802Sjkim Previous Release: 9535167802Sjkim Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9536167802Sjkim Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9537167802Sjkim Current Release: 9538167802Sjkim Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9539167802Sjkim Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9540167802Sjkim 9541167802Sjkim 9542167802Sjkim2) iASL Compiler/Disassembler: 9543167802Sjkim 9544193267SjkimThe compiler now officially supports the ACPI 3.0a specification that was 9545241973Sjkimreleased on December 30, 2005. (Specification is available at 9546241973Sjkimwww.acpi.info) 9547167802Sjkim 9548167802Sjkim---------------------------------------- 9549167802Sjkim16 December 2005. Summary of changes for version 20051216: 9550167802Sjkim 9551167802Sjkim1) ACPI CA Core Subsystem: 9552167802Sjkim 9553193267SjkimImplemented optional support to allow unresolved names within ASL Package 9554193267Sjkimobjects. A null object is inserted in the package when a named reference 9555193267Sjkimcannot be located in the current namespace. Enabled via the interpreter 9556253690Sjkimslack flag, this should eliminate AE_NOT_FOUND exceptions seen on 9557253690Sjkimmachines 9558193267Sjkimthat contain such code. 9559167802Sjkim 9560241973SjkimImplemented an optimization to the initialization sequence that can 9561241973Sjkimimprove 9562241973Sjkimboot time. During ACPI device initialization, the _STA method is now run 9563241973Sjkimif 9564241973Sjkimand only if the _INI method exists. The _STA method is used to determine 9565241973Sjkimif 9566241973Sjkimthe device is present; An _INI can only be run if _STA returns present, 9567241973Sjkimbut 9568193267Sjkimit is a waste of time to run the _STA method if the _INI does not exist. 9569167802Sjkim(Prototype and assistance from Dong Wei) 9570167802Sjkim 9571241973SjkimImplemented use of the C99 uintptr_t for the pointer casting macros if it 9572241973Sjkimis 9573253690Sjkimavailable in the current compiler. Otherwise, the default (void *) cast 9574253690Sjkimis 9575193267Sjkimused as before. 9576167802Sjkim 9577193267SjkimFixed some possible memory leaks found within the execution path of the 9578193267SjkimBreak, Continue, If, and CreateField operators. (Valery Podrezov) 9579167802Sjkim 9580193267SjkimFixed a problem introduced in the 20051202 release where an exception is 9581193267Sjkimgenerated during method execution if a control method attempts to declare 9582193267Sjkimanother method. 9583167802Sjkim 9584193267SjkimMoved resource descriptor string constants that are used by both the AML 9585193267Sjkimdisassembler and AML debugger to the common utilities directory so that 9586193267Sjkimthese components are independent. 9587167802Sjkim 9588253690SjkimImplemented support in the AcpiExec utility (-e switch) to globally 9589253690Sjkimignore 9590193267Sjkimexceptions during control method execution (method is not aborted.) 9591167802Sjkim 9592193267SjkimAdded the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 9593193267Sjkimgeneration. 9594167802Sjkim 9595193267SjkimCode and Data Size: The current and previous library sizes for the core 9596193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9597253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9598253690SjkimThese 9599241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9600241973Sjkimthe 9601193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9602241973Sjkimand data size. Note that these values will vary depending on the 9603241973Sjkimefficiency 9604193267Sjkimof the compiler and the compiler options used during generation. 9605167802Sjkim 9606167802Sjkim Previous Release: 9607167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9608167802Sjkim Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9609167802Sjkim Current Release: 9610167802Sjkim Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9611167802Sjkim Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9612167802Sjkim 9613167802Sjkim 9614167802Sjkim2) iASL Compiler/Disassembler: 9615167802Sjkim 9616241973SjkimFixed a problem where a CPU stack overflow fault could occur if a 9617241973Sjkimrecursive 9618193267Sjkimmethod call was made from within a Return statement. 9619167802Sjkim 9620167802Sjkim---------------------------------------- 9621167802Sjkim02 December 2005. Summary of changes for version 20051202: 9622167802Sjkim 9623167802Sjkim1) ACPI CA Core Subsystem: 9624167802Sjkim 9625193267SjkimModified the parsing of control methods to no longer create namespace 9626193267Sjkimobjects during the first pass of the parse. Objects are now created only 9627253690Sjkimduring the execute phase, at the moment the namespace creation operator 9628253690Sjkimis 9629253690Sjkimencountered in the AML (Name, OperationRegion, CreateByteField, etc.) 9630253690SjkimThis 9631193267Sjkimshould eliminate ALREADY_EXISTS exceptions seen on some machines where 9632241973Sjkimreentrant control methods are protected by an AML mutex. The mutex will 9633241973Sjkimnow 9634253690Sjkimcorrectly block multiple threads from attempting to create the same 9635253690Sjkimobject 9636193267Sjkimmore than once. 9637167802Sjkim 9638193267SjkimIncreased the number of available Owner Ids for namespace object tracking 9639241973Sjkimfrom 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 9640241973Sjkimon 9641241973Sjkimsome machines with a large number of ACPI tables (either static or 9642241973Sjkimdynamic). 9643167802Sjkim 9644241973SjkimFixed a problem with the AcpiExec utility where a fault could occur when 9645241973Sjkimthe 9646193267Sjkim-b switch (batch mode) is used. 9647167802Sjkim 9648193267SjkimEnhanced the namespace dump routine to output the owner ID for each 9649193267Sjkimnamespace object. 9650167802Sjkim 9651193267SjkimCode and Data Size: The current and previous library sizes for the core 9652193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9653253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9654253690SjkimThese 9655241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9656241973Sjkimthe 9657193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9658241973Sjkimand data size. Note that these values will vary depending on the 9659241973Sjkimefficiency 9660193267Sjkimof the compiler and the compiler options used during generation. 9661167802Sjkim 9662167802Sjkim Previous Release: 9663167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9664167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9665167802Sjkim Current Release: 9666167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9667167802Sjkim Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 9668167802Sjkim 9669167802Sjkim 9670167802Sjkim2) iASL Compiler/Disassembler: 9671167802Sjkim 9672241973SjkimFixed a parse error during compilation of certain Switch/Case constructs. 9673241973SjkimTo 9674253690Sjkimsimplify the parse, the grammar now allows for multiple Default 9675253690Sjkimstatements 9676193267Sjkimand this error is now detected and flagged during the analysis phase. 9677167802Sjkim 9678193267SjkimDisassembler: The disassembly now includes the contents of the original 9679193267Sjkimtable header within a comment at the start of the file. This includes the 9680193267Sjkimname and version of the original ASL compiler. 9681167802Sjkim 9682167802Sjkim---------------------------------------- 9683167802Sjkim17 November 2005. Summary of changes for version 20051117: 9684167802Sjkim 9685167802Sjkim1) ACPI CA Core Subsystem: 9686167802Sjkim 9687193267SjkimFixed a problem in the AML parser where the method thread count could be 9688241973Sjkimdecremented below zero if any errors occurred during the method parse 9689241973Sjkimphase. 9690241973SjkimThis should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 9691241973Sjkimmachines. 9692193267SjkimThis also fixed a related regression with the mechanism that detects and 9693193267Sjkimcorrects methods that cannot properly handle reentrancy (related to the 9694193267Sjkimdeployment of the new OwnerId mechanism.) 9695167802Sjkim 9696193267SjkimEliminated the pre-parsing of control methods (to detect errors) during 9697241973Sjkimtable load. Related to the problem above, this was causing unwind issues 9698241973Sjkimif 9699241973Sjkimany errors occurred during the parse, and it seemed to be overkill. A 9700241973Sjkimtable 9701193267Sjkimload should not be aborted if there are problems with any single control 9702193267Sjkimmethod, thus rendering this feature rather pointless. 9703167802Sjkim 9704241973SjkimFixed a problem with the new table-driven resource manager where an 9705241973Sjkiminternal 9706193267Sjkimbuffer overflow could occur for small resource templates. 9707167802Sjkim 9708241973SjkimImplemented a new external interface, AcpiGetVendorResource. This 9709241973Sjkiminterface 9710253690Sjkimwill find and return a vendor-defined resource descriptor within a _CRS 9711253690Sjkimor 9712241973Sjkim_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 9713241973SjkimHelgaas. 9714167802Sjkim 9715193267SjkimRemoved the length limit (200) on string objects as per the upcoming ACPI 9716241973Sjkim3.0A specification. This affects the following areas of the interpreter: 9717241973Sjkim1) 9718253690Sjkimany implicit conversion of a Buffer to a String, 2) a String object 9719253690Sjkimresult 9720193267Sjkimof the ASL Concatentate operator, 3) the String object result of the ASL 9721193267SjkimToString operator. 9722167802Sjkim 9723241973SjkimFixed a problem in the Windows OS interface layer (OSL) where a 9724241973SjkimWAIT_FOREVER 9725193267Sjkimon a semaphore object would incorrectly timeout. This allows the 9726193267Sjkimmultithreading features of the AcpiExec utility to work properly under 9727193267SjkimWindows. 9728167802Sjkim 9729193267SjkimUpdated the Linux makefiles for the iASL compiler and AcpiExec to include 9730193267Sjkimthe recently added file named "utresrc.c". 9731167802Sjkim 9732193267SjkimCode and Data Size: The current and previous library sizes for the core 9733193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9734253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9735253690SjkimThese 9736241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9737241973Sjkimthe 9738193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9739241973Sjkimand data size. Note that these values will vary depending on the 9740241973Sjkimefficiency 9741193267Sjkimof the compiler and the compiler options used during generation. 9742167802Sjkim 9743167802Sjkim Previous Release: 9744167802Sjkim Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9745167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9746167802Sjkim Current Release: 9747167802Sjkim Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 9748167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9749167802Sjkim 9750167802Sjkim 9751167802Sjkim2) iASL Compiler/Disassembler: 9752167802Sjkim 9753193267SjkimRemoved the limit (200) on string objects as per the upcoming ACPI 3.0A 9754241973Sjkimspecification. For the iASL compiler, this means that string literals 9755241973Sjkimwithin 9756193267Sjkimthe source ASL can be of any length. 9757167802Sjkim 9758193267SjkimEnhanced the listing output to dump the AML code for resource descriptors 9759241973Sjkimimmediately after the ASL code for each descriptor, instead of in a block 9760241973Sjkimat 9761193267Sjkimthe end of the entire resource template. 9762167802Sjkim 9763193267SjkimEnhanced the compiler debug output to dump the entire original parse tree 9764241973Sjkimconstructed during the parse phase, before any transforms are applied to 9765241973Sjkimthe 9766193267Sjkimtree. The transformed tree is dumped also. 9767167802Sjkim 9768167802Sjkim---------------------------------------- 9769167802Sjkim02 November 2005. Summary of changes for version 20051102: 9770167802Sjkim 9771167802Sjkim1) ACPI CA Core Subsystem: 9772167802Sjkim 9773253690SjkimModified the subsystem initialization sequence to improve GPE support. 9774253690SjkimThe 9775241973SjkimGPE initialization has been split into two parts in order to defer 9776241973Sjkimexecution 9777253690Sjkimof the _PRW methods (Power Resources for Wake) until after the hardware 9778253690Sjkimis 9779193267Sjkimfully initialized and the SCI handler is installed. This allows the _PRW 9780241973Sjkimmethods to access fields protected by the Global Lock. This will fix 9781241973Sjkimsystems 9782193267Sjkimwhere a NO_GLOBAL_LOCK exception has been seen during initialization. 9783167802Sjkim 9784253690SjkimConverted the ACPI internal object disassemble and display code within 9785253690Sjkimthe 9786193267SjkimAML debugger to fully table-driven operation, reducing code size and 9787193267Sjkimincreasing maintainability. 9788167802Sjkim 9789241973SjkimFixed a regression with the ConcatenateResTemplate() ASL operator 9790241973Sjkimintroduced 9791193267Sjkimin the 20051021 release. 9792167802Sjkim 9793193267SjkimImplemented support for "local" internal ACPI object types within the 9794193267Sjkimdebugger "Object" command and the AcpiWalkNamespace external interfaces. 9795241973SjkimThese local types include RegionFields, BankFields, IndexFields, Alias, 9796241973Sjkimand 9797193267Sjkimreference objects. 9798167802Sjkim 9799253690SjkimMoved common AML resource handling code into a new file, "utresrc.c". 9800253690SjkimThis 9801193267Sjkimcode is shared by both the Resource Manager and the AML Debugger. 9802167802Sjkim 9803193267SjkimCode and Data Size: The current and previous library sizes for the core 9804193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9805253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9806253690SjkimThese 9807241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9808241973Sjkimthe 9809193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9810241973Sjkimand data size. Note that these values will vary depending on the 9811241973Sjkimefficiency 9812193267Sjkimof the compiler and the compiler options used during generation. 9813167802Sjkim 9814167802Sjkim Previous Release: 9815167802Sjkim Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9816167802Sjkim Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9817167802Sjkim Current Release: 9818167802Sjkim Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 9819167802Sjkim Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 9820167802Sjkim 9821167802Sjkim 9822167802Sjkim2) iASL Compiler/Disassembler: 9823167802Sjkim 9824241973SjkimFixed a problem with very large initializer lists (more than 4000 9825241973Sjkimelements) 9826193267Sjkimfor both Buffer and Package objects where the parse stack could overflow. 9827167802Sjkim 9828241973SjkimEnhanced the pre-compile source code scan for non-ASCII characters to 9829241973Sjkimignore 9830241973Sjkimcharacters within comment fields. The scan is now always performed and is 9831241973Sjkimno 9832193267Sjkimlonger optional, detecting invalid characters within a source file 9833193267Sjkimimmediately rather than during the parse phase or later. 9834167802Sjkim 9835253690SjkimEnhanced the ASL grammar definition to force early reductions on all 9836253690Sjkimlist- 9837193267Sjkimstyle grammar elements so that the overall parse stack usage is greatly 9838241973Sjkimreduced. This should improve performance and reduce the possibility of 9839241973Sjkimparse 9840193267Sjkimstack overflow. 9841167802Sjkim 9842241973SjkimEliminated all reduce/reduce conflicts in the iASL parser generation. 9843241973SjkimAlso, 9844193267Sjkimwith the addition of a %expected statement, the compiler generates from 9845193267Sjkimsource with no warnings. 9846167802Sjkim 9847193267SjkimFixed a possible segment fault in the disassembler if the input filename 9848193267Sjkimdoes not contain a "dot" extension (Thomas Renninger). 9849167802Sjkim 9850167802Sjkim---------------------------------------- 9851151937Sjkim21 October 2005. Summary of changes for version 20051021: 9852151937Sjkim 9853151937Sjkim1) ACPI CA Core Subsystem: 9854151937Sjkim 9855193267SjkimImplemented support for the EM64T and other x86-64 processors. This 9856193267Sjkimessentially entails recognizing that these processors support non-aligned 9857193267Sjkimmemory transfers. Previously, all 64-bit processors were assumed to lack 9858193267Sjkimhardware support for non-aligned transfers. 9859151937Sjkim 9860193267SjkimCompleted conversion of the Resource Manager to nearly full table-driven 9861193267Sjkimoperation. Specifically, the resource conversion code (convert AML to 9862193267Sjkiminternal format and the reverse) and the debug code to dump internal 9863241973Sjkimresource descriptors are fully table-driven, reducing code and data size 9864241973Sjkimand 9865193267Sjkimimproving maintainability. 9866151937Sjkim 9867253690SjkimThe OSL interfaces for Acquire and Release Lock now use a 64-bit flag 9868253690Sjkimword 9869253690Sjkimon 64-bit processors instead of a fixed 32-bit word. (With assistance 9870253690Sjkimfrom 9871193267SjkimAlexey Starikovskiy) 9872151937Sjkim 9873193267SjkimImplemented support within the resource conversion code for the Type- 9874193267SjkimSpecific byte within the various ACPI 3.0 *WordSpace macros. 9875151937Sjkim 9876241973SjkimFixed some issues within the resource conversion code for the type- 9877241973Sjkimspecific 9878193267Sjkimflags for both Memory and I/O address resource descriptors. For Memory, 9879193267Sjkimimplemented support for the MTP and TTP flags. For I/O, split the TRS and 9880193267SjkimTTP flags into two separate fields. 9881151937Sjkim 9882193267SjkimCode and Data Size: The current and previous library sizes for the core 9883193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9884253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9885253690SjkimThese 9886241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9887241973Sjkimthe 9888193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9889241973Sjkimand data size. Note that these values will vary depending on the 9890241973Sjkimefficiency 9891193267Sjkimof the compiler and the compiler options used during generation. 9892151937Sjkim 9893151937Sjkim Previous Release: 9894151937Sjkim Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9895151937Sjkim Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9896151937Sjkim Current Release: 9897151937Sjkim Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 9898151937Sjkim Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 9899151937Sjkim 9900151937Sjkim 9901167802Sjkim 9902151937Sjkim2) iASL Compiler/Disassembler: 9903151937Sjkim 9904253690SjkimRelaxed a compiler restriction that disallowed a ResourceIndex byte if 9905253690Sjkimthe 9906193267Sjkimcorresponding ResourceSource string was not also present in a resource 9907193267Sjkimdescriptor declaration. This restriction caused problems with existing 9908241973SjkimAML/ASL code that includes the Index byte without the string. When such 9909241973SjkimAML 9910193267Sjkimwas disassembled, it could not be compiled without modification. Further, 9911241973Sjkimthe modified code created a resource template with a different size than 9912241973Sjkimthe 9913253690Sjkimoriginal, breaking code that used fixed offsets into the resource 9914253690Sjkimtemplate 9915193267Sjkimbuffer. 9916151937Sjkim 9917241973SjkimRemoved a recent feature of the disassembler to ignore a lone 9918241973SjkimResourceIndex 9919193267Sjkimbyte. This byte is now emitted if present so that the exact AML can be 9920193267Sjkimreproduced when the disassembled code is recompiled. 9921151937Sjkim 9922193267SjkimImproved comments and text alignment for the resource descriptor code 9923193267Sjkimemitted by the disassembler. 9924151937Sjkim 9925241973SjkimImplemented disassembler support for the ACPI 3.0 AccessSize field within 9926241973Sjkima 9927193267SjkimRegister() resource descriptor. 9928151937Sjkim 9929151937Sjkim---------------------------------------- 9930151937Sjkim30 September 2005. Summary of changes for version 20050930: 9931151937Sjkim 9932151937Sjkim1) ACPI CA Core Subsystem: 9933151937Sjkim 9934193267SjkimCompleted a major overhaul of the Resource Manager code - specifically, 9935241973Sjkimoptimizations in the area of the AML/internal resource conversion code. 9936241973SjkimThe 9937241973Sjkimcode has been optimized to simplify and eliminate duplicated code, CPU 9938241973Sjkimstack 9939193267Sjkimuse has been decreased by optimizing function parameters and local 9940241973Sjkimvariables, and naming conventions across the manager have been 9941241973Sjkimstandardized 9942193267Sjkimfor clarity and ease of maintenance (this includes function, parameter, 9943193267Sjkimvariable, and struct/typedef names.) The update may force changes in some 9944193267Sjkimdriver code, depending on how resources are handled by the host OS. 9945151937Sjkim 9946193267SjkimAll Resource Manager dispatch and information tables have been moved to a 9947193267Sjkimsingle location for clarity and ease of maintenance. One new file was 9948193267Sjkimcreated, named "rsinfo.c". 9949151937Sjkim 9950193267SjkimThe ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 9951253690Sjkimguarantee that the argument is not evaluated twice, making them less 9952253690Sjkimprone 9953193267Sjkimto macro side-effects. However, since there exists the possibility of 9954241973Sjkimadditional stack use if a particular compiler cannot optimize them (such 9955241973Sjkimas 9956241973Sjkimin the debug generation case), the original macros are optionally 9957241973Sjkimavailable. 9958193267SjkimNote that some invocations of the return_VALUE macro may now cause size 9959241973Sjkimmismatch warnings; the return_UINT8 and return_UINT32 macros are provided 9960241973Sjkimto 9961193267Sjkimeliminate these. (From Randy Dunlap) 9962151937Sjkim 9963253690SjkimImplemented a new mechanism to enable debug tracing for individual 9964253690Sjkimcontrol 9965193267Sjkimmethods. A new external interface, AcpiDebugTrace, is provided to enable 9966193267Sjkimthis mechanism. The intent is to allow the host OS to easily enable and 9967193267Sjkimdisable tracing for problematic control methods. This interface can be 9968193267Sjkimeasily exposed to a user or debugger interface if desired. See the file 9969151937Sjkimpsxface.c for details. 9970151937Sjkim 9971193267SjkimAcpiUtCallocate will now return a valid pointer if a length of zero is 9972193267Sjkimspecified - a length of one is used and a warning is issued. This matches 9973193267Sjkimthe behavior of AcpiUtAllocate. 9974151937Sjkim 9975193267SjkimCode and Data Size: The current and previous library sizes for the core 9976193267Sjkimsubsystem are shown below. These are the code and data sizes for the 9977253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9978253690SjkimThese 9979241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 9980241973Sjkimthe 9981193267Sjkimcode includes the debug output trace mechanism and has a much larger code 9982241973Sjkimand data size. Note that these values will vary depending on the 9983241973Sjkimefficiency 9984193267Sjkimof the compiler and the compiler options used during generation. 9985151937Sjkim 9986151937Sjkim Previous Release: 9987151937Sjkim Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 9988151937Sjkim Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 9989151937Sjkim Current Release: 9990151937Sjkim Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 9991151937Sjkim Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 9992151937Sjkim 9993151937Sjkim 9994151937Sjkim2) iASL Compiler/Disassembler: 9995151937Sjkim 9996193267SjkimA remark is issued if the effective compile-time length of a package or 9997193267Sjkimbuffer is zero. Previously, this was a warning. 9998151937Sjkim 9999151937Sjkim---------------------------------------- 10000151937Sjkim16 September 2005. Summary of changes for version 20050916: 10001151937Sjkim 10002151937Sjkim1) ACPI CA Core Subsystem: 10003151937Sjkim 10004193267SjkimFixed a problem within the Resource Manager where support for the Generic 10005241973SjkimRegister descriptor was not fully implemented. This descriptor is now 10006241973Sjkimfully 10007193267Sjkimrecognized, parsed, disassembled, and displayed. 10008151937Sjkim 10009193267SjkimCompletely restructured the Resource Manager code to utilize table-driven 10010241973Sjkimdispatch and lookup, eliminating many of the large switch() statements. 10011241973SjkimThis 10012193267Sjkimreduces overall subsystem code size and code complexity. Affects the 10013193267Sjkimresource parsing and construction, disassembly, and debug dump output. 10014151937Sjkim 10015193267SjkimCleaned up and restructured the debug dump output for all resource 10016193267Sjkimdescriptors. Improved readability of the output and reduced code size. 10017151937Sjkim 10018193267SjkimFixed a problem where changes to internal data structures caused the 10019193267Sjkimoptional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10020151937Sjkim 10021193267SjkimCode and Data Size: The current and previous library sizes for the core 10022193267Sjkimsubsystem are shown below. These are the code and data sizes for the 10023253690Sjkimacpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10024253690SjkimThese 10025241973Sjkimvalues do not include any ACPI driver or OSPM code. The debug version of 10026241973Sjkimthe 10027193267Sjkimcode includes the debug output trace mechanism and has a much larger code 10028241973Sjkimand data size. Note that these values will vary depending on the 10029241973Sjkimefficiency 10030193267Sjkimof the compiler and the compiler options used during generation. 10031151937Sjkim 10032151937Sjkim Previous Release: 10033151937Sjkim Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10034151937Sjkim Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10035151937Sjkim Current Release: 10036151937Sjkim Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10037151937Sjkim Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10038151937Sjkim 10039151937Sjkim 10040151937Sjkim2) iASL Compiler/Disassembler: 10041151937Sjkim 10042253690SjkimUpdated the disassembler to automatically insert an EndDependentFn() 10043253690Sjkimmacro 10044193267Sjkiminto the ASL stream if this macro is missing in the original AML code, 10045193267Sjkimsimplifying compilation of the resulting ASL module. 10046151937Sjkim 10047193267SjkimFixed a problem in the disassembler where a disassembled ResourceSource 10048241973Sjkimstring (within a large resource descriptor) was not surrounded by quotes 10049241973Sjkimand 10050193267Sjkimnot followed by a comma, causing errors when the resulting ASL module was 10051193267Sjkimcompiled. Also, escape sequences within a ResourceSource string are now 10052193267Sjkimhandled correctly (especially "\\") 10053151937Sjkim 10054151937Sjkim---------------------------------------- 10055151937Sjkim02 September 2005. Summary of changes for version 20050902: 10056151937Sjkim 10057151937Sjkim1) ACPI CA Core Subsystem: 10058151937Sjkim 10059193267SjkimFixed a problem with the internal Owner ID allocation and deallocation 10060193267Sjkimmechanisms for control method execution and recursive method invocation. 10061193267SjkimThis should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10062193267Sjkimmessages seen on some systems. Recursive method invocation depth is 10063193267Sjkimcurrently limited to 255. (Alexey Starikovskiy) 10064151937Sjkim 10065193267SjkimCompletely eliminated all vestiges of support for the "module-level 10066241973Sjkimexecutable code" until this support is fully implemented and debugged. 10067241973SjkimThis 10068193267Sjkimshould eliminate the NO_RETURN_VALUE exceptions seen during table load on 10069193267Sjkimsome systems that invoke this support. 10070151937Sjkim 10071241973SjkimFixed a problem within the resource manager code where the transaction 10072241973Sjkimflags 10073193267Sjkimfor a 64-bit address descriptor were handled incorrectly in the type- 10074193267Sjkimspecific flag byte. 10075151937Sjkim 10076253690SjkimConsolidated duplicate code within the address descriptor resource 10077253690Sjkimmanager 10078193267Sjkimcode, reducing overall subsystem code size. 10079151937Sjkim 10080193267SjkimFixed a fault when using the AML debugger "disassemble" command to 10081193267Sjkimdisassemble individual control methods. 10082151937Sjkim 10083193267SjkimRemoved references to the "release_current" directory within the Unix 10084193267Sjkimrelease package. 10085151937Sjkim 10086193267SjkimCode and Data Size: The current and previous core subsystem library sizes 10087193267Sjkimare shown below. These are the code and data sizes for the acpica.lib 10088193267Sjkimproduced by the Microsoft Visual C++ 6.0 compiler. These values do not 10089241973Sjkiminclude any ACPI driver or OSPM code. The debug version of the code 10090241973Sjkimincludes 10091253690Sjkimthe debug output trace mechanism and has a much larger code and data 10092253690Sjkimsize. 10093241973SjkimNote that these values will vary depending on the efficiency of the 10094241973Sjkimcompiler 10095193267Sjkimand the compiler options used during generation. 10096151937Sjkim 10097151937Sjkim Previous Release: 10098151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10099151937Sjkim Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10100151937Sjkim Current Release: 10101151937Sjkim Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10102151937Sjkim Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10103151937Sjkim 10104151937Sjkim 10105151937Sjkim2) iASL Compiler/Disassembler: 10106151937Sjkim 10107241973SjkimImplemented an error check for illegal duplicate values in the interrupt 10108241973Sjkimand 10109193267Sjkimdma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10110193267SjkimInterrupt(). 10111151937Sjkim 10112253690SjkimImplemented error checking for the Irq() and IrqNoFlags() macros to 10113253690Sjkimdetect 10114193267Sjkimtoo many values in the interrupt list (16 max) and invalid values in the 10115193267Sjkimlist (range 0 - 15) 10116151937Sjkim 10117193267SjkimThe maximum length string literal within an ASL file is now restricted to 10118193267Sjkim200 characters as per the ACPI specification. 10119151937Sjkim 10120193267SjkimFixed a fault when using the -ln option (generate namespace listing). 10121151937Sjkim 10122193267SjkimImplemented an error check to determine if a DescriptorName within a 10123193267Sjkimresource descriptor has already been used within the current scope. 10124151937Sjkim 10125151937Sjkim---------------------------------------- 10126151937Sjkim15 August 2005. Summary of changes for version 20050815: 10127193267Sjkim 10128151937Sjkim1) ACPI CA Core Subsystem: 10129193267Sjkim 10130241973SjkimImplemented a full bytewise compare to determine if a table load request 10131241973Sjkimis 10132241973Sjkimattempting to load a duplicate table. The compare is performed if the 10133241973Sjkimtable 10134193267Sjkimsignatures and table lengths match. This will allow different tables with 10135241973Sjkimthe same OEM Table ID and revision to be loaded - probably against the 10136241973SjkimACPI 10137193267Sjkimspecification, but discovered in the field nonetheless. 10138193267Sjkim 10139193267SjkimAdded the changes.txt logfile to each of the zipped release packages. 10140193267Sjkim 10141193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10142253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10143253690Sjkimproduced 10144193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10145193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10146241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10147241973SjkimNote 10148241973Sjkimthat these values will vary depending on the efficiency of the compiler 10149241973Sjkimand 10150193267Sjkimthe compiler options used during generation. 10151193267Sjkim 10152151937Sjkim Previous Release: 10153151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10154151937Sjkim Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10155151937Sjkim Current Release: 10156151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10157151937Sjkim Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10158193267Sjkim 10159193267Sjkim 10160151937Sjkim2) iASL Compiler/Disassembler: 10161193267Sjkim 10162193267SjkimFixed a problem where incorrect AML code could be generated for Package 10163193267Sjkimobjects if optimization is disabled (via the -oa switch). 10164193267Sjkim 10165193267SjkimFixed a problem with where incorrect AML code is generated for variable- 10166253690Sjkimlength packages when the package length is not specified and the number 10167253690Sjkimof 10168193267Sjkiminitializer values is greater than 255. 10169193267Sjkim 10170151937Sjkim 10171151937Sjkim---------------------------------------- 10172151937Sjkim29 July 2005. Summary of changes for version 20050729: 10173151937Sjkim 10174151937Sjkim1) ACPI CA Core Subsystem: 10175151937Sjkim 10176253690SjkimImplemented support to ignore an attempt to install/load a particular 10177253690SjkimACPI 10178193267Sjkimtable more than once. Apparently there exists BIOS code that repeatedly 10179193267Sjkimattempts to load the same SSDT upon certain events. With assistance from 10180193267SjkimVenkatesh Pallipadi. 10181151937Sjkim 10182193267SjkimRestructured the main interface to the AML parser in order to correctly 10183241973Sjkimhandle all exceptional conditions. This will prevent leakage of the 10184241973SjkimOwnerId 10185241973Sjkimresource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10186241973Sjkimsome 10187193267Sjkimmachines. With assistance from Alexey Starikovskiy. 10188151937Sjkim 10189253690SjkimSupport for "module level code" has been disabled in this version due to 10190253690Sjkima 10191241973Sjkimnumber of issues that have appeared on various machines. The support can 10192241973Sjkimbe 10193193267Sjkimenabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10194241973Sjkimcompilation. When the issues are fully resolved, the code will be enabled 10195241973Sjkimby 10196151937Sjkimdefault again. 10197151937Sjkim 10198193267SjkimModified the internal functions for debug print support to define the 10199253690SjkimFunctionName parameter as a (const char *) for compatibility with 10200253690Sjkimcompiler 10201193267Sjkimbuilt-in macros such as __FUNCTION__, etc. 10202151937Sjkim 10203151937SjkimLinted the entire ACPICA source tree for both 32-bit and 64-bit. 10204151937Sjkim 10205241973SjkimImplemented support to display an object count summary for the AML 10206241973SjkimDebugger 10207193267Sjkimcommands Object and Methods. 10208151937Sjkim 10209193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10210253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10211253690Sjkimproduced 10212193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10213193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10214241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10215241973SjkimNote 10216241973Sjkimthat these values will vary depending on the efficiency of the compiler 10217241973Sjkimand 10218193267Sjkimthe compiler options used during generation. 10219151937Sjkim 10220151937Sjkim Previous Release: 10221151937Sjkim Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10222151937Sjkim Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10223151937Sjkim Current Release: 10224151937Sjkim Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10225151937Sjkim Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10226151937Sjkim 10227151937Sjkim 10228151937Sjkim2) iASL Compiler/Disassembler: 10229151937Sjkim 10230193267SjkimFixed a regression that appeared in the 20050708 version of the compiler 10231241973Sjkimwhere an error message was inadvertently emitted for invocations of the 10232241973Sjkim_OSI 10233193267Sjkimreserved control method. 10234151937Sjkim 10235151937Sjkim---------------------------------------- 10236151937Sjkim08 July 2005. Summary of changes for version 20050708: 10237151937Sjkim 10238151937Sjkim1) ACPI CA Core Subsystem: 10239151937Sjkim 10240193267SjkimThe use of the CPU stack in the debug version of the subsystem has been 10241193267Sjkimconsiderably reduced. Previously, a debug structure was declared in every 10242193267Sjkimfunction that used the debug macros. This structure has been removed in 10243193267Sjkimfavor of declaring the individual elements as parameters to the debug 10244241973Sjkimfunctions. This reduces the cumulative stack use during nested execution 10245241973Sjkimof 10246241973SjkimACPI function calls at the cost of a small increase in the code size of 10247241973Sjkimthe 10248241973Sjkimdebug version of the subsystem. With assistance from Alexey Starikovskiy 10249241973Sjkimand 10250193267SjkimLen Brown. 10251151937Sjkim 10252193267SjkimAdded the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10253193267Sjkimheaders to define a macro that will return the current function name at 10254241973Sjkimruntime (such as __FUNCTION__ or _func_, etc.) The function name is used 10255241973Sjkimby 10256193267Sjkimthe debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10257241973Sjkimcompiler-dependent header, the function name is saved on the CPU stack 10258241973Sjkim(one 10259193267Sjkimpointer per function.) This mechanism is used because apparently there 10260241973Sjkimexists no standard ANSI-C defined macro that that returns the function 10261241973Sjkimname. 10262151937Sjkim 10263193267SjkimRedesigned and reimplemented the "Owner ID" mechanism used to track 10264193267Sjkimnamespace objects created/deleted by ACPI tables and control method 10265253690Sjkimexecution. A bitmap is now used to allocate and free the IDs, thus 10266253690Sjkimsolving 10267253690Sjkimthe wraparound problem present in the previous implementation. The size 10268253690Sjkimof 10269193267Sjkimthe namespace node descriptor was reduced by 2 bytes as a result (Alexey 10270151937SjkimStarikovskiy). 10271151937Sjkim 10272241973SjkimRemoved the UINT32_BIT and UINT16_BIT types that were used for the 10273241973Sjkimbitfield 10274193267Sjkimflag definitions within the headers for the predefined ACPI tables. These 10275241973Sjkimhave been replaced by UINT8_BIT in order to increase the code portability 10276241973Sjkimof 10277193267Sjkimthe subsystem. If the use of UINT8 remains a problem, we may be forced to 10278193267Sjkimeliminate bitfields entirely because of a lack of portability. 10279151937Sjkim 10280241973SjkimEnhanced the performance of the AcpiUtUpdateObjectReference procedure. 10281241973SjkimThis 10282241973Sjkimis a frequently used function and this improvement increases the 10283241973Sjkimperformance 10284193267Sjkimof the entire subsystem (Alexey Starikovskiy). 10285151937Sjkim 10286193267SjkimFixed several possible memory leaks and the inverse - premature object 10287193267Sjkimdeletion (Alexey Starikovskiy). 10288151937Sjkim 10289193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10290253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10291253690Sjkimproduced 10292193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10293193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10294241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10295241973SjkimNote 10296241973Sjkimthat these values will vary depending on the efficiency of the compiler 10297241973Sjkimand 10298193267Sjkimthe compiler options used during generation. 10299151937Sjkim 10300151937Sjkim Previous Release: 10301151937Sjkim Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10302151937Sjkim Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10303151937Sjkim Current Release: 10304151937Sjkim Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10305151937Sjkim Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10306151937Sjkim 10307151937Sjkim---------------------------------------- 10308151937Sjkim24 June 2005. Summary of changes for version 20050624: 10309151937Sjkim 10310151937Sjkim1) ACPI CA Core Subsystem: 10311151937Sjkim 10312193267SjkimModified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10313241973Sjkimthe host-defined cache object. This allows the OSL implementation to 10314241973Sjkimdefine 10315193267Sjkimand type this object in any manner desired, simplifying the OSL 10316193267Sjkimimplementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10317193267SjkimLinux, and should be defined in the OS-specific header file for other 10318193267Sjkimoperating systems as required. 10319151937Sjkim 10320193267SjkimChanged the interface to AcpiOsAcquireObject to directly return the 10321193267Sjkimrequested object as the function return (instead of ACPI_STATUS.) This 10322193267Sjkimchange was made for performance reasons, since this is the purpose of the 10323193267Sjkiminterface in the first place. AcpiOsAcquireObject is now similar to the 10324193267SjkimAcpiOsAllocate interface. 10325151937Sjkim 10326241973SjkimImplemented a new AML debugger command named Businfo. This command 10327241973Sjkimdisplays 10328241973Sjkiminformation about all devices that have an associate _PRT object. The 10329241973Sjkim_ADR, 10330193267Sjkim_HID, _UID, and _CID are displayed for these devices. 10331151937Sjkim 10332241973SjkimModified the initialization sequence in AcpiInitializeSubsystem to call 10333241973Sjkimthe 10334241973SjkimOSL interface AcpiOslInitialize first, before any local initialization. 10335241973SjkimThis 10336193267Sjkimchange was required because the global initialization now calls OSL 10337193267Sjkiminterfaces. 10338151937Sjkim 10339241973SjkimEnhanced the Dump command to display the entire contents of Package 10340241973Sjkimobjects 10341193267Sjkim(including all sub-objects and their values.) 10342151937Sjkim 10343193267SjkimRestructured the code base to split some files because of size and/or 10344241973Sjkimbecause the code logically belonged in a separate file. New files are 10345241973Sjkimlisted 10346241973Sjkimbelow. All makefiles and project files included in the ACPI CA release 10347241973Sjkimhave 10348193267Sjkimbeen updated. 10349151937Sjkim utilities/utcache.c /* Local cache interfaces */ 10350151937Sjkim utilities/utmutex.c /* Local mutex support */ 10351151937Sjkim utilities/utstate.c /* State object support */ 10352151937Sjkim interpreter/parser/psloop.c /* Main AML parse loop */ 10353151937Sjkim 10354193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10355253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10356253690Sjkimproduced 10357193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10358193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10359241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10360241973SjkimNote 10361241973Sjkimthat these values will vary depending on the efficiency of the compiler 10362241973Sjkimand 10363193267Sjkimthe compiler options used during generation. 10364151937Sjkim 10365151937Sjkim Previous Release: 10366151937Sjkim Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10367151937Sjkim Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10368151937Sjkim Current Release: 10369151937Sjkim Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10370151937Sjkim Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10371151937Sjkim 10372151937Sjkim 10373151937Sjkim2) iASL Compiler/Disassembler: 10374151937Sjkim 10375241973SjkimFixed a regression introduced in version 20050513 where the use of a 10376241973SjkimPackage 10377193267Sjkimobject within a Case() statement caused a compile time exception. The 10378193267Sjkimoriginal behavior has been restored (a Match() operator is emitted.) 10379151937Sjkim 10380151937Sjkim---------------------------------------- 10381151937Sjkim17 June 2005. Summary of changes for version 20050617: 10382151937Sjkim 10383151937Sjkim1) ACPI CA Core Subsystem: 10384151937Sjkim 10385241973SjkimMoved the object cache operations into the OS interface layer (OSL) to 10386241973Sjkimallow 10387193267Sjkimthe host OS to handle these operations if desired (for example, the Linux 10388253690SjkimOSL will invoke the slab allocator). This support is optional; the 10389253690Sjkimcompile 10390253690Sjkimtime define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10391253690Sjkimcache 10392193267Sjkimcode in the ACPI CA core. The new OSL interfaces are shown below. See 10393193267Sjkimutalloc.c for an example implementation, and acpiosxf.h for the exact 10394193267Sjkiminterface definitions. With assistance from Alexey Starikovskiy. 10395151937Sjkim AcpiOsCreateCache 10396151937Sjkim AcpiOsDeleteCache 10397151937Sjkim AcpiOsPurgeCache 10398151937Sjkim AcpiOsAcquireObject 10399151937Sjkim AcpiOsReleaseObject 10400151937Sjkim 10401241973SjkimModified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10402241973Sjkimreturn 10403193267Sjkimand restore a flags parameter. This fits better with many OS lock models. 10404193267SjkimNote: the current execution state (interrupt handler or not) is no longer 10405241973Sjkimpassed to these interfaces. If necessary, the OSL must determine this 10406241973Sjkimstate 10407193267Sjkimby itself, a simple and fast operation. With assistance from Alexey 10408151937SjkimStarikovskiy. 10409151937Sjkim 10410193267SjkimFixed a problem in the ACPI table handling where a valid XSDT was assumed 10411241973Sjkimpresent if the revision of the RSDP was 2 or greater. According to the 10412241973SjkimACPI 10413193267Sjkimspecification, the XSDT is optional in all cases, and the table manager 10414193267Sjkimtherefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10415253690SjkimOtherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10416253690Sjkimcontain 10417193267Sjkimonly the RSDT. 10418151937Sjkim 10419241973SjkimFixed an interpreter problem with the Mid() operator in the case of an 10420241973Sjkiminput 10421241973Sjkimstring where the resulting output string is of zero length. It now 10422241973Sjkimcorrectly 10423193267Sjkimreturns a valid, null terminated string object instead of a string object 10424193267Sjkimwith a null pointer. 10425151937Sjkim 10426253690SjkimFixed a problem with the control method argument handling to allow a 10427253690Sjkimstore 10428241973Sjkimto an Arg object that already contains an object of type Device. The 10429241973SjkimDevice 10430193267Sjkimobject is now correctly overwritten. Previously, an error was returned. 10431151937Sjkim 10432167802Sjkim 10433241973SjkimEnhanced the debugger Find command to emit object values in addition to 10434241973Sjkimthe 10435241973Sjkimfound object pathnames. The output format is the same as the dump 10436241973Sjkimnamespace 10437193267Sjkimcommand. 10438151937Sjkim 10439253690SjkimEnhanced the debugger Set command. It now has the ability to set the 10440253690Sjkimvalue 10441241973Sjkimof any Named integer object in the namespace (Previously, only method 10442241973Sjkimlocals 10443193267Sjkimand args could be set.) 10444151937Sjkim 10445193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10446253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10447253690Sjkimproduced 10448193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10449193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10450241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10451241973SjkimNote 10452241973Sjkimthat these values will vary depending on the efficiency of the compiler 10453241973Sjkimand 10454193267Sjkimthe compiler options used during generation. 10455151937Sjkim 10456151937Sjkim Previous Release: 10457151937Sjkim Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10458151937Sjkim Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10459151937Sjkim Current Release: 10460151937Sjkim Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10461151937Sjkim Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10462151937Sjkim 10463151937Sjkim 10464151937Sjkim2) iASL Compiler/Disassembler: 10465151937Sjkim 10466253690SjkimFixed a regression in the disassembler where if/else/while constructs 10467253690Sjkimwere 10468193267Sjkimoutput incorrectly. This problem was introduced in the previous release 10469193267Sjkim(20050526). This problem also affected the single-step disassembly in the 10470193267Sjkimdebugger. 10471151937Sjkim 10472241973SjkimFixed a problem where compiling the reserved _OSI method would randomly 10473241973Sjkim(but 10474193267Sjkimrarely) produce compile errors. 10475151937Sjkim 10476253690SjkimEnhanced the disassembler to emit compilable code in the face of 10477253690Sjkimincorrect 10478193267SjkimAML resource descriptors. If the optional ResourceSourceIndex is present, 10479193267Sjkimbut the ResourceSource is not, do not emit the ResourceSourceIndex in the 10480193267Sjkimdisassembly. Otherwise, the resulting code cannot be compiled without 10481193267Sjkimerrors. 10482151937Sjkim 10483151937Sjkim---------------------------------------- 10484151937Sjkim26 May 2005. Summary of changes for version 20050526: 10485151937Sjkim 10486151937Sjkim1) ACPI CA Core Subsystem: 10487151937Sjkim 10488193267SjkimImplemented support to execute Type 1 and Type 2 AML opcodes appearing at 10489253690Sjkimthe module level (not within a control method.) These opcodes are 10490253690Sjkimexecuted 10491241973Sjkimexactly once at the time the table is loaded. This type of code was legal 10492241973Sjkimup 10493241973Sjkimuntil the release of ACPI 2.0B (2002) and is now supported within ACPI CA 10494241973Sjkimin 10495241973Sjkimorder to provide backwards compatibility with earlier BIOS 10496241973Sjkimimplementations. 10497193267SjkimThis eliminates the "Encountered executable code at module level" warning 10498193267Sjkimthat was previously generated upon detection of such code. 10499151937Sjkim 10500193267SjkimFixed a problem in the interpreter where an AE_NOT_FOUND exception could 10501193267Sjkiminadvertently be generated during the lookup of namespace objects in the 10502253690Sjkimsecond pass parse of ACPI tables and control methods. It appears that 10503253690Sjkimthis 10504241973Sjkimproblem could occur during the resolution of forward references to 10505241973Sjkimnamespace 10506193267Sjkimobjects. 10507151937Sjkim 10508193267SjkimAdded the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 10509193267Sjkimcorresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 10510193267Sjkimallows the deadlock detection debug code to be compiled out in the normal 10511193267Sjkimcase, improving mutex performance (and overall subsystem performance) 10512193267Sjkimconsiderably. 10513151937Sjkim 10514193267SjkimImplemented a handful of miscellaneous fixes for possible memory leaks on 10515193267Sjkimerror conditions and error handling control paths. These fixes were 10516193267Sjkimsuggested by FreeBSD and the Coverity Prevent source code analysis tool. 10517151937Sjkim 10518253690SjkimAdded a check for a null RSDT pointer in AcpiGetFirmwareTable 10519253690Sjkim(tbxfroot.c) 10520193267Sjkimto prevent a fault in this error case. 10521151937Sjkim 10522193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10523253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10524253690Sjkimproduced 10525193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10526193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10527241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10528241973SjkimNote 10529241973Sjkimthat these values will vary depending on the efficiency of the compiler 10530241973Sjkimand 10531193267Sjkimthe compiler options used during generation. 10532151937Sjkim 10533151937Sjkim Previous Release: 10534151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10535151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10536151937Sjkim Current Release: 10537151937Sjkim Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10538151937Sjkim Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10539151937Sjkim 10540151937Sjkim 10541151937Sjkim2) iASL Compiler/Disassembler: 10542151937Sjkim 10543193267SjkimImplemented support to allow Type 1 and Type 2 ASL operators to appear at 10544193267Sjkimthe module level (not within a control method.) These operators will be 10545253690Sjkimexecuted once at the time the table is loaded. This type of code was 10546253690Sjkimlegal 10547193267Sjkimup until the release of ACPI 2.0B (2002) and is now supported by the iASL 10548253690Sjkimcompiler in order to provide backwards compatibility with earlier BIOS 10549253690SjkimASL 10550193267Sjkimcode. 10551151937Sjkim 10552193267SjkimThe ACPI integer width (specified via the table revision ID or the -r 10553241973Sjkimoverride, 32 or 64 bits) is now used internally during compile-time 10554241973Sjkimconstant 10555193267Sjkimfolding to ensure that constants are truncated to 32 bits if necessary. 10556241973SjkimPreviously, the revision ID value was only emitted in the AML table 10557241973Sjkimheader. 10558151937Sjkim 10559241973SjkimAn error message is now generated for the Mutex and Method operators if 10560241973Sjkimthe 10561193267SjkimSyncLevel parameter is outside the legal range of 0 through 15. 10562151937Sjkim 10563241973SjkimFixed a problem with the Method operator ParameterTypes list handling 10564241973Sjkim(ACPI 10565241973Sjkim3.0). Previously, more than 2 types or 2 arguments generated a syntax 10566241973Sjkimerror. 10567193267SjkimThe actual underlying implementation of method argument typechecking is 10568193267Sjkimstill under development, however. 10569151937Sjkim 10570151937Sjkim---------------------------------------- 10571151937Sjkim13 May 2005. Summary of changes for version 20050513: 10572151937Sjkim 10573151937Sjkim1) ACPI CA Core Subsystem: 10574151937Sjkim 10575241973SjkimImplemented support for PCI Express root bridges -- added support for 10576241973Sjkimdevice 10577193267SjkimPNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 10578151937Sjkim 10579241973SjkimThe interpreter now automatically truncates incoming 64-bit constants to 10580241973Sjkim32 10581241973Sjkimbits if currently executing out of a 32-bit ACPI table (Revision < 2). 10582241973SjkimThis 10583193267Sjkimalso affects the iASL compiler constant folding. (Note: as per below, the 10584193267SjkimiASL compiler no longer allows 64-bit constants within 32-bit tables.) 10585151937Sjkim 10586193267SjkimFixed a problem where string and buffer objects with "static" pointers 10587193267Sjkim(pointers to initialization data within an ACPI table) were not handled 10588241973Sjkimconsistently. The internal object copy operation now always copies the 10589241973Sjkimdata 10590193267Sjkimto a newly allocated buffer, regardless of whether the source object is 10591193267Sjkimstatic or not. 10592151937Sjkim 10593193267SjkimFixed a problem with the FromBCD operator where an implicit result 10594253690Sjkimconversion was improperly performed while storing the result to the 10595253690Sjkimtarget 10596193267Sjkimoperand. Since this is an "explicit conversion" operator, the implicit 10597193267Sjkimconversion should never be performed on the output. 10598151937Sjkim 10599193267SjkimFixed a problem with the CopyObject operator where a copy to an existing 10600241973Sjkimnamed object did not always completely overwrite the existing object 10601241973Sjkimstored 10602253690Sjkimat name. Specifically, a buffer-to-buffer copy did not delete the 10603253690Sjkimexisting 10604193267Sjkimbuffer. 10605151937Sjkim 10606253690SjkimReplaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 10607253690Sjkimand 10608193267Sjkimstructs for consistency. 10609151937Sjkim 10610193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10611253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10612253690Sjkimproduced 10613193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10614193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10615241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10616241973SjkimNote 10617241973Sjkimthat these values will vary depending on the efficiency of the compiler 10618241973Sjkimand 10619193267Sjkimthe compiler options used during generation. 10620151937Sjkim 10621151937Sjkim Previous Release: 10622151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10623151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10624151937Sjkim Current Release: (Same sizes) 10625151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10626151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10627151937Sjkim 10628151937Sjkim 10629151937Sjkim2) iASL Compiler/Disassembler: 10630151937Sjkim 10631241973SjkimThe compiler now emits a warning if an attempt is made to generate a 64- 10632241973Sjkimbit 10633241973Sjkiminteger constant from within a 32-bit ACPI table (Revision < 2). The 10634241973Sjkiminteger 10635193267Sjkimis truncated to 32 bits. 10636151937Sjkim 10637193267SjkimFixed a problem with large package objects: if the static length of the 10638193267Sjkimpackage is greater than 255, the "variable length package" opcode is 10639193267Sjkimemitted. Previously, this caused an error. This requires an update to the 10640241973SjkimACPI spec, since it currently (incorrectly) states that packages larger 10641241973Sjkimthan 10642193267Sjkim255 elements are not allowed. 10643151937Sjkim 10644241973SjkimThe disassembler now correctly handles variable length packages and 10645241973Sjkimpackages 10646193267Sjkimlarger than 255 elements. 10647151937Sjkim 10648151937Sjkim---------------------------------------- 10649151937Sjkim08 April 2005. Summary of changes for version 20050408: 10650151937Sjkim 10651151937Sjkim1) ACPI CA Core Subsystem: 10652151937Sjkim 10653193267SjkimFixed three cases in the interpreter where an "index" argument to an ASL 10654193267Sjkimfunction was still (internally) 32 bits instead of the required 64 bits. 10655193267SjkimThis was the Index argument to the Index, Mid, and Match operators. 10656151937Sjkim 10657241973SjkimThe "strupr" function is now permanently local (AcpiUtStrupr), since this 10658241973Sjkimis 10659193267Sjkimnot a POSIX-defined function and not present in most kernel-level C 10660241973Sjkimlibraries. All references to the C library strupr function have been 10661241973Sjkimremoved 10662193267Sjkimfrom the headers. 10663151937Sjkim 10664241973SjkimCompleted the deployment of static functions/prototypes. All prototypes 10665241973Sjkimwith 10666241973Sjkimthe static attribute have been moved from the headers to the owning C 10667241973Sjkimfile. 10668151937Sjkim 10669193267SjkimImplemented an extract option (-e) for the AcpiBin utility (AML binary 10670253690Sjkimutility). This option allows the utility to extract individual ACPI 10671253690Sjkimtables 10672193267Sjkimfrom the output of AcpiDmp. It provides the same functionality of the 10673193267Sjkimacpixtract.pl perl script without the worry of setting the correct perl 10674241973Sjkimoptions. AcpiBin runs on Windows and has not yet been generated/validated 10675241973Sjkimin 10676193267Sjkimthe Linux/Unix environment (but should be soon). 10677193267Sjkim 10678193267SjkimUpdated and fixed the table dump option for AcpiBin (-d). This option 10679253690Sjkimconverts a single ACPI table to a hex/ascii file, similar to the output 10680253690Sjkimof 10681193267SjkimAcpiDmp. 10682151937Sjkim 10683193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10684253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10685253690Sjkimproduced 10686193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10687193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10688241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10689241973SjkimNote 10690241973Sjkimthat these values will vary depending on the efficiency of the compiler 10691241973Sjkimand 10692193267Sjkimthe compiler options used during generation. 10693151937Sjkim 10694151937Sjkim Previous Release: 10695151937Sjkim Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10696151937Sjkim Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10697151937Sjkim Current Release: 10698151937Sjkim Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10699151937Sjkim Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10700151937Sjkim 10701151937Sjkim 10702151937Sjkim2) iASL Compiler/Disassembler: 10703151937Sjkim 10704241973SjkimDisassembler fix: Added a check to ensure that the table length found in 10705241973Sjkimthe 10706241973SjkimACPI table header within the input file is not longer than the actual 10707241973Sjkiminput 10708193267Sjkimfile size. This indicates some kind of file or table corruption. 10709151937Sjkim 10710151937Sjkim---------------------------------------- 10711151937Sjkim29 March 2005. Summary of changes for version 20050329: 10712151937Sjkim 10713151937Sjkim1) ACPI CA Core Subsystem: 10714151937Sjkim 10715241973SjkimAn error is now generated if an attempt is made to create a Buffer Field 10716241973Sjkimof 10717193267Sjkimlength zero (A CreateField with a length operand of zero.) 10718151937Sjkim 10719241973SjkimThe interpreter now issues a warning whenever executable code at the 10720241973Sjkimmodule 10721193267Sjkimlevel is detected during ACPI table load. This will give some idea of the 10722193267Sjkimprevalence of this type of code. 10723151937Sjkim 10724193267SjkimImplemented support for references to named objects (other than control 10725193267Sjkimmethods) within package objects. 10726151937Sjkim 10727241973SjkimEnhanced package object output for the debug object. Package objects are 10728241973Sjkimnow 10729193267Sjkimcompletely dumped, showing all elements. 10730151937Sjkim 10731193267SjkimEnhanced miscellaneous object output for the debug object. Any object can 10732193267Sjkimnow be written to the debug object (for example, a device object can be 10733193267Sjkimwritten, and the type of the object will be displayed.) 10734151937Sjkim 10735241973SjkimThe "static" qualifier has been added to all local functions across both 10736241973Sjkimthe 10737193267Sjkimcore subsystem and the iASL compiler. 10738151937Sjkim 10739193267SjkimThe number of "long" lines (> 80 chars) within the source has been 10740193267Sjkimsignificantly reduced, by about 1/3. 10741151937Sjkim 10742193267SjkimCleaned up all header files to ensure that all CA/iASL functions are 10743193267Sjkimprototyped (even static functions) and the formatting is consistent. 10744151937Sjkim 10745151937SjkimTwo new header files have been added, acopcode.h and acnames.h. 10746151937Sjkim 10747151937SjkimRemoved several obsolete functions that were no longer used. 10748151937Sjkim 10749193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10750253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10751253690Sjkimproduced 10752193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10753193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10754241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10755241973SjkimNote 10756241973Sjkimthat these values will vary depending on the efficiency of the compiler 10757241973Sjkimand 10758193267Sjkimthe compiler options used during generation. 10759151937Sjkim 10760151937Sjkim Previous Release: 10761151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10762151937Sjkim Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10763151937Sjkim Current Release: 10764151937Sjkim Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 10765151937Sjkim Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 10766151937Sjkim 10767151937Sjkim 10768167802Sjkim 10769151937Sjkim2) iASL Compiler/Disassembler: 10770151937Sjkim 10771193267SjkimFixed a problem with the resource descriptor generation/support. For the 10772241973SjkimResourceSourceIndex and the ResourceSource fields, both must be present, 10773241973Sjkimor 10774193267Sjkimboth must be not present - can't have one without the other. 10775151937Sjkim 10776241973SjkimThe compiler now returns non-zero from the main procedure if any errors 10777241973Sjkimhave 10778193267Sjkimoccurred during the compilation. 10779151937Sjkim 10780151937Sjkim 10781151937Sjkim---------------------------------------- 10782151937Sjkim09 March 2005. Summary of changes for version 20050309: 10783151937Sjkim 10784151937Sjkim1) ACPI CA Core Subsystem: 10785151937Sjkim 10786241973SjkimThe string-to-buffer implicit conversion code has been modified again 10787241973Sjkimafter 10788253690Sjkima change to the ACPI specification. In order to match the behavior of 10789253690Sjkimthe 10790241973Sjkimother major ACPI implementation, the target buffer is no longer truncated 10791241973Sjkimif 10792193267Sjkimthe source string is smaller than an existing target buffer. This change 10793193267Sjkimrequires an update to the ACPI spec, and should eliminate the recent 10794151937SjkimAE_AML_BUFFER_LIMIT issues. 10795151937Sjkim 10796253690SjkimThe "implicit return" support was rewritten to a new algorithm that 10797253690Sjkimsolves 10798241973Sjkimthe general case. Rather than attempt to determine when a method is about 10799241973Sjkimto 10800253690Sjkimexit, the result of every ASL operator is saved momentarily until the 10801253690Sjkimvery 10802193267Sjkimnext ASL operator is executed. Therefore, no matter how the method exits, 10803193267Sjkimthere will always be a saved implicit return value. This feature is only 10804253690Sjkimenabled with the AcpiGbl_EnableInterpreterSlack flag, and should 10805253690Sjkimeliminate 10806193267SjkimAE_AML_NO_RETURN_VALUE errors when enabled. 10807151937Sjkim 10808253690SjkimImplemented implicit conversion support for the predicate (operand) of 10809253690Sjkimthe 10810241973SjkimIf, Else, and While operators. String and Buffer arguments are 10811241973Sjkimautomatically 10812193267Sjkimconverted to Integers. 10813151937Sjkim 10814193267SjkimChanged the string-to-integer conversion behavior to match the new ACPI 10815193267Sjkimerrata: "If no integer object exists, a new integer is created. The ASCII 10816193267Sjkimstring is interpreted as a hexadecimal constant. Each string character is 10817193267Sjkiminterpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 10818241973Sjkimwith the first character as the most significant digit, and ending with 10819241973Sjkimthe 10820241973Sjkimfirst non-hexadecimal character or end-of-string." This means that the 10821241973Sjkimfirst 10822193267Sjkimnon-hex character terminates the conversion and this is the code that was 10823193267Sjkimchanged. 10824151937Sjkim 10825253690SjkimFixed a problem where the ObjectType operator would fail (fault) when 10826253690Sjkimused 10827193267Sjkimon an Index of a Package which pointed to a null package element. The 10828193267Sjkimoperator now properly returns zero (Uninitialized) in this case. 10829151937Sjkim 10830193267SjkimFixed a problem where the While operator used excessive memory by not 10831241973Sjkimproperly popping the result stack during execution. There was no memory 10832241973Sjkimleak 10833193267Sjkimafter execution, however. (Code provided by Valery Podrezov.) 10834151937Sjkim 10835253690SjkimFixed a problem where references to control methods within Package 10836253690Sjkimobjects 10837193267Sjkimcaused the method to be invoked, instead of producing a reference object 10838193267Sjkimpointing to the method. 10839151937Sjkim 10840253690SjkimRestructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 10841253690Sjkimto 10842193267Sjkimimprove performance and reduce code size. (Code provided by Alexey 10843193267SjkimStarikovskiy.) 10844151937Sjkim 10845193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10846253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10847253690Sjkimproduced 10848193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10849193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10850241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10851241973SjkimNote 10852241973Sjkimthat these values will vary depending on the efficiency of the compiler 10853241973Sjkimand 10854193267Sjkimthe compiler options used during generation. 10855151937Sjkim 10856151937Sjkim Previous Release: 10857151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10858151937Sjkim Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10859151937Sjkim Current Release: 10860151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10861151937Sjkim Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 10862151937Sjkim 10863151937Sjkim 10864151937Sjkim2) iASL Compiler/Disassembler: 10865151937Sjkim 10866193267SjkimFixed a problem with the Return operator with no arguments. Since the AML 10867241973Sjkimgrammar for the byte encoding requires an operand for the Return opcode, 10868241973Sjkimthe 10869193267Sjkimcompiler now emits a Return(Zero) for this case. An ACPI specification 10870193267Sjkimupdate has been written for this case. 10871151937Sjkim 10872193267SjkimFor tables other than the DSDT, namepath optimization is automatically 10873241973Sjkimdisabled. This is because SSDTs can be loaded anywhere in the namespace, 10874241973Sjkimthe 10875193267Sjkimcompiler has no knowledge of where, and thus cannot optimize namepaths. 10876151937Sjkim 10877193267SjkimAdded "ProcessorObj" to the ObjectTypeKeyword list. This object type was 10878193267Sjkiminadvertently omitted from the ACPI specification, and will require an 10879193267Sjkimupdate to the spec. 10880151937Sjkim 10881241973SjkimThe source file scan for ASCII characters is now optional (-a). This 10882241973Sjkimchange 10883193267Sjkimwas made because some vendors place non-ascii characters within comments. 10884193267SjkimHowever, the scan is simply a brute-force byte compare to ensure all 10885193267Sjkimcharacters in the file are in the range 0x00 to 0x7F. 10886151937Sjkim 10887193267SjkimFixed a problem with the CondRefOf operator where the compiler was 10888241973Sjkiminappropriately checking for the existence of the target. Since the point 10889241973Sjkimof 10890193267Sjkimthe operator is to check for the existence of the target at run-time, the 10891193267Sjkimcompiler no longer checks for the target existence. 10892151937Sjkim 10893193267SjkimFixed a problem where errors generated from the internal AML interpreter 10894193267Sjkimduring constant folding were not handled properly, causing a fault. 10895151937Sjkim 10896193267SjkimFixed a problem with overly aggressive range checking for the Stall 10897241973Sjkimoperator. The valid range (max 255) is now only checked if the operand is 10898241973Sjkimof 10899193267Sjkimtype Integer. All other operand types cannot be statically checked. 10900151937Sjkim 10901253690SjkimFixed a problem where control method references within the RefOf, 10902253690SjkimDeRefOf, 10903241973Sjkimand ObjectType operators were not treated properly. They are now treated 10904241973Sjkimas 10905193267Sjkimactual references, not method invocations. 10906151937Sjkim 10907241973SjkimFixed and enhanced the "list namespace" option (-ln). This option was 10908241973Sjkimbroken 10909193267Sjkima number of releases ago. 10910151937Sjkim 10911241973SjkimImproved error handling for the Field, IndexField, and BankField 10912241973Sjkimoperators. 10913193267SjkimThe compiler now cleanly reports and recovers from errors in the field 10914193267Sjkimcomponent (FieldUnit) list. 10915151937Sjkim 10916193267SjkimFixed a disassembler problem where the optional ResourceDescriptor fields 10917193267SjkimTRS and TTP were not always handled correctly. 10918151937Sjkim 10919151937SjkimDisassembler - Comments in output now use "//" instead of "/*" 10920151937Sjkim 10921151937Sjkim---------------------------------------- 10922151937Sjkim28 February 2005. Summary of changes for version 20050228: 10923151937Sjkim 10924151937Sjkim1) ACPI CA Core Subsystem: 10925151937Sjkim 10926193267SjkimFixed a problem where the result of an Index() operator (an object 10927253690Sjkimreference) must increment the reference count on the target object for 10928253690Sjkimthe 10929193267Sjkimlife of the object reference. 10930151937Sjkim 10931193267SjkimImplemented AML Interpreter and Debugger support for the new ACPI 3.0 10932241973SjkimExtended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 10933241973SjkimWordSpace 10934193267Sjkimresource descriptors. 10935151937Sjkim 10936193267SjkimImplemented support in the _OSI method for the ACPI 3.0 "Extended Address 10937241973SjkimSpace Descriptor" string, indicating interpreter support for the 10938241973Sjkimdescriptors 10939193267Sjkimabove. 10940151937Sjkim 10941151937SjkimImplemented header support for the new ACPI 3.0 FADT flag bits. 10942151937Sjkim 10943241973SjkimImplemented header support for the new ACPI 3.0 PCI Express bits for the 10944241973SjkimPM1 10945193267Sjkimstatus/enable registers. 10946151937Sjkim 10947193267SjkimUpdated header support for the MADT processor local Apic struct and MADT 10948193267Sjkimplatform interrupt source struct for new ACPI 3.0 fields. 10949151937Sjkim 10950151937SjkimImplemented header support for the SRAT and SLIT ACPI tables. 10951151937Sjkim 10952241973SjkimImplemented the -s switch in AcpiExec to enable the "InterpreterSlack" 10953241973Sjkimflag 10954193267Sjkimat runtime. 10955151937Sjkim 10956193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 10957253690Sjkimshown below. These are the code and data sizes for the acpica.lib 10958253690Sjkimproduced 10959193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 10960193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 10961241973Sjkimdebug output trace mechanism and has a much larger code and data size. 10962241973SjkimNote 10963241973Sjkimthat these values will vary depending on the efficiency of the compiler 10964241973Sjkimand 10965193267Sjkimthe compiler options used during generation. 10966151937Sjkim 10967151937Sjkim Previous Release: 10968151937Sjkim Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 10969151937Sjkim Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 10970151937Sjkim Current Release: 10971151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 10972151937Sjkim Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 10973151937Sjkim 10974151937Sjkim 10975151937Sjkim2) iASL Compiler/Disassembler: 10976151937Sjkim 10977253690SjkimFixed a problem with the internal 64-bit String-to-integer conversion 10978253690Sjkimwith 10979193267Sjkimstrings less than two characters long. 10980151937Sjkim 10981193267SjkimFixed a problem with constant folding where the result of the Index() 10982241973Sjkimoperator can not be considered a constant. This means that Index() cannot 10983241973Sjkimbe 10984193267Sjkima type3 opcode and this will require an update to the ACPI specification. 10985151937Sjkim 10986193267SjkimDisassembler: Implemented support for the TTP, MTP, and TRS resource 10987241973Sjkimdescriptor fields. These fields were inadvertently ignored and not output 10988241973Sjkimin 10989193267Sjkimthe disassembly of the resource descriptor. 10990151937Sjkim 10991151937Sjkim 10992151937Sjkim ---------------------------------------- 10993151937Sjkim11 February 2005. Summary of changes for version 20050211: 10994151937Sjkim 10995151937Sjkim1) ACPI CA Core Subsystem: 10996151937Sjkim 10997193267SjkimImplemented ACPI 3.0 support for implicit conversion within the Match() 10998241973Sjkimoperator. MatchObjects can now be of type integer, buffer, or string 10999241973Sjkiminstead 11000241973Sjkimof just type integer. Package elements are implicitly converted to the 11001241973Sjkimtype 11002193267Sjkimof the MatchObject. This change aligns the behavior of Match() with the 11003241973Sjkimbehavior of the other logical operators (LLess(), etc.) It also requires 11004241973Sjkiman 11005193267Sjkimerrata change to the ACPI specification as this support was intended for 11006193267SjkimACPI 3.0, but was inadvertently omitted. 11007151937Sjkim 11008253690SjkimFixed a problem with the internal implicit "to buffer" conversion. 11009253690SjkimStrings 11010241973Sjkimthat are converted to buffers will cause buffer truncation if the string 11011241973Sjkimis 11012241973Sjkimsmaller than the target buffer. Integers that are converted to buffers 11013241973Sjkimwill 11014193267Sjkimnot cause buffer truncation, only zero extension (both as per the ACPI 11015193267Sjkimspec.) The problem was introduced when code was added to truncate the 11016241973Sjkimbuffer, but this should not be performed in all cases, only the string 11017241973Sjkimcase. 11018151937Sjkim 11019241973SjkimFixed a problem with the Buffer and Package operators where the 11020241973Sjkiminterpreter 11021193267Sjkimwould get confused if two such operators were used as operands to an ASL 11022193267Sjkimoperator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11023241973Sjkimstack was not being popped after the execution of these operators, 11024241973Sjkimresulting 11025193267Sjkimin an AE_NO_RETURN_VALUE exception. 11026151937Sjkim 11027193267SjkimFixed a problem with constructs of the form Store(Index(...),...). The 11028241973Sjkimreference object returned from Index was inadvertently resolved to an 11029241973Sjkimactual 11030241973Sjkimvalue. This problem was introduced in version 20050114 when the behavior 11031241973Sjkimof 11032193267SjkimStore() was modified to restrict the object types that can be used as the 11033151937Sjkimsource operand (to match the ACPI specification.) 11034151937Sjkim 11035193267SjkimReduced excessive stack use within the AcpiGetObjectInfo procedure. 11036151937Sjkim 11037193267SjkimAdded a fix to aclinux.h to allow generation of AcpiExec on Linux. 11038151937Sjkim 11039193267SjkimUpdated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11040151937Sjkim 11041193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11042253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11043253690Sjkimproduced 11044193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11045193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11046241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11047241973SjkimNote 11048241973Sjkimthat these values will vary depending on the efficiency of the compiler 11049241973Sjkimand 11050193267Sjkimthe compiler options used during generation. 11051151937Sjkim 11052151937Sjkim Previous Release: 11053151937Sjkim Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11054151937Sjkim Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11055151937Sjkim Current Release: 11056151937Sjkim Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11057151937Sjkim Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11058151937Sjkim 11059151937Sjkim 11060151937Sjkim2) iASL Compiler/Disassembler: 11061151937Sjkim 11062193267SjkimFixed a code generation problem in the constant folding optimization code 11063193267Sjkimwhere incorrect code was generated if a constant was reduced to a buffer 11064193267Sjkimobject (i.e., a reduced type 5 opcode.) 11065151937Sjkim 11066193267SjkimFixed a typechecking problem for the ToBuffer operator. Caused by an 11067193267Sjkimincorrect return type in the internal opcode information table. 11068151937Sjkim 11069151937Sjkim---------------------------------------- 11070151937Sjkim25 January 2005. Summary of changes for version 20050125: 11071151937Sjkim 11072151937Sjkim1) ACPI CA Core Subsystem: 11073151937Sjkim 11074193267SjkimFixed a recently introduced problem with the Global Lock where the 11075193267Sjkimunderlying semaphore was not created. This problem was introduced in 11076193267Sjkimversion 20050114, and caused an AE_AML_NO_OPERAND exception during an 11077193267SjkimAcquire() operation on _GL. 11078151937Sjkim 11079193267SjkimThe local object cache is now optional, and is disabled by default. Both 11080193267SjkimAcpiExec and the iASL compiler enable the cache because they run in user 11081253690Sjkimmode and this enhances their performance. #define 11082253690SjkimACPI_ENABLE_OBJECT_CACHE 11083193267Sjkimto enable the local cache. 11084151937Sjkim 11085241973SjkimFixed an issue in the internal function AcpiUtEvaluateObject concerning 11086241973Sjkimthe 11087241973Sjkimoptional "implicit return" support where an error was returned if no 11088241973Sjkimreturn 11089241973Sjkimobject was expected, but one was implicitly returned. AE_OK is now 11090241973Sjkimreturned 11091193267Sjkimin this case and the implicitly returned object is deleted. 11092241973SjkimAcpiUtEvaluateObject is only occasionally used, and only to execute 11093241973Sjkimreserved 11094193267Sjkimmethods such as _STA and _INI where the return type is known up front. 11095151937Sjkim 11096241973SjkimFixed a few issues with the internal convert-to-integer code. It now 11097241973Sjkimreturns 11098193267Sjkiman error if an attempt is made to convert a null string, a string of only 11099241973Sjkimblanks/tabs, or a zero-length buffer. This affects both implicit 11100241973Sjkimconversion 11101193267Sjkimand explicit conversion via the ToInteger() operator. 11102151937Sjkim 11103241973SjkimThe internal debug code in AcpiUtAcquireMutex has been commented out. It 11104241973Sjkimis 11105253690Sjkimnot needed for normal operation and should increase the performance of 11106253690Sjkimthe 11107253690Sjkimentire subsystem. The code remains in case it is needed for debug 11108253690Sjkimpurposes 11109193267Sjkimagain. 11110151937Sjkim 11111241973SjkimThe AcpiExec source and makefile are included in the Unix/Linux package 11112241973Sjkimfor 11113193267Sjkimthe first time. 11114151937Sjkim 11115193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11116253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11117253690Sjkimproduced 11118193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11119193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11120241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11121241973SjkimNote 11122241973Sjkimthat these values will vary depending on the efficiency of the compiler 11123241973Sjkimand 11124193267Sjkimthe compiler options used during generation. 11125151937Sjkim 11126151937Sjkim Previous Release: 11127151937Sjkim Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11128151937Sjkim Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11129151937Sjkim Current Release: 11130151937Sjkim Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11131151937Sjkim Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11132151937Sjkim 11133151937Sjkim2) iASL Compiler/Disassembler: 11134151937Sjkim 11135241973SjkimSwitch/Case support: A warning is now issued if the type of the Switch 11136241973Sjkimvalue 11137193267Sjkimcannot be determined at compile time. For example, Switch(Arg0) will 11138253690Sjkimgenerate the warning, and the type is assumed to be an integer. As per 11139253690Sjkimthe 11140241973SjkimACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11141241973Sjkimthe 11142193267Sjkimwarning. 11143151937Sjkim 11144193267SjkimSwitch/Case support: Implemented support for buffer and string objects as 11145193267Sjkimthe switch value. This is an ACPI 3.0 feature, now that LEqual supports 11146193267Sjkimbuffers and strings. 11147151937Sjkim 11148241973SjkimSwitch/Case support: The emitted code for the LEqual() comparisons now 11149241973Sjkimuses 11150241973Sjkimthe switch value as the first operand, not the second. The case value is 11151241973Sjkimnow 11152193267Sjkimthe second operand, and this allows the case value to be implicitly 11153193267Sjkimconverted to the type of the switch value, not the other way around. 11154151937Sjkim 11155241973SjkimSwitch/Case support: Temporary variables are now emitted immediately 11156241973Sjkimwithin 11157253690Sjkimthe control method, not at the global level. This means that there are 11158253690Sjkimnow 11159241973Sjkim36 temps available per-method, not 36 temps per-module as was the case 11160241973Sjkimwith 11161193267Sjkimthe earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11162151937Sjkim 11163151937Sjkim---------------------------------------- 11164151937Sjkim14 January 2005. Summary of changes for version 20050114: 11165151937Sjkim 11166193267SjkimAdded 2005 copyright to all module headers. This affects every module in 11167193267Sjkimthe core subsystem, iASL compiler, and the utilities. 11168151937Sjkim 11169151937Sjkim1) ACPI CA Core Subsystem: 11170151937Sjkim 11171193267SjkimFixed an issue with the String-to-Buffer conversion code where the string 11172253690Sjkimnull terminator was not included in the buffer after conversion, but 11173253690Sjkimthere 11174241973Sjkimis existing ASL that assumes the string null terminator is included. This 11175241973Sjkimis 11176193267Sjkimthe root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11177193267Sjkimintroduced in the previous version when the code was updated to correctly 11178253690Sjkimset the converted buffer size as per the ACPI specification. The ACPI 11179253690Sjkimspec 11180241973Sjkimis ambiguous and will be updated to specify that the null terminator must 11181241973Sjkimbe 11182193267Sjkimincluded in the converted buffer. This also affects the ToBuffer() ASL 11183193267Sjkimoperator. 11184151937Sjkim 11185193267SjkimFixed a problem with the Mid() ASL/AML operator where it did not work 11186241973Sjkimcorrectly on Buffer objects. Newly created sub-buffers were not being 11187241973Sjkimmarked 11188193267Sjkimas initialized. 11189151937Sjkim 11190167802Sjkim 11191193267SjkimFixed a problem in AcpiTbFindTable where incorrect string compares were 11192241973Sjkimperformed on the OemId and OemTableId table header fields. These fields 11193241973Sjkimare 11194193267Sjkimnot null terminated, so strncmp is now used instead of strcmp. 11195151937Sjkim 11196193267SjkimImplemented a restriction on the Store() ASL/AML operator to align the 11197241973Sjkimbehavior with the ACPI specification. Previously, any object could be 11198241973Sjkimused 11199241973Sjkimas the source operand. Now, the only objects that may be used are 11200241973SjkimIntegers, 11201193267SjkimBuffers, Strings, Packages, Object References, and DDB Handles. If 11202193267Sjkimnecessary, the original behavior can be restored by enabling the 11203151937SjkimEnableInterpreterSlack flag. 11204151937Sjkim 11205241973SjkimEnhanced the optional "implicit return" support to allow an implicit 11206241973Sjkimreturn 11207193267Sjkimvalue from methods that are invoked externally via the AcpiEvaluateObject 11208193267Sjkiminterface. This enables implicit returns from the _STA and _INI methods, 11209193267Sjkimfor example. 11210151937Sjkim 11211241973SjkimChanged the Revision() ASL/AML operator to return the current version of 11212241973Sjkimthe 11213241973SjkimAML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11214241973Sjkimreturned 11215193267Sjkimthe supported ACPI version (This is the function of the _REV method). 11216151937Sjkim 11217241973SjkimUpdated the _REV predefined method to return the currently supported 11218241973Sjkimversion 11219193267Sjkimof ACPI, now 3. 11220151937Sjkim 11221151937SjkimImplemented batch mode option for the AcpiExec utility (-b). 11222151937Sjkim 11223193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11224253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11225253690Sjkimproduced 11226193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11227193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11228241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11229241973SjkimNote 11230241973Sjkimthat these values will vary depending on the efficiency of the compiler 11231241973Sjkimand 11232193267Sjkimthe compiler options used during generation. 11233151937Sjkim 11234151937Sjkim Previous Release: 11235151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11236151937Sjkim Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11237151937Sjkim Current Release: 11238151937Sjkim Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11239151937Sjkim Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11240151937Sjkim 11241151937Sjkim---------------------------------------- 11242151937Sjkim10 December 2004. Summary of changes for version 20041210: 11243151937Sjkim 11244193267SjkimACPI 3.0 support is nearing completion in both the iASL compiler and the 11245193267SjkimACPI CA core subsystem. 11246151937Sjkim 11247151937Sjkim1) ACPI CA Core Subsystem: 11248151937Sjkim 11249253690SjkimFixed a problem in the ToDecimalString operator where the resulting 11250253690Sjkimstring 11251193267Sjkimlength was incorrectly calculated. The length is now calculated exactly, 11252193267Sjkimeliminating incorrect AE_STRING_LIMIT exceptions. 11253151937Sjkim 11254241973SjkimFixed a problem in the ToHexString operator to allow a maximum 200 11255241973Sjkimcharacter 11256193267Sjkimstring to be produced. 11257151937Sjkim 11258253690SjkimFixed a problem in the internal string-to-buffer and buffer-to-buffer 11259253690Sjkimcopy 11260193267Sjkimroutine where the length of the resulting buffer was not truncated to the 11261193267Sjkimnew size (if the target buffer already existed). 11262151937Sjkim 11263193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11264253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11265253690Sjkimproduced 11266193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11267193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11268241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11269241973SjkimNote 11270241973Sjkimthat these values will vary depending on the efficiency of the compiler 11271241973Sjkimand 11272193267Sjkimthe compiler options used during generation. 11273151937Sjkim 11274151937Sjkim Previous Release: 11275151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11276151937Sjkim Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11277151937Sjkim Current Release: 11278151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11279151937Sjkim Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11280151937Sjkim 11281151937Sjkim 11282151937Sjkim2) iASL Compiler/Disassembler: 11283151937Sjkim 11284193267SjkimImplemented the new ACPI 3.0 resource template macros - DWordSpace, 11285193267SjkimExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11286193267SjkimIncludes support in the disassembler. 11287151937Sjkim 11288241973SjkimImplemented support for the new (ACPI 3.0) parameter to the Register 11289241973Sjkimmacro, 11290193267SjkimAccessSize. 11291151937Sjkim 11292193267SjkimFixed a problem where the _HE resource name for the Interrupt macro was 11293193267Sjkimreferencing bit 0 instead of bit 1. 11294151937Sjkim 11295193267SjkimImplemented check for maximum 255 interrupts in the Interrupt macro. 11296151937Sjkim 11297193267SjkimFixed a problem with the predefined resource descriptor names where 11298193267Sjkimincorrect AML code was generated if the offset within the resource buffer 11299193267Sjkimwas 0 or 1. The optimizer shortened the AML code to a single byte opcode 11300193267Sjkimbut did not update the surrounding package lengths. 11301151937Sjkim 11302253690SjkimChanges to the Dma macro: All channels within the channel list must be 11303253690Sjkimin 11304193267Sjkimthe range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11305193267Sjkimoptional (default is BusMaster). 11306151937Sjkim 11307193267SjkimImplemented check for maximum 7 data bytes for the VendorShort macro. 11308151937Sjkim 11309241973SjkimThe ReadWrite parameter is now optional for the Memory32 and similar 11310241973Sjkimmacros. 11311151937Sjkim 11312151937Sjkim---------------------------------------- 11313151937Sjkim03 December 2004. Summary of changes for version 20041203: 11314151937Sjkim 11315151937Sjkim1) ACPI CA Core Subsystem: 11316151937Sjkim 11317241973SjkimThe low-level field insertion/extraction code (exfldio) has been 11318241973Sjkimcompletely 11319193267Sjkimrewritten to eliminate unnecessary complexity, bugs, and boundary 11320193267Sjkimconditions. 11321151937Sjkim 11322241973SjkimFixed a problem in the ToInteger, ToBuffer, ToHexString, and 11323241973SjkimToDecimalString 11324193267Sjkimoperators where the input operand could be inadvertently deleted if no 11325193267Sjkimconversion was necessary (e.g., if the input to ToInteger was an Integer 11326193267Sjkimobject.) 11327151937Sjkim 11328241973SjkimFixed a problem with the ToDecimalString and ToHexString where an 11329241973Sjkimincorrect 11330193267Sjkimexception code was returned if the resulting string would be > 200 chars. 11331193267SjkimAE_STRING_LIMIT is now returned. 11332151937Sjkim 11333193267SjkimFixed a problem with the Concatenate operator where AE_OK was always 11334193267Sjkimreturned, even if the operation failed. 11335151937Sjkim 11336193267SjkimFixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11337193267Sjkimsemaphores to be allocated. 11338151937Sjkim 11339193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11340253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11341253690Sjkimproduced 11342193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11343193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11344241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11345241973SjkimNote 11346241973Sjkimthat these values will vary depending on the efficiency of the compiler 11347241973Sjkimand 11348193267Sjkimthe compiler options used during generation. 11349151937Sjkim 11350151937Sjkim Previous Release: 11351151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11352151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11353151937Sjkim Current Release: 11354151937Sjkim Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11355151937Sjkim Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11356151937Sjkim 11357151937Sjkim 11358151937Sjkim2) iASL Compiler/Disassembler: 11359151937Sjkim 11360193267SjkimFixed typechecking for the ObjectType and SizeOf operators. Problem was 11361193267Sjkimrecently introduced in 20041119. 11362151937Sjkim 11363241973SjkimFixed a problem with the ToUUID macro where the upper nybble of each 11364241973Sjkimbuffer 11365193267Sjkimbyte was inadvertently set to zero. 11366151937Sjkim 11367151937Sjkim---------------------------------------- 11368138287Smarks19 November 2004. Summary of changes for version 20041119: 11369138287Smarks 11370138287Smarks1) ACPI CA Core Subsystem: 11371138287Smarks 11372241973SjkimFixed a problem in the internal ConvertToInteger routine where new 11373241973Sjkimintegers 11374241973Sjkimwere not truncated to 32 bits for 32-bit ACPI tables. This routine 11375241973Sjkimconverts 11376193267Sjkimbuffers and strings to integers. 11377138287Smarks 11378241973SjkimImplemented support to store a value to an Index() on a String object. 11379241973SjkimThis 11380193267Sjkimis an ACPI 2.0 feature that had not yet been implemented. 11381138287Smarks 11382241973SjkimImplemented new behavior for storing objects to individual package 11383241973Sjkimelements 11384241973Sjkim(via the Index() operator). The previous behavior was to invoke the 11385241973Sjkimimplicit 11386193267Sjkimconversion rules if an object was already present at the index. The new 11387241973Sjkimbehavior is to simply delete any existing object and directly store the 11388241973Sjkimnew 11389241973Sjkimobject. Although the ACPI specification seems unclear on this subject, 11390241973Sjkimother 11391193267SjkimACPI implementations behave in this manner. (This is the root of the 11392193267SjkimAE_BAD_HEX_CONSTANT issue.) 11393138287Smarks 11394241973SjkimModified the RSDP memory scan mechanism to support the extended checksum 11395241973Sjkimfor 11396193267SjkimACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11397193267SjkimRSDP signature is found with a valid checksum. 11398138287Smarks 11399193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11400253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11401253690Sjkimproduced 11402193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11403193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11404241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11405241973SjkimNote 11406241973Sjkimthat these values will vary depending on the efficiency of the compiler 11407241973Sjkimand 11408193267Sjkimthe compiler options used during generation. 11409138287Smarks 11410151937Sjkim Previous Release: 11411151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11412151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11413151937Sjkim Current Release: 11414151937Sjkim Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11415151937Sjkim Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11416138287Smarks 11417138287Smarks 11418138287Smarks2) iASL Compiler/Disassembler: 11419138287Smarks 11420138287SmarksFixed a missing semicolon in the aslcompiler.y file. 11421138287Smarks 11422138287Smarks---------------------------------------- 11423138287Smarks05 November 2004. Summary of changes for version 20041105: 11424138287Smarks 11425138287Smarks1) ACPI CA Core Subsystem: 11426138287Smarks 11427241973SjkimImplemented support for FADT revision 2. This was an interim table 11428241973Sjkim(between 11429193267SjkimACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11430138287Smarks 11431193267SjkimImplemented optional support to allow uninitialized LocalX and ArgX 11432241973Sjkimvariables in a control method. The variables are initialized to an 11433241973SjkimInteger 11434193267Sjkimobject with a value of zero. This support is enabled by setting the 11435193267SjkimAcpiGbl_EnableInterpreterSlack flag to TRUE. 11436138287Smarks 11437253690SjkimImplemented support for Integer objects for the SizeOf operator. Either 11438253690Sjkim4 11439253690Sjkimor 8 is returned, depending on the current integer size (32-bit or 64- 11440253690Sjkimbit, 11441193267Sjkimdepending on the parent table revision). 11442138287Smarks 11443241973SjkimFixed a problem in the implementation of the SizeOf and ObjectType 11444241973Sjkimoperators 11445193267Sjkimwhere the operand was resolved to a value too early, causing incorrect 11446193267Sjkimreturn values for some objects. 11447138287Smarks 11448138287SmarksFixed some possible memory leaks during exceptional conditions. 11449138287Smarks 11450193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11451253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11452253690Sjkimproduced 11453193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11454193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11455241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11456241973SjkimNote 11457241973Sjkimthat these values will vary depending on the efficiency of the compiler 11458241973Sjkimand 11459193267Sjkimthe compiler options used during generation. 11460138287Smarks 11461138287Smarks Previous Release: 11462138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11463138287Smarks Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11464138287Smarks Current Release: 11465138287Smarks Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11466138287Smarks Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11467138287Smarks 11468138287Smarks 11469138287Smarks2) iASL Compiler/Disassembler: 11470138287Smarks 11471138287SmarksImplemented support for all ACPI 3.0 reserved names and methods. 11472138287Smarks 11473193267SjkimImplemented all ACPI 3.0 grammar elements in the front-end, including 11474193267Sjkimsupport for semicolons. 11475138287Smarks 11476138287SmarksImplemented the ACPI 3.0 Function() and ToUUID() macros 11477138287Smarks 11478193267SjkimFixed a problem in the disassembler where a Scope() operator would not be 11479193267Sjkimemitted properly if the target of the scope was in another table. 11480138287Smarks 11481138287Smarks---------------------------------------- 11482138287Smarks15 October 2004. Summary of changes for version 20041015: 11483138287Smarks 11484193267SjkimNote: ACPI CA is currently undergoing an in-depth and complete formal 11485193267Sjkimevaluation to test/verify the following areas. Other suggestions are 11486193267Sjkimwelcome. This will result in an increase in the frequency of releases and 11487193267Sjkimthe number of bug fixes in the next few months. 11488138287Smarks - Functional tests for all ASL/AML operators 11489138287Smarks - All implicit/explicit type conversions 11490138287Smarks - Bit fields and operation regions 11491138287Smarks - 64-bit math support and 32-bit-only "truncated" math support 11492138287Smarks - Exceptional conditions, both compiler and interpreter 11493138287Smarks - Dynamic object deletion and memory leaks 11494138287Smarks - ACPI 3.0 support when implemented 11495138287Smarks - External interfaces to the ACPI subsystem 11496138287Smarks 11497138287Smarks 11498138287Smarks1) ACPI CA Core Subsystem: 11499138287Smarks 11500241973SjkimFixed two alignment issues on 64-bit platforms - within debug statements 11501241973Sjkimin 11502241973SjkimAcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 11503241973SjkimAddress 11504193267Sjkimfield within the non-aligned ACPI generic address structure. 11505138287Smarks 11506193267SjkimFixed a problem in the Increment and Decrement operators where incorrect 11507193267Sjkimoperand resolution could result in the inadvertent modification of the 11508193267Sjkimoriginal integer when the integer is passed into another method as an 11509193267Sjkimargument and the arg is then incremented/decremented. 11510138287Smarks 11511241973SjkimFixed a problem in the FromBCD operator where the upper 32-bits of a 64- 11512241973Sjkimbit 11513193267SjkimBCD number were truncated during conversion. 11514138287Smarks 11515241973SjkimFixed a problem in the ToDecimal operator where the length of the 11516241973Sjkimresulting 11517253690Sjkimstring could be set incorrectly too long if the input operand was a 11518253690SjkimBuffer 11519193267Sjkimobject. 11520138287Smarks 11521241973SjkimFixed a problem in the Logical operators (LLess, etc.) where a NULL byte 11522241973Sjkim(0) 11523193267Sjkimwithin a buffer would prematurely terminate a compare between buffer 11524193267Sjkimobjects. 11525138287Smarks 11526193267SjkimAdded a check for string overflow (>200 characters as per the ACPI 11527193267Sjkimspecification) during the Concatenate operator with two string operands. 11528138287Smarks 11529193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11530253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11531253690Sjkimproduced 11532193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11533193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11534241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11535241973SjkimNote 11536241973Sjkimthat these values will vary depending on the efficiency of the compiler 11537241973Sjkimand 11538193267Sjkimthe compiler options used during generation. 11539138287Smarks 11540138287Smarks Previous Release: 11541138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11542138287Smarks Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11543138287Smarks Current Release: 11544138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11545138287Smarks Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11546138287Smarks 11547138287Smarks 11548167802Sjkim 11549138287Smarks2) iASL Compiler/Disassembler: 11550138287Smarks 11551193267SjkimAllow the use of the ObjectType operator on uninitialized Locals and Args 11552193267Sjkim(returns 0 as per the ACPI specification). 11553138287Smarks 11554253690SjkimFixed a problem where the compiler would fault if there was a syntax 11555253690Sjkimerror 11556193267Sjkimin the FieldName of all of the various CreateXXXField operators. 11557138287Smarks 11558253690SjkimDisallow the use of lower case letters within the EISAID macro, as per 11559253690Sjkimthe 11560241973SjkimACPI specification. All EISAID strings must be of the form "UUUNNNN" 11561241973SjkimWhere 11562193267SjkimU is an uppercase letter and N is a hex digit. 11563138287Smarks 11564138287Smarks 11565138287Smarks---------------------------------------- 11566138287Smarks06 October 2004. Summary of changes for version 20041006: 11567138287Smarks 11568138287Smarks1) ACPI CA Core Subsystem: 11569138287Smarks 11570193267SjkimImplemented support for the ACPI 3.0 Timer operator. This ASL function 11571193267Sjkimimplements a 64-bit timer with 100 nanosecond granularity. 11572138287Smarks 11573193267SjkimDefined a new OSL interface, AcpiOsGetTimer. This interface is used to 11574241973Sjkimimplement the ACPI 3.0 Timer operator. This allows the host OS to 11575241973Sjkimimplement 11576253690Sjkimthe timer with the best clock available. Also, it keeps the core 11577253690Sjkimsubsystem 11578193267Sjkimout of the clock handling business, since the host OS (usually) performs 11579193267Sjkimthis function. 11580138287Smarks 11581193267SjkimFixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 11582193267Sjkimfunctions use a 64-bit address which is part of the packed ACPI Generic 11583241973SjkimAddress Structure. Since the structure is non-aligned, the alignment 11584241973Sjkimmacros 11585193267Sjkimare now used to extract the address to a local variable before use. 11586138287Smarks 11587241973SjkimFixed a problem where the ToInteger operator assumed all input strings 11588241973Sjkimwere 11589253690Sjkimhexadecimal. The operator now handles both decimal strings and hex 11590253690Sjkimstrings 11591193267Sjkim(prefixed with "0x"). 11592138287Smarks 11593193267SjkimFixed a problem where the string length in the string object created as a 11594193267Sjkimresult of the internal ConvertToString procedure could be incorrect. This 11595253690Sjkimpotentially affected all implicit conversions and also the 11596253690SjkimToDecimalString 11597193267Sjkimand ToHexString operators. 11598138287Smarks 11599193267SjkimFixed two problems in the ToString operator. If the length parameter was 11600193267Sjkimzero, an incorrect string object was created and the value of the input 11601193267Sjkimlength parameter was inadvertently changed from zero to Ones. 11602138287Smarks 11603241973SjkimFixed a problem where the optional ResourceSource string in the 11604241973SjkimExtendedIRQ 11605193267Sjkimresource macro was ignored. 11606138287Smarks 11607241973SjkimSimplified the interfaces to the internal division functions, reducing 11608241973Sjkimcode 11609193267Sjkimsize and complexity. 11610138287Smarks 11611193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11612253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11613253690Sjkimproduced 11614193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11615193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11616241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11617241973SjkimNote 11618241973Sjkimthat these values will vary depending on the efficiency of the compiler 11619241973Sjkimand 11620193267Sjkimthe compiler options used during generation. 11621138287Smarks 11622138287Smarks Previous Release: 11623138287Smarks Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11624138287Smarks Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11625138287Smarks Current Release: 11626138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11627138287Smarks Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11628138287Smarks 11629138287Smarks 11630138287Smarks2) iASL Compiler/Disassembler: 11631138287Smarks 11632138287SmarksImplemented support for the ACPI 3.0 Timer operator. 11633138287Smarks 11634241973SjkimFixed a problem where the Default() operator was inadvertently ignored in 11635241973Sjkima 11636193267SjkimSwitch/Case block. This was a problem in the translation of the Switch 11637193267Sjkimstatement to If...Else pairs. 11638138287Smarks 11639241973SjkimAdded support to allow a standalone Return operator, with no parentheses 11640241973Sjkim(or 11641193267Sjkimoperands). 11642138287Smarks 11643193267SjkimFixed a problem with code generation for the ElseIf operator where the 11644193267Sjkimtranslated Else...If parse tree was improperly constructed leading to the 11645193267Sjkimloss of some code. 11646138287Smarks 11647138287Smarks---------------------------------------- 11648138287Smarks22 September 2004. Summary of changes for version 20040922: 11649138287Smarks 11650138287Smarks1) ACPI CA Core Subsystem: 11651138287Smarks 11652241973SjkimFixed a problem with the implementation of the LNot() operator where 11653241973Sjkim"Ones" 11654241973Sjkimwas not returned for the TRUE case. Changed the code to return Ones 11655241973Sjkiminstead 11656241973Sjkimof (!Arg) which was usually 1. This change affects iASL constant folding 11657241973Sjkimfor 11658193267Sjkimthis operator also. 11659138287Smarks 11660253690SjkimFixed a problem in AcpiUtInitializeBuffer where an existing buffer was 11661253690Sjkimnot 11662193267Sjkiminitialized properly -- Now zero the entire buffer in this case where the 11663193267Sjkimbuffer already exists. 11664138287Smarks 11665193267SjkimChanged the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 11666193267SjkimMilliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 11667193267Sjkimrelated code considerably. This will require changes/updates to all OS 11668193267Sjkiminterface layers (OSLs.) 11669138287Smarks 11670241973SjkimImplemented a new external interface, AcpiInstallExceptionHandler, to 11671241973Sjkimallow 11672241973Sjkima system exception handler to be installed. This handler is invoked upon 11673241973Sjkimany 11674193267Sjkimrun-time exception that occurs during control method execution. 11675138287Smarks 11676193267SjkimAdded support for the DSDT in AcpiTbFindTable. This allows the 11677138287SmarksDataTableRegion() operator to access the local copy of the DSDT. 11678138287Smarks 11679193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11680253690Sjkimshown below. These are the code and data sizes for the acpica.lib 11681253690Sjkimproduced 11682193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11683193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11684241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11685241973SjkimNote 11686241973Sjkimthat these values will vary depending on the efficiency of the compiler 11687241973Sjkimand 11688193267Sjkimthe compiler options used during generation. 11689138287Smarks 11690138287Smarks Previous Release: 11691138287Smarks Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11692138287Smarks Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11693138287Smarks Current Release: 11694138287Smarks Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 11695138287Smarks Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 11696138287Smarks 11697138287Smarks 11698138287Smarks2) iASL Compiler/Disassembler: 11699138287Smarks 11700193267SjkimFixed a problem with constant folding and the LNot operator. LNot was 11701253690Sjkimreturning 1 in the TRUE case, not Ones as per the ACPI specification. 11702253690SjkimThis 11703193267Sjkimcould result in the generation of an incorrect folded/reduced constant. 11704138287Smarks 11705193267SjkimEnd-Of-File is now allowed within a "//"-style comment. A parse error no 11706253690Sjkimlonger occurs if such a comment is at the very end of the input ASL 11707253690Sjkimsource 11708193267Sjkimfile. 11709138287Smarks 11710193267SjkimImplemented the "-r" option to override the Revision in the table header. 11711241973SjkimThe initial use of this option will be to simplify the evaluation of the 11712241973SjkimAML 11713241973Sjkiminterpreter by allowing a single ASL source module to be compiled for 11714241973Sjkimeither 11715193267Sjkim32-bit or 64-bit integers. 11716138287Smarks 11717138287Smarks 11718138287Smarks---------------------------------------- 11719138287Smarks27 August 2004. Summary of changes for version 20040827: 11720138287Smarks 11721138287Smarks1) ACPI CA Core Subsystem: 11722138287Smarks 11723193267Sjkim- Implemented support for implicit object conversion in the non-numeric 11724253690Sjkimlogical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 11725253690Sjkimand 11726193267SjkimLNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 11727253690Sjkimthe second operand is implicitly converted on the fly to match the type 11728253690Sjkimof 11729193267Sjkimthe first operand. For example: 11730138287Smarks 11731138287Smarks LEqual (Source1, Source2) 11732138287Smarks 11733241973SjkimSource1 and Source2 must each evaluate to an integer, a string, or a 11734241973Sjkimbuffer. 11735253690SjkimThe data type of Source1 dictates the required type of Source2. Source2 11736253690Sjkimis 11737193267Sjkimimplicitly converted if necessary to match the type of Source1. 11738138287Smarks 11739241973Sjkim- Updated and corrected the behavior of the string conversion support. 11740241973SjkimThe 11741193267Sjkimrules concerning conversion of buffers to strings (according to the ACPI 11742193267Sjkimspecification) are as follows: 11743138287Smarks 11744193267SjkimToDecimalString - explicit byte-wise conversion of buffer to string of 11745241973Sjkimdecimal values (0-255) separated by commas. ToHexString - explicit byte- 11746241973Sjkimwise 11747193267Sjkimconversion of buffer to string of hex values (0-FF) separated by commas. 11748241973SjkimToString - explicit byte-wise conversion of buffer to string. Byte-by- 11749241973Sjkimbyte 11750241973Sjkimcopy with no transform except NULL terminated. Any other implicit buffer- 11751241973Sjkimto- 11752253690Sjkimstring conversion - byte-wise conversion of buffer to string of hex 11753253690Sjkimvalues 11754193267Sjkim(0-FF) separated by spaces. 11755138287Smarks 11756138287Smarks- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 11757138287Smarks 11758253690Sjkim- Fixed a problem in AcpiNsGetPathnameLength where the returned length 11759253690Sjkimwas 11760193267Sjkimone byte too short in the case of a node in the root scope. This could 11761193267Sjkimcause a fault during debug output. 11762138287Smarks 11763241973Sjkim- Code and Data Size: Current and previous core subsystem library sizes 11764241973Sjkimare 11765241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11766241973Sjkimproduced 11767193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11768193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11769241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11770241973SjkimNote 11771241973Sjkimthat these values will vary depending on the efficiency of the compiler 11772241973Sjkimand 11773193267Sjkimthe compiler options used during generation. 11774138287Smarks 11775138287Smarks Previous Release: 11776138287Smarks Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11777138287Smarks Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11778138287Smarks Current Release: 11779138287Smarks Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 11780138287Smarks Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 11781138287Smarks 11782138287Smarks 11783138287Smarks2) iASL Compiler/Disassembler: 11784138287Smarks 11785138287Smarks- Fixed a Linux generation error. 11786138287Smarks 11787138287Smarks 11788138287Smarks---------------------------------------- 11789138287Smarks16 August 2004. Summary of changes for version 20040816: 11790138287Smarks 11791138287Smarks1) ACPI CA Core Subsystem: 11792138287Smarks 11793193267SjkimDesigned and implemented support within the AML interpreter for the so- 11794253690Sjkimcalled "implicit return". This support returns the result of the last 11795253690SjkimASL 11796193267Sjkimoperation within a control method, in the absence of an explicit Return() 11797193267Sjkimoperator. A few machines depend on this behavior, even though it is not 11798253690Sjkimexplicitly supported by the ASL language. It is optional support that 11799253690Sjkimcan 11800193267Sjkimbe enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 11801138287Smarks 11802241973SjkimRemoved support for the PCI_Config address space from the internal low 11803241973Sjkimlevel 11804193267Sjkimhardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 11805241973Sjkimsupport was not used internally, and would not work correctly anyway 11806241973Sjkimbecause 11807193267Sjkimthe PCI bus number and segment number were not supported. There are 11808241973Sjkimseparate interfaces for PCI configuration space access because of the 11809241973Sjkimunique 11810138287Smarksinterface. 11811138287Smarks 11812193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11813241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11814241973Sjkimproduced 11815193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11816193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11817241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11818241973SjkimNote 11819241973Sjkimthat these values will vary depending on the efficiency of the compiler 11820241973Sjkimand 11821193267Sjkimthe compiler options used during generation. 11822138287Smarks 11823138287Smarks Previous Release: 11824138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11825138287Smarks Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11826138287Smarks Current Release: 11827138287Smarks Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 11828138287Smarks Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 11829138287Smarks 11830138287Smarks 11831138287Smarks2) iASL Compiler/Disassembler: 11832138287Smarks 11833193267SjkimFixed a problem where constants in ASL expressions at the root level (not 11834193267Sjkimwithin a control method) could be inadvertently truncated during code 11835193267Sjkimgeneration. This problem was introduced in the 20040715 release. 11836138287Smarks 11837138287Smarks 11838138287Smarks---------------------------------------- 11839138287Smarks15 July 2004. Summary of changes for version 20040715: 11840138287Smarks 11841138287Smarks1) ACPI CA Core Subsystem: 11842138287Smarks 11843241973SjkimRestructured the internal HW GPE interfaces to pass/track the current 11844241973Sjkimstate 11845193267Sjkimof interrupts (enabled/disabled) in order to avoid possible deadlock and 11846193267Sjkimincrease flexibility of the interfaces. 11847138287Smarks 11848241973SjkimImplemented a "lexicographical compare" for String and Buffer objects 11849241973Sjkimwithin 11850253690Sjkimthe logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 11851253690Sjkim- 11852241973Sjkimas per further clarification to the ACPI specification. Behavior is 11853241973Sjkimsimilar 11854193267Sjkimto C library "strcmp". 11855138287Smarks 11856193267SjkimCompleted a major reduction in CPU stack use for the AcpiGetFirmwareTable 11857193267Sjkimexternal function. In the 32-bit non-debug case, the stack use has been 11858193267Sjkimreduced from 168 bytes to 32 bytes. 11859138287Smarks 11860241973SjkimDeployed a new run-time configuration flag, 11861241973SjkimAcpiGbl_EnableInterpreterSlack, 11862193267Sjkimwhose purpose is to allow the AML interpreter to forgive certain bad AML 11863193267Sjkimconstructs. Default setting is FALSE. 11864138287Smarks 11865241973SjkimImplemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 11866241973SjkimIO 11867241973Sjkimsupport code. If enabled, it allows field access to go beyond the end of 11868241973Sjkima 11869241973Sjkimregion definition if the field is within the region length rounded up to 11870241973Sjkimthe 11871193267Sjkimnext access width boundary (a common coding error.) 11872138287Smarks 11873193267SjkimRenamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 11874241973SjkimACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 11875241973Sjkimthese 11876193267Sjkimsymbols are lowercased by the latest version of the AcpiSrc tool. 11877138287Smarks 11878193267SjkimThe prototypes for the PCI interfaces in acpiosxf.h have been updated to 11879193267Sjkimrename "Register" to simply "Reg" to prevent certain compilers from 11880193267Sjkimcomplaining. 11881138287Smarks 11882193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11883241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11884241973Sjkimproduced 11885193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11886193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11887241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11888241973SjkimNote 11889241973Sjkimthat these values will vary depending on the efficiency of the compiler 11890241973Sjkimand 11891193267Sjkimthe compiler options used during generation. 11892138287Smarks 11893138287Smarks Previous Release: 11894138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11895138287Smarks Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11896138287Smarks Current Release: 11897138287Smarks Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11898138287Smarks Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 11899138287Smarks 11900138287Smarks 11901138287Smarks2) iASL Compiler/Disassembler: 11902138287Smarks 11903193267SjkimImplemented full support for Package objects within the Case() operator. 11904193267SjkimNote: The Break() operator is currently not supported within Case blocks 11905241973Sjkim(TermLists) as there is some question about backward compatibility with 11906241973SjkimACPI 11907193267Sjkim1.0 interpreters. 11908138287Smarks 11909167802Sjkim 11910253690SjkimFixed a problem where complex terms were not supported properly within 11911253690Sjkimthe 11912193267SjkimSwitch() operator. 11913138287Smarks 11914193267SjkimEliminated extraneous warning for compiler-emitted reserved names of the 11915193267Sjkimform "_T_x". (Used in Switch/Case operators.) 11916138287Smarks 11917193267SjkimEliminated optimization messages for "_T_x" objects and small constants 11918193267Sjkimwithin the DefinitionBlock operator. 11919138287Smarks 11920138287Smarks 11921138287Smarks---------------------------------------- 11922138287Smarks15 June 2004. Summary of changes for version 20040615: 11923138287Smarks 11924138287Smarks1) ACPI CA Core Subsystem: 11925138287Smarks 11926241973SjkimImplemented support for Buffer and String objects (as per ACPI 2.0) for 11927241973Sjkimthe 11928193267Sjkimfollowing ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11929193267SjkimLLessEqual. 11930138287Smarks 11931193267SjkimAll directory names in the entire source package are lower case, as they 11932193267Sjkimwere in earlier releases. 11933138287Smarks 11934241973SjkimImplemented "Disassemble" command in the AML debugger that will 11935241973Sjkimdisassemble 11936193267Sjkima single control method. 11937138287Smarks 11938193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 11939241973Sjkimshown below. These are the code and data sizes for the acpica.lib 11940241973Sjkimproduced 11941193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 11942193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 11943241973Sjkimdebug output trace mechanism and has a much larger code and data size. 11944241973SjkimNote 11945241973Sjkimthat these values will vary depending on the efficiency of the compiler 11946241973Sjkimand 11947193267Sjkimthe compiler options used during generation. 11948138287Smarks 11949138287Smarks Previous Release: 11950138287Smarks Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 11951138287Smarks Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 11952167802Sjkim 11953138287Smarks Current Release: 11954138287Smarks Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11955138287Smarks Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 11956138287Smarks 11957138287Smarks 11958138287Smarks2) iASL Compiler/Disassembler: 11959138287Smarks 11960241973SjkimImplemented support for Buffer and String objects (as per ACPI 2.0) for 11961241973Sjkimthe 11962193267Sjkimfollowing ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 11963193267SjkimLLessEqual. 11964138287Smarks 11965193267SjkimAll directory names in the entire source package are lower case, as they 11966193267Sjkimwere in earlier releases. 11967138287Smarks 11968193267SjkimFixed a fault when using the -g or -d<nofilename> options if the FADT was 11969193267Sjkimnot found. 11970138287Smarks 11971241973SjkimFixed an issue with the Windows version of the compiler where later 11972241973Sjkimversions 11973193267Sjkimof Windows place the FADT in the registry under the name "FADT" and not 11974193267Sjkim"FACP" as earlier versions did. This applies when using the -g or - 11975193267Sjkimd<nofilename> options. The compiler now looks for both strings as 11976193267Sjkimnecessary. 11977138287Smarks 11978241973SjkimFixed a problem with compiler namepath optimization where a namepath 11979241973Sjkimwithin 11980241973Sjkimthe Scope() operator could not be optimized if the namepath was a subpath 11981241973Sjkimof 11982193267Sjkimthe current scope path. 11983138287Smarks 11984138287Smarks---------------------------------------- 11985131440Smarks27 May 2004. Summary of changes for version 20040527: 11986131440Smarks 11987131440Smarks1) ACPI CA Core Subsystem: 11988131440Smarks 11989241973SjkimCompleted a new design and implementation for EBDA (Extended BIOS Data 11990241973SjkimArea) 11991241973Sjkimsupport in the RSDP scan code. The original code improperly scanned for 11992241973Sjkimthe 11993241973SjkimEBDA by simply scanning from memory location 0 to 0x400. The correct 11994241973Sjkimmethod 11995193267Sjkimis to first obtain the EBDA pointer from within the BIOS data area, then 11996253690Sjkimscan 1K of memory starting at the EBDA pointer. There appear to be few 11997253690Sjkimif 11998131440Smarksany machines that place the RSDP in the EBDA, however. 11999131440Smarks 12000193267SjkimIntegrated a fix for a possible fault during evaluation of BufferField 12001193267Sjkimarguments. Obsolete code that was causing the problem was removed. 12002131440Smarks 12003193267SjkimFound and fixed a problem in the Field Support Code where data could be 12004193267Sjkimcorrupted on a bit field read that starts on an aligned boundary but does 12005193267Sjkimnot end on an aligned boundary. Merged the read/write "datum length" 12006193267Sjkimcalculation code into a common procedure. 12007131440Smarks 12008131440SmarksRolled in a couple of changes to the FreeBSD-specific header. 12009131440Smarks 12010167802Sjkim 12011193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12012241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12013241973Sjkimproduced 12014193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12015193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12016241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12017241973SjkimNote 12018241973Sjkimthat these values will vary depending on the efficiency of the compiler 12019241973Sjkimand 12020193267Sjkimthe compiler options used during generation. 12021131440Smarks 12022131440Smarks Previous Release: 12023131440Smarks Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12024131440Smarks Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12025131440Smarks Current Release: 12026131440Smarks Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12027131440Smarks Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12028131440Smarks 12029131440Smarks 12030131440Smarks2) iASL Compiler/Disassembler: 12031131440Smarks 12032253690SjkimFixed a generation warning produced by some overly-verbose compilers for 12033253690Sjkima 12034193267Sjkim64-bit constant. 12035131440Smarks 12036131440Smarks---------------------------------------- 12037129684Snjl14 May 2004. Summary of changes for version 20040514: 12038129684Snjl 12039129684Snjl1) ACPI CA Core Subsystem: 12040129684Snjl 12041193267SjkimFixed a problem where hardware GPE enable bits sometimes not set properly 12042193267Sjkimduring and after GPE method execution. Result of 04/27 changes. 12043129684Snjl 12044129684SnjlRemoved extra "clear all GPEs" when sleeping/waking. 12045129684Snjl 12046193267SjkimRemoved AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12047241973SjkimAcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12048241973Sjkimto 12049193267Sjkimthe new AcpiEv* calls as appropriate. 12050129684Snjl 12051241973SjkimACPI_OS_NAME was removed from the OS-specific headers. The default name 12052241973Sjkimis 12053253690Sjkimnow "Microsoft Windows NT" for maximum compatibility. However this can 12054253690Sjkimbe 12055193267Sjkimchanged by modifying the acconfig.h file. 12056129684Snjl 12057193267SjkimAllow a single invocation of AcpiInstallNotifyHandler for a handler that 12058193267Sjkimtraps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12059129684Snjl 12060193267SjkimRun _INI methods on ThermalZone objects. This is against the ACPI 12061241973Sjkimspecification, but there is apparently ASL code in the field that has 12062241973Sjkimthese 12063193267Sjkim_INI methods, and apparently "other" AML interpreters execute them. 12064129684Snjl 12065193267SjkimPerformed a full 16/32/64 bit lint that resulted in some small changes. 12066129684Snjl 12067193267SjkimAdded a sleep simulation command to the AML debugger to test sleep code. 12068129684Snjl 12069193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12070241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12071241973Sjkimproduced 12072193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12073193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12074241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12075241973SjkimNote 12076241973Sjkimthat these values will vary depending on the efficiency of the compiler 12077241973Sjkimand 12078193267Sjkimthe compiler options used during generation. 12079129684Snjl 12080129684Snjl Previous Release: 12081129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12082129684Snjl Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12083129684Snjl Current Release: 12084129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12085129684Snjl Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12086129684Snjl 12087129684Snjl---------------------------------------- 12088129684Snjl27 April 2004. Summary of changes for version 20040427: 12089129684Snjl 12090129684Snjl1) ACPI CA Core Subsystem: 12091129684Snjl 12092193267SjkimCompleted a major overhaul of the GPE handling within ACPI CA. There are 12093241973Sjkimnow three types of GPEs: wake-only, runtime-only, and combination 12094241973Sjkimwake/run. 12095193267SjkimThe only GPEs allowed to be combination wake/run are for button-style 12096241973Sjkimdevices such as a control-method power button, control-method sleep 12097241973Sjkimbutton, 12098241973Sjkimor a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12099241973Sjkimnot 12100193267Sjkimreferenced by any _PRW methods are marked for "runtime" and hardware 12101253690Sjkimenabled. Any GPE that is referenced by a _PRW method is marked for 12102253690Sjkim"wake" 12103193267Sjkim(and disabled at runtime). However, at sleep time, only those GPEs that 12104241973Sjkimhave been specifically enabled for wake via the AcpiEnableGpe interface 12105241973Sjkimwill 12106193267Sjkimactually be hardware enabled. 12107129684Snjl 12108241973SjkimA new external interface has been added, AcpiSetGpeType(), that is meant 12109241973Sjkimto 12110253690Sjkimbe used by device drivers to force a GPE to a particular type. It will 12111253690Sjkimbe 12112193267Sjkimespecially useful for the drivers for the button devices mentioned above. 12113129684Snjl 12114193267SjkimCompleted restructuring of the ACPI CA initialization sequence so that 12115241973Sjkimdefault operation region handlers are installed before GPEs are 12116241973Sjkiminitialized 12117253690Sjkimand the _PRW methods are executed. This will prevent errors when the 12118253690Sjkim_PRW 12119193267Sjkimmethods attempt to access system memory or I/O space. 12120129684Snjl 12121241973SjkimGPE enable/disable no longer reads the GPE enable register. We now keep 12122241973Sjkimthe 12123193267Sjkimenable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12124193267Sjkimthus no longer depend on the hardware to maintain these bits. 12125129684Snjl 12126193267SjkimAlways clear the wake status and fixed/GPE status bits before sleep, even 12127193267Sjkimfor state S5. 12128129684Snjl 12129193267SjkimImproved the AML debugger output for displaying the GPE blocks and their 12130193267Sjkimcurrent status. 12131129684Snjl 12132241973SjkimAdded new strings for the _OSI method, of the form "Windows 2001 SPx" 12133241973Sjkimwhere 12134193267Sjkimx = 0,1,2,3,4. 12135129684Snjl 12136253690SjkimFixed a problem where the physical address was incorrectly calculated 12137253690Sjkimwhen 12138241973Sjkimthe Load() operator was used to directly load from an Operation Region 12139241973Sjkim(vs. 12140241973Sjkimloading from a Field object.) Also added check for minimum table length 12141241973Sjkimfor 12142193267Sjkimthis case. 12143129684Snjl 12144193267SjkimFix for multiple mutex acquisition. Restore original thread SyncLevel on 12145193267Sjkimmutex release. 12146129684Snjl 12147193267SjkimAdded ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12148129684Snjlconsistency with the other fields returned. 12149129684Snjl 12150193267SjkimShrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12151193267Sjkimstructure for each GPE in the system, so the size of this structure is 12152193267Sjkimimportant. 12153129684Snjl 12154241973SjkimCPU stack requirement reduction: Cleaned up the method execution and 12155241973Sjkimobject 12156193267Sjkimevaluation paths so that now a parameter structure is passed, instead of 12157193267Sjkimcopying the various method parameters over and over again. 12158129684Snjl 12159193267SjkimIn evregion.c: Correctly exit and reenter the interpreter region if and 12160241973Sjkimonly if dispatching an operation region request to a user-installed 12161241973Sjkimhandler. 12162193267SjkimDo not exit/reenter when dispatching to a default handler (e.g., default 12163193267Sjkimsystem memory or I/O handlers) 12164129684Snjl 12165129684Snjl 12166253690SjkimNotes for updating drivers for the new GPE support. The following 12167253690Sjkimchanges 12168241973Sjkimmust be made to ACPI-related device drivers that are attached to one or 12169241973Sjkimmore 12170241973SjkimGPEs: (This information will be added to the ACPI CA Programmer 12171241973SjkimReference.) 12172129684Snjl 12173253690Sjkim1) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12174253690Sjkimmust 12175193267Sjkimexplicitly call AcpiEnableGpe. 12176193267Sjkim2) There is a new interface called AcpiSetGpeType. This should be called 12177193267Sjkimbefore enabling the GPE. Also, this interface will automatically disable 12178193267Sjkimthe GPE if it is currently enabled. 12179129684Snjl3) AcpiEnableGpe no longer supports a GPE type flag. 12180129684Snjl 12181129684SnjlSpecific drivers that must be changed: 12182129684Snjl1) EC driver: 12183193267Sjkim AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12184129684SnjlAeGpeHandler, NULL); 12185129684Snjl AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12186129684Snjl AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12187129684Snjl 12188129684Snjl2) Button Drivers (Power, Lid, Sleep): 12189129684SnjlRun _PRW method under parent device 12190129684SnjlIf _PRW exists: /* This is a control-method button */ 12191129684Snjl Extract GPE number and possibly GpeDevice 12192129684Snjl AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12193129684Snjl AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12194129684Snjl 12195241973SjkimFor all other devices that have _PRWs, we automatically set the GPE type 12196241973Sjkimto 12197253690SjkimACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12198253690SjkimThis 12199253690Sjkimmust be done on a selective basis, usually requiring some kind of user 12200253690Sjkimapp 12201193267Sjkimto allow the user to pick the wake devices. 12202129684Snjl 12203129684Snjl 12204193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12205241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12206241973Sjkimproduced 12207193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12208193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12209241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12210241973SjkimNote 12211241973Sjkimthat these values will vary depending on the efficiency of the compiler 12212241973Sjkimand 12213193267Sjkimthe compiler options used during generation. 12214129684Snjl 12215129684Snjl Previous Release: 12216129684Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12217129684Snjl Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12218129684Snjl Current Release: 12219167802Sjkim 12220129684Snjl Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12221129684Snjl Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12222129684Snjl 12223129684Snjl 12224129684Snjl 12225129684Snjl---------------------------------------- 12226128212Snjl02 April 2004. Summary of changes for version 20040402: 12227128212Snjl 12228128212Snjl1) ACPI CA Core Subsystem: 12229128212Snjl 12230193267SjkimFixed an interpreter problem where an indirect store through an ArgX 12231193267Sjkimparameter was incorrectly applying the "implicit conversion rules" during 12232241973Sjkimthe store. From the ACPI specification: "If the target is a method local 12233241973Sjkimor 12234193267Sjkimargument (LocalX or ArgX), no conversion is performed and the result is 12235193267Sjkimstored directly to the target". The new behavior is to disable implicit 12236193267Sjkimconversion during ALL stores to an ArgX. 12237128212Snjl 12238193267SjkimChanged the behavior of the _PRW method scan to ignore any and all errors 12239193267Sjkimreturned by a given _PRW. This prevents the scan from aborting from the 12240193267Sjkimfailure of any single _PRW. 12241128212Snjl 12242241973SjkimMoved the runtime configuration parameters from the global init procedure 12243241973Sjkimto 12244193267Sjkimstatic variables in acglobal.h. This will allow the host to override the 12245193267Sjkimdefault values easily. 12246128212Snjl 12247193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12248241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12249241973Sjkimproduced 12250193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12251193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12252241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12253241973SjkimNote 12254241973Sjkimthat these values will vary depending on the efficiency of the compiler 12255241973Sjkimand 12256193267Sjkimthe compiler options used during generation. 12257128212Snjl 12258128212Snjl Previous Release: 12259128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12260128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12261128212Snjl Current Release: 12262128212Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12263128212Snjl Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12264128212Snjl 12265128212Snjl 12266128212Snjl2) iASL Compiler/Disassembler: 12267128212Snjl 12268253690SjkimiASL now fully disassembles SSDTs. However, External() statements are 12269253690Sjkimnot 12270193267Sjkimgenerated automatically for unresolved symbols at this time. This is a 12271193267Sjkimplanned feature for future implementation. 12272128212Snjl 12273241973SjkimFixed a scoping problem in the disassembler that occurs when the type of 12274241973Sjkimthe 12275193267Sjkimtarget of a Scope() operator is overridden. This problem caused an 12276193267Sjkimincorrectly nested internal namespace to be constructed. 12277128212Snjl 12278241973SjkimAny warnings or errors that are emitted during disassembly are now 12279241973Sjkimcommented 12280253690Sjkimout automatically so that the resulting file can be recompiled without 12281253690Sjkimany 12282193267Sjkimhand editing. 12283128212Snjl 12284128212Snjl---------------------------------------- 12285128212Snjl26 March 2004. Summary of changes for version 20040326: 12286128212Snjl 12287128212Snjl1) ACPI CA Core Subsystem: 12288128212Snjl 12289193267SjkimImplemented support for "wake" GPEs via interaction between GPEs and the 12290193267Sjkim_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12291193267Sjkimidentified as a WAKE GPE and by default will no longer be enabled at 12292241973Sjkimruntime. Previously, we were blindly enabling all GPEs with a 12293241973Sjkimcorresponding 12294241973Sjkim_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12295241973SjkimWe 12296193267Sjkimbelieve this has been the cause of thousands of "spurious" GPEs on some 12297128212Snjlsystems. 12298128212Snjl 12299193267SjkimThis new GPE behavior is can be reverted to the original behavior (enable 12300193267SjkimALL GPEs at runtime) via a runtime flag. 12301128212Snjl 12302193267SjkimFixed a problem where aliased control methods could not access objects 12303193267Sjkimproperly. The proper scope within the namespace was not initialized 12304193267Sjkim(transferred to the target of the aliased method) before executing the 12305193267Sjkimtarget method. 12306128212Snjl 12307253690SjkimFixed a potential race condition on internal object deletion on the 12308253690Sjkimreturn 12309193267Sjkimobject in AcpiEvaluateObject. 12310128212Snjl 12311193267SjkimIntegrated a fix for resource descriptors where both _MEM and _MTP were 12312193267Sjkimbeing extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12313193267Sjkimwide, 0x0F instead of 0x03.) 12314128212Snjl 12315253690SjkimAdded a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12316253690Sjkimpreventing 12317241973Sjkima 12318193267Sjkimfault in some cases. 12319128212Snjl 12320128212SnjlUpdated Notify() values for debug statements in evmisc.c 12321128212Snjl 12322193267SjkimReturn proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12323128212Snjl 12324193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12325241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12326241973Sjkimproduced 12327193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12328193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12329241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12330241973SjkimNote 12331241973Sjkimthat these values will vary depending on the efficiency of the compiler 12332241973Sjkimand 12333193267Sjkimthe compiler options used during generation. 12334128212Snjl 12335128212Snjl Previous Release: 12336167802Sjkim 12337128212Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12338128212Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12339128212Snjl Current Release: 12340128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12341128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12342128212Snjl 12343128212Snjl---------------------------------------- 12344127175Snjl11 March 2004. Summary of changes for version 20040311: 12345127175Snjl 12346127175Snjl1) ACPI CA Core Subsystem: 12347127175Snjl 12348193267SjkimFixed a problem where errors occurring during the parse phase of control 12349193267Sjkimmethod execution did not abort cleanly. For example, objects created and 12350193267Sjkiminstalled in the namespace were not deleted. This caused all subsequent 12351193267Sjkiminvocations of the method to return the AE_ALREADY_EXISTS exception. 12352127175Snjl 12353241973SjkimImplemented a mechanism to force a control method to "Serialized" 12354241973Sjkimexecution 12355193267Sjkimif the method attempts to create namespace objects. (The root of the 12356193267SjkimAE_ALREADY_EXISTS problem.) 12357127175Snjl 12358193267SjkimImplemented support for the predefined _OSI "internal" control method. 12359253690SjkimInitial supported strings are "Linux", "Windows 2000", "Windows 2001", 12360253690Sjkimand 12361253690Sjkim"Windows 2001.1", and can be easily upgraded for new strings as 12362253690Sjkimnecessary. 12363193267SjkimThis feature will allow "other" operating systems to execute the fully 12364193267Sjkimtested, "Windows" code path through the ASL code 12365127175Snjl 12366193267SjkimGlobal Lock Support: Now allows multiple acquires and releases with any 12367241973Sjkiminternal thread. Removed concept of "owning thread" for this special 12368241973Sjkimmutex. 12369127175Snjl 12370241973SjkimFixed two functions that were inappropriately declaring large objects on 12371241973Sjkimthe 12372241973SjkimCPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12373241973Sjkimduring 12374193267Sjkimmethod execution considerably. 12375127175Snjl 12376193267SjkimFixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12377193267SjkimS4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12378127175Snjl 12379193267SjkimFixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12380193267Sjkimdefined on the machine. 12381127175Snjl 12382241973SjkimImplemented two runtime options: One to force all control method 12383241973Sjkimexecution 12384253690Sjkimto "Serialized" to mimic Windows behavior, another to disable _OSI 12385253690Sjkimsupport 12386193267Sjkimif it causes problems on a given machine. 12387127175Snjl 12388193267SjkimCode and Data Size: Current and previous core subsystem library sizes are 12389241973Sjkimshown below. These are the code and data sizes for the acpica.lib 12390241973Sjkimproduced 12391193267Sjkimby the Microsoft Visual C++ 6.0 compiler, and these values do not include 12392193267Sjkimany ACPI driver or OSPM code. The debug version of the code includes the 12393241973Sjkimdebug output trace mechanism and has a much larger code and data size. 12394241973SjkimNote 12395241973Sjkimthat these values will vary depending on the efficiency of the compiler 12396241973Sjkimand 12397193267Sjkimthe compiler options used during generation. 12398127175Snjl 12399127175Snjl Previous Release: 12400127175Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12401127175Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12402127175Snjl Current Release: 12403127175Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12404127175Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12405127175Snjl 12406127175Snjl2) iASL Compiler/Disassembler: 12407127175Snjl 12408193267SjkimFixed an array size problem for FreeBSD that would cause the compiler to 12409193267Sjkimfault. 12410127175Snjl 12411127175Snjl---------------------------------------- 12412126372Snjl20 February 2004. Summary of changes for version 20040220: 12413126372Snjl 12414167802Sjkim 12415126372Snjl1) ACPI CA Core Subsystem: 12416126372Snjl 12417193267SjkimImplemented execution of _SxD methods for Device objects in the 12418126372SnjlGetObjectInfo interface. 12419126372Snjl 12420126372SnjlFixed calls to _SST method to pass the correct arguments. 12421126372Snjl 12422126372SnjlAdded a call to _SST on wake to restore to "working" state. 12423126372Snjl 12424193267SjkimCheck for End-Of-Buffer failure case in the WalkResources interface. 12425126372Snjl 12426193267SjkimIntegrated fix for 64-bit alignment issue in acglobal.h by moving two 12427193267Sjkimstructures to the beginning of the file. 12428126372Snjl 12429126372SnjlAfter wake, clear GPE status register(s) before enabling GPEs. 12430126372Snjl 12431241973SjkimAfter wake, clear/enable power button. (Perhaps we should clear/enable 12432241973Sjkimall 12433193267Sjkimfixed events upon wake.) 12434126372Snjl 12435126372SnjlFixed a couple of possible memory leaks in the Namespace manager. 12436126372Snjl 12437126372SnjlIntegrated latest acnetbsd.h file. 12438126372Snjl 12439126372Snjl---------------------------------------- 12440126372Snjl11 February 2004. Summary of changes for version 20040211: 12441126372Snjl 12442167802Sjkim 12443126372Snjl1) ACPI CA Core Subsystem: 12444126372Snjl 12445193267SjkimCompleted investigation and implementation of the call-by-reference 12446193267Sjkimmechanism for control method arguments. 12447126372Snjl 12448193267SjkimFixed a problem where a store of an object into an indexed package could 12449193267Sjkimfail if the store occurs within a different method than the method that 12450193267Sjkimcreated the package. 12451126372Snjl 12452241973SjkimFixed a problem where the ToDecimal operator could return incorrect 12453241973Sjkimresults. 12454126372Snjl 12455241973SjkimFixed a problem where the CopyObject operator could fail on some of the 12456241973Sjkimmore 12457193267Sjkimobscure objects (e.g., Reference objects.) 12458126372Snjl 12459193267SjkimImproved the output of the Debug object to display buffer, package, and 12460193267Sjkimindex objects. 12461126372Snjl 12462253690SjkimFixed a problem where constructs of the form "RefOf (ArgX)" did not 12463253690Sjkimreturn 12464193267Sjkimthe expected result. 12465126372Snjl 12466193267SjkimAdded permanent ACPI_REPORT_ERROR macros for all instances of the 12467126372SnjlACPI_AML_INTERNAL exception. 12468126372Snjl 12469126372SnjlIntegrated latest version of acfreebsd.h 12470126372Snjl 12471126372Snjl---------------------------------------- 12472126372Snjl16 January 2004. Summary of changes for version 20040116: 12473126372Snjl 12474193267SjkimThe purpose of this release is primarily to update the copyright years in 12475193267Sjkimeach module, thus causing a huge number of diffs. There are a few small 12476193267Sjkimfunctional changes, however. 12477126372Snjl 12478126372Snjl1) ACPI CA Core Subsystem: 12479126372Snjl 12480253690SjkimImproved error messages when there is a problem finding one or more of 12481253690Sjkimthe 12482193267Sjkimrequired base ACPI tables 12483126372Snjl 12484126372SnjlReintroduced the definition of APIC_HEADER in actbl.h 12485126372Snjl 12486126372SnjlChanged definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 12487126372Snjl 12488126372SnjlRemoved extraneous reference to NewObj in dsmthdat.c 12489126372Snjl 12490126372Snjl2) iASL compiler 12491126372Snjl 12492241973SjkimFixed a problem introduced in December that disabled the correct 12493241973Sjkimdisassembly 12494193267Sjkimof Resource Templates 12495126372Snjl 12496126372Snjl 12497126372Snjl---------------------------------------- 12498126372Snjl03 December 2003. Summary of changes for version 20031203: 12499126372Snjl 12500126372Snjl1) ACPI CA Core Subsystem: 12501126372Snjl 12502126372SnjlChanged the initialization of Operation Regions during subsystem 12503126372Snjlinit to perform two entire walks of the ACPI namespace; The first 12504126372Snjlto initialize the regions themselves, the second to execute the 12505126372Snjl_REG methods. This fixed some interdependencies across _REG 12506126372Snjlmethods found on some machines. 12507126372Snjl 12508126372SnjlFixed a problem where a Store(Local0, Local1) could simply update 12509126372Snjlthe object reference count, and not create a new copy of the 12510126372Snjlobject if the Local1 is uninitialized. 12511126372Snjl 12512126372SnjlImplemented support for the _SST reserved method during sleep 12513126372Snjltransitions. 12514126372Snjl 12515126372SnjlImplemented support to clear the SLP_TYP and SLP_EN bits when 12516126372Snjlwaking up, this is apparently required by some machines. 12517126372Snjl 12518193267SjkimWhen sleeping, clear the wake status only if SleepState is not S5. 12519126372Snjl 12520126372SnjlFixed a problem in AcpiRsExtendedIrqResource() where an incorrect 12521126372Snjlpointer arithmetic advanced a string pointer too far. 12522126372Snjl 12523126372SnjlFixed a problem in AcpiTbGetTablePtr() where a garbage pointer 12524126372Snjlcould be returned if the requested table has not been loaded. 12525126372Snjl 12526193267SjkimWithin the support for IRQ resources, restructured the handling of 12527126372Snjlthe active and edge/level bits. 12528126372Snjl 12529126372SnjlFixed a few problems in AcpiPsxExecute() where memory could be 12530126372Snjlleaked under certain error conditions. 12531126372Snjl 12532126372SnjlImproved error messages for the cases where the ACPI mode could 12533126372Snjlnot be entered. 12534126372Snjl 12535126372SnjlCode and Data Size: Current and previous core subsystem library 12536126372Snjlsizes are shown below. These are the code and data sizes for the 12537126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12538126372Snjlthese values do not include any ACPI driver or OSPM code. The 12539126372Snjldebug version of the code includes the debug output trace 12540126372Snjlmechanism and has a much larger code and data size. Note that 12541193267Sjkimthese values will vary depending on the efficiency of the compiler 12542126372Snjland the compiler options used during generation. 12543126372Snjl 12544126372Snjl Previous Release (20031029): 12545126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12546126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12547126372Snjl Current Release: 12548126372Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12549126372Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12550126372Snjl 12551126372Snjl2) iASL Compiler/Disassembler: 12552126372Snjl 12553126372SnjlImplemented a fix for the iASL disassembler where a bad index was 12554126372Snjlgenerated. This was most noticeable on 64-bit platforms 12555126372Snjl 12556126372Snjl 12557126372Snjl---------------------------------------- 12558126372Snjl29 October 2003. Summary of changes for version 20031029: 12559126372Snjl 12560126372Snjl1) ACPI CA Core Subsystem: 12561126372Snjl 12562167802Sjkim 12563126372SnjlFixed a problem where a level-triggered GPE with an associated 12564126372Snjl_Lxx control method was incorrectly cleared twice. 12565126372Snjl 12566126372SnjlFixed a problem with the Field support code where an access can 12567126372Snjloccur beyond the end-of-region if the field is non-aligned but 12568126372Snjlextends to the very end of the parent region (resulted in an 12569126372SnjlAE_AML_REGION_LIMIT exception.) 12570126372Snjl 12571126372SnjlFixed a problem with ACPI Fixed Events where an RT Clock handler 12572193267Sjkimwould not get invoked on an RTC event. The RTC event bitmasks for 12573126372Snjlthe PM1 registers were not being initialized properly. 12574126372Snjl 12575126372SnjlImplemented support for executing _STA and _INI methods for 12576126372SnjlProcessor objects. Although this is currently not part of the 12577193267SjkimACPI specification, there is existing ASL code that depends on the 12578126372Snjlinit-time execution of these methods. 12579126372Snjl 12580126372SnjlImplemented and deployed a GetDescriptorName function to decode 12581126372Snjlthe various types of internal descriptors. Guards against null 12582126372Snjldescriptors during debug output also. 12583126372Snjl 12584126372SnjlImplemented and deployed a GetNodeName function to extract the 4- 12585193267Sjkimcharacter namespace node name. This function simplifies the debug 12586193267Sjkimand error output, as well as guarding against null pointers during 12587126372Snjloutput. 12588126372Snjl 12589126372SnjlImplemented and deployed the ACPI_FORMAT_UINT64 helper macro to 12590126372Snjlsimplify the debug and error output of 64-bit integers. This 12591126372Snjlmacro replaces the HIDWORD and LODWORD macros for dumping these 12592126372Snjlintegers. 12593126372Snjl 12594126372SnjlUpdated the implementation of the Stall() operator to only call 12595126372SnjlAcpiOsStall(), and also return an error if the operand is larger 12596126372Snjlthan 255. This preserves the required behavior of not 12597126372Snjlrelinquishing the processor, as would happen if AcpiOsSleep() was 12598126372Snjlcalled for "long stalls". 12599126372Snjl 12600126372SnjlConstructs of the form "Store(LocalX,LocalX)" where LocalX is not 12601126372Snjlinitialized are now treated as NOOPs. 12602126372Snjl 12603126372SnjlCleaned up a handful of warnings during 64-bit generation. 12604126372Snjl 12605126372SnjlFixed a reported error where and incorrect GPE number was passed 12606126372Snjlto the GPE dispatch handler. This value is only used for error 12607193267Sjkimoutput, however. Used this opportunity to clean up and streamline 12608126372Snjlthe GPE dispatch code. 12609126372Snjl 12610126372SnjlCode and Data Size: Current and previous core subsystem library 12611126372Snjlsizes are shown below. These are the code and data sizes for the 12612126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12613126372Snjlthese values do not include any ACPI driver or OSPM code. The 12614167802Sjkim 12615126372Snjldebug version of the code includes the debug output trace 12616126372Snjlmechanism and has a much larger code and data size. Note that 12617193267Sjkimthese values will vary depending on the efficiency of the compiler 12618126372Snjland the compiler options used during generation. 12619126372Snjl 12620126372Snjl Previous Release (20031002): 12621126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12622126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12623126372Snjl Current Release: 12624126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12625126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12626126372Snjl 12627126372Snjl 12628126372Snjl2) iASL Compiler/Disassembler: 12629126372Snjl 12630193267SjkimUpdated the iASL compiler to return an error if the operand to the 12631126372SnjlStall() operator is larger than 255. 12632126372Snjl 12633126372Snjl 12634126372Snjl---------------------------------------- 12635126372Snjl02 October 2003. Summary of changes for version 20031002: 12636126372Snjl 12637126372Snjl 12638126372Snjl1) ACPI CA Core Subsystem: 12639126372Snjl 12640126372SnjlFixed a problem with Index Fields where the index was not 12641126372Snjlincremented for fields that require multiple writes to the 12642126372Snjlindex/data registers (Fields that are wider than the data 12643126372Snjlregister.) 12644126372Snjl 12645126372SnjlFixed a problem with all Field objects where a write could go 12646126372Snjlbeyond the end-of-field if the field was larger than the access 12647193267Sjkimgranularity and therefore required multiple writes to complete the 12648126372Snjlrequest. An extra write beyond the end of the field could happen 12649126372Snjlinadvertently. 12650126372Snjl 12651126372SnjlFixed a problem with Index Fields where a BUFFER_OVERFLOW error 12652126372Snjlwould incorrectly be returned if the width of the Data Register 12653126372Snjlwas larger than the specified field access width. 12654126372Snjl 12655126372SnjlCompleted fixes for LoadTable() and Unload() and verified their 12656126372Snjloperation. Implemented full support for the "DdbHandle" object 12657126372Snjlthroughout the ACPI CA subsystem. 12658126372Snjl 12659126372SnjlImplemented full support for the MADT and ECDT tables in the ACPI 12660126372SnjlCA header files. Even though these tables are not directly 12661126372Snjlconsumed by ACPI CA, the header definitions are useful for ACPI 12662126372Snjldevice drivers. 12663126372Snjl 12664126372SnjlIntegrated resource descriptor fixes posted to the Linux ACPI 12665126372Snjllist. This included checks for minimum descriptor length, and 12666126372Snjlsupport for trailing NULL strings within descriptors that have 12667126372Snjloptional string elements. 12668126372Snjl 12669126372SnjlCode and Data Size: Current and previous core subsystem library 12670126372Snjlsizes are shown below. These are the code and data sizes for the 12671126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12672126372Snjlthese values do not include any ACPI driver or OSPM code. The 12673126372Snjldebug version of the code includes the debug output trace 12674126372Snjlmechanism and has a much larger code and data size. Note that 12675193267Sjkimthese values will vary depending on the efficiency of the compiler 12676126372Snjland the compiler options used during generation. 12677126372Snjl 12678126372Snjl Previous Release (20030918): 12679126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12680126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12681126372Snjl Current Release: 12682126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 12683126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 12684126372Snjl 12685126372Snjl 12686126372Snjl2) iASL Compiler: 12687126372Snjl 12688126372SnjlImplemented detection of non-ASCII characters within the input 12689126372Snjlsource ASL file. This catches attempts to compile binary (AML) 12690126372Snjlfiles early in the compile, with an informative error message. 12691126372Snjl 12692126372SnjlFixed a problem where the disassembler would fault if the output 12693193267Sjkimfilename could not be generated or if the output file could not be 12694126372Snjlopened. 12695126372Snjl 12696126372Snjl---------------------------------------- 12697126372Snjl18 September 2003. Summary of changes for version 20030918: 12698126372Snjl 12699126372Snjl 12700126372Snjl1) ACPI CA Core Subsystem: 12701126372Snjl 12702126372SnjlFound and fixed a longstanding problem with the late execution of 12703126372Snjlthe various deferred AML opcodes (such as Operation Regions, 12704126372SnjlBuffer Fields, Buffers, and Packages). If the name string 12705126372Snjlspecified for the name of the new object placed the object in a 12706126372Snjlscope other than the current scope, the initialization/execution 12707126372Snjlof the opcode failed. The solution to this problem was to 12708126372Snjlimplement a mechanism where the late execution of such opcodes 12709126372Snjldoes not attempt to lookup/create the name a second time in an 12710126372Snjlincorrect scope. This fixes the "region size computed 12711126372Snjlincorrectly" problem. 12712126372Snjl 12713193267SjkimFixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 12714126372SnjlGlobal Lock AE_BAD_PARAMETER error. 12715126372Snjl 12716126372SnjlFixed several 64-bit issues with prototypes, casting and data 12717126372Snjltypes. 12718126372Snjl 12719126372SnjlRemoved duplicate prototype from acdisasm.h 12720126372Snjl 12721126372SnjlFixed an issue involving EC Operation Region Detach (Shaohua Li) 12722126372Snjl 12723126372SnjlCode and Data Size: Current and previous core subsystem library 12724126372Snjlsizes are shown below. These are the code and data sizes for the 12725126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12726126372Snjlthese values do not include any ACPI driver or OSPM code. The 12727126372Snjldebug version of the code includes the debug output trace 12728126372Snjlmechanism and has a much larger code and data size. Note that 12729193267Sjkimthese values will vary depending on the efficiency of the compiler 12730126372Snjland the compiler options used during generation. 12731126372Snjl 12732126372Snjl Previous Release: 12733167802Sjkim 12734126372Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12735126372Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12736126372Snjl Current Release: 12737126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 12738126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 12739126372Snjl 12740126372Snjl 12741126372Snjl2) Linux: 12742126372Snjl 12743126372SnjlFixed the AcpiOsSleep implementation in osunixxf.c to pass the 12744126372Snjlcorrect sleep time in seconds. 12745126372Snjl 12746126372Snjl---------------------------------------- 12747126372Snjl14 July 2003. Summary of changes for version 20030619: 12748126372Snjl 12749126372Snjl1) ACPI CA Core Subsystem: 12750126372Snjl 12751126372SnjlParse SSDTs in order discovered, as opposed to reverse order 12752126372Snjl(Hrvoje Habjanic) 12753126372Snjl 12754126372SnjlFixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 12755126372SnjlKlausner, 12756126372Snjl Nate Lawson) 12757126372Snjl 12758126372Snjl 12759126372Snjl2) Linux: 12760126372Snjl 12761126372SnjlDynamically allocate SDT list (suggested by Andi Kleen) 12762126372Snjl 12763126372Snjlproc function return value cleanups (Andi Kleen) 12764126372Snjl 12765126372SnjlCorrectly handle NMI watchdog during long stalls (Andrew Morton) 12766126372Snjl 12767126372SnjlMake it so acpismp=force works (reported by Andrew Morton) 12768126372Snjl 12769126372Snjl 12770126372Snjl---------------------------------------- 12771117521Snjl19 June 2003. Summary of changes for version 20030619: 12772117521Snjl 12773117521Snjl1) ACPI CA Core Subsystem: 12774117521Snjl 12775193267SjkimFix To/FromBCD, eliminating the need for an arch-specific #define. 12776117521Snjl 12777117521SnjlDo not acquire a semaphore in the S5 shutdown path. 12778117521Snjl 12779117521SnjlFix ex_digits_needed for 0. (Takayoshi Kochi) 12780117521Snjl 12781117521SnjlFix sleep/stall code reversal. (Andi Kleen) 12782117521Snjl 12783117521SnjlRevert a change having to do with control method calling 12784117521Snjlsemantics. 12785117521Snjl 12786117521Snjl2) Linux: 12787117521Snjl 12788117521Snjlacpiphp update (Takayoshi Kochi) 12789117521Snjl 12790117521SnjlExport acpi_disabled for sonypi (Stelian Pop) 12791117521Snjl 12792117521SnjlMention acpismp=force in config help 12793117521Snjl 12794117521SnjlRe-add acpitable.c and acpismp=force. This improves backwards 12795167802Sjkim 12796193267Sjkimcompatibility and also cleans up the code to a significant degree. 12797117521Snjl 12798117521SnjlAdd ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 12799117521Snjl 12800117521Snjl---------------------------------------- 12801117521Snjl22 May 2003. Summary of changes for version 20030522: 12802117521Snjl 12803117521Snjl1) ACPI CA Core Subsystem: 12804117521Snjl 12805117521SnjlFound and fixed a reported problem where an AE_NOT_FOUND error 12806117521Snjloccurred occasionally during _BST evaluation. This turned out to 12807117521Snjlbe an Owner ID allocation issue where a called method did not get 12808193267Sjkima new ID assigned to it. Eventually, (after 64k calls), the Owner 12809193267SjkimID UINT16 would wraparound so that the ID would be the same as the 12810126372Snjlcaller's and the called method would delete the caller's 12811117521Snjlnamespace. 12812117521Snjl 12813117521SnjlImplemented extended error reporting for control methods that are 12814117521Snjlaborted due to a run-time exception. Output includes the exact 12815193267SjkimAML instruction that caused the method abort, a dump of the method 12816126372Snjllocals and arguments at the time of the abort, and a trace of all 12817126372Snjlnested control method calls. 12818117521Snjl 12819117521SnjlModified the interpreter to allow the creation of buffers of zero 12820117521Snjllength from the AML code. Implemented new code to ensure that no 12821117521Snjlattempt is made to actually allocate a memory buffer (of length 12822193267Sjkimzero) - instead, a simple buffer object with a NULL buffer pointer 12823126372Snjland length zero is created. A warning is no longer issued when 12824126372Snjlthe AML attempts to create a zero-length buffer. 12825117521Snjl 12826117521SnjlImplemented a workaround for the "leading asterisk issue" in 12827117521Snjl_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 12828117521Snjlasterisk is automatically removed if present in any HID, UID, or 12829117521SnjlCID strings. The iASL compiler will still flag this asterisk as 12830117521Snjlan error, however. 12831117521Snjl 12832193267SjkimImplemented full support for _CID methods that return a package of 12833193267Sjkimmultiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 12834126372Snjlnow additionally returns a device _CID list if present. This 12835126372Snjlrequired a change to the external interface in order to pass an 12836126372SnjlACPI_BUFFER object as a parameter since the _CID list is of 12837117521Snjlvariable length. 12838117521Snjl 12839117521SnjlFixed a problem with the new AE_SAME_HANDLER exception where 12840117521Snjlhandler initialization code did not know about this exception. 12841117521Snjl 12842117521SnjlCode and Data Size: Current and previous core subsystem library 12843117521Snjlsizes are shown below. These are the code and data sizes for the 12844117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12845117521Snjlthese values do not include any ACPI driver or OSPM code. The 12846117521Snjldebug version of the code includes the debug output trace 12847117521Snjlmechanism and has a much larger code and data size. Note that 12848193267Sjkimthese values will vary depending on the efficiency of the compiler 12849126372Snjland the compiler options used during generation. 12850117521Snjl 12851117521Snjl Previous Release (20030509): 12852117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12853117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12854117521Snjl Current Release: 12855117521Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 12856117521Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 12857117521Snjl 12858117521Snjl 12859117521Snjl2) Linux: 12860117521Snjl 12861117521SnjlFixed a bug in which we would reinitialize the ACPI interrupt 12862193267Sjkimafter it was already working, thus disabling all ACPI and the IRQs 12863126372Snjlfor any other device sharing the interrupt. (Thanks to Stian 12864117521SnjlJordet) 12865117521Snjl 12866117521SnjlToshiba driver update (John Belmonte) 12867117521Snjl 12868117521SnjlReturn only 0 or 1 for our interrupt handler status (Andrew 12869117521SnjlMorton) 12870117521Snjl 12871117521Snjl 12872117521Snjl3) iASL Compiler: 12873117521Snjl 12874117521SnjlFixed a reported problem where multiple (nested) ElseIf() 12875117521Snjlstatements were not handled correctly by the compiler, resulting 12876117521Snjlin incorrect warnings and incorrect AML code. This was a problem 12877117521Snjlin both the ASL parser and the code generator. 12878117521Snjl 12879117521Snjl 12880117521Snjl4) Documentation: 12881117521Snjl 12882193267SjkimAdded changes to existing interfaces, new exception codes, and new 12883126372Snjltext concerning reference count object management versus garbage 12884126372Snjlcollection. 12885117521Snjl 12886117521Snjl---------------------------------------- 12887117521Snjl09 May 2003. Summary of changes for version 20030509. 12888117521Snjl 12889117521Snjl 12890117521Snjl1) ACPI CA Core Subsystem: 12891117521Snjl 12892117521SnjlChanged the subsystem initialization sequence to hold off 12893193267Sjkiminstallation of address space handlers until the hardware has been 12894193267Sjkiminitialized and the system has entered ACPI mode. This is because 12895126372Snjlthe installation of space handlers can cause _REG methods to be 12896193267Sjkimrun. Previously, the _REG methods could potentially be run before 12897126372SnjlACPI mode was enabled. 12898117521Snjl 12899193267SjkimFixed some memory leak issues related to address space handler and 12900126372Snjlnotify handler installation. There were some problems with the 12901126372Snjlreference count mechanism caused by the fact that the handler 12902117521Snjlobjects are shared across several namespace objects. 12903117521Snjl 12904117521SnjlFixed a reported problem where reference counts within the 12905117521Snjlnamespace were not properly updated when named objects created by 12906117521Snjlmethod execution were deleted. 12907117521Snjl 12908117521SnjlFixed a reported problem where multiple SSDTs caused a deletion 12909117521Snjlissue during subsystem termination. Restructured the table data 12910117521Snjlstructures to simplify the linked lists and the related code. 12911117521Snjl 12912117521SnjlFixed a problem where the table ID associated with secondary 12913193267Sjkimtables (SSDTs) was not being propagated into the namespace objects 12914126372Snjlcreated by those tables. This would only present a problem for 12915126372Snjltables that are unloaded at run-time, however. 12916117521Snjl 12917117521SnjlUpdated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 12918117521Snjltype as the length parameter (instead of UINT32). 12919117521Snjl 12920117521SnjlSolved a long-standing problem where an ALREADY_EXISTS error 12921117521Snjlappears on various systems. This problem could happen when there 12922117521Snjlare multiple PCI_Config operation regions under a single PCI root 12923117521Snjlbus. This doesn't happen very frequently, but there are some 12924117521Snjlsystems that do this in the ASL. 12925117521Snjl 12926117521SnjlFixed a reported problem where the internal DeleteNode function 12927117521Snjlwas incorrectly handling the case where a namespace node was the 12928117521Snjlfirst in the parent's child list, and had additional peers (not 12929117521Snjlthe only child, but first in the list of children.) 12930117521Snjl 12931193267SjkimCode and Data Size: Current core subsystem library sizes are shown 12932126372Snjlbelow. These are the code and data sizes for the acpica.lib 12933126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 12934126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 12935126372Snjlversion of the code includes the debug output trace mechanism and 12936193267Sjkimhas a much larger code and data size. Note that these values will 12937126372Snjlvary depending on the efficiency of the compiler and the compiler 12938126372Snjloptions used during generation. 12939117521Snjl 12940117521Snjl Previous Release 12941117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 12942117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 12943117521Snjl Current Release: 12944117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 12945117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 12946117521Snjl 12947117521Snjl 12948117521Snjl2) Linux: 12949117521Snjl 12950117521SnjlAllow ":" in OS override string (Ducrot Bruno) 12951117521Snjl 12952117521SnjlKobject fix (Greg KH) 12953117521Snjl 12954117521Snjl 12955117521Snjl3 iASL Compiler/Disassembler: 12956117521Snjl 12957117521SnjlFixed a problem in the generation of the C source code files (AML 12958117521Snjlis emitted in C source statements for BIOS inclusion) where the 12959193267SjkimAscii dump that appears within a C comment at the end of each line 12960126372Snjlcould cause a compile time error if the AML sequence happens to 12961126372Snjlhave an open comment or close comment sequence embedded. 12962117521Snjl 12963117521Snjl 12964117521Snjl---------------------------------------- 12965117521Snjl24 April 2003. Summary of changes for version 20030424. 12966117521Snjl 12967117521Snjl 12968117521Snjl1) ACPI CA Core Subsystem: 12969117521Snjl 12970117521SnjlSupport for big-endian systems has been implemented. Most of the 12971193267Sjkimsupport has been invisibly added behind big-endian versions of the 12972126372SnjlACPI_MOVE_* macros. 12973117521Snjl 12974117521SnjlFixed a problem in AcpiHwDisableGpeBlock() and 12975117521SnjlAcpiHwClearGpeBlock() where an incorrect offset was passed to the 12976117521Snjllow level hardware write routine. The offset parameter was 12977193267Sjkimactually eliminated from the low level read/write routines because 12978126372Snjlthey had become obsolete. 12979117521Snjl 12980117521SnjlFixed a problem where a handler object was deleted twice during 12981117521Snjlthe removal of a fixed event handler. 12982117521Snjl 12983117521Snjl 12984117521Snjl2) Linux: 12985117521Snjl 12986117521SnjlA fix for SMP systems with link devices was contributed by 12987167802Sjkim 12988117521SnjlCompaq's Dan Zink. 12989117521Snjl 12990117521Snjl(2.5) Return whether we handled the interrupt in our IRQ handler. 12991193267Sjkim(Linux ISRs no longer return void, so we can propagate the handler 12992126372Snjlreturn value from the ACPI CA core back to the OS.) 12993117521Snjl 12994117521Snjl 12995167802Sjkim 12996117521Snjl3) Documentation: 12997117521Snjl 12998117521SnjlThe ACPI CA Programmer Reference has been updated to reflect new 12999117521Snjlinterfaces and changes to existing interfaces. 13000117521Snjl 13001117521Snjl---------------------------------------- 13002117521Snjl28 March 2003. Summary of changes for version 20030328. 13003117521Snjl 13004117521Snjl1) ACPI CA Core Subsystem: 13005117521Snjl 13006117521SnjlThe GPE Block Device support has been completed. New interfaces 13007117521Snjlare AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13008117521Snjlinterfaces (enable, disable, clear, getstatus) have been split 13009117521Snjlinto separate interfaces for Fixed Events and General Purpose 13010117521SnjlEvents (GPEs) in order to support GPE Block Devices properly. 13011117521Snjl 13012117521SnjlFixed a problem where the error message "Failed to acquire 13013117521Snjlsemaphore" would appear during operations on the embedded 13014117521Snjlcontroller (EC). 13015117521Snjl 13016193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13017126372Snjlbelow. These are the code and data sizes for the acpica.lib 13018126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13019126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13020126372Snjlversion of the code includes the debug output trace mechanism and 13021193267Sjkimhas a much larger code and data size. Note that these values will 13022126372Snjlvary depending on the efficiency of the compiler and the compiler 13023126372Snjloptions used during generation. 13024117521Snjl 13025117521Snjl Previous Release 13026117521Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13027117521Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13028117521Snjl Current Release: 13029117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13030117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13031117521Snjl 13032117521Snjl 13033117521Snjl---------------------------------------- 13034114237Snjl28 February 2003. Summary of changes for version 20030228. 13035114237Snjl 13036114237Snjl 13037114237Snjl1) ACPI CA Core Subsystem: 13038114237Snjl 13039114237SnjlThe GPE handling and dispatch code has been completely overhauled 13040114237Snjlin preparation for support of GPE Block Devices (ID ACPI0006). 13041114237SnjlThis affects internal data structures and code only; there should 13042114237Snjlbe no differences visible externally. One new file has been 13043114237Snjladded, evgpeblk.c 13044114237Snjl 13045114237SnjlThe FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13046114237Snjlfields that are used to determine the GPE block lengths. The 13047114237SnjlREGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13048193267Sjkimstructures are ignored. This is per the ACPI specification but it 13049126372Snjlisn't very clear. The full 256 Block 0/1 GPEs are now supported 13050193267Sjkim(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13051114237Snjl 13052114237SnjlIn the SCI interrupt handler, removed the read of the PM1_CONTROL 13053114237Snjlregister to look at the SCI_EN bit. On some machines, this read 13054114237Snjlcauses an SMI event and greatly slows down SCI events. (This may 13055114237Snjlin fact be the cause of slow battery status response on some 13056114237Snjlsystems.) 13057114237Snjl 13058193267SjkimFixed a problem where a store of a NULL string to a package object 13059126372Snjlcould cause the premature deletion of the object. This was seen 13060126372Snjlduring execution of the battery _BIF method on some systems, 13061126372Snjlresulting in no battery data being returned. 13062114237Snjl 13063114237SnjlAdded AcpiWalkResources interface to simplify parsing of resource 13064114237Snjllists. 13065114237Snjl 13066193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13067126372Snjlbelow. These are the code and data sizes for the acpica.lib 13068126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13069126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13070126372Snjlversion of the code includes the debug output trace mechanism and 13071193267Sjkimhas a much larger code and data size. Note that these values will 13072126372Snjlvary depending on the efficiency of the compiler and the compiler 13073126372Snjloptions used during generation. 13074114237Snjl 13075114237Snjl Previous Release 13076114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13077114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13078114237Snjl Current Release: 13079114237Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13080114237Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13081114237Snjl 13082114237Snjl 13083114237Snjl2) Linux 13084114237Snjl 13085114237SnjlS3 fixes (Ole Rohne) 13086114237Snjl 13087114237SnjlUpdate ACPI PHP driver with to use new acpi_walk_resource API 13088114237Snjl(Bjorn Helgaas) 13089114237Snjl 13090114237SnjlAdd S4BIOS support (Pavel Machek) 13091114237Snjl 13092114237SnjlMap in entire table before performing checksum (John Stultz) 13093114237Snjl 13094193267SjkimExpand the mem= cmdline to allow the specification of reserved and 13095126372SnjlACPI DATA blocks (Pavel Machek) 13096114237Snjl 13097114237SnjlNever use ACPI on VISWS 13098114237Snjl 13099114237SnjlFix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13100114237Snjl 13101114237SnjlRevert a change that allowed P_BLK lengths to be 4 or 5. This is 13102114237Snjlcausing us to think that some systems support C2 when they really 13103114237Snjldon't. 13104114237Snjl 13105114237SnjlDo not count processor objects for non-present CPUs (Thanks to 13106114237SnjlDominik Brodowski) 13107114237Snjl 13108114237Snjl 13109114237Snjl3) iASL Compiler: 13110114237Snjl 13111114237SnjlFixed a problem where ASL include files could not be found and 13112114237Snjlopened. 13113114237Snjl 13114114237SnjlAdded support for the _PDC reserved name. 13115114237Snjl 13116114237Snjl 13117117521Snjl---------------------------------------- 13118114237Snjl22 January 2003. Summary of changes for version 20030122. 13119114237Snjl 13120114237Snjl 13121114237Snjl1) ACPI CA Core Subsystem: 13122114237Snjl 13123114237SnjlAdded a check for constructs of the form: Store (Local0, Local0) 13124114237Snjlwhere Local0 is not initialized. Apparently, some BIOS 13125193267Sjkimprogrammers believe that this is a NOOP. Since this store doesn't 13126126372Snjldo anything anyway, the new prototype behavior will ignore this 13127126372Snjlerror. This is a case where we can relax the strict checking in 13128126372Snjlthe interpreter in the name of compatibility. 13129114237Snjl 13130114237Snjl 13131114237Snjl2) Linux 13132114237Snjl 13133114237SnjlThe AcpiSrc Source Conversion Utility has been released with the 13134114237SnjlLinux package for the first time. This is the utility that is 13135193267Sjkimused to convert the ACPI CA base source code to the Linux version. 13136114237Snjl 13137114237Snjl(Both) Handle P_BLK lengths shorter than 6 more gracefully 13138114237Snjl 13139114237Snjl(Both) Move more headers to include/acpi, and delete an unused 13140114237Snjlheader. 13141114237Snjl 13142114237Snjl(Both) Move drivers/acpi/include directory to include/acpi 13143114237Snjl 13144114237Snjl(Both) Boot functions don't use cmdline, so don't pass it around 13145114237Snjl 13146114237Snjl(Both) Remove include of unused header (Adrian Bunk) 13147114237Snjl 13148114237Snjl(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13149114237Snjlthe 13150193267Sjkimformer now also includes the latter, acpiphp.h only needs the one, 13151126372Snjlnow. 13152114237Snjl 13153193267Sjkim(2.5) Make it possible to select method of bios restoring after S3 13154114237Snjlresume. [=> no more ugly ifdefs] (Pavel Machek) 13155114237Snjl 13156114237Snjl(2.5) Make proc write interfaces work (Pavel Machek) 13157114237Snjl 13158114237Snjl(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13159114237Snjl 13160114237Snjl(2.5) Break out ACPI Perf code into its own module, under cpufreq 13161114237Snjl(Dominik Brodowski) 13162114237Snjl 13163114237Snjl(2.4) S4BIOS support (Ducrot Bruno) 13164114237Snjl 13165114237Snjl(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13166114237SnjlVisinoni) 13167114237Snjl 13168114237Snjl 13169114237Snjl3) iASL Compiler: 13170114237Snjl 13171114237SnjlAdded support to disassemble SSDT and PSDTs. 13172114237Snjl 13173114237SnjlImplemented support to obtain SSDTs from the Windows registry if 13174114237Snjlavailable. 13175114237Snjl 13176114237Snjl 13177102550Siwasaki---------------------------------------- 13178114237Snjl09 January 2003. Summary of changes for version 20030109. 13179114237Snjl 13180114237Snjl1) ACPI CA Core Subsystem: 13181114237Snjl 13182114237SnjlChanged the behavior of the internal Buffer-to-String conversion 13183193267Sjkimfunction. The current ACPI specification states that the contents 13184126372Snjlof the buffer are "converted to a string of two-character 13185126372Snjlhexadecimal numbers, each separated by a space". Unfortunately, 13186193267Sjkimthis definition is not backwards compatible with existing ACPI 1.0 13187193267Sjkimimplementations (although the behavior was not defined in the ACPI 13188126372Snjl1.0 specification). The new behavior simply copies data from the 13189193267Sjkimbuffer to the string until a null character is found or the end of 13190126372Snjlthe buffer is reached. The new String object is always null 13191126372Snjlterminated. This problem was seen during the generation of _BIF 13192126372Snjlbattery data where incorrect strings were returned for battery 13193126372Snjltype, etc. This will also require an errata to the ACPI 13194126372Snjlspecification. 13195114237Snjl 13196114237SnjlRenamed all instances of NATIVE_UINT and NATIVE_INT to 13197114237SnjlACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13198114237Snjl 13199114237SnjlCopyright in all module headers (both Linux and non-Linux) has be 13200114237Snjlupdated to 2003. 13201114237Snjl 13202193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13203126372Snjlbelow. These are the code and data sizes for the acpica.lib 13204126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13205126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13206126372Snjlversion of the code includes the debug output trace mechanism and 13207193267Sjkimhas a much larger code and data size. Note that these values will 13208126372Snjlvary depending on the efficiency of the compiler and the compiler 13209126372Snjloptions used during generation. 13210114237Snjl 13211114237Snjl Previous Release 13212114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13213114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13214114237Snjl Current Release: 13215114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13216114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13217114237Snjl 13218114237Snjl 13219114237Snjl2) Linux 13220114237Snjl 13221114237SnjlFixed an oops on module insertion/removal (Matthew Tippett) 13222114237Snjl 13223114237Snjl(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13224114237Snjl 13225114237Snjl(2.5) Replace pr_debug (Randy Dunlap) 13226114237Snjl 13227114237Snjl(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13228114237Snjl 13229114237Snjl(Both) Eliminate spawning of thread from timer callback, in favor 13230114237Snjlof schedule_work() 13231114237Snjl 13232114237Snjl(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13233114237Snjl 13234114237Snjl(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13235114237Snjl 13236114237Snjl(Both) Add missing statics to button.c (Pavel Machek) 13237114237Snjl 13238114237SnjlSeveral changes have been made to the source code translation 13239114237Snjlutility that generates the Linux Code in order to make the code 13240114237Snjlmore "Linux-like": 13241114237Snjl 13242114237SnjlAll typedefs on structs and unions have been removed in keeping 13243114237Snjlwith the Linux coding style. 13244114237Snjl 13245114237SnjlRemoved the non-Linux SourceSafe module revision number from each 13246114237Snjlmodule header. 13247114237Snjl 13248114237SnjlCompleted major overhaul of symbols to be lowercased for linux. 13249114237SnjlDoubled the number of symbols that are lowercased. 13250114237Snjl 13251114237SnjlFixed a problem where identifiers within procedure headers and 13252114237Snjlwithin quotes were not fully lower cased (they were left with a 13253114237Snjlstarting capital.) 13254114237Snjl 13255114237SnjlSome C macros whose only purpose is to allow the generation of 16- 13256114237Snjlbit code are now completely removed in the Linux code, increasing 13257114237Snjlreadability and maintainability. 13258114237Snjl 13259114237Snjl---------------------------------------- 13260114237Snjl 13261114237Snjl12 December 2002. Summary of changes for version 20021212. 13262114237Snjl 13263114237Snjl 13264114237Snjl1) ACPI CA Core Subsystem: 13265114237Snjl 13266114237SnjlFixed a problem where the creation of a zero-length AML Buffer 13267114237Snjlwould cause a fault. 13268114237Snjl 13269193267SjkimFixed a problem where a Buffer object that pointed to a static AML 13270126372Snjlbuffer (in an ACPI table) could inadvertently be deleted, causing 13271126372Snjlmemory corruption. 13272114237Snjl 13273114237SnjlFixed a problem where a user buffer (passed in to the external 13274114237SnjlACPI CA interfaces) could be overwritten if the buffer was too 13275114237Snjlsmall to complete the operation, causing memory corruption. 13276114237Snjl 13277114237SnjlFixed a problem in the Buffer-to-String conversion code where a 13278114237Snjlstring of length one was always returned, regardless of the size 13279114237Snjlof the input Buffer object. 13280114237Snjl 13281114237SnjlRemoved the NATIVE_CHAR data type across the entire source due to 13282114237Snjllack of need and lack of consistent use. 13283114237Snjl 13284193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13285126372Snjlbelow. These are the code and data sizes for the acpica.lib 13286126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13287126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13288126372Snjlversion of the code includes the debug output trace mechanism and 13289193267Sjkimhas a much larger code and data size. Note that these values will 13290126372Snjlvary depending on the efficiency of the compiler and the compiler 13291126372Snjloptions used during generation. 13292114237Snjl 13293114237Snjl Previous Release 13294114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13295114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13296114237Snjl Current Release: 13297114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13298114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13299114237Snjl 13300114237Snjl 13301114237Snjl---------------------------------------- 13302114237Snjl05 December 2002. Summary of changes for version 20021205. 13303114237Snjl 13304114237Snjl1) ACPI CA Core Subsystem: 13305114237Snjl 13306114237SnjlFixed a problem where a store to a String or Buffer object could 13307114237Snjlcause corruption of the DSDT if the object type being stored was 13308114237Snjlthe same as the target object type and the length of the object 13309114237Snjlbeing stored was equal to or smaller than the original (existing) 13310114237Snjltarget object. This was seen to cause corruption of battery _BIF 13311114237Snjlbuffers if the _BIF method modified the buffer on the fly. 13312114237Snjl 13313193267SjkimFixed a problem where an internal error was generated if a control 13314126372Snjlmethod invocation was used in an OperationRegion, Buffer, or 13315126372SnjlPackage declaration. This was caused by the deferred parsing of 13316126372Snjlthe control method and thus the deferred creation of the internal 13317126372Snjlmethod object. The solution to this problem was to create the 13318126372Snjlinternal method object at the moment the method is encountered in 13319126372Snjlthe first pass - so that subsequent references to the method will 13320126372Snjlable to obtain the required parameter count and thus properly 13321126372Snjlparse the method invocation. This problem presented itself as an 13322126372SnjlAE_AML_INTERNAL during the pass 1 parse phase during table load. 13323114237Snjl 13324114237SnjlFixed a problem where the internal String object copy routine did 13325193267Sjkimnot always allocate sufficient memory for the target String object 13326126372Snjland caused memory corruption. This problem was seen to cause 13327126372Snjl"Allocation already present in list!" errors as memory allocation 13328126372Snjlbecame corrupted. 13329114237Snjl 13330193267SjkimImplemented a new function for the evaluation of namespace objects 13331126372Snjlthat allows the specification of the allowable return object 13332126372Snjltypes. This simplifies a lot of code that checks for a return 13333126372Snjlobject of one or more specific objects returned from the 13334114237Snjlevaluation (such as _STA, etc.) This may become and external 13335114237Snjlfunction if it would be useful to ACPI-related drivers. 13336114237Snjl 13337114237SnjlCompleted another round of prefixing #defines with "ACPI_" for 13338114237Snjlclarity. 13339114237Snjl 13340114237SnjlCompleted additional code restructuring to allow more modular 13341114237Snjllinking for iASL compiler and AcpiExec. Several files were split 13342114237Snjlcreating new files. New files: nsparse.c dsinit.c evgpe.c 13343114237Snjl 13344114237SnjlImplemented an abort mechanism to terminate an executing control 13345193267Sjkimmethod via the AML debugger. This feature is useful for debugging 13346126372Snjlcontrol methods that depend (wait) for specific hardware 13347126372Snjlresponses. 13348114237Snjl 13349193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13350126372Snjlbelow. These are the code and data sizes for the acpica.lib 13351126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13352126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13353126372Snjlversion of the code includes the debug output trace mechanism and 13354193267Sjkimhas a much larger code and data size. Note that these values will 13355126372Snjlvary depending on the efficiency of the compiler and the compiler 13356126372Snjloptions used during generation. 13357114237Snjl 13358114237Snjl Previous Release 13359114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13360114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13361114237Snjl Current Release: 13362114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13363114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13364114237Snjl 13365114237Snjl 13366114237Snjl2) iASL Compiler/Disassembler 13367114237Snjl 13368114237SnjlFixed a compiler code generation problem for "Interrupt" Resource 13369114237SnjlDescriptors. If specified in the ASL, the optional "Resource 13370114237SnjlSource Index" and "Resource Source" fields were not inserted into 13371114237Snjlthe correct location within the AML resource descriptor, creating 13372114237Snjlan invalid descriptor. 13373114237Snjl 13374193267SjkimFixed a disassembler problem for "Interrupt" resource descriptors. 13375126372SnjlThe optional "Resource Source Index" and "Resource Source" fields 13376126372Snjlwere ignored. 13377114237Snjl 13378114237Snjl 13379114237Snjl---------------------------------------- 13380114237Snjl22 November 2002. Summary of changes for version 20021122. 13381114237Snjl 13382114237Snjl 13383114237Snjl1) ACPI CA Core Subsystem: 13384114237Snjl 13385114237SnjlFixed a reported problem where an object stored to a Method Local 13386114237Snjlor Arg was not copied to a new object during the store - the 13387114237Snjlobject pointer was simply copied to the Local/Arg. This caused 13388114237Snjlall subsequent operations on the Local/Arg to also affect the 13389114237Snjloriginal source of the store operation. 13390114237Snjl 13391114237SnjlFixed a problem where a store operation to a Method Local or Arg 13392114237Snjlwas not completed properly if the Local/Arg contained a reference 13393114237Snjl(from RefOf) to a named field. The general-purpose store-to- 13394114237Snjlnamespace-node code is now used so that this case is handled 13395114237Snjlautomatically. 13396114237Snjl 13397193267SjkimFixed a problem where the internal object copy routine would cause 13398126372Snjla protection fault if the object being copied was a Package and 13399126372Snjlcontained either 1) a NULL package element or 2) a nested sub- 13400114237Snjlpackage. 13401114237Snjl 13402114237SnjlFixed a problem with the GPE initialization that resulted from an 13403114237Snjlambiguity in the ACPI specification. One section of the 13404114237Snjlspecification states that both the address and length of the GPE 13405193267Sjkimblock must be zero if the block is not supported. Another section 13406126372Snjlimplies that only the address need be zero if the block is not 13407193267Sjkimsupported. The code has been changed so that both the address and 13408126372Snjlthe length must be non-zero to indicate a valid GPE block (i.e., 13409126372Snjlif either the address or the length is zero, the GPE block is 13410126372Snjlinvalid.) 13411114237Snjl 13412193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13413126372Snjlbelow. These are the code and data sizes for the acpica.lib 13414126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13415126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13416126372Snjlversion of the code includes the debug output trace mechanism and 13417193267Sjkimhas a much larger code and data size. Note that these values will 13418126372Snjlvary depending on the efficiency of the compiler and the compiler 13419126372Snjloptions used during generation. 13420114237Snjl 13421114237Snjl Previous Release 13422114237Snjl Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13423114237Snjl Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13424114237Snjl Current Release: 13425114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13426114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13427114237Snjl 13428114237Snjl 13429114237Snjl2) Linux 13430114237Snjl 13431114237SnjlCleaned up EC driver. Exported an external EC read/write 13432114237Snjlinterface. By going through this, other drivers (most notably 13433114237Snjlsonypi) will be able to serialize access to the EC. 13434114237Snjl 13435114237Snjl 13436114237Snjl3) iASL Compiler/Disassembler 13437114237Snjl 13438114237SnjlImplemented support to optionally generate include files for both 13439114237SnjlASM and C (the -i switch). This simplifies BIOS development by 13440114237Snjlautomatically creating include files that contain external 13441114237Snjldeclarations for the symbols that are created within the 13442167802Sjkim 13443114237Snjl(optionally generated) ASM and C AML source files. 13444114237Snjl 13445114237Snjl 13446114237Snjl---------------------------------------- 13447107325Siwasaki15 November 2002. Summary of changes for version 20021115. 13448104470Siwasaki 13449107325Siwasaki1) ACPI CA Core Subsystem: 13450107325Siwasaki 13451114237SnjlFixed a memory leak problem where an error during resolution of 13452167802Sjkim 13453114237Snjlmethod arguments during a method invocation from another method 13454114237Snjlfailed to cleanup properly by deleting all successfully resolved 13455114237Snjlargument objects. 13456107325Siwasaki 13457114237SnjlFixed a problem where the target of the Index() operator was not 13458114237Snjlcorrectly constructed if the source object was a package. This 13459114237Snjlproblem has not been detected because the use of a target operand 13460114237Snjlwith Index() is very rare. 13461107325Siwasaki 13462107325SiwasakiFixed a problem with the Index() operator where an attempt was 13463107325Siwasakimade to delete the operand objects twice. 13464107325Siwasaki 13465107325SiwasakiFixed a problem where an attempt was made to delete an operand 13466114237Snjltwice during execution of the CondRefOf() operator if the target 13467114237Snjldid not exist. 13468107325Siwasaki 13469114237SnjlImplemented the first of perhaps several internal create object 13470193267Sjkimfunctions that create and initialize a specific object type. This 13471126372Snjlconsolidates duplicated code wherever the object is created, thus 13472126372Snjlshrinking the size of the subsystem. 13473107325Siwasaki 13474114237SnjlImplemented improved debug/error messages for errors that occur 13475114237Snjlduring nested method invocations. All executing method pathnames 13476193267Sjkimare displayed (with the error) as the call stack is unwound - thus 13477126372Snjlsimplifying debug. 13478107325Siwasaki 13479107325SiwasakiFixed a problem introduced in the 10/02 release that caused 13480114237Snjlpremature deletion of a buffer object if a buffer was used as an 13481114237SnjlASL operand where an integer operand is required (Thus causing an 13482193267Sjkimimplicit object conversion from Buffer to Integer.) The change in 13483126372Snjlthe 10/02 release was attempting to fix a memory leak (albeit 13484114237Snjlincorrectly.) 13485107325Siwasaki 13486193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13487126372Snjlbelow. These are the code and data sizes for the acpica.lib 13488126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13489126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13490126372Snjlversion of the code includes the debug output trace mechanism and 13491193267Sjkimhas a much larger code and data size. Note that these values will 13492126372Snjlvary depending on the efficiency of the compiler and the compiler 13493126372Snjloptions used during generation. 13494107325Siwasaki 13495107325Siwasaki Previous Release 13496107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13497107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13498107325Siwasaki Current Release: 13499107325Siwasaki Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13500107325Siwasaki Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13501107325Siwasaki 13502107325Siwasaki 13503107325Siwasaki2) Linux 13504107325Siwasaki 13505114237SnjlChanged the implementation of the ACPI semaphores to use down() 13506114237Snjlinstead of down_interruptable(). It is important that the 13507114237Snjlexecution of ACPI control methods not be interrupted by signals. 13508114237SnjlMethods must run to completion, or the system may be left in an 13509114237Snjlunknown/unstable state. 13510107325Siwasaki 13511193267SjkimFixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 13512126372Snjl(Shawn Starr) 13513107325Siwasaki 13514107325Siwasaki 13515107325Siwasaki3) iASL Compiler/Disassembler 13516107325Siwasaki 13517107325Siwasaki 13518114237SnjlChanged the default location of output files. All output files 13519114237Snjlare now placed in the current directory by default instead of in 13520114237Snjlthe directory of the source file. This change may affect some 13521114237Snjlexisting makefiles, but it brings the behavior of the compiler in 13522114237Snjlline with other similar tools. The location of the output files 13523114237Snjlcan be overridden with the -p command line switch. 13524107325Siwasaki 13525114237Snjl 13526107325Siwasaki---------------------------------------- 13527107325Siwasaki11 November 2002. Summary of changes for version 20021111. 13528107325Siwasaki 13529107325Siwasaki 13530114237Snjl0) ACPI Specification 2.0B is released and is now available at: 13531114237Snjlhttp://www.acpi.info/index.html 13532107325Siwasaki 13533107325Siwasaki 13534107325Siwasaki1) ACPI CA Core Subsystem: 13535107325Siwasaki 13536107325SiwasakiImplemented support for the ACPI 2.0 SMBus Operation Regions. 13537114237SnjlThis includes the early detection and handoff of the request to 13538114237Snjlthe SMBus region handler (avoiding all of the complex field 13539107325Siwasakisupport code), and support for the bidirectional return packet 13540107325Siwasakifrom an SMBus write operation. This paves the way for the 13541107325Siwasakidevelopment of SMBus drivers in each host operating system. 13542107325Siwasaki 13543107325SiwasakiFixed a problem where the semaphore WAIT_FOREVER constant was 13544107325Siwasakidefined as 32 bits, but must be 16 bits according to the ACPI 13545107325Siwasakispecification. This had the side effect of causing ASL 13546107325SiwasakiMutex/Event timeouts even though the ASL code requested a wait 13547107325Siwasakiforever. Changed all internal references to the ACPI timeout 13548193267Sjkimparameter to 16 bits to prevent future problems. Changed the name 13549126372Snjlof WAIT_FOREVER to ACPI_WAIT_FOREVER. 13550107325Siwasaki 13551193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13552126372Snjlbelow. These are the code and data sizes for the acpica.lib 13553126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13554126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13555126372Snjlversion of the code includes the debug output trace mechanism and 13556193267Sjkimhas a much larger code and data size. Note that these values will 13557126372Snjlvary depending on the efficiency of the compiler and the compiler 13558126372Snjloptions used during generation. 13559107325Siwasaki 13560107325Siwasaki Previous Release 13561107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13562107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13563107325Siwasaki Current Release: 13564107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13565107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13566107325Siwasaki 13567107325Siwasaki 13568107325Siwasaki2) Linux 13569107325Siwasaki 13570107325SiwasakiModule loading/unloading fixes (John Cagle) 13571107325Siwasaki 13572107325Siwasaki 13573107325Siwasaki3) iASL Compiler/Disassembler 13574107325Siwasaki 13575107325SiwasakiAdded support for the SMBBlockProcessCall keyword (ACPI 2.0) 13576107325Siwasaki 13577107325SiwasakiImplemented support for the disassembly of all SMBus protocol 13578107325Siwasakikeywords (SMBQuick, SMBWord, etc.) 13579107325Siwasaki 13580107325Siwasaki---------------------------------------- 13581107325Siwasaki01 November 2002. Summary of changes for version 20021101. 13582107325Siwasaki 13583107325Siwasaki 13584107325Siwasaki1) ACPI CA Core Subsystem: 13585107325Siwasaki 13586193267SjkimFixed a problem where platforms that have a GPE1 block but no GPE0 13587126372Snjlblock were not handled correctly. This resulted in a "GPE 13588114237Snjloverlap" error message. GPE0 is no longer required. 13589107325Siwasaki 13590107325SiwasakiRemoved code added in the previous release that inserted nodes 13591114237Snjlinto the namespace in alphabetical order. This caused some side- 13592114237Snjleffects on various machines. The root cause of the problem is 13593114237Snjlstill under investigation since in theory, the internal ordering 13594114237Snjlof the namespace nodes should not matter. 13595107325Siwasaki 13596107325Siwasaki 13597114237SnjlEnhanced error reporting for the case where a named object is not 13598114237Snjlfound during control method execution. The full ACPI namepath 13599114237Snjl(name reference) of the object that was not found is displayed in 13600114237Snjlthis case. 13601107325Siwasaki 13602193267SjkimNote: as a result of the overhaul of the namespace object types in 13603126372Snjlthe previous release, the namespace nodes for the predefined 13604114237Snjlscopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 13605114237Snjlinstead of ACPI_TYPE_ANY. This simplifies the namespace 13606114237Snjlmanagement code but may affect code that walks the namespace tree 13607114237Snjllooking for specific object types. 13608114237Snjl 13609193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13610126372Snjlbelow. These are the code and data sizes for the acpica.lib 13611126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13612126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13613126372Snjlversion of the code includes the debug output trace mechanism and 13614193267Sjkimhas a much larger code and data size. Note that these values will 13615126372Snjlvary depending on the efficiency of the compiler and the compiler 13616126372Snjloptions used during generation. 13617107325Siwasaki 13618107325Siwasaki Previous Release 13619107325Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13620107325Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13621107325Siwasaki Current Release: 13622107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13623107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 13624107325Siwasaki 13625107325Siwasaki 13626107325Siwasaki2) Linux 13627107325Siwasaki 13628107325SiwasakiFixed a problem introduced in the previous release where the 13629193267SjkimProcessor and Thermal objects were not recognized and installed in 13630193267Sjkim/proc. This was related to the scope type change described above. 13631107325Siwasaki 13632107325Siwasaki 13633107325Siwasaki3) iASL Compiler/Disassembler 13634107325Siwasaki 13635114237SnjlImplemented the -g option to get all of the required ACPI tables 13636114237Snjlfrom the registry and save them to files (Windows version of the 13637193267Sjkimcompiler only.) The required tables are the FADT, FACS, and DSDT. 13638107325Siwasaki 13639114237SnjlAdded ACPI table checksum validation during table disassembly in 13640114237Snjlorder to catch corrupted tables. 13641107325Siwasaki 13642107325Siwasaki 13643107325Siwasaki---------------------------------------- 13644107325Siwasaki22 October 2002. Summary of changes for version 20021022. 13645107325Siwasaki 13646107325Siwasaki1) ACPI CA Core Subsystem: 13647107325Siwasaki 13648114237SnjlImplemented a restriction on the Scope operator that the target 13649114237Snjlmust already exist in the namespace at the time the operator is 13650114237Snjlencountered (during table load or method execution). In other 13651114237Snjlwords, forward references are not allowed and Scope() cannot 13652114237Snjlcreate a new object. This changes the previous behavior where the 13653193267Sjkiminterpreter would create the name if not found. This new behavior 13654126372Snjlcorrectly enables the search-to-root algorithm during namespace 13655126372Snjllookup of the target name. Because of this upsearch, this fixes 13656126372Snjlthe known Compaq _SB_.OKEC problem and makes both the AML 13657126372Snjlinterpreter and iASL compiler compatible with other ACPI 13658114237Snjlimplementations. 13659107325Siwasaki 13660114237SnjlCompleted a major overhaul of the internal ACPI object types for 13661114237Snjlthe ACPI Namespace and the associated operand objects. Many of 13662114237Snjlthese types had become obsolete with the introduction of the two- 13663114237Snjlpass namespace load. This cleanup simplifies the code and makes 13664114237Snjlthe entire namespace load mechanism much clearer and easier to 13665114237Snjlunderstand. 13666107325Siwasaki 13667114237SnjlImproved debug output for tracking scope opening/closing to help 13668114237Snjldiagnose scoping issues. The old scope name as well as the new 13669114237Snjlscope name are displayed. Also improved error messages for 13670114237Snjlproblems with ASL Mutex objects and error messages for GPE 13671114237Snjlproblems. 13672107325Siwasaki 13673107325SiwasakiCleaned up the namespace dump code, removed obsolete code. 13674107325Siwasaki 13675114237SnjlAll string output (for all namespace/object dumps) now uses the 13676193267Sjkimcommon ACPI string output procedure which handles escapes properly 13677126372Snjland does not emit non-printable characters. 13678107325Siwasaki 13679107325SiwasakiFixed some issues with constants in the 64-bit version of the 13680107325Siwasakilocal C library (utclib.c) 13681107325Siwasaki 13682107325Siwasaki 13683107325Siwasaki2) Linux 13684107325Siwasaki 13685107325SiwasakiEC Driver: No longer attempts to acquire the Global Lock at 13686107325Siwasakiinterrupt level. 13687107325Siwasaki 13688107325Siwasaki 13689107325Siwasaki3) iASL Compiler/Disassembler 13690107325Siwasaki 13691193267SjkimImplemented ACPI 2.0B grammar change that disallows all Type 1 and 13692126372Snjl2 opcodes outside of a control method. This means that the 13693114237Snjl"executable" operators (versus the "namespace" operators) cannot 13694193267Sjkimbe used at the table level; they can only be used within a control 13695126372Snjlmethod. 13696107325Siwasaki 13697107325SiwasakiImplemented the restriction on the Scope() operator where the 13698107325Siwasakitarget must already exist in the namespace at the time the 13699114237Snjloperator is encountered (during ASL compilation). In other words, 13700193267Sjkimforward references are not allowed and Scope() cannot create a new 13701126372Snjlobject. This makes the iASL compiler compatible with other ACPI 13702193267Sjkimimplementations and makes the Scope() implementation adhere to the 13703126372SnjlACPI specification. 13704107325Siwasaki 13705193267SjkimFixed a problem where namepath optimization for the Alias operator 13706193267Sjkimwas optimizing the wrong path (of the two namepaths.) This caused 13707126372Snjla "Missing alias link" error message. 13708107325Siwasaki 13709114237SnjlFixed a problem where an "unknown reserved name" warning could be 13710114237Snjlincorrectly generated for names like "_SB" when the trailing 13711114237Snjlunderscore is not used in the original ASL. 13712107325Siwasaki 13713107325SiwasakiFixed a problem where the reserved name check did not handle 13714114237SnjlNamePaths with multiple NameSegs correctly. The first nameseg of 13715114237Snjlthe NamePath was examined instead of the last NameSeg. 13716107325Siwasaki 13717107325Siwasaki 13718107325Siwasaki---------------------------------------- 13719107325Siwasaki 13720104470Siwasaki02 October 2002. Summary of changes for this release. 13721104470Siwasaki 13722104470Siwasaki 13723104470Siwasaki1) ACPI CA Core Subsystem version 20021002: 13724104470Siwasaki 13725104470SiwasakiFixed a problem where a store/copy of a string to an existing 13726193267Sjkimstring did not always set the string length properly in the String 13727126372Snjlobject. 13728104470Siwasaki 13729104470SiwasakiFixed a reported problem with the ToString operator where the 13730193267Sjkimbehavior was identical to the ToHexString operator instead of just 13731126372Snjlsimply converting a raw buffer to a string data type. 13732104470Siwasaki 13733104470SiwasakiFixed a problem where CopyObject and the other "explicit" 13734193267Sjkimconversion operators were not updating the internal namespace node 13735126372Snjltype as part of the store operation. 13736104470Siwasaki 13737104470SiwasakiFixed a memory leak during implicit source operand conversion 13738193267Sjkimwhere the original object was not deleted if it was converted to a 13739126372Snjlnew object of a different type. 13740104470Siwasaki 13741193267SjkimEnhanced error messages for all problems associated with namespace 13742193267Sjkimlookups. Common procedure generates and prints the lookup name as 13743126372Snjlwell as the formatted status. 13744104470Siwasaki 13745104470SiwasakiCompleted implementation of a new design for the Alias support 13746193267Sjkimwithin the namespace. The existing design did not handle the case 13747193267Sjkimwhere a new object was assigned to one of the two names due to the 13748193267Sjkimuse of an explicit conversion operator, resulting in the two names 13749126372Snjlpointing to two different objects. The new design simply points 13750126372Snjlthe Alias name to the original name node - not to the object. 13751193267SjkimThis results in a level of indirection that must be handled in the 13752126372Snjlname resolution mechanism. 13753104470Siwasaki 13754193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13755126372Snjlbelow. These are the code and data sizes for the acpica.lib 13756126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13757126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13758126372Snjlversion of the code includes the debug output trace mechanism and 13759193267Sjkimhas a larger code and data size. Note that these values will vary 13760126372Snjldepending on the efficiency of the compiler and the compiler 13761126372Snjloptions used during generation. 13762104470Siwasaki 13763104470Siwasaki Previous Release 13764104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13765104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13766104470Siwasaki Current Release: 13767104470Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 13768104470Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 13769104470Siwasaki 13770104470Siwasaki 13771104470Siwasaki2) Linux 13772104470Siwasaki 13773104470SiwasakiInitialize thermal driver's timer before it is used. (Knut 13774104470SiwasakiNeumann) 13775104470Siwasaki 13776104470SiwasakiAllow handling negative celsius values. (Kochi Takayoshi) 13777104470Siwasaki 13778114237SnjlFix thermal management and make trip points. R/W (Pavel Machek) 13779104470Siwasaki 13780104470SiwasakiFix /proc/acpi/sleep. (P. Christeas) 13781104470Siwasaki 13782104470SiwasakiIA64 fixes. (David Mosberger) 13783104470Siwasaki 13784104470SiwasakiFix reversed logic in blacklist code. (Sergio Monteiro Basto) 13785104470Siwasaki 13786104470SiwasakiReplace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 13787104470SiwasakiBrodowski) 13788104470Siwasaki 13789104470Siwasaki 13790104470Siwasaki3) iASL Compiler/Disassembler 13791104470Siwasaki 13792104470SiwasakiClarified some warning/error messages. 13793104470Siwasaki 13794104470Siwasaki 13795104470Siwasaki---------------------------------------- 13796104470Siwasaki18 September 2002. Summary of changes for this release. 13797104470Siwasaki 13798104470Siwasaki 13799104470Siwasaki1) ACPI CA Core Subsystem version 20020918: 13800104470Siwasaki 13801114237SnjlFixed a reported problem with reference chaining (via the Index() 13802193267Sjkimand RefOf() operators) in the ObjectType() and SizeOf() operators. 13803126372SnjlThe definition of these operators includes the dereferencing of 13804126372Snjlall chained references to return information on the base object. 13805104470Siwasaki 13806104470SiwasakiFixed a problem with stores to indexed package elements - the 13807104470Siwasakiexisting code would not complete the store if an "implicit 13808114237Snjlconversion" was not performed. In other words, if the existing 13809114237Snjlobject (package element) was to be replaced completely, the code 13810114237Snjldidn't handle this case. 13811104470Siwasaki 13812104470SiwasakiRelaxed typechecking on the ASL "Scope" operator to allow the 13813104470Siwasakitarget name to refer to an object of type Integer, String, or 13814104470SiwasakiBuffer, in addition to the scoping object types (Device, 13815104470Siwasakipredefined Scopes, Processor, PowerResource, and ThermalZone.) 13816114237SnjlThis allows existing AML code that has workarounds for a bug in 13817193267SjkimWindows to function properly. A warning is issued, however. This 13818126372Snjlaffects both the AML interpreter and the iASL compiler. Below is 13819126372Snjlan example of this type of ASL code: 13820104470Siwasaki 13821104470Siwasaki Name(DEB,0x00) 13822104470Siwasaki Scope(DEB) 13823104470Siwasaki { 13824104470Siwasaki 13825114237SnjlFixed some reported problems with 64-bit integer support in the 13826114237Snjllocal implementation of C library functions (clib.c) 13827104470Siwasaki 13828104470Siwasaki 13829104470Siwasaki2) Linux 13830104470Siwasaki 13831104470SiwasakiUse ACPI fix map region instead of IOAPIC region, since it is 13832104470Siwasakiundefined in non-SMP. 13833104470Siwasaki 13834114237SnjlEnsure that the SCI has the proper polarity and trigger, even on 13835114237Snjlsystems that do not have an interrupt override entry in the MADT. 13836104470Siwasaki 13837104470Siwasaki2.5 big driver reorganization (Pat Mochel) 13838104470Siwasaki 13839104470SiwasakiUse early table mapping code from acpitable.c (Andi Kleen) 13840104470Siwasaki 13841104470SiwasakiNew blacklist entries (Andi Kleen) 13842104470Siwasaki 13843114237SnjlBlacklist improvements. Split blacklist code out into a separate 13844114237Snjlfile. Move checking the blacklist to very early. Previously, we 13845114237Snjlwould use ACPI tables, and then halfway through init, check the 13846114237Snjlblacklist -- too late. Now, it's early enough to completely fall- 13847114237Snjlback to non-ACPI. 13848104470Siwasaki 13849104470Siwasaki 13850104470Siwasaki3) iASL Compiler/Disassembler version 20020918: 13851104470Siwasaki 13852114237SnjlFixed a problem where the typechecking code didn't know that an 13853114237Snjlalias could point to a method. In other words, aliases were not 13854114237Snjlbeing dereferenced during typechecking. 13855104470Siwasaki 13856104470Siwasaki 13857104470Siwasaki---------------------------------------- 13858104470Siwasaki29 August 2002. Summary of changes for this release. 13859104470Siwasaki 13860104470Siwasaki1) ACPI CA Core Subsystem Version 20020829: 13861104470Siwasaki 13862114237SnjlIf the target of a Scope() operator already exists, it must be an 13863114237Snjlobject type that actually opens a scope -- such as a Device, 13864193267SjkimMethod, Scope, etc. This is a fatal runtime error. Similar error 13865126372Snjlcheck has been added to the iASL compiler also. 13866104470Siwasaki 13867114237SnjlTightened up the namespace load to disallow multiple names in the 13868114237Snjlsame scope. This previously was allowed if both objects were of 13869114237Snjlthe same type. (i.e., a lookup was the same as entering a new 13870114237Snjlname). 13871104470Siwasaki 13872104470Siwasaki 13873104470Siwasaki2) Linux 13874104470Siwasaki 13875104470SiwasakiEnsure that the ACPI interrupt has the proper trigger and 13876104470Siwasakipolarity. 13877104470Siwasaki 13878104470Siwasakilocal_irq_disable is extraneous. (Matthew Wilcox) 13879104470Siwasaki 13880104470SiwasakiMake "acpi=off" actually do what it says, and not use the ACPI 13881104470Siwasakiinterpreter *or* the tables. 13882104470Siwasaki 13883193267SjkimAdded arch-neutral support for parsing SLIT and SRAT tables (Kochi 13884126372SnjlTakayoshi) 13885104470Siwasaki 13886104470Siwasaki 13887104470Siwasaki3) iASL Compiler/Disassembler Version 20020829: 13888104470Siwasaki 13889104470SiwasakiImplemented namepath optimization for name declarations. For 13890104470Siwasakiexample, a declaration like "Method (\_SB_.ABCD)" would get 13891104470Siwasakioptimized to "Method (ABCD)" if the declaration is within the 13892104470Siwasaki\_SB_ scope. This optimization is in addition to the named 13893104470Siwasakireference path optimization first released in the previous 13894114237Snjlversion. This would seem to complete all possible optimizations 13895114237Snjlfor namepaths within the ASL/AML. 13896104470Siwasaki 13897114237SnjlIf the target of a Scope() operator already exists, it must be an 13898114237Snjlobject type that actually opens a scope -- such as a Device, 13899114237SnjlMethod, Scope, etc. 13900104470Siwasaki 13901114237SnjlImplemented a check and warning for unreachable code in the same 13902114237Snjlblock below a Return() statement. 13903104470Siwasaki 13904114237SnjlFixed a problem where the listing file was not generated if the 13905114237Snjlcompiler aborted if the maximum error count was exceeded (200). 13906104470Siwasaki 13907193267SjkimFixed a problem where the typechecking of method return values was 13908126372Snjlbroken. This includes the check for a return value when the 13909114237Snjlmethod is invoked as a TermArg (a return value is expected.) 13910104470Siwasaki 13911104470SiwasakiFixed a reported problem where EOF conditions during a quoted 13912104470Siwasakistring or comment caused a fault. 13913104470Siwasaki 13914104470Siwasaki 13915104470Siwasaki---------------------------------------- 13916102550Siwasaki15 August 2002. Summary of changes for this release. 13917102550Siwasaki 13918102550Siwasaki1) ACPI CA Core Subsystem Version 20020815: 13919102550Siwasaki 13920114237SnjlFixed a reported problem where a Store to a method argument that 13921193267Sjkimcontains a reference did not perform the indirect store correctly. 13922126372SnjlThis problem was created during the conversion to the new 13923126372Snjlreference object model - the indirect store to a method argument 13924126372Snjlcode was not updated to reflect the new model. 13925102550Siwasaki 13926114237SnjlReworked the ACPI mode change code to better conform to ACPI 2.0, 13927193267Sjkimhandle corner cases, and improve code legibility (Kochi Takayoshi) 13928102550Siwasaki 13929102550SiwasakiFixed a problem with the pathname parsing for the carat (^) 13930114237Snjlprefix. The heavy use of the carat operator by the new namepath 13931193267Sjkimoptimization in the iASL compiler uncovered a problem with the AML 13932126372Snjlinterpreter handling of this prefix. In the case where one or 13933126372Snjlmore carats precede a single nameseg, the nameseg was treated as 13934126372Snjlstandalone and the search rule (to root) was inadvertently 13935114237Snjlapplied. This could cause both the iASL compiler and the 13936114237Snjlinterpreter to find the wrong object or to miss the error that 13937114237Snjlshould occur if the object does not exist at that exact pathname. 13938102550Siwasaki 13939114237SnjlFound and fixed the problem where the HP Pavilion DSDT would not 13940193267Sjkimload. This was a relatively minor tweak to the table loading code 13941126372Snjl(a problem caused by the unexpected encounter with a method 13942193267Sjkiminvocation not within a control method), but it does not solve the 13943126372Snjloverall issue of the execution of AML code at the table level. 13944126372SnjlThis investigation is still ongoing. 13945102550Siwasaki 13946193267SjkimCode and Data Size: Current core subsystem library sizes are shown 13947126372Snjlbelow. These are the code and data sizes for the acpica.lib 13948126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 13949126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 13950126372Snjlversion of the code includes the debug output trace mechanism and 13951193267Sjkimhas a larger code and data size. Note that these values will vary 13952126372Snjldepending on the efficiency of the compiler and the compiler 13953126372Snjloptions used during generation. 13954102550Siwasaki 13955102550Siwasaki Previous Release 13956104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 13957104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 13958102550Siwasaki Current Release: 13959104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 13960104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 13961102550Siwasaki 13962102550Siwasaki 13963102550Siwasaki2) Linux 13964102550Siwasaki 13965102550SiwasakiRemove redundant slab.h include (Brad Hards) 13966102550Siwasaki 13967102550SiwasakiFix several bugs in thermal.c (Herbert Nachtnebel) 13968102550Siwasaki 13969102550SiwasakiMake CONFIG_ACPI_BOOT work properly (Pavel Machek) 13970102550Siwasaki 13971104470SiwasakiChange acpi_system_suspend to use updated irq functions (Pavel 13972104470SiwasakiMachek) 13973102550Siwasaki 13974102550SiwasakiExport acpi_get_firmware_table (Matthew Wilcox) 13975102550Siwasaki 13976102550SiwasakiUse proper root proc entry for ACPI (Kochi Takayoshi) 13977102550Siwasaki 13978102550SiwasakiFix early-boot table parsing (Bjorn Helgaas) 13979102550Siwasaki 13980102550Siwasaki 13981102550Siwasaki3) iASL Compiler/Disassembler 13982102550Siwasaki 13983114237SnjlReworked the compiler options to make them more consistent and to 13984114237Snjluse two-letter options where appropriate. We were running out of 13985114237Snjlsensible letters. This may break some makefiles, so check the 13986114237Snjlcurrent options list by invoking the compiler with no parameters. 13987102550Siwasaki 13988102550SiwasakiCompleted the design and implementation of the ASL namepath 13989114237Snjloptimization option for the compiler. This option optimizes all 13990114237Snjlreferences to named objects to the shortest possible path. The 13991193267Sjkimfirst attempt tries to utilize a single nameseg (4 characters) and 13992126372Snjlthe "search-to-root" algorithm used by the interpreter. If that 13993126372Snjlcannot be used (because either the name is not in the search path 13994126372Snjlor there is a conflict with another object with the same name), 13995126372Snjlthe pathname is optimized using the carat prefix (usually a 13996126372Snjlshorter string than specifying the entire path from the root.) 13997102550Siwasaki 13998114237SnjlImplemented support to obtain the DSDT from the Windows registry 13999114237Snjl(when the disassembly option is specified with no input file). 14000114237SnjlAdded this code as the implementation for AcpiOsTableOverride in 14001114237Snjlthe Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14002114237Snjlutility) to scan memory for the DSDT to the AcpiOsTableOverride 14003114237Snjlfunction in the DOS OSL to make the disassembler truly OS 14004114237Snjlindependent. 14005102550Siwasaki 14006114237SnjlImplemented a new option to disassemble and compile in one step. 14007114237SnjlWhen used without an input filename, this option will grab the 14008193267SjkimDSDT from the local machine, disassemble it, and compile it in one 14009126372Snjlstep. 14010102550Siwasaki 14011114237SnjlAdded a warning message for invalid escapes (a backslash followed 14012114237Snjlby any character other than the allowable escapes). This catches 14013114237Snjlthe quoted string error "\_SB_" (which should be "\\_SB_" ). 14014167802Sjkim 14015193267SjkimAlso, there are numerous instances in the ACPI specification where 14016126372Snjlthis error occurs. 14017102550Siwasaki 14018104470SiwasakiAdded a compiler option to disable all optimizations. This is 14019114237Snjlbasically the "compatibility mode" because by using this option, 14020114237Snjlthe AML code will come out exactly the same as other ASL 14021114237Snjlcompilers. 14022102550Siwasaki 14023114237SnjlAdded error messages for incorrectly ordered dependent resource 14024114237Snjlfunctions. This includes: missing EndDependentFn macro at end of 14025114237Snjldependent resource list, nested dependent function macros (both 14026114237Snjlstart and end), and missing StartDependentFn macro. These are 14027114237Snjlcommon errors that should be caught at compile time. 14028102550Siwasaki 14029114237SnjlImplemented _OSI support for the disassembler and compiler. _OSI 14030114237Snjlmust be included in the namespace for proper disassembly (because 14031114237Snjlthe disassembler must know the number of arguments.) 14032102550Siwasaki 14033104470SiwasakiAdded an "optimization" message type that is optional (off by 14034114237Snjldefault). This message is used for all optimizations - including 14035193267Sjkimconstant folding, integer optimization, and namepath optimization. 14036102550Siwasaki 14037102550Siwasaki---------------------------------------- 14038102550Siwasaki25 July 2002. Summary of changes for this release. 14039102550Siwasaki 14040102550Siwasaki 14041102550Siwasaki1) ACPI CA Core Subsystem Version 20020725: 14042102550Siwasaki 14043114237SnjlThe AML Disassembler has been enhanced to produce compilable ASL 14044193267Sjkimcode and has been integrated into the iASL compiler (see below) as 14045126372Snjlwell as the single-step disassembly for the AML debugger and the 14046126372Snjldisassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14047126372Snjlresource templates and macros are fully supported. The 14048114237Snjldisassembler has been tested on over 30 different AML files, 14049114237Snjlproducing identical AML when the resulting disassembled ASL file 14050114237Snjlis recompiled with the same ASL compiler. 14051102550Siwasaki 14052114237SnjlModified the Resource Manager to allow zero interrupts and zero 14053114237Snjldma channels during the GetCurrentResources call. This was 14054114237Snjlcausing problems on some platforms. 14055102550Siwasaki 14056114237SnjlAdded the AcpiOsRedirectOutput interface to the OSL to simplify 14057114237Snjloutput redirection for the AcpiOsPrintf and AcpiOsVprintf 14058114237Snjlinterfaces. 14059102550Siwasaki 14060193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14061126372Snjlbelow. These are the code and data sizes for the acpica.lib 14062126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14063126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14064126372Snjlversion of the code includes the debug output trace mechanism and 14065193267Sjkimhas a larger code and data size. Note that these values will vary 14066126372Snjldepending on the efficiency of the compiler and the compiler 14067126372Snjloptions used during generation. 14068102550Siwasaki 14069102550Siwasaki Previous Release 14070104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14071104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14072102550Siwasaki Current Release: 14073104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14074104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14075102550Siwasaki 14076102550Siwasaki 14077102550Siwasaki2) Linux 14078102550Siwasaki 14079102550SiwasakiFixed a panic in the EC driver (Dominik Brodowski) 14080102550Siwasaki 14081114237SnjlImplemented checksum of the R/XSDT itself during Linux table scan 14082114237Snjl(Richard Schaal) 14083102550Siwasaki 14084102550Siwasaki 14085102550Siwasaki3) iASL compiler 14086102550Siwasaki 14087114237SnjlThe AML disassembler is integrated into the compiler. The "-d" 14088114237Snjloption invokes the disassembler to completely disassemble an 14089114237Snjlinput AML file, producing as output a text ASL file with the 14090114237Snjlextension ".dsl" (to avoid name collisions with existing .asl 14091114237Snjlsource files.) A future enhancement will allow the disassembler 14092114237Snjlto obtain the BIOS DSDT from the registry under Windows. 14093102550Siwasaki 14094102550SiwasakiFixed a problem with the VendorShort and VendorLong resource 14095102550Siwasakidescriptors where an invalid AML sequence was created. 14096102550Siwasaki 14097114237SnjlImplemented a fix for BufferData term in the ASL parser. It was 14098114237Snjlinadvertently defined twice, allowing invalid syntax to pass and 14099114237Snjlcausing reduction conflicts. 14100102550Siwasaki 14101104470SiwasakiFixed a problem where the Ones opcode could get converted to a 14102193267Sjkimvalue of zero if "Ones" was used where a byte, word or dword value 14103126372Snjlwas expected. The 64-bit value is now truncated to the correct 14104126372Snjlsize with the correct value. 14105102550Siwasaki 14106102550Siwasaki 14107167802Sjkim 14108102550Siwasaki---------------------------------------- 14109102550Siwasaki02 July 2002. Summary of changes for this release. 14110102550Siwasaki 14111102550Siwasaki 14112102550Siwasaki1) ACPI CA Core Subsystem Version 20020702: 14113102550Siwasaki 14114114237SnjlThe Table Manager code has been restructured to add several new 14115114237Snjlfeatures. Tables that are not required by the core subsystem 14116114237Snjl(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14117193267Sjkimvalidated in any way and are returned from AcpiGetFirmwareTable if 14118126372Snjlrequested. The AcpiOsTableOverride interface is now called for 14119126372Snjleach table that is loaded by the subsystem in order to allow the 14120126372Snjlhost to override any table it chooses. Previously, only the DSDT 14121126372Snjlcould be overridden. Added one new files, tbrsdt.c and 14122114237Snjltbgetall.c. 14123102550Siwasaki 14124193267SjkimFixed a problem with the conversion of internal package objects to 14125126372Snjlexternal objects (when a package is returned from a control 14126114237Snjlmethod.) The return buffer length was set to zero instead of the 14127114237Snjlproper length of the package object. 14128102550Siwasaki 14129104470SiwasakiFixed a reported problem with the use of the RefOf and DeRefOf 14130114237Snjloperators when passing reference arguments to control methods. A 14131114237Snjlnew type of Reference object is used internally for references 14132114237Snjlproduced by the RefOf operator. 14133102550Siwasaki 14134193267SjkimAdded additional error messages in the Resource Manager to explain 14135126372SnjlAE_BAD_DATA errors when they occur during resource parsing. 14136102550Siwasaki 14137104470SiwasakiSplit the AcpiEnableSubsystem into two primitives to enable a 14138193267Sjkimfiner granularity initialization sequence. These two calls should 14139126372Snjlbe called in this order: AcpiEnableSubsystem (flags), 14140114237SnjlAcpiInitializeObjects (flags). The flags parameter remains the 14141114237Snjlsame. 14142102550Siwasaki 14143102550Siwasaki 14144102550Siwasaki2) Linux 14145102550Siwasaki 14146114237SnjlUpdated the ACPI utilities module to understand the new style of 14147193267Sjkimfully resolved package objects that are now returned from the core 14148126372Snjlsubsystem. This eliminates errors of the form: 14149102550Siwasaki 14150102550Siwasaki ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14151102550Siwasaki acpi_utils-0430 [145] acpi_evaluate_reference: 14152102550Siwasaki Invalid element in package (not a device reference) 14153102550Siwasaki 14154102550SiwasakiThe method evaluation utility uses the new buffer allocation 14155102550Siwasakischeme instead of calling AcpiEvaluate Object twice. 14156102550Siwasaki 14157102550SiwasakiAdded support for ECDT. This allows the use of the Embedded 14158167802Sjkim 14159114237SnjlController before the namespace has been fully initialized, which 14160114237Snjlis necessary for ACPI 2.0 support, and for some laptops to 14161114237Snjlinitialize properly. (Laptops using ECDT are still rare, so only 14162114237Snjllimited testing was performed of the added functionality.) 14163102550Siwasaki 14164102550SiwasakiFixed memory leaks in the EC driver. 14165102550Siwasaki 14166102550SiwasakiEliminated a brittle code structure in acpi_bus_init(). 14167102550Siwasaki 14168114237SnjlEliminated the acpi_evaluate() helper function in utils.c. It is 14169114237Snjlno longer needed since acpi_evaluate_object can optionally 14170104470Siwasakiallocate memory for the return object. 14171102550Siwasaki 14172193267SjkimImplemented fix for keyboard hang when getting battery readings on 14173126372Snjlsome systems (Stephen White) 14174102550Siwasaki 14175102550SiwasakiPCI IRQ routing update (Dominik Brodowski) 14176102550Siwasaki 14177114237SnjlFix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14178114237Snjlsupport 14179102550Siwasaki 14180102550Siwasaki---------------------------------------- 14181102550Siwasaki11 June 2002. Summary of changes for this release. 14182102550Siwasaki 14183102550Siwasaki 14184102550Siwasaki1) ACPI CA Core Subsystem Version 20020611: 14185102550Siwasaki 14186104470SiwasakiFixed a reported problem where constants such as Zero and One 14187114237Snjlappearing within _PRT packages were not handled correctly within 14188114237Snjlthe resource manager code. Originally reported against the ASL 14189114237Snjlcompiler because the code generator now optimizes integers to 14190193267Sjkimtheir minimal AML representation (i.e. AML constants if possible.) 14191126372SnjlThe _PRT code now handles all AML constant opcodes correctly 14192126372Snjl(Zero, One, Ones, Revision). 14193102550Siwasaki 14194102550SiwasakiFixed a problem with the Concatenate operator in the AML 14195193267Sjkiminterpreter where a buffer result object was incorrectly marked as 14196126372Snjlnot fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14197102550Siwasaki 14198104470SiwasakiAll package sub-objects are now fully resolved before they are 14199114237Snjlreturned from the external ACPI interfaces. This means that name 14200114237Snjlstrings are resolved to object handles, and constant operators 14201114237Snjl(Zero, One, Ones, Revision) are resolved to Integers. 14202102550Siwasaki 14203102550SiwasakiImplemented immediate resolution of the AML Constant opcodes 14204104470Siwasaki(Zero, One, Ones, Revision) to Integer objects upon detection 14205104470Siwasakiwithin the AML stream. This has simplified and reduced the 14206104470Siwasakigenerated code size of the subsystem by eliminating about 10 14207104470Siwasakiswitch statements for these constants (which previously were 14208193267Sjkimcontained in Reference objects.) The complicating issues are that 14209126372Snjlthe Zero opcode is used as a "placeholder" for unspecified 14210193267Sjkimoptional target operands and stores to constants are defined to be 14211126372Snjlno-ops. 14212102550Siwasaki 14213193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14214126372Snjlbelow. These are the code and data sizes for the acpica.lib 14215114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14216114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 14217114237Snjlversion of the code includes the debug output trace mechanism and 14218193267Sjkimhas a larger code and data size. Note that these values will vary 14219126372Snjldepending on the efficiency of the compiler and the compiler 14220114237Snjloptions used during generation. 14221102550Siwasaki 14222102550Siwasaki Previous Release 14223104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14224104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14225102550Siwasaki Current Release: 14226104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14227104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14228102550Siwasaki 14229102550Siwasaki 14230102550Siwasaki2) Linux 14231102550Siwasaki 14232167802Sjkim 14233104470SiwasakiAdded preliminary support for obtaining _TRA data for PCI root 14234104470Siwasakibridges (Bjorn Helgaas). 14235102550Siwasaki 14236102550Siwasaki 14237102550Siwasaki3) iASL Compiler Version X2046: 14238102550Siwasaki 14239193267SjkimFixed a problem where the "_DDN" reserved name was defined to be a 14240126372Snjlcontrol method with one argument. There are no arguments, and 14241114237Snjl_DDN does not have to be a control method. 14242102550Siwasaki 14243114237SnjlFixed a problem with the Linux version of the compiler where the 14244114237Snjlsource lines printed with error messages were the wrong lines. 14245114237SnjlThis turned out to be the "LF versus CR/LF" difference between 14246114237SnjlWindows and Unix. This appears to be the longstanding issue 14247114237Snjlconcerning listing output and error messages. 14248102550Siwasaki 14249114237SnjlFixed a problem with the Linux version of compiler where opcode 14250114237Snjlnames within error messages were wrong. This was caused by a 14251114237Snjlslight difference in the output of the Flex tool on Linux versus 14252114237SnjlWindows. 14253102550Siwasaki 14254193267SjkimFixed a problem with the Linux compiler where the hex output files 14255126372Snjlcontained some garbage data caused by an internal buffer overrun. 14256102550Siwasaki 14257102550Siwasaki 14258102550Siwasaki---------------------------------------- 14259102550Siwasaki17 May 2002. Summary of changes for this release. 14260102550Siwasaki 14261102550Siwasaki 14262102550Siwasaki1) ACPI CA Core Subsystem Version 20020517: 14263102550Siwasaki 14264102550SiwasakiImplemented a workaround to an BIOS bug discovered on the HP 14265104470SiwasakiOmniBook where the FADT revision number and the table size are 14266193267Sjkiminconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14267126372Snjlbehavior is to fallback to using only the ACPI 1.0 fields of the 14268126372SnjlFADT if the table is too small to be a ACPI 2.0 table as claimed 14269126372Snjlby the revision number. Although this is a BIOS bug, this is a 14270126372Snjlcase where the workaround is simple enough and with no side 14271126372Snjleffects, so it seemed prudent to add it. A warning message is 14272126372Snjlissued, however. 14273102550Siwasaki 14274193267SjkimImplemented minimum size checks for the fixed-length ACPI tables - 14275126372Snjl- the FADT and FACS, as well as consistency checks between the 14276114237Snjlrevision number and the table size. 14277102550Siwasaki 14278114237SnjlFixed a reported problem in the table override support where the 14279114237Snjlnew table pointer was incorrectly treated as a physical address 14280114237Snjlinstead of a logical address. 14281102550Siwasaki 14282114237SnjlEliminated the use of the AE_AML_ERROR exception and replaced it 14283114237Snjlwith more descriptive codes. 14284102550Siwasaki 14285193267SjkimFixed a problem where an exception would occur if an ASL Field was 14286126372Snjldefined with no named Field Units underneath it (used by some 14287114237Snjlindex fields). 14288102550Siwasaki 14289193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14290126372Snjlbelow. These are the code and data sizes for the acpica.lib 14291126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14292126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14293126372Snjlversion of the code includes the debug output trace mechanism and 14294193267Sjkimhas a larger code and data size. Note that these values will vary 14295126372Snjldepending on the efficiency of the compiler and the compiler 14296126372Snjloptions used during generation. 14297102550Siwasaki 14298102550Siwasaki Previous Release 14299104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14300104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14301102550Siwasaki Current Release: 14302104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14303104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14304102550Siwasaki 14305102550Siwasaki 14306102550Siwasaki 14307102550Siwasaki2) Linux 14308102550Siwasaki 14309114237SnjlMuch work done on ACPI init (MADT and PCI IRQ routing support). 14310114237Snjl(Paul D. and Dominik Brodowski) 14311102550Siwasaki 14312102550SiwasakiFix PCI IRQ-related panic on boot (Sam Revitch) 14313102550Siwasaki 14314102550SiwasakiSet BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14315102550Siwasaki 14316102550SiwasakiFix "MHz" typo (Dominik Brodowski) 14317102550Siwasaki 14318102550SiwasakiFix RTC year 2000 issue (Dominik Brodowski) 14319102550Siwasaki 14320102550SiwasakiPreclude multiple button proc entries (Eric Brunet) 14321102550Siwasaki 14322102550SiwasakiMoved arch-specific code out of include/platform/aclinux.h 14323102550Siwasaki 14324102550Siwasaki3) iASL Compiler Version X2044: 14325102550Siwasaki 14326193267SjkimImplemented error checking for the string used in the EISAID macro 14327193267Sjkim(Usually used in the definition of the _HID object.) The code now 14328126372Snjlstrictly enforces the PnP format - exactly 7 characters, 3 14329126372Snjluppercase letters and 4 hex digits. 14330102550Siwasaki 14331102550SiwasakiIf a raw string is used in the definition of the _HID object 14332102550Siwasaki(instead of the EISAID macro), the string must contain all 14333114237Snjlalphanumeric characters (e.g., "*PNP0011" is not allowed because 14334114237Snjlof the asterisk.) 14335102550Siwasaki 14336114237SnjlImplemented checking for invalid use of ACPI reserved names for 14337114237Snjlmost of the name creation operators (Name, Device, Event, Mutex, 14338114237SnjlOperationRegion, PowerResource, Processor, and ThermalZone.) 14339114237SnjlPreviously, this check was only performed for control methods. 14340102550Siwasaki 14341114237SnjlImplemented an additional check on the Name operator to emit an 14342114237Snjlerror if a reserved name that must be implemented in ASL as a 14343114237Snjlcontrol method is used. We know that a reserved name must be a 14344114237Snjlmethod if it is defined with input arguments. 14345102550Siwasaki 14346193267SjkimThe warning emitted when a namespace object reference is not found 14347126372Snjlduring the cross reference phase has been changed into an error. 14348193267SjkimThe "External" directive should be used for names defined in other 14349126372Snjlmodules. 14350102550Siwasaki 14351102550Siwasaki 14352102550Siwasaki4) Tools and Utilities 14353102550Siwasaki 14354114237SnjlThe 16-bit tools (adump16 and aexec16) have been regenerated and 14355114237Snjltested. 14356102550Siwasaki 14357193267SjkimFixed a problem with the output of both acpidump and adump16 where 14358126372Snjlthe indentation of closing parentheses and brackets was not 14359167802Sjkim 14360114237Snjlaligned properly with the parent block. 14361102550Siwasaki 14362102550Siwasaki 14363102550Siwasaki---------------------------------------- 14364102550Siwasaki03 May 2002. Summary of changes for this release. 14365102550Siwasaki 14366102550Siwasaki 14367102550Siwasaki1) ACPI CA Core Subsystem Version 20020503: 14368102550Siwasaki 14369114237SnjlAdded support a new OSL interface that allows the host operating 14370167802Sjkim 14371114237Snjlsystem software to override the DSDT found in the firmware - 14372193267SjkimAcpiOsTableOverride. With this interface, the OSL can examine the 14373126372Snjlversion of the firmware DSDT and replace it with a different one 14374126372Snjlif desired. 14375102550Siwasaki 14376114237SnjlAdded new external interfaces for accessing ACPI registers from 14377114237Snjldevice drivers and other system software - AcpiGetRegister and 14378114237SnjlAcpiSetRegister. This was simply an externalization of the 14379114237Snjlexisting AcpiHwBitRegister interfaces. 14380102550Siwasaki 14381104470SiwasakiFixed a regression introduced in the previous build where the 14382104470SiwasakiASL/AML CreateField operator always returned an error, 14383102550Siwasaki"destination must be a NS Node". 14384102550Siwasaki 14385114237SnjlExtended the maximum time (before failure) to successfully enable 14386114237SnjlACPI mode to 3 seconds. 14387102550Siwasaki 14388193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14389126372Snjlbelow. These are the code and data sizes for the acpica.lib 14390126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14391126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14392126372Snjlversion of the code includes the debug output trace mechanism and 14393193267Sjkimhas a larger code and data size. Note that these values will vary 14394126372Snjldepending on the efficiency of the compiler and the compiler 14395126372Snjloptions used during generation. 14396102550Siwasaki 14397102550Siwasaki Previous Release 14398104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14399104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14400102550Siwasaki Current Release: 14401104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14402104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14403102550Siwasaki 14404102550Siwasaki 14405102550Siwasaki2) Linux 14406102550Siwasaki 14407104470SiwasakiEnhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14408193267Sjkimfree. While 3 out of 4 of our in-house systems work fine, the last 14409126372Snjlone still hangs when testing the LAPIC timer. 14410102550Siwasaki 14411114237SnjlRenamed many files in 2.5 kernel release to omit "acpi_" from the 14412114237Snjlname. 14413102550Siwasaki 14414102550SiwasakiAdded warning on boot for Presario 711FR. 14415102550Siwasaki 14416102550SiwasakiSleep improvements (Pavel Machek) 14417102550Siwasaki 14418102550SiwasakiACPI can now be built without CONFIG_PCI enabled. 14419102550Siwasaki 14420102550SiwasakiIA64: Fixed memory map functions (JI Lee) 14421102550Siwasaki 14422102550Siwasaki 14423102550Siwasaki3) iASL Compiler Version X2043: 14424102550Siwasaki 14425114237SnjlAdded support to allow the compiler to be integrated into the MS 14426114237SnjlVC++ development environment for one-button compilation of single 14427114237Snjlfiles or entire projects -- with error-to-source-line mapping. 14428102550Siwasaki 14429104470SiwasakiImplemented support for compile-time constant folding for the 14430104470SiwasakiType3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14431104470Siwasakispecification. This allows the ASL writer to use expressions 14432104470Siwasakiinstead of Integer/Buffer/String constants in terms that must 14433114237Snjlevaluate to constants at compile time and will also simplify the 14434114237Snjlemitted AML in any such sub-expressions that can be folded 14435104470Siwasaki(evaluated at compile-time.) This increases the size of the 14436104470Siwasakicompiler significantly because a portion of the ACPI CA AML 14437104470Siwasakiinterpreter is included within the compiler in order to pre- 14438104470Siwasakievaluate constant expressions. 14439102550Siwasaki 14440114237Snjl 14441102550SiwasakiFixed a problem with the "Unicode" ASL macro that caused the 14442114237Snjlcompiler to fault. (This macro is used in conjunction with the 14443114237Snjl_STR reserved name.) 14444102550Siwasaki 14445114237SnjlImplemented an AML opcode optimization to use the Zero, One, and 14446114237SnjlOnes opcodes where possible to further reduce the size of integer 14447114237Snjlconstants and thus reduce the overall size of the generated AML 14448114237Snjlcode. 14449102550Siwasaki 14450193267SjkimImplemented error checking for new reserved terms for ACPI version 14451126372Snjl2.0A. 14452102550Siwasaki 14453104470SiwasakiImplemented the -qr option to display the current list of ACPI 14454104470Siwasakireserved names known to the compiler. 14455102550Siwasaki 14456104470SiwasakiImplemented the -qc option to display the current list of ASL 14457104470Siwasakioperators that are allowed within constant expressions and can 14458193267Sjkimtherefore be folded at compile time if the operands are constants. 14459102550Siwasaki 14460102550Siwasaki 14461102550Siwasaki4) Documentation 14462102550Siwasaki 14463193267SjkimUpdated the Programmer's Reference for new interfaces, data types, 14464126372Snjland memory allocation model options. 14465102550Siwasaki 14466114237SnjlUpdated the iASL Compiler User Reference to apply new format and 14467114237Snjladd information about new features and options. 14468102550Siwasaki 14469102550Siwasaki---------------------------------------- 14470102550Siwasaki19 April 2002. Summary of changes for this release. 14471102550Siwasaki 14472102550Siwasaki1) ACPI CA Core Subsystem Version 20020419: 14473102550Siwasaki 14474114237SnjlThe source code base for the Core Subsystem has been completely 14475114237Snjlcleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 14476114237Snjlversions. The Lint option files used are included in the 14477114237Snjl/acpi/generate/lint directory. 14478102550Siwasaki 14479102550SiwasakiImplemented enhanced status/error checking across the entire 14480114237SnjlHardware manager subsystem. Any hardware errors (reported from 14481114237Snjlthe OSL) are now bubbled up and will abort a running control 14482114237Snjlmethod. 14483102550Siwasaki 14484167802Sjkim 14485114237SnjlFixed a problem where the per-ACPI-table integer width (32 or 64) 14486114237Snjlwas stored only with control method nodes, causing a fault when 14487114237Snjlnon-control method code was executed during table loading. The 14488114237Snjlsolution implemented uses a global variable to indicate table 14489114237Snjlwidth across the entire ACPI subsystem. Therefore, ACPI CA does 14490114237Snjlnot support mixed integer widths across different ACPI tables 14491114237Snjl(DSDT, SSDT). 14492102550Siwasaki 14493114237SnjlFixed a problem where NULL extended fields (X fields) in an ACPI 14494114237Snjl2.0 ACPI FADT caused the table load to fail. Although the 14495114237Snjlexisting ACPI specification is a bit fuzzy on this topic, the new 14496114237Snjlbehavior is to fall back on a ACPI 1.0 field if the corresponding 14497193267SjkimACPI 2.0 X field is zero (even though the table revision indicates 14498193267Sjkima full ACPI 2.0 table.) The ACPI specification will be updated to 14499126372Snjlclarify this issue. 14500102550Siwasaki 14501104470SiwasakiFixed a problem with the SystemMemory operation region handler 14502104470Siwasakiwhere memory was always accessed byte-wise even if the AML- 14503104470Siwasakispecified access width was larger than a byte. This caused 14504104470Siwasakiproblems on systems with memory-mapped I/O. Memory is now 14505193267Sjkimaccessed with the width specified. On systems that do not support 14506193267Sjkimnon-aligned transfers, a check is made to guarantee proper address 14507126372Snjlalignment before proceeding in order to avoid an AML-caused 14508126372Snjlalignment fault within the kernel. 14509102550Siwasaki 14510102550Siwasaki 14511114237SnjlFixed a problem with the ExtendedIrq resource where only one byte 14512114237Snjlof the 4-byte Irq field was extracted. 14513102550Siwasaki 14514114237SnjlFixed the AcpiExDigitsNeeded() procedure to support _UID. This 14515114237Snjlfunction was out of date and required a rewrite. 14516114237Snjl 14517193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14518126372Snjlbelow. These are the code and data sizes for the acpica.lib 14519126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14520126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14521126372Snjlversion of the code includes the debug output trace mechanism and 14522193267Sjkimhas a larger code and data size. Note that these values will vary 14523126372Snjldepending on the efficiency of the compiler and the compiler 14524126372Snjloptions used during generation. 14525102550Siwasaki 14526102550Siwasaki Previous Release 14527104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14528104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14529102550Siwasaki Current Release: 14530104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14531104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14532102550Siwasaki 14533102550Siwasaki 14534102550Siwasaki2) Linux 14535102550Siwasaki 14536102550SiwasakiPCI IRQ routing fixes (Dominik Brodowski) 14537102550Siwasaki 14538102550Siwasaki 14539102550Siwasaki3) iASL Compiler Version X2042: 14540102550Siwasaki 14541104470SiwasakiImplemented an additional compile-time error check for a field 14542104470Siwasakiunit whose size + minimum access width would cause a run-time 14543114237Snjlaccess beyond the end-of-region. Previously, only the field size 14544114237Snjlitself was checked. 14545102550Siwasaki 14546104470SiwasakiThe Core subsystem and iASL compiler now share a common parse 14547104470Siwasakiobject in preparation for compile-time evaluation of the type 14548104470Siwasaki3/4/5 ASL operators. 14549102550Siwasaki 14550102550Siwasaki 14551102550Siwasaki---------------------------------------- 14552102550SiwasakiSummary of changes for this release: 03_29_02 14553102550Siwasaki 14554102550Siwasaki1) ACPI CA Core Subsystem Version 20020329: 14555102550Siwasaki 14556104470SiwasakiImplemented support for late evaluation of TermArg operands to 14557193267SjkimBuffer and Package objects. This allows complex expressions to be 14558126372Snjlused in the declarations of these object types. 14559102550Siwasaki 14560193267SjkimFixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 14561126372Snjl1.0, if the field was larger than 32 bits, it was returned as a 14562126372Snjlbuffer - otherwise it was returned as an integer. In ACPI 2.0, 14563193267Sjkimthe field is returned as a buffer only if the field is larger than 14564126372Snjl64 bits. The TableRevision is now considered when making this 14565126372Snjlconversion to avoid incompatibility with existing ASL code. 14566102550Siwasaki 14567104470SiwasakiImplemented logical addressing for AcpiOsGetRootPointer. This 14568114237Snjlallows an RSDP with either a logical or physical address. With 14569114237Snjlthis support, the host OS can now override all ACPI tables with 14570114237Snjlone logical RSDP. Includes implementation of "typed" pointer 14571114237Snjlsupport to allow a common data type for both physical and logical 14572114237Snjlpointers internally. This required a change to the 14573114237SnjlAcpiOsGetRootPointer interface. 14574102550Siwasaki 14575193267SjkimImplemented the use of ACPI 2.0 Generic Address Structures for all 14576193267SjkimGPE, Fixed Event, and PM Timer I/O. This allows the use of memory 14577126372Snjlmapped I/O for these ACPI features. 14578102550Siwasaki 14579102550SiwasakiInitialization now ignores not only non-required tables (All 14580114237Snjltables other than the FADT, FACS, DSDT, and SSDTs), but also does 14581114237Snjlnot validate the table headers of unrecognized tables. 14582102550Siwasaki 14583102550SiwasakiFixed a problem where a notify handler could only be 14584102550Siwasakiinstalled/removed on an object of type Device. All "notify" 14585167802Sjkim 14586102550Siwasakiobjects are now supported -- Devices, Processor, Power, and 14587102550SiwasakiThermal. 14588102550Siwasaki 14589114237SnjlRemoved most verbosity from the ACPI_DB_INFO debug level. Only 14590193267Sjkimcritical information is returned when this debug level is enabled. 14591102550Siwasaki 14592193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14593126372Snjlbelow. These are the code and data sizes for the acpica.lib 14594126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14595126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14596126372Snjlversion of the code includes the debug output trace mechanism and 14597193267Sjkimhas a larger code and data size. Note that these values will vary 14598126372Snjldepending on the efficiency of the compiler and the compiler 14599126372Snjloptions used during generation. 14600102550Siwasaki 14601102550Siwasaki Previous Release 14602104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14603104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14604102550Siwasaki Current Release: 14605104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14606104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14607102550Siwasaki 14608102550Siwasaki 14609102550Siwasaki2) Linux: 14610102550Siwasaki 14611114237SnjlThe processor driver (acpi_processor.c) now fully supports ACPI 14612114237Snjl2.0-based processor performance control (e.g. Intel(R) 14613114237SnjlSpeedStep(TM) technology) Note that older laptops that only have 14614114237Snjlthe Intel "applet" interface are not supported through this. The 14615114237Snjl'limit' and 'performance' interface (/proc) are fully functional. 14616114237Snjl[Note that basic policy for controlling performance state 14617114237Snjltransitions will be included in the next version of ospmd.] The 14618114237Snjlidle handler was modified to more aggressively use C2, and PIIX4 14619114237Snjlerrata handling underwent a complete overhaul (big thanks to 14620114237SnjlDominik Brodowski). 14621102550Siwasaki 14622114237SnjlAdded support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 14623114237Snjlbased devices in the ACPI namespace are now dynamically bound 14624114237Snjl(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 14625114237SnjlThis allows, among other things, ACPI to resolve bus numbers for 14626114237Snjlsubordinate PCI bridges. 14627102550Siwasaki 14628104470SiwasakiEnhanced PCI IRQ routing to get the proper bus number for _PRT 14629104470Siwasakientries defined underneath PCI bridges. 14630102550Siwasaki 14631104470SiwasakiAdded IBM 600E to bad bios list due to invalid _ADR value for 14632104470SiwasakiPIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 14633102550Siwasaki 14634114237SnjlIn the process of adding full MADT support (e.g. IOAPIC) for IA32 14635114237Snjl(acpi.c, mpparse.c) -- stay tuned. 14636102550Siwasaki 14637102550SiwasakiAdded back visual differentiation between fixed-feature and 14638114237Snjlcontrol-method buttons in dmesg. Buttons are also subtyped (e.g. 14639114237Snjlbutton/power/PWRF) to simplify button identification. 14640102550Siwasaki 14641114237SnjlWe no longer use -Wno-unused when compiling debug. Please ignore 14642114237Snjlany "_THIS_MODULE defined but not used" messages. 14643102550Siwasaki 14644102550SiwasakiCan now shut down the system using "magic sysrq" key. 14645102550Siwasaki 14646102550Siwasaki 14647102550Siwasaki3) iASL Compiler version 2041: 14648102550Siwasaki 14649104470SiwasakiFixed a problem where conversion errors for hex/octal/decimal 14650104470Siwasakiconstants were not reported. 14651102550Siwasaki 14652193267SjkimImplemented a fix for the General Register template Address field. 14653126372SnjlThis field was 8 bits when it should be 64. 14654102550Siwasaki 14655193267SjkimFixed a problem where errors/warnings were no longer being emitted 14656126372Snjlwithin the listing output file. 14657102550Siwasaki 14658114237SnjlImplemented the ACPI 2.0A restriction on ACPI Table Signatures to 14659114237Snjlexactly 4 characters, alphanumeric only. 14660102550Siwasaki 14661102550Siwasaki 14662102550Siwasaki 14663102550Siwasaki 14664102550Siwasaki---------------------------------------- 14665102550SiwasakiSummary of changes for this release: 03_08_02 14666102550Siwasaki 14667102550Siwasaki 14668102550Siwasaki1) ACPI CA Core Subsystem Version 20020308: 14669102550Siwasaki 14670114237SnjlFixed a problem with AML Fields where the use of the "AccessAny" 14671193267Sjkimkeyword could cause an interpreter error due to attempting to read 14672126372Snjlor write beyond the end of the parent Operation Region. 14673102550Siwasaki 14674193267SjkimFixed a problem in the SystemMemory Operation Region handler where 14675126372Snjlan attempt was made to map memory beyond the end of the region. 14676126372SnjlThis was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 14677126372Snjlerrors on some Linux systems. 14678102550Siwasaki 14679114237SnjlFixed a problem where the interpreter/namespace "search to root" 14680114237Snjlalgorithm was not functioning for some object types. Relaxed the 14681114237Snjlinternal restriction on the search to allow upsearches for all 14682114237Snjlexternal object types as well as most internal types. 14683102550Siwasaki 14684102550Siwasaki 14685102550Siwasaki2) Linux: 14686102550Siwasaki 14687193267SjkimWe now use safe_halt() macro versus individual calls to sti | hlt. 14688102550Siwasaki 14689193267SjkimWriting to the processor limit interface should now work. "echo 1" 14690126372Snjlwill increase the limit, 2 will decrease, and 0 will reset to the 14691167802Sjkim 14692126372Snjldefault. 14693102550Siwasaki 14694102550Siwasaki 14695102550Siwasaki3) ASL compiler: 14696102550Siwasaki 14697102550SiwasakiFixed segfault on Linux version. 14698102550Siwasaki 14699102550Siwasaki 14700102550Siwasaki---------------------------------------- 14701102550SiwasakiSummary of changes for this release: 02_25_02 14702102550Siwasaki 14703102550Siwasaki1) ACPI CA Core Subsystem: 14704102550Siwasaki 14705102550Siwasaki 14706102550SiwasakiFixed a problem where the GPE bit masks were not initialized 14707102550Siwasakiproperly, causing erratic GPE behavior. 14708102550Siwasaki 14709193267SjkimImplemented limited support for multiple calling conventions. The 14710126372Snjlcode can be generated with either the VPL (variable parameter 14711114237Snjllist, or "C") convention, or the FPL (fixed parameter list, or 14712114237Snjl"Pascal") convention. The core subsystem is about 3.4% smaller 14713114237Snjlwhen generated with FPL. 14714102550Siwasaki 14715102550Siwasaki 14716102550Siwasaki2) Linux 14717102550Siwasaki 14718114237SnjlRe-add some /proc/acpi/event functionality that was lost during 14719114237Snjlthe rewrite 14720102550Siwasaki 14721193267SjkimResolved issue with /proc events for fixed-feature buttons showing 14722126372Snjlup as the system device. 14723102550Siwasaki 14724193267SjkimFixed checks on C2/C3 latencies to be inclusive of maximum values. 14725102550Siwasaki 14726114237SnjlReplaced AE_ERRORs in acpi_osl.c with more specific error codes. 14727102550Siwasaki 14728114237SnjlChanged ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 14729102550Siwasaki 14730104470SiwasakiFixed limit interface & usage to fix bugs with passive cooling 14731104470Siwasakihysterisis. 14732102550Siwasaki 14733102550SiwasakiRestructured PRT support. 14734102550Siwasaki 14735102550Siwasaki 14736102550Siwasaki---------------------------------------- 14737102550SiwasakiSummary of changes for this label: 02_14_02 14738102550Siwasaki 14739102550Siwasaki 14740102550Siwasaki1) ACPI CA Core Subsystem: 14741102550Siwasaki 14742114237SnjlImplemented support in AcpiLoadTable to allow loading of FACS and 14743114237SnjlFADT tables. 14744102550Siwasaki 14745114237SnjlSuport for the now-obsolete interim 0.71 64-bit ACPI tables has 14746193267Sjkimbeen removed. All 64-bit platforms should be migrated to the ACPI 14747193267Sjkim2.0 tables. The actbl71.h header has been removed from the source 14748126372Snjltree. 14749102550Siwasaki 14750114237SnjlAll C macros defined within the subsystem have been prefixed with 14751114237Snjl"ACPI_" to avoid collision with other system include files. 14752102550Siwasaki 14753193267SjkimRemoved the return value for the two AcpiOsPrint interfaces, since 14754126372Snjlit is never used and causes lint warnings for ignoring the return 14755126372Snjlvalue. 14756102550Siwasaki 14757104470SiwasakiAdded error checking to all internal mutex acquire and release 14758104470Siwasakicalls. Although a failure from one of these interfaces is 14759104470Siwasakiprobably a fatal system error, these checks will cause the 14760114237Snjlimmediate abort of the currently executing method or interface. 14761102550Siwasaki 14762114237SnjlFixed a problem where the AcpiSetCurrentResources interface could 14763193267Sjkimfault. This was a side effect of the deployment of the new memory 14764126372Snjlallocation model. 14765102550Siwasaki 14766193267SjkimFixed a couple of problems with the Global Lock support introduced 14767193267Sjkimin the last major build. The "common" (1.0/2.0) internal FACS was 14768126372Snjlbeing overwritten with the FACS signature and clobbering the 14769126372SnjlGlobal Lock pointer. Also, the actual firmware FACS was being 14770126372Snjlunmapped after construction of the "common" FACS, preventing 14771126372Snjlaccess to the actual Global Lock field within it. The "common" 14772126372Snjlinternal FACS is no longer installed as an actual ACPI table; it 14773126372Snjlis used simply as a global. 14774102550Siwasaki 14775193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14776126372Snjlbelow. These are the code and data sizes for the acpica.lib 14777126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14778126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 14779126372Snjlversion of the code includes the debug output trace mechanism and 14780193267Sjkimhas a larger code and data size. Note that these values will vary 14781126372Snjldepending on the efficiency of the compiler and the compiler 14782126372Snjloptions used during generation. 14783102550Siwasaki 14784102550Siwasaki Previous Release (02_07_01) 14785104470Siwasaki Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14786104470Siwasaki Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14787102550Siwasaki Current Release: 14788104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 14789104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 14790102550Siwasaki 14791102550Siwasaki 14792102550Siwasaki2) Linux 14793102550Siwasaki 14794102550SiwasakiUpdated Linux-specific code for core macro and OSL interface 14795102550Siwasakichanges described above. 14796102550Siwasaki 14797114237SnjlImproved /proc/acpi/event. It now can be opened only once and has 14798114237Snjlproper poll functionality. 14799102550Siwasaki 14800102550SiwasakiFixed and restructured power management (acpi_bus). 14801102550Siwasaki 14802193267SjkimOnly create /proc "view by type" when devices of that class exist. 14803102550Siwasaki 14804104470SiwasakiFixed "charging/discharging" bug (and others) in acpi_battery. 14805102550Siwasaki 14806102550SiwasakiImproved thermal zone code. 14807102550Siwasaki 14808102550Siwasaki 14809102550Siwasaki3) ASL Compiler, version X2039: 14810102550Siwasaki 14811114237Snjl 14812114237SnjlImplemented the new compiler restriction on ASL String hex/octal 14813193267Sjkimescapes to non-null, ASCII values. An error results if an invalid 14814126372Snjlvalue is used. (This will require an ACPI 2.0 specification 14815126372Snjlchange.) 14816102550Siwasaki 14817193267SjkimAML object labels that are output to the optional C and ASM source 14818126372Snjlare now prefixed with both the ACPI table signature and table ID 14819126372Snjlto help guarantee uniqueness within a large BIOS project. 14820102550Siwasaki 14821102550Siwasaki 14822102550Siwasaki---------------------------------------- 14823102550SiwasakiSummary of changes for this label: 02_01_02 14824102550Siwasaki 14825102550Siwasaki1) ACPI CA Core Subsystem: 14826102550Siwasaki 14827114237SnjlACPI 2.0 support is complete in the entire Core Subsystem and the 14828114237SnjlASL compiler. All new ACPI 2.0 operators are implemented and all 14829114237Snjlother changes for ACPI 2.0 support are complete. With 14830193267Sjkimsimultaneous code and data optimizations throughout the subsystem, 14831126372SnjlACPI 2.0 support has been implemented with almost no additional 14832126372Snjlcost in terms of code and data size. 14833102550Siwasaki 14834114237SnjlImplemented a new mechanism for allocation of return buffers. If 14835114237Snjlthe buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 14836114237Snjlbe allocated on behalf of the caller. Consolidated all return 14837114237Snjlbuffer validation and allocation to a common procedure. Return 14838193267Sjkimbuffers will be allocated via the primary OSL allocation interface 14839193267Sjkimsince it appears that a separate pool is not needed by most users. 14840126372SnjlIf a separate pool is required for these buffers, the caller can 14841126372Snjlstill use the original mechanism and pre-allocate the buffer(s). 14842102550Siwasaki 14843102550SiwasakiImplemented support for string operands within the DerefOf 14844102550Siwasakioperator. 14845102550Siwasaki 14846114237SnjlRestructured the Hardware and Event managers to be table driven, 14847114237Snjlsimplifying the source code and reducing the amount of generated 14848114237Snjlcode. 14849102550Siwasaki 14850102550SiwasakiSplit the common read/write low-level ACPI register bitfield 14851104470Siwasakiprocedure into a separate read and write, simplifying the code 14852104470Siwasakiconsiderably. 14853102550Siwasaki 14854114237SnjlObsoleted the AcpiOsCallocate OSL interface. This interface was 14855114237Snjlused only a handful of times and didn't have enough critical mass 14856193267Sjkimfor a separate interface. Replaced with a common calloc procedure 14857126372Snjlin the core. 14858102550Siwasaki 14859104470SiwasakiFixed a reported problem with the GPE number mapping mechanism 14860104470Siwasakithat allows GPE1 numbers to be non-contiguous with GPE0. 14861114237SnjlReorganized the GPE information and shrunk a large array that was 14862114237Snjloriginally large enough to hold info for all possible GPEs (256) 14863114237Snjlto simply large enough to hold all GPEs up to the largest GPE 14864114237Snjlnumber on the machine. 14865102550Siwasaki 14866114237SnjlFixed a reported problem with resource structure alignment on 64- 14867114237Snjlbit platforms. 14868102550Siwasaki 14869102550SiwasakiChanged the AcpiEnableEvent and AcpiDisableEvent external 14870102550Siwasakiinterfaces to not require any flags for the common case of 14871102550Siwasakienabling/disabling a GPE. 14872102550Siwasaki 14873104470SiwasakiImplemented support to allow a "Notify" on a Processor object. 14874102550Siwasaki 14875114237SnjlMost TBDs in comments within the source code have been resolved 14876114237Snjland eliminated. 14877102550Siwasaki 14878167802Sjkim 14879102550SiwasakiFixed a problem in the interpreter where a standalone parent 14880102550Siwasakiprefix (^) was not handled correctly in the interpreter and 14881102550Siwasakidebugger. 14882102550Siwasaki 14883102550SiwasakiRemoved obsolete and unnecessary GPE save/restore code. 14884102550Siwasaki 14885193267SjkimImplemented Field support in the ASL Load operator. This allows a 14886126372Snjltable to be loaded from a named field, in addition to loading a 14887114237Snjltable directly from an Operation Region. 14888102550Siwasaki 14889193267SjkimImplemented timeout and handle support in the external Global Lock 14890126372Snjlinterfaces. 14891102550Siwasaki 14892114237SnjlFixed a problem in the AcpiDump utility where pathnames were no 14893193267Sjkimlonger being generated correctly during the dump of named objects. 14894102550Siwasaki 14895102550SiwasakiModified the AML debugger to give a full display of if/while 14896102550Siwasakipredicates instead of just one AML opcode at a time. (The 14897193267Sjkimpredicate can have several nested ASL statements.) The old method 14898126372Snjlwas confusing during single stepping. 14899102550Siwasaki 14900193267SjkimCode and Data Size: Current core subsystem library sizes are shown 14901126372Snjlbelow. These are the code and data sizes for the acpica.lib 14902114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 14903114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 14904114237Snjlversion of the code includes the debug output trace mechanism and 14905193267Sjkimhas a larger code and data size. Note that these values will vary 14906126372Snjldepending on the efficiency of the compiler and the compiler 14907114237Snjloptions used during generation. 14908102550Siwasaki 14909102550Siwasaki Previous Release (12_18_01) 14910114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 14911114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 14912102550Siwasaki Current Release: 14913114237Snjl Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 14914114237Snjl Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 14915102550Siwasaki 14916102550Siwasaki2) Linux 14917102550Siwasaki 14918104470Siwasaki Implemented fix for PIIX reverse throttling errata (Processor 14919104470Siwasakidriver) 14920102550Siwasaki 14921102550SiwasakiAdded new Limit interface (Processor and Thermal drivers) 14922102550Siwasaki 14923102550SiwasakiNew thermal policy (Thermal driver) 14924102550Siwasaki 14925102550SiwasakiMany updates to /proc 14926102550Siwasaki 14927102550SiwasakiBattery "low" event support (Battery driver) 14928102550Siwasaki 14929104470SiwasakiSupports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 14930102550Siwasaki 14931104470SiwasakiIA32 - IA64 initialization unification, no longer experimental 14932102550Siwasaki 14933102550SiwasakiMenuconfig options redesigned 14934102550Siwasaki 14935102550Siwasaki3) ASL Compiler, version X2037: 14936102550Siwasaki 14937193267SjkimImplemented several new output features to simplify integration of 14938126372SnjlAML code into firmware: 1) Output the AML in C source code with 14939193267Sjkimlabels for each named ASL object. The original ASL source code 14940193267Sjkimis interleaved as C comments. 2) Output the AML in ASM source code 14941126372Snjlwith labels and interleaved ASL source. 3) Output the AML in 14942126372Snjlraw hex table form, in either C or ASM. 14943102550Siwasaki 14944102550SiwasakiImplemented support for optional string parameters to the 14945102550SiwasakiLoadTable operator. 14946102550Siwasaki 14947104470SiwasakiCompleted support for embedded escape sequences within string 14948114237Snjlliterals. The compiler now supports all single character escapes 14949114237Snjlas well as the Octal and Hex escapes. Note: the insertion of a 14950114237Snjlnull byte into a string literal (via the hex/octal escape) causes 14951114237Snjlthe string to be immediately terminated. A warning is issued. 14952102550Siwasaki 14953104470SiwasakiFixed a problem where incorrect AML was generated for the case 14954104470Siwasakiwhere an ASL namepath consists of a single parent prefix ( 14955102550Siwasaki 14956102550Siwasaki) with no trailing name segments. 14957102550Siwasaki 14958102550SiwasakiThe compiler has been successfully generated with a 64-bit C 14959102550Siwasakicompiler. 14960102550Siwasaki 14961102550Siwasaki 14962102550Siwasaki 14963102550Siwasaki 14964102550Siwasaki---------------------------------------- 14965102550SiwasakiSummary of changes for this label: 12_18_01 14966102550Siwasaki 14967102550Siwasaki1) Linux 14968102550Siwasaki 14969114237SnjlEnhanced blacklist with reason and severity fields. Any table's 14970114237Snjlsignature may now be used to identify a blacklisted system. 14971102550Siwasaki 14972114237SnjlCall _PIC control method to inform the firmware which interrupt 14973114237Snjlmodel the OS is using. Turn on any disabled link devices. 14974102550Siwasaki 14975102550SiwasakiCleaned up busmgr /proc error handling (Andreas Dilger) 14976102550Siwasaki 14977102550Siwasaki 2) ACPI CA Core Subsystem: 14978102550Siwasaki 14979193267SjkimImplemented ACPI 2.0 semantics for the "Break" operator (Exit from 14980126372Snjlwhile loop) 14981102550Siwasaki 14982102550SiwasakiCompleted implementation of the ACPI 2.0 "Continue", 14983102550Siwasaki"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 14984193267Sjkimoperators. All new ACPI 2.0 operators are now implemented in both 14985193267Sjkimthe ASL compiler and the AML interpreter. The only remaining ACPI 14986126372Snjl2.0 task is support for the String data type in the DerefOf 14987193267Sjkimoperator. Fixed a problem with AcquireMutex where the status code 14988126372Snjlwas lost if the caller had to actually wait for the mutex. 14989102550Siwasaki 14990104470SiwasakiIncreased the maximum ASL Field size from 64K bits to 4G bits. 14991102550Siwasaki 14992193267SjkimCompleted implementation of the external Global Lock interfaces -- 14993126372SnjlAcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 14994126372SnjlHandler parameters were added. 14995102550Siwasaki 14996102550SiwasakiCompleted another pass at removing warnings and issues when 14997114237Snjlcompiling with 64-bit compilers. The code now compiles cleanly 14998114237Snjlwith the Intel 64-bit C/C++ compiler. Most notably, the pointer 14999114237Snjladd and subtract (diff) macros have changed considerably. 15000102550Siwasaki 15001167802Sjkim 15002114237SnjlCreated and deployed a new ACPI_SIZE type that is 64-bits wide on 15003114237Snjl64-bit platforms, 32-bits on all others. This type is used 15004193267Sjkimwherever memory allocation and/or the C sizeof() operator is used, 15005126372Snjland affects the OSL memory allocation interfaces AcpiOsAllocate 15006126372Snjland AcpiOsCallocate. 15007102550Siwasaki 15008102550SiwasakiImplemented sticky user breakpoints in the AML debugger. 15009102550Siwasaki 15010193267SjkimCode and Data Size: Current core subsystem library sizes are shown 15011126372Snjlbelow. These are the code and data sizes for the acpica.lib 15012114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 15013114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 15014114237Snjlversion of the code includes the debug output trace mechanism and 15015114237Snjlhas a larger code and data size. Note that these values will vary 15016114237Snjldepending on the efficiency of the compiler and the compiler 15017114237Snjloptions used during generation. 15018102550Siwasaki 15019102550Siwasaki Previous Release (12_05_01) 15020114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15021114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15022102550Siwasaki Current Release: 15023114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15024114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15025102550Siwasaki 15026102550Siwasaki 3) ASL Compiler, version X2034: 15027102550Siwasaki 15028114237SnjlNow checks for (and generates an error if detected) the use of a 15029114237SnjlBreak or Continue statement without an enclosing While statement. 15030102550Siwasaki 15031167802Sjkim 15032102550SiwasakiSuccessfully generated the compiler with the Intel 64-bit C 15033102550Siwasakicompiler. 15034102550Siwasaki 15035102550Siwasaki ---------------------------------------- 15036102550SiwasakiSummary of changes for this label: 12_05_01 15037102550Siwasaki 15038102550Siwasaki 1) ACPI CA Core Subsystem: 15039102550Siwasaki 15040102550SiwasakiThe ACPI 2.0 CopyObject operator is fully implemented. This 15041104470Siwasakioperator creates a new copy of an object (and is also used to 15042193267Sjkimbypass the "implicit conversion" mechanism of the Store operator.) 15043102550Siwasaki 15044102550SiwasakiThe ACPI 2.0 semantics for the SizeOf operator are fully 15045102550Siwasakiimplemented. The change is that performing a SizeOf on a 15046114237Snjlreference object causes an automatic dereference of the object to 15047114237Snjltha actual value before the size is evaluated. This behavior was 15048114237Snjlundefined in ACPI 1.0. 15049102550Siwasaki 15050114237SnjlThe ACPI 2.0 semantics for the Extended IRQ resource descriptor 15051114237Snjlhave been implemented. The interrupt polarity and mode are now 15052114237Snjlindependently set. 15053102550Siwasaki 15054114237SnjlFixed a problem where ASL Constants (Zero, One, Ones, Revision) 15055114237Snjlappearing in Package objects were not properly converted to 15056114237Snjlintegers when the internal Package was converted to an external 15057114237Snjlobject (via the AcpiEvaluateObject interface.) 15058102550Siwasaki 15059114237SnjlFixed a problem with the namespace object deletion mechanism for 15060114237Snjlobjects created by control methods. There were two parts to this 15061193267Sjkimproblem: 1) Objects created during the initialization phase method 15062193267Sjkimparse were not being deleted, and 2) The object owner ID mechanism 15063126372Snjlto track objects was broken. 15064102550Siwasaki 15065114237SnjlFixed a problem where the use of the ASL Scope operator within a 15066114237Snjlcontrol method would result in an invalid opcode exception. 15067102550Siwasaki 15068114237SnjlFixed a problem introduced in the previous label where the buffer 15069114237Snjllength required for the _PRT structure was not being returned 15070114237Snjlcorrectly. 15071102550Siwasaki 15072193267SjkimCode and Data Size: Current core subsystem library sizes are shown 15073126372Snjlbelow. These are the code and data sizes for the acpica.lib 15074114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 15075114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 15076114237Snjlversion of the code includes the debug output trace mechanism and 15077193267Sjkimhas a larger code and data size. Note that these values will vary 15078126372Snjldepending on the efficiency of the compiler and the compiler 15079114237Snjloptions used during generation. 15080102550Siwasaki 15081102550Siwasaki Previous Release (11_20_01) 15082114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15083114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15084102550Siwasaki 15085102550Siwasaki Current Release: 15086114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15087114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15088102550Siwasaki 15089102550Siwasaki 2) Linux: 15090102550Siwasaki 15091102550SiwasakiUpdated all files to apply cleanly against 2.4.16. 15092102550Siwasaki 15093104470SiwasakiAdded basic PCI Interrupt Routing Table (PRT) support for IA32 15094114237Snjl(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15095114237Snjlversion supports both static and dyanmic PRT entries, but dynamic 15096114237Snjlentries are treated as if they were static (not yet 15097114237Snjlreconfigurable). Architecture- specific code to use this data is 15098114237Snjlabsent on IA32 but should be available shortly. 15099102550Siwasaki 15100114237SnjlChanged the initialization sequence to start the ACPI interpreter 15101114237Snjl(acpi_init) prior to initialization of the PCI driver (pci_init) 15102114237Snjlin init/main.c. This ordering is required to support PRT and 15103114237Snjlfacilitate other (future) enhancement. A side effect is that the 15104193267SjkimACPI bus driver and certain device drivers can no longer be loaded 15105126372Snjlas modules. 15106102550Siwasaki 15107104470SiwasakiModified the 'make menuconfig' options to allow PCI Interrupt 15108104470SiwasakiRouting support to be included without the ACPI Bus and other 15109104470Siwasakidevice drivers. 15110102550Siwasaki 15111102550Siwasaki 3) ASL Compiler, version X2033: 15112102550Siwasaki 15113102550SiwasakiFixed some issues with the use of the new CopyObject and 15114102550SiwasakiDataTableRegion operators. Both are fully functional. 15115102550Siwasaki 15116102550Siwasaki ---------------------------------------- 15117102550SiwasakiSummary of changes for this label: 11_20_01 15118102550Siwasaki 15119102550Siwasaki 20 November 2001. Summary of changes for this release. 15120102550Siwasaki 15121102550Siwasaki 1) ACPI CA Core Subsystem: 15122102550Siwasaki 15123104470SiwasakiUpdated Index support to match ACPI 2.0 semantics. Storing a 15124193267SjkimInteger, String, or Buffer to an Index of a Buffer will store only 15125126372Snjlthe least-significant byte of the source to the Indexed buffer 15126126372Snjlbyte. Multiple writes are not performed. 15127102550Siwasaki 15128104470SiwasakiFixed a problem where the access type used in an AccessAs ASL 15129104470Siwasakioperator was not recorded correctly into the field object. 15130102550Siwasaki 15131102550SiwasakiFixed a problem where ASL Event objects were created in a 15132114237Snjlsignalled state. Events are now created in an unsignalled state. 15133102550Siwasaki 15134114237SnjlThe internal object cache is now purged after table loading and 15135114237Snjlinitialization to reduce the use of dynamic kernel memory -- on 15136114237Snjlthe assumption that object use is greatest during the parse phase 15137193267Sjkimof the entire table (versus the run-time use of individual control 15138126372Snjlmethods.) 15139102550Siwasaki 15140102550SiwasakiACPI 2.0 variable-length packages are now fully operational. 15141102550Siwasaki 15142193267SjkimCode and Data Size: Code and Data optimizations have permitted new 15143126372Snjlfeature development with an actual reduction in the library size. 15144126372SnjlCurrent core subsystem library sizes are shown below. These are 15145126372Snjlthe code and data sizes for the acpica.lib produced by the 15146193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 15147126372Snjlany ACPI driver or OSPM code. The debug version of the code 15148126372Snjlincludes the debug output trace mechanism and has a larger code 15149126372Snjland data size. Note that these values will vary depending on the 15150126372Snjlefficiency of the compiler and the compiler options used during 15151126372Snjlgeneration. 15152102550Siwasaki 15153102550Siwasaki Previous Release (11_09_01): 15154114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15155114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15156102550Siwasaki 15157102550Siwasaki Current Release: 15158114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15159114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15160102550Siwasaki 15161102550Siwasaki 2) Linux: 15162102550Siwasaki 15163114237SnjlEnhanced the ACPI boot-time initialization code to allow the use 15164114237Snjlof Local APIC tables for processor enumeration on IA-32, and to 15165114237Snjlpave the way for a fully MPS-free boot (on SMP systems) in the 15166114237Snjlnear future. This functionality replaces 15167114237Snjlarch/i386/kernel/acpitables.c, which was introduced in an earlier 15168114237Snjl2.4.15-preX release. To enable this feature you must add 15169114237Snjl"acpi_boot=on" to the kernel command line -- see the help entry 15170193267Sjkimfor CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15171126372Snjlthe works... 15172102550Siwasaki 15173114237SnjlRestructured the configuration options to allow boot-time table 15174114237Snjlparsing support without inclusion of the ACPI Interpreter (and 15175114237Snjlother) code. 15176102550Siwasaki 15177193267SjkimNOTE: This release does not include fixes for the reported events, 15178126372Snjlpower-down, and thermal passive cooling issues (coming soon). 15179102550Siwasaki 15180102550Siwasaki 3) ASL Compiler: 15181102550Siwasaki 15182114237SnjlAdded additional typechecking for Fields within restricted access 15183114237SnjlOperation Regions. All fields within EC and CMOS regions must be 15184114237Snjldeclared with ByteAcc. All fields withing SMBus regions must be 15185114237Snjldeclared with the BufferAcc access type. 15186102550Siwasaki 15187114237SnjlFixed a problem where the listing file output of control methods 15188114237Snjlno longer interleaved the actual AML code with the ASL source 15189114237Snjlcode. 15190102550Siwasaki 15191102550Siwasaki 15192102550Siwasaki 15193167802Sjkim 15194102550Siwasaki---------------------------------------- 15195102550SiwasakiSummary of changes for this label: 11_09_01 15196102550Siwasaki 15197102550Siwasaki1) ACPI CA Core Subsystem: 15198102550Siwasaki 15199114237SnjlImplemented ACPI 2.0-defined support for writes to fields with a 15200193267SjkimBuffer, String, or Integer source operand that is smaller than the 15201126372Snjltarget field. In these cases, the source operand is zero-extended 15202126372Snjlto fill the target field. 15203102550Siwasaki 15204104470SiwasakiFixed a problem where a Field starting bit offset (within the 15205104470Siwasakiparent operation region) was calculated incorrectly if the 15206167802Sjkim 15207104470Siwasakialignment of the field differed from the access width. This 15208114237Snjlaffected CreateWordField, CreateDwordField, CreateQwordField, and 15209114237Snjlpossibly other fields that use the "AccessAny" keyword. 15210102550Siwasaki 15211114237SnjlFixed a problem introduced in the 11_02_01 release where indirect 15212114237Snjlstores through method arguments did not operate correctly. 15213102550Siwasaki 15214102550Siwasaki2) Linux: 15215102550Siwasaki 15216102550SiwasakiImplemented boot-time ACPI table parsing support 15217114237Snjl(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15218114237Snjlfacilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15219114237Snjllegacy BIOS interfaces (e.g. MPS) for the configuration of system 15220193267Sjkimprocessors, memory, and interrupts during setup_arch(). Note that 15221126372Snjlthis patch does not include the required architecture-specific 15222126372Snjlchanges required to apply this information -- subsequent patches 15223126372Snjlwill be posted for both IA32 and IA64 to achieve this. 15224102550Siwasaki 15225114237SnjlAdded low-level sleep support for IA32 platforms, courtesy of Pat 15226114237SnjlMochel. This allows IA32 systems to transition to/from various 15227114237Snjlsleeping states (e.g. S1, S3), although the lack of a centralized 15228114237Snjldriver model and power-manageable drivers will prevent its 15229114237Snjl(successful) use on most systems. 15230102550Siwasaki 15231114237SnjlRevamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15232193267Sjkimsubmenu, unified IA32 and IA64 options, added new "Boot using ACPI 15233126372Snjltables" option, etc. 15234102550Siwasaki 15235114237SnjlIncreased the default timeout for the EC driver from 1ms to 10ms 15236114237Snjl(1000 cycles of 10us) to try to address AE_TIME errors during EC 15237114237Snjltransactions. 15238102550Siwasaki 15239102550Siwasaki ---------------------------------------- 15240102550SiwasakiSummary of changes for this label: 11_02_01 15241102550Siwasaki 15242102550Siwasaki1) ACPI CA Core Subsystem: 15243102550Siwasaki 15244102550SiwasakiACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15245102550Siwasaki(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15246102550Siwasakiimplemented. 15247102550Siwasaki 15248114237SnjlOSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15249114237Snjlchanges to support ACPI 2.0 Qword field access. Read/Write 15250193267SjkimPciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15251126372Snjlaccept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15252193267Sjkimthe value parameter for the address space handler interface is now 15253193267Sjkiman ACPI_INTEGER. OSL implementations of these interfaces must now 15254126372Snjlhandle the case where the Width parameter is 64. 15255102550Siwasaki 15256104470SiwasakiIndex Fields: Fixed a problem where unaligned bit assembly and 15257104470Siwasakidisassembly for IndexFields was not supported correctly. 15258102550Siwasaki 15259102550SiwasakiIndex and Bank Fields: Nested Index and Bank Fields are now 15260104470Siwasakisupported. During field access, a check is performed to ensure 15261114237Snjlthat the value written to an Index or Bank register is not out of 15262114237Snjlthe range of the register. The Index (or Bank) register is 15263114237Snjlwritten before each access to the field data. Future support will 15264114237Snjlinclude allowing individual IndexFields to be wider than the 15265114237SnjlDataRegister width. 15266102550Siwasaki 15267114237SnjlFields: Fixed a problem where the AML interpreter was incorrectly 15268114237Snjlattempting to write beyond the end of a Field/OpRegion. This was 15269114237Snjla boundary case that occurred when a DWORD field was written to a 15270114237SnjlBYTE access OpRegion, forcing multiple writes and causing the 15271114237Snjlinterpreter to write one datum too many. 15272102550Siwasaki 15273102550SiwasakiFields: Fixed a problem with Field/OpRegion access where the 15274114237Snjlstarting bit address of a field was incorrectly calculated if the 15275114237Snjlcurrent access type was wider than a byte (WordAcc, DwordAcc, or 15276114237SnjlQwordAcc). 15277102550Siwasaki 15278104470SiwasakiFields: Fixed a problem where forward references to individual 15279193267SjkimFieldUnits (individual Field names within a Field definition) were 15280126372Snjlnot resolved during the AML table load. 15281102550Siwasaki 15282104470SiwasakiFields: Fixed a problem where forward references from a Field 15283104470Siwasakidefinition to the parent Operation Region definition were not 15284104470Siwasakiresolved during the AML table load. 15285104470Siwasaki 15286114237SnjlFields: Duplicate FieldUnit names within a scope are now detected 15287114237Snjlduring AML table load. 15288102550Siwasaki 15289193267SjkimAcpi Interfaces: Fixed a problem where the AcpiGetName() interface 15290126372Snjlreturned an incorrect name for the root node. 15291102550Siwasaki 15292193267SjkimCode and Data Size: Code and Data optimizations have permitted new 15293126372Snjlfeature development with an actual reduction in the library size. 15294126372SnjlCurrent core subsystem library sizes are shown below. These are 15295126372Snjlthe code and data sizes for the acpica.lib produced by the 15296193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 15297126372Snjlany ACPI driver or OSPM code. The debug version of the code 15298126372Snjlincludes the debug output trace mechanism and has a larger code 15299126372Snjland data size. Note that these values will vary depending on the 15300126372Snjlefficiency of the compiler and the compiler options used during 15301126372Snjlgeneration. 15302102550Siwasaki 15303102550Siwasaki Previous Release (10_18_01): 15304114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15305114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15306102550Siwasaki 15307102550Siwasaki Current Release: 15308114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15309114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15310102550Siwasaki 15311102550Siwasaki 2) Linux: 15312102550Siwasaki 15313102550SiwasakiImproved /proc processor output (Pavel Machek) Re-added 15314102550SiwasakiMODULE_LICENSE("GPL") to all modules. 15315102550Siwasaki 15316102550Siwasaki 3) ASL Compiler version X2030: 15317102550Siwasaki 15318104470SiwasakiDuplicate FieldUnit names within a scope are now detected and 15319104470Siwasakiflagged as errors. 15320102550Siwasaki 15321102550Siwasaki 4) Documentation: 15322102550Siwasaki 15323104470SiwasakiProgrammer Reference updated to reflect OSL and address space 15324104470Siwasakihandler interface changes described above. 15325102550Siwasaki 15326102550Siwasaki---------------------------------------- 15327102550SiwasakiSummary of changes for this label: 10_18_01 15328102550Siwasaki 15329102550SiwasakiACPI CA Core Subsystem: 15330102550Siwasaki 15331193267SjkimFixed a problem with the internal object reference count mechanism 15332126372Snjlthat occasionally caused premature object deletion. This resolves 15333126372Snjlall of the outstanding problem reports where an object is deleted 15334193267Sjkimin the middle of an interpreter evaluation. Although this problem 15335126372Snjlonly showed up in rather obscure cases, the solution to the 15336126372Snjlproblem involved an adjustment of all reference counts involving 15337126372Snjlobjects attached to namespace nodes. 15338102550Siwasaki 15339102550SiwasakiFixed a problem with Field support in the interpreter where 15340114237Snjlwriting to an aligned field whose length is an exact multiple (2 15341193267Sjkimor greater) of the field access granularity would cause an attempt 15342126372Snjlto write beyond the end of the field. 15343102550Siwasaki 15344102550SiwasakiThe top level AML opcode execution functions within the 15345102550Siwasakiinterpreter have been renamed with a more meaningful and 15346102550Siwasakiconsistent naming convention. The modules exmonad.c and 15347102550Siwasakiexdyadic.c were eliminated. New modules are exoparg1.c, 15348102550Siwasakiexoparg2.c, exoparg3.c, and exoparg6.c. 15349102550Siwasaki 15350114237SnjlSupport for the ACPI 2.0 "Mid" ASL operator has been implemented. 15351102550Siwasaki 15352114237SnjlFixed a problem where the AML debugger was causing some internal 15353114237Snjlobjects to not be deleted during subsystem termination. 15354102550Siwasaki 15355104470SiwasakiFixed a problem with the external AcpiEvaluateObject interface 15356104470Siwasakiwhere the subsystem would fault if the named object to be 15357104470Siwasakievaluated refered to a constant such as Zero, Ones, etc. 15358102550Siwasaki 15359102550SiwasakiFixed a problem with IndexFields and BankFields where the 15360114237Snjlsubsystem would fault if the index, data, or bank registers were 15361114237Snjlnot defined in the same scope as the field itself. 15362102550Siwasaki 15363104470SiwasakiAdded printf format string checking for compilers that support 15364104470Siwasakithis feature. Corrected more than 50 instances of issues with 15365104470Siwasakiformat specifiers within invocations of ACPI_DEBUG_PRINT 15366104470Siwasakithroughout the core subsystem code. 15367102550Siwasaki 15368104470SiwasakiThe ASL "Revision" operator now returns the ACPI support level 15369193267Sjkimimplemented in the core - the value "2" since the ACPI 2.0 support 15370126372Snjlis more than 50% implemented. 15371102550Siwasaki 15372114237SnjlEnhanced the output of the AML debugger "dump namespace" command 15373114237Snjlto output in a more human-readable form. 15374102550Siwasaki 15375114237SnjlCurrent core subsystem library code sizes are shown below. These 15376167802Sjkim 15377114237Snjlare the code and data sizes for the acpica.lib produced by the 15378193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 15379126372Snjlany ACPI driver or OSPM code. The debug version of the code 15380126372Snjlincludes the full debug trace mechanism -- leading to a much 15381167802Sjkim 15382114237Snjllarger code and data size. Note that these values will vary 15383114237Snjldepending on the efficiency of the compiler and the compiler 15384114237Snjloptions used during generation. 15385102550Siwasaki 15386102550Siwasaki Previous Label (09_20_01): 15387114237Snjl Non-Debug Version: 65K Code, 5K Data, 70K Total 15388114237Snjl Debug Version: 138K Code, 58K Data, 196K Total 15389102550Siwasaki 15390102550Siwasaki This Label: 15391102550Siwasaki 15392114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15393114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15394114237Snjl 15395102550SiwasakiLinux: 15396102550Siwasaki 15397104470SiwasakiImplemented a "Bad BIOS Blacklist" to track machines that have 15398104470Siwasakiknown ASL/AML problems. 15399102550Siwasaki 15400193267SjkimEnhanced the /proc interface for the thermal zone driver and added 15401126372Snjlsupport for _HOT (the critical suspend trip point). The 'info' 15402193267Sjkimfile now includes threshold/policy information, and allows setting 15403126372Snjlof _SCP (cooling preference) and _TZP (polling frequency) values 15404193267Sjkimto the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15405126372Snjlfrequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15406126372Snjlpreference to the passive/quiet mode (if supported by the ASL). 15407102550Siwasaki 15408104470SiwasakiImplemented a workaround for a gcc bug that resuted in an OOPs 15409104470Siwasakiwhen loading the control method battery driver. 15410102550Siwasaki 15411102550Siwasaki ---------------------------------------- 15412102550SiwasakiSummary of changes for this label: 09_20_01 15413102550Siwasaki 15414102550Siwasaki ACPI CA Core Subsystem: 15415102550Siwasaki 15416104470SiwasakiThe AcpiEnableEvent and AcpiDisableEvent interfaces have been 15417104470Siwasakimodified to allow individual GPE levels to be flagged as wake- 15418114237Snjlenabled (i.e., these GPEs are to remain enabled when the platform 15419114237Snjlsleeps.) 15420102550Siwasaki 15421104470SiwasakiThe AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15422104470Siwasakisupport wake-enabled GPEs. This means that upon entering the 15423104470Siwasakisleep state, all GPEs that are not wake-enabled are disabled. 15424104470SiwasakiWhen leaving the sleep state, these GPEs are reenabled. 15425102550Siwasaki 15426114237SnjlA local double-precision divide/modulo module has been added to 15427114237Snjlenhance portability to OS kernels where a 64-bit math library is 15428114237Snjlnot available. The new module is "utmath.c". 15429102550Siwasaki 15430104470SiwasakiSeveral optimizations have been made to reduce the use of CPU 15431114237Snjlstack. Originally over 2K, the maximum stack usage is now below 15432114237Snjl2K at 1860 bytes (1.82k) 15433102550Siwasaki 15434114237SnjlFixed a problem with the AcpiGetFirmwareTable interface where the 15435193267Sjkimroot table pointer was not mapped into a logical address properly. 15436102550Siwasaki 15437193267SjkimFixed a problem where a NULL pointer was being dereferenced in the 15438126372Snjlinterpreter code for the ASL Notify operator. 15439102550Siwasaki 15440102550SiwasakiFixed a problem where the use of the ASL Revision operator 15441114237Snjlreturned an error. This operator now returns the current version 15442114237Snjlof the ACPI CA core subsystem. 15443102550Siwasaki 15444114237SnjlFixed a problem where objects passed as control method parameters 15445114237Snjlto AcpiEvaluateObject were always deleted at method termination. 15446114237SnjlHowever, these objects may end up being stored into the namespace 15447114237Snjlby the called method. The object reference count mechanism was 15448114237Snjlapplied to these objects instead of a force delete. 15449102550Siwasaki 15450114237SnjlFixed a problem where static strings or buffers (contained in the 15451114237SnjlAML code) that are declared as package elements within the ASL 15452114237Snjlcode could cause a fault because the interpreter would attempt to 15453114237Snjldelete them. These objects are now marked with the "static 15454114237Snjlobject" flag to prevent any attempt to delete them. 15455102550Siwasaki 15456114237SnjlImplemented an interpreter optimization to use operands directly 15457114237Snjlfrom the state object instead of extracting the operands to local 15458114237Snjlvariables. This reduces stack use and code size, and improves 15459114237Snjlperformance. 15460102550Siwasaki 15461193267SjkimThe module exxface.c was eliminated as it was an unnecessary extra 15462126372Snjllayer of code. 15463102550Siwasaki 15464114237SnjlCurrent core subsystem library code sizes are shown below. These 15465114237Snjlare the code and data sizes for the acpica.lib produced by the 15466193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 15467126372Snjlany ACPI driver or OSPM code. The debug version of the code 15468126372Snjlincludes the full debug trace mechanism -- leading to a much 15469114237Snjllarger code and data size. Note that these values will vary 15470114237Snjldepending on the efficiency of the compiler and the compiler 15471114237Snjloptions used during generation. 15472102550Siwasaki 15473102550Siwasaki Non-Debug Version: 65K Code, 5K Data, 70K Total 15474114237Snjl(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 15475114237SnjlTotal (Previously 195K) 15476102550Siwasaki 15477102550SiwasakiLinux: 15478102550Siwasaki 15479114237SnjlSupport for ACPI 2.0 64-bit integers has been added. All ACPI 15480114237SnjlInteger objects are now 64 bits wide 15481102550Siwasaki 15482114237SnjlAll Acpi data types and structures are now in lower case. Only 15483114237SnjlAcpi macros are upper case for differentiation. 15484102550Siwasaki 15485102550Siwasaki Documentation: 15486102550Siwasaki 15487102550SiwasakiChanges to the external interfaces as described above. 15488102550Siwasaki 15489102550Siwasaki ---------------------------------------- 15490102550SiwasakiSummary of changes for this label: 08_31_01 15491102550Siwasaki 15492102550Siwasaki ACPI CA Core Subsystem: 15493102550Siwasaki 15494114237SnjlA bug with interpreter implementation of the ASL Divide operator 15495114237Snjlwas found and fixed. The implicit function return value (not the 15496114237Snjlexplicit store operands) was returning the remainder instead of 15497114237Snjlthe quotient. This was a longstanding bug and it fixes several 15498114237Snjlknown outstanding issues on various platforms. 15499102550Siwasaki 15500104470SiwasakiThe ACPI_DEBUG_PRINT and function trace entry/exit macros have 15501193267Sjkimbeen further optimized for size. There are 700 invocations of the 15502126372SnjlDEBUG_PRINT macro alone, so each optimization reduces the size of 15503126372Snjlthe debug version of the subsystem significantly. 15504102550Siwasaki 15505114237SnjlA stack trace mechanism has been implemented. The maximum stack 15506193267Sjkimusage is about 2K on 32-bit platforms. The debugger command "stat 15507126372Snjlstack" will display the current maximum stack usage. 15508102550Siwasaki 15509114237SnjlAll public symbols and global variables within the subsystem are 15510114237Snjlnow prefixed with the string "Acpi". This keeps all of the 15511114237Snjlsymbols grouped together in a kernel map, and avoids conflicts 15512114237Snjlwith other kernel subsystems. 15513102550Siwasaki 15514114237SnjlMost of the internal fixed lookup tables have been moved into the 15515114237Snjlcode segment via the const operator. 15516102550Siwasaki 15517104470SiwasakiSeveral enhancements have been made to the interpreter to both 15518104470Siwasakireduce the code size and improve performance. 15519102550Siwasaki 15520114237SnjlCurrent core subsystem library code sizes are shown below. These 15521114237Snjlare the code and data sizes for the acpica.lib produced by the 15522193267SjkimMicrosoft Visual C++ 6.0 compiler, and these values do not include 15523126372Snjlany ACPI driver or OSPM code. The debug version of the code 15524126372Snjlincludes the full debug trace mechanism which contains over 700 15525126372Snjlinvocations of the DEBUG_PRINT macro, 500 function entry macro 15526126372Snjlinvocations, and over 900 function exit macro invocations -- 15527126372Snjlleading to a much larger code and data size. Note that these 15528114237Snjlvalues will vary depending on the efficiency of the compiler and 15529114237Snjlthe compiler options used during generation. 15530102550Siwasaki 15531102550Siwasaki Non-Debug Version: 64K Code, 5K Data, 69K Total 15532102550SiwasakiDebug Version: 137K Code, 58K Data, 195K Total 15533102550Siwasaki 15534102550Siwasaki Linux: 15535102550Siwasaki 15536104470SiwasakiImplemented wbinvd() macro, pending a kernel-wide definition. 15537102550Siwasaki 15538102550SiwasakiFixed /proc/acpi/event to handle poll() and short reads. 15539102550Siwasaki 15540102550Siwasaki ASL Compiler, version X2026: 15541102550Siwasaki 15542104470SiwasakiFixed a problem introduced in the previous label where the AML 15543167802Sjkim 15544104470Siwasakicode emitted for package objects produced packages with zero 15545104470Siwasakilength. 15546102550Siwasaki 15547102550Siwasaki ---------------------------------------- 15548102550SiwasakiSummary of changes for this label: 08_16_01 15549102550Siwasaki 15550102550SiwasakiACPI CA Core Subsystem: 15551102550Siwasaki 15552114237SnjlThe following ACPI 2.0 ASL operators have been implemented in the 15553114237SnjlAML interpreter (These are already supported by the Intel ASL 15554193267Sjkimcompiler): ToDecimalString, ToHexString, ToString, ToInteger, and 15555126372SnjlToBuffer. Support for 64-bit AML constants is implemented in the 15556126372SnjlAML parser, debugger, and disassembler. 15557102550Siwasaki 15558114237SnjlThe internal memory tracking mechanism (leak detection code) has 15559114237Snjlbeen upgraded to reduce the memory overhead (a separate tracking 15560114237Snjlblock is no longer allocated for each memory allocation), and now 15561114237Snjlsupports all of the internal object caches. 15562102550Siwasaki 15563114237SnjlThe data structures and code for the internal object caches have 15564114237Snjlbeen coelesced and optimized so that there is a single cache and 15565114237Snjlmemory list data structure and a single group of functions that 15566114237Snjlimplement generic cache management. This has reduced the code 15567114237Snjlsize in both the debug and release versions of the subsystem. 15568102550Siwasaki 15569193267SjkimThe DEBUG_PRINT macro(s) have been optimized for size and replaced 15570126372Snjlby ACPI_DEBUG_PRINT. The syntax for this macro is slightly 15571126372Snjldifferent, because it generates a single call to an internal 15572126372Snjlfunction. This results in a savings of about 90 bytes per 15573193267Sjkiminvocation, resulting in an overall code and data savings of about 15574126372Snjl16% in the debug version of the subsystem. 15575102550Siwasaki 15576102550Siwasaki Linux: 15577102550Siwasaki 15578114237SnjlFixed C3 disk corruption problems and re-enabled C3 on supporting 15579114237Snjlmachines. 15580102550Siwasaki 15581102550SiwasakiIntegrated low-level sleep code by Patrick Mochel. 15582102550Siwasaki 15583102550SiwasakiFurther tweaked source code Linuxization. 15584102550Siwasaki 15585102550SiwasakiOther minor fixes. 15586102550Siwasaki 15587102550Siwasaki ASL Compiler: 15588102550Siwasaki 15589114237SnjlSupport for ACPI 2.0 variable length packages is fixed/completed. 15590102550Siwasaki 15591114237SnjlFixed a problem where the optional length parameter for the ACPI 15592114237Snjl2.0 ToString operator. 15593102550Siwasaki 15594114237SnjlFixed multiple extraneous error messages when a syntax error is 15595114237Snjldetected within the declaration line of a control method. 15596102550Siwasaki 15597102550Siwasaki ---------------------------------------- 15598102550SiwasakiSummary of changes for this label: 07_17_01 15599102550Siwasaki 15600102550SiwasakiACPI CA Core Subsystem: 15601102550Siwasaki 15602104470SiwasakiAdded a new interface named AcpiGetFirmwareTable to obtain any 15603193267SjkimACPI table via the ACPI signature. The interface can be called at 15604126372Snjlany time during kernel initialization, even before the kernel 15605193267Sjkimvirtual memory manager is initialized and paging is enabled. This 15606126372Snjlallows kernel subsystems to obtain ACPI tables very early, even 15607126372Snjlbefore the ACPI CA subsystem is initialized. 15608102550Siwasaki 15609104470SiwasakiFixed a problem where Fields defined with the AnyAcc attribute 15610104470Siwasakicould be resolved to the incorrect address under the following 15611114237Snjlconditions: 1) the field width is larger than 8 bits and 2) the 15612114237Snjlparent operation region is not defined on a DWORD boundary. 15613102550Siwasaki 15614114237SnjlFixed a problem where the interpreter is not being locked during 15615114237Snjlnamespace initialization (during execution of the _INI control 15616114237Snjlmethods), causing an error when an attempt is made to release it 15617114237Snjllater. 15618102550Siwasaki 15619104470SiwasakiACPI 2.0 support in the AML Interpreter has begun and will be 15620114237Snjlongoing throughout the rest of this year. In this label, The Mod 15621114237Snjloperator is implemented. 15622102550Siwasaki 15623102550SiwasakiAdded a new data type to contain full PCI addresses named 15624193267SjkimACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 15625126372Snjland Function values. 15626102550Siwasaki 15627102550Siwasaki Linux: 15628102550Siwasaki 15629102550SiwasakiEnhanced the Linux version of the source code to change most 15630102550Siwasakicapitalized ACPI type names to lowercase. For example, all 15631114237Snjlinstances of ACPI_STATUS are changed to acpi_status. This will 15632114237Snjlresult in a large diff, but the change is strictly cosmetic and 15633114237Snjlaligns the CA code closer to the Linux coding standard. 15634102550Siwasaki 15635102550SiwasakiOSL Interfaces: 15636102550Siwasaki 15637193267SjkimThe interfaces to the PCI configuration space have been changed to 15638193267Sjkimadd the PCI Segment number and to split the single 32-bit combined 15639126372SnjlDeviceFunction field into two 16-bit fields. This was 15640114237Snjlaccomplished by moving the four values that define an address in 15641114237SnjlPCI configuration space (segment, bus, device, and function) to 15642114237Snjlthe new ACPI_PCI_ID structure. 15643102550Siwasaki 15644104470SiwasakiThe changes to the PCI configuration space interfaces led to a 15645104470Siwasakireexamination of the complete set of address space access 15646114237Snjlinterfaces for PCI, I/O, and Memory. The previously existing 18 15647114237Snjlinterfaces have proven difficult to maintain (any small change 15648193267Sjkimmust be propagated across at least 6 interfaces) and do not easily 15649193267Sjkimallow for future expansion to 64 bits if necessary. Also, on some 15650126372Snjlsystems, it would not be appropriate to demultiplex the access 15651126372Snjlwidth (8, 16, 32,or 64) before calling the OSL if the 15652114237Snjlcorresponding native OS interfaces contain a similar access width 15653114237Snjlparameter. For these reasons, the 18 address space interfaces 15654114237Snjlhave been replaced by these 6 new ones: 15655102550Siwasaki 15656102550SiwasakiAcpiOsReadPciConfiguration 15657102550SiwasakiAcpiOsWritePciConfiguration 15658102550SiwasakiAcpiOsReadMemory 15659102550SiwasakiAcpiOsWriteMemory 15660102550SiwasakiAcpiOsReadPort 15661102550SiwasakiAcpiOsWritePort 15662102550Siwasaki 15663114237SnjlAdded a new interface named AcpiOsGetRootPointer to allow the OSL 15664114237Snjlto perform the platform and/or OS-specific actions necessary to 15665114237Snjlobtain the ACPI RSDP table pointer. On IA-32 platforms, this 15666114237Snjlinterface will simply call down to the CA core to perform the low- 15667114237Snjlmemory search for the table. On IA-64, the RSDP is obtained from 15668114237SnjlEFI. Migrating this interface to the OSL allows the CA core to 15669167802Sjkim 15670114237Snjlremain OS and platform independent. 15671102550Siwasaki 15672104470SiwasakiAdded a new interface named AcpiOsSignal to provide a generic 15673114237Snjl"function code and pointer" interface for various miscellaneous 15674114237Snjlsignals and notifications that must be made to the host OS. The 15675114237Snjlfirst such signals are intended to support the ASL Fatal and 15676114237SnjlBreakpoint operators. In the latter case, the AcpiOsBreakpoint 15677114237Snjlinterface has been obsoleted. 15678102550Siwasaki 15679102550SiwasakiThe definition of the AcpiFormatException interface has been 15680114237Snjlchanged to simplify its use. The caller no longer must supply a 15681114237Snjlbuffer to the call; A pointer to a const string is now returned 15682114237Snjldirectly. This allows the call to be easily used in printf 15683114237Snjlstatements, etc. since the caller does not have to manage a local 15684114237Snjlbuffer. 15685102550Siwasaki 15686114237Snjl 15687102550Siwasaki ASL Compiler, Version X2025: 15688102550Siwasaki 15689114237SnjlThe ACPI 2.0 Switch/Case/Default operators have been implemented 15690114237Snjland are fully functional. They will work with all ACPI 1.0 15691193267Sjkiminterpreters, since the operators are simply translated to If/Else 15692126372Snjlpairs. 15693102550Siwasaki 15694104470SiwasakiThe ACPI 2.0 ElseIf operator is implemented and will also work 15695104470Siwasakiwith 1.0 interpreters, for the same reason. 15696102550Siwasaki 15697114237SnjlImplemented support for ACPI 2.0 variable-length packages. These 15698114237Snjlpackages have a separate opcode, and their size is determined by 15699114237Snjlthe interpreter at run-time. 15700102550Siwasaki 15701193267SjkimDocumentation The ACPI CA Programmer Reference has been updated to 15702126372Snjlreflect the new interfaces and changes to existing interfaces. 15703102550Siwasaki 15704102550Siwasaki ------------------------------------------ 15705102550SiwasakiSummary of changes for this label: 06_15_01 15706102550Siwasaki 15707102550Siwasaki ACPI CA Core Subsystem: 15708102550Siwasaki 15709102550SiwasakiFixed a problem where a DWORD-accessed field within a Buffer 15710114237Snjlobject would get its byte address inadvertently rounded down to 15711114237Snjlthe nearest DWORD. Buffers are always Byte-accessible. 15712102550Siwasaki 15713102550Siwasaki ASL Compiler, version X2024: 15714102550Siwasaki 15715114237SnjlFixed a problem where the Switch() operator would either fault or 15716114237Snjlhang the compiler. Note however, that the AML code for this ACPI 15717114237Snjl2.0 operator is not yet implemented. 15718102550Siwasaki 15719114237SnjlCompiler uses the new AcpiOsGetTimer interface to obtain compile 15720114237Snjltimings. 15721102550Siwasaki 15722114237SnjlImplementation of the CreateField operator automatically converts 15723114237Snjla reference to a named field within a resource descriptor from a 15724114237Snjlbyte offset to a bit offset if required. 15725102550Siwasaki 15726102550SiwasakiAdded some missing named fields from the resource descriptor 15727193267Sjkimsupport. These are the names that are automatically created by the 15728126372Snjlcompiler to reference fields within a descriptor. They are only 15729126372Snjlvalid at compile time and are not passed through to the AML 15730114237Snjlinterpreter. 15731102550Siwasaki 15732104470SiwasakiResource descriptor named fields are now typed as Integers and 15733104470Siwasakisubject to compile-time typechecking when used in expressions. 15734102550Siwasaki 15735102550Siwasaki ------------------------------------------ 15736102550SiwasakiSummary of changes for this label: 05_18_01 15737102550Siwasaki 15738102550Siwasaki ACPI CA Core Subsystem: 15739102550Siwasaki 15740114237SnjlFixed a couple of problems in the Field support code where bits 15741193267Sjkimfrom adjacent fields could be returned along with the proper field 15742126372Snjlbits. Restructured the field support code to improve performance, 15743126372Snjlreadability and maintainability. 15744102550Siwasaki 15745114237SnjlNew DEBUG_PRINTP macro automatically inserts the procedure name 15746114237Snjlinto the output, saving hundreds of copies of procedure name 15747114237Snjlstrings within the source, shrinking the memory footprint of the 15748114237Snjldebug version of the core subsystem. 15749102550Siwasaki 15750102550Siwasaki Source Code Structure: 15751102550Siwasaki 15752104470SiwasakiThe source code directory tree was restructured to reflect the 15753114237Snjlcurrent organization of the component architecture. Some files 15754114237Snjland directories have been moved and/or renamed. 15755102550Siwasaki 15756102550Siwasaki Linux: 15757102550Siwasaki 15758102550SiwasakiFixed leaking kacpidpc processes. 15759102550Siwasaki 15760102550SiwasakiFixed queueing event data even when /proc/acpi/event is not 15761102550Siwasakiopened. 15762102550Siwasaki 15763102550Siwasaki ASL Compiler, version X2020: 15764102550Siwasaki 15765114237SnjlMemory allocation performance enhancement - over 24X compile time 15766114237Snjlimprovement on large ASL files. Parse nodes and namestring 15767114237Snjlbuffers are now allocated from a large internal compiler buffer. 15768102550Siwasaki 15769102550SiwasakiThe temporary .SRC file is deleted unless the "-s" option is 15770102550Siwasakispecified 15771102550Siwasaki 15772193267SjkimThe "-d" debug output option now sends all output to the .DBG file 15773126372Snjlinstead of the console. 15774102550Siwasaki 15775102550Siwasaki"External" second parameter is now optional 15776102550Siwasaki 15777102550Siwasaki"ElseIf" syntax now properly allows the predicate 15778102550Siwasaki 15779102550SiwasakiLast operand to "Load" now recognized as a Target operand 15780102550Siwasaki 15781102550SiwasakiDebug object can now be used anywhere as a normal object. 15782102550Siwasaki 15783102550SiwasakiResourceTemplate now returns an object of type BUFFER 15784102550Siwasaki 15785102550SiwasakiEISAID now returns an object of type INTEGER 15786102550Siwasaki 15787102550Siwasaki"Index" now works with a STRING operand 15788102550Siwasaki 15789102550Siwasaki"LoadTable" now accepts optional parameters 15790102550Siwasaki 15791102550Siwasaki"ToString" length parameter is now optional 15792102550Siwasaki 15793102550Siwasaki"Interrupt (ResourceType," parse error fixed. 15794102550Siwasaki 15795104470Siwasaki"Register" with a user-defined region space parse error fixed 15796102550Siwasaki 15797114237SnjlEscaped backslash at the end of a string ("\\") scan/parse error 15798114237Snjlfixed 15799102550Siwasaki 15800102550Siwasaki"Revision" is now an object of type INTEGER. 15801102550Siwasaki 15802102550Siwasaki 15803102550Siwasaki 15804102550Siwasaki------------------------------------------ 15805102550SiwasakiSummary of changes for this label: 05_02_01 15806102550Siwasaki 15807102550SiwasakiLinux: 15808102550Siwasaki 15809102550Siwasaki/proc/acpi/event now blocks properly. 15810102550Siwasaki 15811102550SiwasakiRemoved /proc/sys/acpi. You can still dump your DSDT from 15812102550Siwasaki/proc/acpi/dsdt. 15813102550Siwasaki 15814102550Siwasaki ACPI CA Core Subsystem: 15815102550Siwasaki 15816193267SjkimFixed a problem introduced in the previous label where some of the 15817126372Snjl"small" resource descriptor types were not recognized. 15818102550Siwasaki 15819193267SjkimImproved error messages for the case where an ASL Field is outside 15820126372Snjlthe range of the parent operation region. 15821102550Siwasaki 15822102550Siwasaki ASL Compiler, version X2018: 15823102550Siwasaki 15824167802Sjkim 15825193267SjkimAdded error detection for ASL Fields that extend beyond the length 15826126372Snjlof the parent operation region (only if the length of the region 15827126372Snjlis known at compile time.) This includes fields that have a 15828126372Snjlminimum access width that is smaller than the parent region, and 15829126372Snjlindividual field units that are partially or entirely beyond the 15830126372Snjlextent of the parent. 15831102550Siwasaki 15832102550Siwasaki 15833102550Siwasaki 15834102550Siwasaki------------------------------------------ 15835102550SiwasakiSummary of changes for this label: 04_27_01 15836102550Siwasaki 15837102550Siwasaki ACPI CA Core Subsystem: 15838102550Siwasaki 15839193267SjkimFixed a problem where the namespace mutex could be released at the 15840126372Snjlwrong time during execution of AcpiRemoveAddressSpaceHandler. 15841102550Siwasaki 15842104470SiwasakiAdded optional thread ID output for debug traces, to simplify 15843114237Snjldebugging of multiple threads. Added context switch notification 15844114237Snjlwhen the debug code realizes that a different thread is now 15845114237Snjlexecuting ACPI code. 15846102550Siwasaki 15847114237SnjlSome additional external data types have been prefixed with the 15848114237Snjlstring "ACPI_" for consistency. This may effect existing code. 15849193267SjkimThe data types affected are the external callback typedefs - e.g., 15850167802Sjkim 15851126372SnjlWALK_CALLBACK becomes ACPI_WALK_CALLBACK. 15852102550Siwasaki 15853102550Siwasaki Linux: 15854102550Siwasaki 15855102550SiwasakiFixed an issue with the OSL semaphore implementation where a 15856102550Siwasakithread was waking up with an error from receiving a SIGCHLD 15857102550Siwasakisignal. 15858102550Siwasaki 15859114237SnjlLinux version of ACPI CA now uses the system C library for string 15860114237Snjlmanipulation routines instead of a local implementation. 15861102550Siwasaki 15862102550SiwasakiCleaned up comments and removed TBDs. 15863102550Siwasaki 15864102550Siwasaki ASL Compiler, version X2017: 15865102550Siwasaki 15866102550SiwasakiEnhanced error detection and reporting for all file I/O 15867102550Siwasakioperations. 15868102550Siwasaki 15869102550Siwasaki Documentation: 15870102550Siwasaki 15871102550SiwasakiProgrammer Reference updated to version 1.06. 15872102550Siwasaki 15873102550Siwasaki 15874102550Siwasaki 15875102550Siwasaki------------------------------------------ 15876102550SiwasakiSummary of changes for this label: 04_13_01 15877102550Siwasaki 15878102550Siwasaki ACPI CA Core Subsystem: 15879102550Siwasaki 15880102550SiwasakiRestructured support for BufferFields and RegionFields. 15881104470SiwasakiBankFields support is now fully operational. All known 32-bit 15882114237Snjllimitations on field sizes have been removed. Both BufferFields 15883114237Snjland (Operation) RegionFields are now supported by the same field 15884114237Snjlmanagement code. 15885102550Siwasaki 15886114237SnjlResource support now supports QWORD address and IO resources. The 15887114237Snjl16/32/64 bit address structures and the Extended IRQ structure 15888114237Snjlhave been changed to properly handle Source Resource strings. 15889102550Siwasaki 15890114237SnjlA ThreadId of -1 is now used to indicate a "mutex not acquired" 15891193267Sjkimcondition internally and must never be returned by AcpiOsThreadId. 15892126372SnjlThis reserved value was changed from 0 since Unix systems allow a 15893126372Snjlthread ID of 0. 15894102550Siwasaki 15895102550SiwasakiLinux: 15896102550Siwasaki 15897102550SiwasakiDriver code reorganized to enhance portability 15898102550Siwasaki 15899102550SiwasakiAdded a kernel configuration option to control ACPI_DEBUG 15900102550Siwasaki 15901102550SiwasakiFixed the EC driver to honor _GLK. 15902102550Siwasaki 15903102550SiwasakiASL Compiler, version X2016: 15904102550Siwasaki 15905114237SnjlFixed support for the "FixedHw" keyword. Previously, the FixedHw 15906114237Snjladdress space was set to 0, not 0x7f as it should be. 15907102550Siwasaki 15908102550Siwasaki ------------------------------------------ 15909102550SiwasakiSummary of changes for this label: 03_13_01 15910102550Siwasaki 15911102550Siwasaki ACPI CA Core Subsystem: 15912102550Siwasaki 15913104470SiwasakiDuring ACPI initialization, the _SB_._INI method is now run if 15914104470Siwasakipresent. 15915102550Siwasaki 15916193267SjkimNotify handler fix - notifies are deferred until the parent method 15917126372Snjlcompletes execution. This fixes the "mutex already acquired" 15918126372Snjlissue seen occasionally. 15919102550Siwasaki 15920104470SiwasakiPart of the "implicit conversion" rules in ACPI 2.0 have been 15921114237Snjlfound to cause compatibility problems with existing ASL/AML. The 15922114237Snjlconvert "result-to-target-type" implementation has been removed 15923114237Snjlfor stores to method Args and Locals. Source operand conversion 15924114237Snjlis still fully implemented. Possible changes to ACPI 2.0 15925114237Snjlspecification pending. 15926102550Siwasaki 15927104470SiwasakiFix to AcpiRsCalculatePciRoutingTableLength to return correct 15928104470Siwasakilength. 15929102550Siwasaki 15930102550SiwasakiFix for compiler warnings for 64-bit compiles. 15931102550Siwasaki 15932102550Siwasaki Linux: 15933102550Siwasaki 15934102550Siwasaki/proc output aligned for easier parsing. 15935102550Siwasaki 15936102550SiwasakiRelease-version compile problem fixed. 15937102550Siwasaki 15938104470SiwasakiNew kernel configuration options documented in Configure.help. 15939102550Siwasaki 15940102550SiwasakiIBM 600E - Fixed Sleep button may generate "Invalid <NULL> 15941102550Siwasakicontext" message. 15942102550Siwasaki 15943102550Siwasaki OSPM: 15944102550Siwasaki 15945102550SiwasakiPower resource driver integrated with bus manager. 15946102550Siwasaki 15947102550SiwasakiFixed kernel fault during active cooling for thermal zones. 15948102550Siwasaki 15949102550SiwasakiSource Code: 15950102550Siwasaki 15951102550SiwasakiThe source code tree has been restructured. 15952102550Siwasaki 15953102550Siwasaki 15954102550Siwasaki 15955102550Siwasaki------------------------------------------ 15956102550SiwasakiSummary of changes for this label: 03_02_01 15957102550Siwasaki 15958102550Siwasaki Linux OS Services Layer (OSL): 15959102550Siwasaki 15960102550SiwasakiMajor revision of all Linux-specific code. 15961102550Siwasaki 15962102550SiwasakiModularized all ACPI-specific drivers. 15963102550Siwasaki 15964102550SiwasakiAdded new thermal zone and power resource drivers. 15965102550Siwasaki 15966114237SnjlRevamped /proc interface (new functionality is under /proc/acpi). 15967102550Siwasaki 15968102550SiwasakiNew kernel configuration options. 15969102550Siwasaki 15970102550Siwasaki Linux known issues: 15971102550Siwasaki 15972114237SnjlNew kernel configuration options not documented in Configure.help 15973114237Snjlyet. 15974102550Siwasaki 15975114237Snjl 15976102550SiwasakiModule dependencies not currently implemented. If used, they 15977102550Siwasakishould be loaded in this order: busmgr, power, ec, system, 15978102550Siwasakiprocessor, battery, ac_adapter, button, thermal. 15979102550Siwasaki 15980102550SiwasakiModules will not load if CONFIG_MODVERSION is set. 15981102550Siwasaki 15982102550SiwasakiIBM 600E - entering S5 may reboot instead of shutting down. 15983102550Siwasaki 15984104470SiwasakiIBM 600E - Sleep button may generate "Invalid <NULL> context" 15985104470Siwasakimessage. 15986102550Siwasaki 15987104470SiwasakiSome systems may fail with "execution mutex already acquired" 15988104470Siwasakimessage. 15989102550Siwasaki 15990102550Siwasaki ACPI CA Core Subsystem: 15991102550Siwasaki 15992114237SnjlAdded a new OSL Interface, AcpiOsGetThreadId. This was required 15993193267Sjkimfor the deadlock detection code. Defined to return a non-zero, 32- 15994126372Snjlbit thread ID for the currently executing thread. May be a non- 15995126372Snjlzero constant integer on single-thread systems. 15996102550Siwasaki 15997193267SjkimImplemented deadlock detection for internal subsystem mutexes. We 15998126372Snjlmay add conditional compilation for this code (debug only) later. 15999102550Siwasaki 16000104470SiwasakiASL/AML Mutex object semantics are now fully supported. This 16001114237Snjlincludes multiple acquires/releases by owner and support for the 16002167802Sjkim 16003114237SnjlMutex SyncLevel parameter. 16004102550Siwasaki 16005102550SiwasakiA new "Force Release" mechanism automatically frees all ASL 16006104470SiwasakiMutexes that have been acquired but not released when a thread 16007114237Snjlexits the interpreter. This forces conformance to the ACPI spec 16008114237Snjl("All mutexes must be released when an invocation exits") and 16009114237Snjlprevents deadlocked ASL threads. This mechanism can be expanded 16010114237Snjl(later) to monitor other resource acquisitions if OEM ASL code 16011114237Snjlcontinues to misbehave (which it will). 16012102550Siwasaki 16013104470SiwasakiSeveral new ACPI exception codes have been added for the Mutex 16014104470Siwasakisupport. 16015102550Siwasaki 16016104470SiwasakiRecursive method calls are now allowed and supported (the ACPI 16017114237Snjlspec does in fact allow recursive method calls.) The number of 16018114237Snjlrecursive calls is subject to the restrictions imposed by the 16019114237SnjlSERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16020104470Siwasakiparameter. 16021102550Siwasaki 16022102550SiwasakiImplemented support for the SyncLevel parameter for control 16023102550Siwasakimethods (ACPI 2.0 feature) 16024102550Siwasaki 16025114237SnjlFixed a deadlock problem when multiple threads attempted to use 16026114237Snjlthe interpreter. 16027102550Siwasaki 16028102550SiwasakiFixed a problem where the string length of a String package 16029102550Siwasakielement was not always set in a package returned from 16030102550SiwasakiAcpiEvaluateObject. 16031102550Siwasaki 16032114237SnjlFixed a problem where the length of a String package element was 16033114237Snjlnot always included in the length of the overall package returned 16034114237Snjlfrom AcpiEvaluateObject. 16035102550Siwasaki 16036102550SiwasakiAdded external interfaces (Acpi*) to the ACPI debug memory 16037102550Siwasakimanager. This manager keeps a list of all outstanding 16038193267Sjkimallocations, and can therefore detect memory leaks and attempts to 16039126372Snjlfree memory blocks more than once. Useful for code such as the 16040114237Snjlpower manager, etc. May not be appropriate for device drivers. 16041114237SnjlPerformance with the debug code enabled is slow. 16042102550Siwasaki 16043102550SiwasakiThe ACPI Global Lock is now an optional hardware element. 16044102550Siwasaki 16045102550Siwasaki ASL Compiler Version X2015: 16046102550Siwasaki 16047102550SiwasakiIntegrated changes to allow the compiler to be generated on 16048102550Siwasakimultiple platforms. 16049102550Siwasaki 16050102550SiwasakiLinux makefile added to generate the compiler on Linux 16051102550Siwasaki 16052102550Siwasaki Source Code: 16053102550Siwasaki 16054102550SiwasakiAll platform-specific headers have been moved to their own 16055102550Siwasakisubdirectory, Include/Platform. 16056102550Siwasaki 16057102550SiwasakiNew source file added, Interpreter/ammutex.c 16058102550Siwasaki 16059102550SiwasakiNew header file, Include/acstruct.h 16060102550Siwasaki 16061102550Siwasaki Documentation: 16062102550Siwasaki 16063114237SnjlThe programmer reference has been updated for the following new 16064114237Snjlinterfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16065102550Siwasaki 16066102550Siwasaki ------------------------------------------ 16067102550SiwasakiSummary of changes for this label: 02_08_01 16068102550Siwasaki 16069102550SiwasakiCore ACPI CA Subsystem: Fixed a problem where an error was 16070193267Sjkimincorrectly returned if the return resource buffer was larger than 16071126372Snjlthe actual data (in the resource interfaces). 16072102550Siwasaki 16073114237SnjlReferences to named objects within packages are resolved to the 16074167802Sjkim 16075114237Snjlfull pathname string before packages are returned directly (via 16076114237Snjlthe AcpiEvaluateObject interface) or indirectly via the resource 16077114237Snjlinterfaces. 16078102550Siwasaki 16079102550SiwasakiLinux OS Services Layer (OSL): 16080102550Siwasaki 16081102550SiwasakiImproved /proc battery interface. 16082102550Siwasaki 16083102550Siwasaki 16084104470SiwasakiAdded C-state debugging output and other miscellaneous fixes. 16085102550Siwasaki 16086102550SiwasakiASL Compiler Version X2014: 16087102550Siwasaki 16088114237SnjlAll defined method arguments can now be used as local variables, 16089114237Snjlincluding the ones that are not actually passed in as parameters. 16090114237SnjlThe compiler tracks initialization of the arguments and issues an 16091114237Snjlexception if they are used without prior assignment (just like 16092114237Snjllocals). 16093102550Siwasaki 16094193267SjkimThe -o option now specifies a filename prefix that is used for all 16095126372Snjloutput files, including the AML output file. Otherwise, the 16096114237Snjldefault behavior is as follows: 1) the AML goes to the file 16097114237Snjlspecified in the DSDT. 2) all other output files use the input 16098114237Snjlsource filename as the base. 16099102550Siwasaki 16100102550Siwasaki ------------------------------------------ 16101102550SiwasakiSummary of changes for this label: 01_25_01 16102102550Siwasaki 16103114237SnjlCore ACPI CA Subsystem: Restructured the implementation of object 16104114237Snjlstore support within the interpreter. This includes support for 16105114237Snjlthe Store operator as well as any ASL operators that include a 16106114237Snjltarget operand. 16107102550Siwasaki 16108102550SiwasakiPartially implemented support for Implicit Result-to-Target 16109114237Snjlconversion. This is when a result object is converted on the fly 16110114237Snjlto the type of an existing target object. Completion of this 16111114237Snjlsupport is pending further analysis of the ACPI specification 16112114237Snjlconcerning this matter. 16113102550Siwasaki 16114114237SnjlCPU-specific code has been removed from the subsystem (hardware 16115114237Snjldirectory). 16116102550Siwasaki 16117102550SiwasakiNew Power Management Timer functions added 16118102550Siwasaki 16119114237SnjlLinux OS Services Layer (OSL): Moved system state transition code 16120114237Snjlto the core, fixed it, and modified Linux OSL accordingly. 16121102550Siwasaki 16122102550SiwasakiFixed C2 and C3 latency calculations. 16123102550Siwasaki 16124102550Siwasaki 16125114237SnjlWe no longer use the compilation date for the version message on 16126193267Sjkiminitialization, but retrieve the version from AcpiGetSystemInfo(). 16127102550Siwasaki 16128102550SiwasakiIncorporated for fix Sony VAIO machines. 16129102550Siwasaki 16130104470SiwasakiDocumentation: The Programmer Reference has been updated and 16131104470Siwasakireformatted. 16132102550Siwasaki 16133102550Siwasaki 16134102550SiwasakiASL Compiler: Version X2013: Fixed a problem where the line 16135102550Siwasakinumbering and error reporting could get out of sync in the 16136102550Siwasakipresence of multiple include files. 16137102550Siwasaki 16138102550Siwasaki ------------------------------------------ 16139102550SiwasakiSummary of changes for this label: 01_15_01 16140102550Siwasaki 16141102550SiwasakiCore ACPI CA Subsystem: 16142102550Siwasaki 16143114237SnjlImplemented support for type conversions in the execution of the 16144114237SnjlASL Concatenate operator (The second operand is converted to 16145114237Snjlmatch the type of the first operand before concatenation.) 16146102550Siwasaki 16147102550SiwasakiSupport for implicit source operand conversion is partially 16148114237Snjlimplemented. The ASL source operand types Integer, Buffer, and 16149114237SnjlString are freely interchangeable for most ASL operators and are 16150114237Snjlconverted by the interpreter on the fly as required. Implicit 16151114237SnjlTarget operand conversion (where the result is converted to the 16152114237Snjltarget type before storing) is not yet implemented. 16153102550Siwasaki 16154102550SiwasakiSupport for 32-bit and 64-bit BCD integers is implemented. 16155102550Siwasaki 16156193267SjkimProblem fixed where a field read on an aligned field could cause a 16157126372Snjlread past the end of the field. 16158102550Siwasaki 16159114237SnjlNew exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16160114237Snjldoes not return a value, but the caller expects one. (The ASL 16161114237Snjlcompiler flags this as a warning.) 16162102550Siwasaki 16163102550SiwasakiASL Compiler: 16164102550Siwasaki 16165102550SiwasakiVersion X2011: 16166102550Siwasaki1. Static typechecking of all operands is implemented. This 16167193267Sjkimprevents the use of invalid objects (such as using a Package where 16168126372Snjlan Integer is required) at compile time instead of at interpreter 16169126372Snjlrun-time. 16170114237Snjl2. The ASL source line is printed with ALL errors and warnings. 16171102550Siwasaki3. Bug fix for source EOF without final linefeed. 16172193267Sjkim4. Debug option is split into a parse trace and a namespace trace. 16173102550Siwasaki5. Namespace output option (-n) includes initial values for 16174102550Siwasakiintegers and strings. 16175102550Siwasaki6. Parse-only option added for quick syntax checking. 16176102550Siwasaki7. Compiler checks for duplicate ACPI name declarations 16177102550Siwasaki 16178102550SiwasakiVersion X2012: 16179102550Siwasaki1. Relaxed typechecking to allow interchangeability between 16180114237Snjlstrings, integers, and buffers. These types are now converted by 16181114237Snjlthe interpreter at runtime. 16182114237Snjl2. Compiler reports time taken by each internal subsystem in the 16183114237Snjldebug output file. 16184102550Siwasaki 16185102550Siwasaki 16186102550Siwasaki ------------------------------------------ 16187102550SiwasakiSummary of changes for this label: 12_14_00 16188102550Siwasaki 16189102550SiwasakiASL Compiler: 16190102550Siwasaki 16191104470SiwasakiThis is the first official release of the compiler. Since the 16192104470Siwasakicompiler requires elements of the Core Subsystem, this label 16193104470Siwasakisynchronizes everything. 16194102550Siwasaki 16195102550Siwasaki------------------------------------------ 16196102550SiwasakiSummary of changes for this label: 12_08_00 16197102550Siwasaki 16198102550Siwasaki 16199114237SnjlFixed a problem where named references within the ASL definition 16200114237Snjlof both OperationRegions and CreateXXXFields did not work 16201114237Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 16202114237Snjlinitialization of the region/field. This is similar (but not 16203114237Snjlrelated internally) to the problem that was fixed in the last 16204114237Snjllabel. 16205114237Snjl 16206102550SiwasakiImplemented both 32-bit and 64-bit support for the BCD ASL 16207102550Siwasakifunctions ToBCD and FromBCD. 16208102550Siwasaki 16209102550SiwasakiUpdated all legal headers to include "2000" in the copyright 16210102550Siwasakiyears. 16211102550Siwasaki 16212102550Siwasaki ------------------------------------------ 16213102550SiwasakiSummary of changes for this label: 12_01_00 16214102550Siwasaki 16215193267SjkimFixed a problem where method invocations within the ASL definition 16216126372Snjlof both OperationRegions and CreateXXXFields did not work 16217126372Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 16218114237Snjlinitialization of the region/field: 16219102550Siwasaki 16220114237Snjl nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16221114237Snjl[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16222114237Snjl(0x3005) 16223102550Siwasaki 16224102550SiwasakiFixed a problem where operators with more than one nested 16225104470Siwasakisubexpression would fail. The symptoms were varied, by mostly 16226114237SnjlAE_AML_OPERAND_TYPE errors. This was actually a rather serious 16227114237Snjlproblem that has gone unnoticed until now. 16228102550Siwasaki 16229102550Siwasaki Subtract (Add (1,2), Multiply (3,4)) 16230102550Siwasaki 16231114237SnjlFixed a problem where AcpiGetHandle didn't quite get fixed in the 16232114237Snjlprevious build (The prefix part of a relative path was handled 16233114237Snjlincorrectly). 16234102550Siwasaki 16235114237SnjlFixed a problem where Operation Region initialization failed if 16236114237Snjlthe operation region name was a "namepath" instead of a simple 16237114237Snjl"nameseg". Symptom was an AE_NO_OPERAND error. 16238102550Siwasaki 16239114237SnjlFixed a problem where an assignment to a local variable via the 16240114237Snjlindirect RefOf mechanism only worked for the first such 16241102550Siwasakiassignment. Subsequent assignments were ignored. 16242102550Siwasaki 16243102550Siwasaki ------------------------------------------ 16244102550SiwasakiSummary of changes for this label: 11_15_00 16245102550Siwasaki 16246193267SjkimACPI 2.0 table support with backwards support for ACPI 1.0 and the 16247193267Sjkim0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16248126372Snjlthe AML interpreter does NOT have support for the new 2.0 ASL 16249126372Snjlgrammar terms at this time. 16250102550Siwasaki 16251193267SjkimAll ACPI hardware access is via the GAS structures in the ACPI 2.0 16252126372SnjlFADT. 16253102550Siwasaki 16254193267SjkimAll physical memory addresses across all platforms are now 64 bits 16255126372Snjlwide. Logical address width remains dependent on the platform 16256126372Snjl(i.e., "void *"). 16257102550Siwasaki 16258114237SnjlAcpiOsMapMemory interface changed to a 64-bit physical address. 16259102550Siwasaki 16260114237SnjlThe AML interpreter integer size is now 64 bits, as per the ACPI 16261114237Snjl2.0 specification. 16262102550Siwasaki 16263104470SiwasakiFor backwards compatibility with ACPI 1.0, ACPI tables with a 16264104470Siwasakirevision number less than 2 use 32-bit integers only. 16265102550Siwasaki 16266114237SnjlFixed a problem where the evaluation of OpRegion operands did not 16267114237Snjlalways resolve them to numbers properly. 16268102550Siwasaki 16269102550Siwasaki------------------------------------------ 16270102550SiwasakiSummary of changes for this label: 10_20_00 16271102550Siwasaki 16272114237SnjlFix for CBN_._STA issue. This fix will allow correct access to 16273114237SnjlCBN_ OpRegions when the _STA returns 0x8. 16274102550Siwasaki 16275104470SiwasakiSupport to convert ACPI constants (Ones, Zeros, One) to actual 16276104470Siwasakivalues before a package object is returned 16277102550Siwasaki 16278104470SiwasakiFix for method call as predicate to if/while construct causing 16279104470Siwasakiincorrect if/while behavior 16280102550Siwasaki 16281114237SnjlFix for Else block package lengths sometimes calculated wrong (if 16282114237Snjlblock > 63 bytes) 16283102550Siwasaki 16284102550SiwasakiFix for Processor object length field, was always zero 16285102550Siwasaki 16286102550SiwasakiTable load abort if FACP sanity check fails 16287102550Siwasaki 16288102550SiwasakiFix for problem with Scope(name) if name already exists 16289102550Siwasaki 16290102550SiwasakiWarning emitted if a named object referenced cannot be found 16291102550Siwasaki(resolved) during method execution. 16292102550Siwasaki 16293102550Siwasaki 16294102550Siwasaki 16295102550Siwasaki 16296102550Siwasaki 16297102550Siwasaki------------------------------------------ 16298102550SiwasakiSummary of changes for this label: 9_29_00 16299102550Siwasaki 16300114237SnjlNew table initialization interfaces: AcpiInitializeSubsystem no 16301114237Snjllonger has any parameters AcpiFindRootPointer - Find the RSDP (if 16302114237Snjlnecessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16303114237Snjl>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16304114237SnjlAcpiLoadTables 16305102550Siwasaki 16306193267SjkimNote: These interface changes require changes to all existing OSDs 16307102550Siwasaki 16308114237SnjlThe PCI_Config default address space handler is always installed 16309114237Snjlat the root namespace object. 16310102550Siwasaki 16311102550Siwasaki------------------------------------------- 16312102550SiwasakiSummary of changes for this label: 09_15_00 16313102550Siwasaki 16314102550SiwasakiThe new initialization architecture is implemented. New 16315114237Snjlinterfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16316114237SnjlAcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16317167802Sjkim 16318114237Snjl(Namespace is automatically loaded when a table is loaded) 16319102550Siwasaki 16320193267SjkimThe ACPI_OPERAND_OBJECT has been optimized to shrink its size from 16321126372Snjl52 bytes to 32 bytes. There is usually one of these for every 16322126372Snjlnamespace object, so the memory savings is significant. 16323102550Siwasaki 16324114237SnjlImplemented just-in-time evaluation of the CreateField operators. 16325102550Siwasaki 16326102550SiwasakiBug fixes for IA-64 support have been integrated. 16327102550Siwasaki 16328102550SiwasakiAdditional code review comments have been implemented 16329102550Siwasaki 16330193267SjkimThe so-called "third pass parse" has been replaced by a final walk 16331193267Sjkimthrough the namespace to initialize all operation regions (address 16332126372Snjlspaces) and fields that have not yet been initialized during the 16333126372Snjlexecution of the various _INI and REG methods. 16334102550Siwasaki 16335102550SiwasakiNew file - namespace/nsinit.c 16336102550Siwasaki 16337102550Siwasaki------------------------------------------- 16338102550SiwasakiSummary of changes for this label: 09_01_00 16339102550Siwasaki 16340193267SjkimNamespace manager data structures have been reworked to change the 16341126372Snjlprimary object from a table to a single object. This has 16342193267Sjkimresulted in dynamic memory savings of 3X within the namespace and 16343126372Snjl2X overall in the ACPI CA subsystem. 16344102550Siwasaki 16345102550SiwasakiFixed problem where the call to AcpiEvFindPciRootBuses was 16346102550Siwasakiinadvertently left commented out. 16347102550Siwasaki 16348114237SnjlReduced the warning count when generating the source with the GCC 16349114237Snjlcompiler. 16350102550Siwasaki 16351102550SiwasakiRevision numbers added to each module header showing the 16352104470SiwasakiSourceSafe version of the file. Please refer to this version 16353114237Snjlnumber when giving us feedback or comments on individual modules. 16354102550Siwasaki 16355114237SnjlThe main object types within the subsystem have been renamed to 16356114237Snjlclarify their purpose: 16357102550Siwasaki 16358102550SiwasakiACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16359102550SiwasakiACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16360102550SiwasakiACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16361102550Siwasaki 16362114237SnjlNOTE: no changes to the initialization sequence are included in 16363114237Snjlthis label. 16364102550Siwasaki 16365102550Siwasaki------------------------------------------- 16366102550SiwasakiSummary of changes for this label: 08_23_00 16367102550Siwasaki 16368102550SiwasakiFixed problem where TerminateControlMethod was being called 16369102550Siwasakimultiple times per method 16370102550Siwasaki 16371193267SjkimFixed debugger problem where single stepping caused a semaphore to 16372126372Snjlbe oversignalled 16373102550Siwasaki 16374104470SiwasakiImproved performance through additional parse object caching - 16375104470Siwasakiadded ACPI_EXTENDED_OP type 16376102550Siwasaki 16377102550Siwasaki------------------------------------------- 16378102550SiwasakiSummary of changes for this label: 08_10_00 16379102550Siwasaki 16380102550SiwasakiParser/Interpreter integration: Eliminated the creation of 16381102550Siwasakicomplete parse trees for ACPI tables and control methods. 16382114237SnjlInstead, parse subtrees are created and then deleted as soon as 16383193267Sjkimthey are processed (Either entered into the namespace or executed 16384126372Snjlby the interpreter). This reduces the use of dynamic kernel 16385126372Snjlmemory significantly. (about 10X) 16386102550Siwasaki 16387114237SnjlException codes broken into classes and renumbered. Be sure to 16388114237Snjlrecompile all code that includes acexcep.h. Hopefully we won't 16389114237Snjlhave to renumber the codes again now that they are split into 16390114237Snjlclasses (environment, programmer, AML code, ACPI table, and 16391114237Snjlinternal). 16392102550Siwasaki 16393104470SiwasakiFixed some additional alignment issues in the Resource Manager 16394104470Siwasakisubcomponent 16395102550Siwasaki 16396114237SnjlImplemented semaphore tracking in the AcpiExec utility, and fixed 16397114237Snjlseveral places where mutexes/semaphores were being unlocked 16398114237Snjlwithout a corresponding lock operation. There are no known 16399114237Snjlsemaphore or mutex "leaks" at this time. 16400102550Siwasaki 16401114237SnjlFixed the case where an ASL Return operator is used to return an 16402114237Snjlunnamed package. 16403102550Siwasaki 16404102550Siwasaki------------------------------------------- 16405102550SiwasakiSummary of changes for this label: 07_28_00 16406102550Siwasaki 16407102550SiwasakiFixed a problem with the way addresses were calculated in 16408114237SnjlAcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16409114237Snjlmanifested itself when a Field was created with WordAccess or 16410193267SjkimDwordAccess, but the field unit defined within the Field was less 16411167802Sjkim 16412126372Snjlthan a Word or Dword. 16413102550Siwasaki 16414102550SiwasakiFixed a problem in AmlDumpOperands() module's loop to pull 16415104470Siwasakioperands off of the operand stack to display information. The 16416114237Snjlproblem manifested itself as a TLB error on 64-bit systems when 16417114237Snjlaccessing an operand stack with two or more operands. 16418102550Siwasaki 16419114237SnjlFixed a problem with the PCI configuration space handlers where 16420114237Snjlcontext was getting confused between accesses. This required a 16421114237Snjlchange to the generic address space handler and address space 16422193267Sjkimsetup definitions. Handlers now get both a global handler context 16423126372Snjl(this is the one passed in by the user when executing 16424114237SnjlAcpiInstallAddressSpaceHandler() and a specific region context 16425114237Snjlthat is unique to each region (For example, the _ADR, _SEG and 16426114237Snjl_BBN values associated with a specific region). The generic 16427114237Snjlfunction definitions have changed to the following: 16428102550Siwasaki 16429114237Snjltypedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16430114237SnjlUINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16431104470Siwasaki*HandlerContext, // This used to be void *Context void 16432102550Siwasaki*RegionContext); // This is an additional parameter 16433102550Siwasaki 16434102550Siwasakitypedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16435102550SiwasakiRegionHandle, UINT32 Function, void *HandlerContext, void 16436102550Siwasaki**RegionContext); // This used to be **ReturnContext 16437102550Siwasaki 16438102550Siwasaki------------------------------------------- 16439102550SiwasakiSummary of changes for this label: 07_21_00 16440102550Siwasaki 16441102550SiwasakiMajor file consolidation and rename. All files within the 16442193267Sjkiminterpreter have been renamed as well as most header files. This 16443126372Snjlwas done to prevent collisions with existing files in the host 16444126372SnjlOSs -- filenames such as "config.h" and "global.h" seem to be 16445126372Snjlquite common. The VC project files have been updated. All 16446114237Snjlmakefiles will require modification. 16447102550Siwasaki 16448114237SnjlThe parser/interpreter integration continues in Phase 5 with the 16449114237Snjlimplementation of a complete 2-pass parse (the AML is parsed 16450114237Snjltwice) for each table; This avoids the construction of a huge 16451114237Snjlparse tree and therefore reduces the amount of dynamic memory 16452114237Snjlrequired by the subsystem. Greater use of the parse object cache 16453114237Snjlmeans that performance is unaffected. 16454102550Siwasaki 16455102550SiwasakiMany comments from the two code reviews have been rolled in. 16456102550Siwasaki 16457102550SiwasakiThe 64-bit alignment support is complete. 16458102550Siwasaki 16459102550Siwasaki------------------------------------------- 16460102550SiwasakiSummary of changes for this label: 06_30_00 16461102550Siwasaki 16462114237SnjlWith a nod and a tip of the hat to the technology of yesteryear, 16463114237Snjlwe've added support in the source code for 80 column output 16464114237Snjldevices. The code is now mostly constrained to 80 columns or 16465114237Snjlless to support environments and editors that 1) cannot display 16466114237Snjlor print more than 80 characters on a single line, and 2) cannot 16467114237Snjldisable line wrapping. 16468102550Siwasaki 16469104470SiwasakiA major restructuring of the namespace data structure has been 16470104470Siwasakicompleted. The result is 1) cleaner and more 16471114237Snjlunderstandable/maintainable code, and 2) a significant reduction 16472114237Snjlin the dynamic memory requirement for each named ACPI object 16473114237Snjl(almost half). 16474102550Siwasaki 16475102550Siwasaki------------------------------------------- 16476102550SiwasakiSummary of changes for this label: 06_23_00 16477102550Siwasaki 16478114237SnjlLinux support has been added. In order to obtain approval to get 16479114237Snjlthe ACPI CA subsystem into the Linux kernel, we've had to make 16480114237Snjlquite a few changes to the base subsystem that will affect all 16481114237Snjlusers (all the changes are generic and OS- independent). The 16482114237Snjleffects of these global changes have been somewhat far reaching. 16483114237SnjlFiles have been merged and/or renamed and interfaces have been 16484114237Snjlrenamed. The major changes are described below. 16485102550Siwasaki 16486102550SiwasakiOsd* interfaces renamed to AcpiOs* to eliminate namespace 16487102550Siwasakipollution/confusion within our target kernels. All OSD 16488114237Snjlinterfaces must be modified to match the new naming convention. 16489102550Siwasaki 16490193267SjkimFiles merged across the subsystem. A number of the smaller source 16491126372Snjland header files have been merged to reduce the file count and 16492126372Snjlincrease the density of the existing files. There are too many 16493126372Snjlto list here. In general, makefiles that call out individual 16494126372Snjlfiles will require rebuilding. 16495102550Siwasaki 16496104470SiwasakiInterpreter files renamed. All interpreter files now have the 16497104470Siwasakiprefix am* instead of ie* and is*. 16498102550Siwasaki 16499104470SiwasakiHeader files renamed: The acapi.h file is now acpixf.h. The 16500114237Snjlacpiosd.h file is now acpiosxf.h. We are removing references to 16501114237Snjlthe acronym "API" since it is somewhat windowsy. The new name is 16502114237Snjl"external interface" or xface or xf in the filenames.j 16503102550Siwasaki 16504102550Siwasaki 16505114237SnjlAll manifest constants have been forced to upper case (some were 16506193267Sjkimmixed case.) Also, the string "ACPI_" has been prepended to many 16507126372Snjl(not all) of the constants, typedefs, and structs. 16508102550Siwasaki 16509102550SiwasakiThe globals "DebugLevel" and "DebugLayer" have been renamed 16510102550Siwasaki"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 16511102550Siwasaki 16512102550SiwasakiAll other globals within the subsystem are now prefixed with 16513102550Siwasaki"AcpiGbl_" Internal procedures within the subsystem are now 16514114237Snjlprefixed with "Acpi" (with only a few exceptions). The original 16515193267Sjkimtwo-letter abbreviation for the subcomponent remains after "Acpi" 16516126372Snjl- for example, CmCallocate became AcpiCmCallocate. 16517102550Siwasaki 16518102550SiwasakiAdded a source code translation/conversion utility. Used to 16519114237Snjlgenerate the Linux source code, it can be modified to generate 16520114237Snjlother types of source as well. Can also be used to cleanup 16521114237Snjlexisting source by removing extraneous spaces and blank lines. 16522114237SnjlFound in tools/acpisrc/* 16523102550Siwasaki 16524102550SiwasakiOsdUnMapMemory was renamed to OsdUnmapMemory and then 16525102550SiwasakiAcpiOsUnmapMemory. (UnMap became Unmap). 16526102550Siwasaki 16527114237SnjlA "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 16528114237SnjlWhen set to one, this indicates that the caller wants to use the 16529167802Sjkim 16530114237Snjlsemaphore as a mutex, not a counting semaphore. ACPI CA uses 16531114237Snjlboth types. However, implementers of this call may want to use 16532114237Snjldifferent OS primitives depending on the type of semaphore 16533114237Snjlrequested. For example, some operating systems provide separate 16534167802Sjkim 16535193267Sjkim"mutex" and "semaphore" interfaces - where the mutex interface is 16536126372Snjlmuch faster because it doesn't have all the overhead of a full 16537126372Snjlsemaphore implementation. 16538102550Siwasaki 16539104470SiwasakiFixed a deadlock problem where a method that accesses the PCI 16540114237Snjladdress space can block forever if it is the first access to the 16541114237Snjlspace. 16542102550Siwasaki 16543102550Siwasaki------------------------------------------- 16544102550SiwasakiSummary of changes for this label: 06_02_00 16545102550Siwasaki 16546102550SiwasakiSupport for environments that cannot handle unaligned data 16547114237Snjlaccesses (e.g. firmware and OS environments devoid of alignment 16548193267Sjkimhandler technology namely SAL/EFI and the IA-64 Linux kernel) has 16549126372Snjlbeen added (via configurable macros) in these three areas: - 16550114237SnjlTransfer of data from the raw AML byte stream is done via byte 16551193267Sjkimmoves instead of word/dword/qword moves. - External objects are 16552126372Snjlaligned within the user buffer, including package elements (sub- 16553193267Sjkimobjects). - Conversion of name strings to UINT32 Acpi Names is now 16554126372Snjldone byte-wise. 16555102550Siwasaki 16556102550SiwasakiThe Store operator was modified to mimic Microsoft's 16557102550Siwasakiimplementation when storing to a Buffer Field. 16558102550Siwasaki 16559102550SiwasakiAdded a check of the BM_STS bit before entering C3. 16560102550Siwasaki 16561114237SnjlThe methods subdirectory has been obsoleted and removed. A new 16562114237Snjlfile, cmeval.c subsumes the functionality. 16563102550Siwasaki 16564102550SiwasakiA 16-bit (DOS) version of AcpiExec has been developed. The 16565102550Siwasakimakefile is under the acpiexec directory. 16566