1aa2aa9a6SDana Myers---------------------------------------- 2*7b1019a6SJerry Jelinek27 May 2016. Summary of changes for version 20160527: 3*7b1019a6SJerry Jelinek 4*7b1019a6SJerry JelinekThis release is available at https://acpica.org/downloads 5*7b1019a6SJerry Jelinek 6*7b1019a6SJerry Jelinek 7*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 8*7b1019a6SJerry Jelinek 9*7b1019a6SJerry JelinekTemporarily reverted the new arbitrary bit length/alignment support in 10*7b1019a6SJerry JelinekAcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 11*7b1019a6SJerry Jelineka number of regressions with the new code that need to be fully resolved 12*7b1019a6SJerry Jelinekand tested before this support can be finally integrated into ACPICA. 13*7b1019a6SJerry JelinekApologies for any inconveniences these issues may have caused. 14*7b1019a6SJerry Jelinek 15*7b1019a6SJerry JelinekThe ACPI message macros are not configurable (ACPI_MSG_ERROR, 16*7b1019a6SJerry JelinekACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 17*7b1019a6SJerry Jelinekand ACPI_MSG_BIOS_WARNING). Lv Zheng. 18*7b1019a6SJerry Jelinek 19*7b1019a6SJerry JelinekFixed a couple of GCC warnings associated with the use of the -Wcast-qual 20*7b1019a6SJerry Jelinekoption. Adds a new return macro, return_STR. Junk-uk Kim. 21*7b1019a6SJerry Jelinek 22*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 23*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 24*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 25*7b1019a6SJerry Jelinekhas a much larger code and data size. 26*7b1019a6SJerry Jelinek 27*7b1019a6SJerry Jelinek Current Release: 28*7b1019a6SJerry Jelinek Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 29*7b1019a6SJerry Jelinek Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 30*7b1019a6SJerry Jelinek Previous Release: 31*7b1019a6SJerry Jelinek Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 32*7b1019a6SJerry Jelinek Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 33*7b1019a6SJerry Jelinek 34*7b1019a6SJerry Jelinek---------------------------------------- 35*7b1019a6SJerry Jelinek22 April 2016. Summary of changes for version 20160422: 36*7b1019a6SJerry Jelinek 37*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 38*7b1019a6SJerry Jelinek 39*7b1019a6SJerry JelinekFixed a regression in the GAS (generic address structure) arbitrary bit 40*7b1019a6SJerry Jelineksupport in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 41*7b1019a6SJerry Jelinekand incorrect return values. Lv Zheng. ACPICA BZ 1270. 42*7b1019a6SJerry Jelinek 43*7b1019a6SJerry JelinekACPI 6.0: Added support for new/renamed resource macros. One new argument 44*7b1019a6SJerry Jelinekwas added to each of these macros, and the original name has been 45*7b1019a6SJerry Jelinekdeprecated. The AML disassembler will always disassemble to the new 46*7b1019a6SJerry Jelineknames. Support for the new macros was added to iASL, disassembler, 47*7b1019a6SJerry Jelinekresource manager, and the acpihelp utility. ACPICA BZ 1274. 48*7b1019a6SJerry Jelinek 49*7b1019a6SJerry Jelinek I2cSerialBus -> I2cSerialBusV2 50*7b1019a6SJerry Jelinek SpiSerialBus -> SpiSerialBusV2 51*7b1019a6SJerry Jelinek UartSerialBus -> UartSerialBusV2 52*7b1019a6SJerry Jelinek 53*7b1019a6SJerry JelinekACPI 6.0: Added support for a new integer field that was appended to the 54*7b1019a6SJerry Jelinekpackage object returned by the _BIX method. This adds iASL compile-time 55*7b1019a6SJerry Jelinekand AML runtime error checking. ACPICA BZ 1273. 56*7b1019a6SJerry Jelinek 57*7b1019a6SJerry JelinekACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 58*7b1019a6SJerry JelinekSubspace Type2" (Headers, Disassembler, and data table compiler). 59*7b1019a6SJerry Jelinek 60*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 61*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 62*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 63*7b1019a6SJerry Jelinekhas a much larger code and data size. 64*7b1019a6SJerry Jelinek 65*7b1019a6SJerry Jelinek Current Release: 66*7b1019a6SJerry Jelinek Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 67*7b1019a6SJerry Jelinek Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 68*7b1019a6SJerry Jelinek Previous Release: 69*7b1019a6SJerry Jelinek Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 70*7b1019a6SJerry Jelinek Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 71*7b1019a6SJerry Jelinek 72*7b1019a6SJerry Jelinek 73*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 74*7b1019a6SJerry Jelinek 75*7b1019a6SJerry JelinekiASL: Implemented an ASL grammar extension to allow/enable executable 76*7b1019a6SJerry Jelinek"module-level code" to be created and executed under the various 77*7b1019a6SJerry Jelinekoperators that create new scopes. This type of AML code is already 78*7b1019a6SJerry Jelineksupported in all known AML interpreters, and the grammar change will 79*7b1019a6SJerry Jelinekappear in the next version of the ACPI specification. Simplifies the 80*7b1019a6SJerry Jelinekconditional runtime creation of named objects under these object types: 81*7b1019a6SJerry Jelinek 82*7b1019a6SJerry Jelinek Device 83*7b1019a6SJerry Jelinek PowerResource 84*7b1019a6SJerry Jelinek Processor 85*7b1019a6SJerry Jelinek Scope 86*7b1019a6SJerry Jelinek ThermalZone 87*7b1019a6SJerry Jelinek 88*7b1019a6SJerry JelinekiASL: Implemented a new ASL extension, a "For" loop macro to add greater 89*7b1019a6SJerry Jelinekease-of-use to the ASL language. The syntax is similar to the 90*7b1019a6SJerry Jelinekcorresponding C operator, and is implemented with the existing AML While 91*7b1019a6SJerry Jelinekopcode -- thus requiring no changes to existing AML interpreters. 92*7b1019a6SJerry Jelinek 93*7b1019a6SJerry Jelinek For (Initialize, Predicate, Update) {TermList} 94*7b1019a6SJerry Jelinek 95*7b1019a6SJerry JelinekGrammar: 96*7b1019a6SJerry Jelinek ForTerm := 97*7b1019a6SJerry Jelinek For ( 98*7b1019a6SJerry Jelinek Initializer // Nothing | TermArg => ComputationalData 99*7b1019a6SJerry Jelinek Predicate // Nothing | TermArg => ComputationalData 100*7b1019a6SJerry Jelinek Update // Nothing | TermArg => ComputationalData 101*7b1019a6SJerry Jelinek ) {TermList} 102*7b1019a6SJerry Jelinek 103*7b1019a6SJerry Jelinek 104*7b1019a6SJerry JelinekiASL: The _HID/_ADR detection and validation has been enhanced to search 105*7b1019a6SJerry Jelinekunder conditionals in order to allow these objects to be conditionally 106*7b1019a6SJerry Jelinekcreated at runtime. 107*7b1019a6SJerry Jelinek 108*7b1019a6SJerry JelinekiASL: Fixed several issues with the constant folding feature. The 109*7b1019a6SJerry Jelinekimprovement allows better detection and resolution of statements that can 110*7b1019a6SJerry Jelinekbe folded at compile time. ACPICA BZ 1266. 111*7b1019a6SJerry Jelinek 112*7b1019a6SJerry JelinekiASL/Disassembler: Fixed a couple issues with the Else{If{}...} 113*7b1019a6SJerry Jelinekconversion to the ASL ElseIf operator where incorrect ASL code could be 114*7b1019a6SJerry Jelinekgenerated. 115*7b1019a6SJerry Jelinek 116*7b1019a6SJerry JelinekiASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 117*7b1019a6SJerry Jelineksometimes an extra (and extraneous) set of parentheses were emitted for 118*7b1019a6SJerry Jelineksome combinations of operators. Although this did not cause any problems 119*7b1019a6SJerry Jelinekwith recompilation of the disassembled code, it made the code more 120*7b1019a6SJerry Jelinekdifficult to read. David Box. ACPICA BZ 1231. 121*7b1019a6SJerry Jelinek 122*7b1019a6SJerry JelinekiASL: Changed to ignore the unreferenced detection for predefined names 123*7b1019a6SJerry Jelinekof resource descriptor elements, when the resource descriptor is 124*7b1019a6SJerry Jelinekcreated/defined within a control method. 125*7b1019a6SJerry Jelinek 126*7b1019a6SJerry JelinekiASL: Disassembler: Fix a possible fault with externally declared Buffer 127*7b1019a6SJerry Jelinekobjects. 128*7b1019a6SJerry Jelinek 129*7b1019a6SJerry Jelinek---------------------------------------- 130*7b1019a6SJerry Jelinek18 March 2016. Summary of changes for version 20160318: 131*7b1019a6SJerry Jelinek 132*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 133*7b1019a6SJerry Jelinek 134*7b1019a6SJerry JelinekAdded support for arbitrary bit lengths and bit offsets for registers 135*7b1019a6SJerry Jelinekdefined by the Generic Address Structure. Previously, only aligned bit 136*7b1019a6SJerry Jelineklengths of 8/16/32/64 were supported. This was sufficient for many years, 137*7b1019a6SJerry Jelinekbut recently some machines have been seen that require arbitrary bit- 138*7b1019a6SJerry Jelineklevel support. ACPICA BZ 1240. Lv Zheng. 139*7b1019a6SJerry Jelinek 140*7b1019a6SJerry JelinekFixed an issue where the \_SB._INI method sometimes must be evaluated 141*7b1019a6SJerry Jelinekbefore any _REG methods are evaluated. Lv Zheng. 142*7b1019a6SJerry Jelinek 143*7b1019a6SJerry JelinekImplemented several changes related to ACPI table support 144*7b1019a6SJerry Jelinek(Headers/Disassembler/TableCompiler): 145*7b1019a6SJerry JelinekNFIT: For ACPI 6.1, updated to add some additional new fields and 146*7b1019a6SJerry Jelinekconstants. 147*7b1019a6SJerry JelinekFADT: Updated a warning message and set compliance to ACPI 6.1 (Version 148*7b1019a6SJerry Jelinek6). 149*7b1019a6SJerry JelinekDMAR: Added new constants per the 10/2014 DMAR spec. 150*7b1019a6SJerry JelinekIORT: Added new subtable per the 10/2015 IORT spec. 151*7b1019a6SJerry JelinekHEST: For ACPI 6.1, added new constants and new subtable. 152*7b1019a6SJerry JelinekDBG2: Added new constants per the 12/2015 DBG2 spec. 153*7b1019a6SJerry JelinekFPDT: Fixed several incorrect fields, add the FPDT boot record structure. 154*7b1019a6SJerry JelinekACPICA BZ 1249. 155*7b1019a6SJerry JelinekERST/EINJ: Updated disassembler with new "Execute Timings" actions. 156*7b1019a6SJerry Jelinek 157*7b1019a6SJerry JelinekUpdated header support for the DMAR table to match the current version of 158*7b1019a6SJerry Jelinekthe related spec. 159*7b1019a6SJerry Jelinek 160*7b1019a6SJerry JelinekAdded extensions to the ASL Concatenate operator to allow any ACPI object 161*7b1019a6SJerry Jelinekto be passed as an operand. Any object other than Integer/String/Buffer 162*7b1019a6SJerry Jelineksimply returns a string containing the object type. This extends the 163*7b1019a6SJerry Jelinekusefulness of the Printf macros. Previously, Concatenate would abort the 164*7b1019a6SJerry Jelinekcontrol method if a non-data object was encountered. 165*7b1019a6SJerry Jelinek 166*7b1019a6SJerry JelinekACPICA source code: Deployed the C "const" keyword across the source code 167*7b1019a6SJerry Jelinekwhere appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 168*7b1019a6SJerry Jelinek 169*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 170*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 171*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 172*7b1019a6SJerry Jelinekhas a much larger code and data size. 173*7b1019a6SJerry Jelinek 174*7b1019a6SJerry Jelinek Current Release: 175*7b1019a6SJerry Jelinek Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 176*7b1019a6SJerry Jelinek Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 177*7b1019a6SJerry Jelinek Previous Release: 178*7b1019a6SJerry Jelinek Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 179*7b1019a6SJerry Jelinek Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 180*7b1019a6SJerry Jelinek 181*7b1019a6SJerry Jelinek 182*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 183*7b1019a6SJerry Jelinek 184*7b1019a6SJerry JelinekiASL/Disassembler: Improved the heuristic used to determine the number of 185*7b1019a6SJerry Jelinekarguments for an externally defined control method (a method in another 186*7b1019a6SJerry Jelinektable). Although this is an improvement, there is no deterministic way to 187*7b1019a6SJerry Jelinek"guess" the number of method arguments. Only the ACPI 6.0 External opcode 188*7b1019a6SJerry Jelinekwill completely solve this problem as it is deployed (automatically) in 189*7b1019a6SJerry Jelineknewer BIOS code. 190*7b1019a6SJerry Jelinek 191*7b1019a6SJerry JelinekiASL/Disassembler: Fixed an ordering issue for emitted External() ASL 192*7b1019a6SJerry Jelinekstatements that could cause errors when the disassembled file is 193*7b1019a6SJerry Jelinekcompiled. ACPICA BZ 1243. David Box. 194*7b1019a6SJerry Jelinek 195*7b1019a6SJerry JelinekiASL: Fixed a regression caused by the merger of the two versions of the 196*7b1019a6SJerry Jelineklocal strtoul64. Because of a dependency on a global variable, strtoul64 197*7b1019a6SJerry Jelinekcould return an error for integers greater than a 32-bit value. ACPICA BZ 198*7b1019a6SJerry Jelinek1260. 199*7b1019a6SJerry Jelinek 200*7b1019a6SJerry JelinekiASL: Fixed a regression where a fault could occur for an ASL Return 201*7b1019a6SJerry Jelinekstatement if it invokes a control method that is not resolved. ACPICA BZ 202*7b1019a6SJerry Jelinek1264. 203*7b1019a6SJerry Jelinek 204*7b1019a6SJerry JelinekAcpiXtract: Improved input file validation: detection of binary files and 205*7b1019a6SJerry Jelineknon-acpidump text files. 206*7b1019a6SJerry Jelinek 207*7b1019a6SJerry Jelinek---------------------------------------- 208*7b1019a6SJerry Jelinek12 February 2016. Summary of changes for version 20160212: 209*7b1019a6SJerry Jelinek 210*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 211*7b1019a6SJerry Jelinek 212*7b1019a6SJerry JelinekImplemented full support for the ACPI 6.1 specification (released in 213*7b1019a6SJerry JelinekJanuary). This version of the specification is available at: 214*7b1019a6SJerry Jelinekhttp://www.uefi.org/specifications 215*7b1019a6SJerry Jelinek 216*7b1019a6SJerry JelinekOnly a relatively small number of changes were required in ACPICA to 217*7b1019a6SJerry Jelineksupport ACPI 6.1, in these areas: 218*7b1019a6SJerry Jelinek- New predefined names 219*7b1019a6SJerry Jelinek- New _HID values 220*7b1019a6SJerry Jelinek- A new subtable for HEST 221*7b1019a6SJerry Jelinek- A few other header changes for new values 222*7b1019a6SJerry Jelinek 223*7b1019a6SJerry JelinekEnsure \_SB_._INI is executed before any _REG methods are executed. There 224*7b1019a6SJerry Jelinekappears to be existing BIOS code that relies on this behavior. Lv Zheng. 225*7b1019a6SJerry Jelinek 226*7b1019a6SJerry JelinekReverted a change made in version 20151218 which enabled method 227*7b1019a6SJerry Jelinekinvocations to be targets of various ASL operators (SuperName and Target 228*7b1019a6SJerry Jelinekgrammar elements). While the new behavior is supported by the ACPI 229*7b1019a6SJerry Jelinekspecification, other AML interpreters do not support this behavior and 230*7b1019a6SJerry Jelineknever will. The ACPI specification will be updated for ACPI 6.2 to remove 231*7b1019a6SJerry Jelinekthis support. Therefore, the change was reverted to the original ACPICA 232*7b1019a6SJerry Jelinekbehavior. 233*7b1019a6SJerry Jelinek 234*7b1019a6SJerry JelinekACPICA now supports the GCC 6 compiler. 235*7b1019a6SJerry Jelinek 236*7b1019a6SJerry JelinekCurrent Release: (Note: build changes increased sizes) 237*7b1019a6SJerry Jelinek Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 238*7b1019a6SJerry Jelinek Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 239*7b1019a6SJerry JelinekPrevious Release: 240*7b1019a6SJerry Jelinek Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 241*7b1019a6SJerry Jelinek Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 242*7b1019a6SJerry Jelinek 243*7b1019a6SJerry Jelinek 244*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 245*7b1019a6SJerry Jelinek 246*7b1019a6SJerry JelinekCompleted full support for the ACPI 6.0 External() AML opcode. The 247*7b1019a6SJerry Jelinekcompiler emits an external AML opcode for each ASL External statement. 248*7b1019a6SJerry JelinekThis opcode is used by the disassembler to assist with the disassembly of 249*7b1019a6SJerry Jelinekexternal control methods by specifying the required number of arguments 250*7b1019a6SJerry Jelinekfor the method. AML interpreters do not use this opcode. To ensure that 251*7b1019a6SJerry Jelinekinterpreters do not even see the opcode, a block of one or more external 252*7b1019a6SJerry Jelinekopcodes is surrounded by an "If(0)" construct. As this feature becomes 253*7b1019a6SJerry Jelinekcommonly deployed in BIOS code, the ability of disassemblers to correctly 254*7b1019a6SJerry Jelinekdisassemble AML code will be greatly improved. David Box. 255*7b1019a6SJerry Jelinek 256*7b1019a6SJerry JelinekiASL: Implemented support for an optional cross-reference output file. 257*7b1019a6SJerry JelinekThe -lx option will create a the cross-reference file with the suffix 258*7b1019a6SJerry Jelinek"xrf". Three different types of cross-reference are created in this file: 259*7b1019a6SJerry Jelinek- List of object references made from within each control method 260*7b1019a6SJerry Jelinek- Invocation (caller) list for each user-defined control method 261*7b1019a6SJerry Jelinek- List of references to each non-method object in the namespace 262*7b1019a6SJerry Jelinek 263*7b1019a6SJerry JelinekiASL: Method invocations as ASL Target operands are now disallowed and 264*7b1019a6SJerry Jelinekflagged as errors in preparation for ACPI 6.2 (see the description of the 265*7b1019a6SJerry Jelinekproblem above). 266*7b1019a6SJerry Jelinek 267*7b1019a6SJerry Jelinek---------------------------------------- 268*7b1019a6SJerry Jelinek8 January 2016. Summary of changes for version 20160108: 269*7b1019a6SJerry Jelinek 270*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 271*7b1019a6SJerry Jelinek 272*7b1019a6SJerry JelinekUpdated all ACPICA copyrights and signons to 2016: Added the 2016 273*7b1019a6SJerry Jelinekcopyright to all source code module headers and utility/tool signons. 274*7b1019a6SJerry JelinekThis includes the standard Linux dual-license header. This affects 275*7b1019a6SJerry Jelinekvirtually every file in the ACPICA core subsystem, iASL compiler, all 276*7b1019a6SJerry JelinekACPICA utilities, and the ACPICA test suite. 277*7b1019a6SJerry Jelinek 278*7b1019a6SJerry JelinekFixed a regression introduced in version 20151218 concerning the 279*7b1019a6SJerry Jelinekexecution of so-called module-level ASL/AML code. Namespace objects 280*7b1019a6SJerry Jelinekcreated under a module-level If() construct were not properly/fully 281*7b1019a6SJerry Jelinekentered into the namespace and could cause an interpreter fault when 282*7b1019a6SJerry Jelinekaccessed. 283*7b1019a6SJerry Jelinek 284*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 285*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 286*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 287*7b1019a6SJerry Jelinekhas a much larger code and data size. 288*7b1019a6SJerry Jelinek 289*7b1019a6SJerry JelinekCurrent Release: 290*7b1019a6SJerry Jelinek Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 291*7b1019a6SJerry Jelinek Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 292*7b1019a6SJerry Jelinek Previous Release: 293*7b1019a6SJerry Jelinek Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 294*7b1019a6SJerry Jelinek Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 295*7b1019a6SJerry Jelinek 296*7b1019a6SJerry Jelinek 297*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 298*7b1019a6SJerry Jelinek 299*7b1019a6SJerry JelinekFixed a problem with the compilation of the GpioIo and GpioInt resource 300*7b1019a6SJerry Jelinekdescriptors. The _PIN field name was incorrectly defined to be an array 301*7b1019a6SJerry Jelinekof 32-bit values, but the _PIN values are in fact 16 bits each. This 302*7b1019a6SJerry Jelinekwould cause incorrect bit width warnings when using Word (16-bit) fields 303*7b1019a6SJerry Jelinekto access the descriptors. 304*7b1019a6SJerry Jelinek 305*7b1019a6SJerry Jelinek 306*7b1019a6SJerry Jelinek---------------------------------------- 307*7b1019a6SJerry Jelinek18 December 2015. Summary of changes for version 20151218: 308*7b1019a6SJerry Jelinek 309*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 310*7b1019a6SJerry Jelinek 311*7b1019a6SJerry JelinekImplemented per-AML-table execution of "module-level code" as individual 312*7b1019a6SJerry JelinekACPI tables are loaded into the namespace during ACPICA initialization. 313*7b1019a6SJerry JelinekIn other words, any module-level code within an AML table is executed 314*7b1019a6SJerry Jelinekimmediately after the table is loaded, instead of batched and executed 315*7b1019a6SJerry Jelinekafter all of the tables have been loaded. This provides compatibility 316*7b1019a6SJerry Jelinekwith other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 317*7b1019a6SJerry JelinekDavid Box. 318*7b1019a6SJerry Jelinek 319*7b1019a6SJerry JelinekTo fully support the feature above, the default operation region handlers 320*7b1019a6SJerry Jelinekfor the SystemMemory, SystemIO, and PCI_Config address spaces are now 321*7b1019a6SJerry Jelinekinstalled before any ACPI tables are loaded. This enables module-level 322*7b1019a6SJerry Jelinekcode to access these address spaces during the table load and module- 323*7b1019a6SJerry Jelineklevel code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 324*7b1019a6SJerry JelinekBox. 325*7b1019a6SJerry Jelinek 326*7b1019a6SJerry JelinekImplemented several changes to the internal _REG support in conjunction 327*7b1019a6SJerry Jelinekwith the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 328*7b1019a6SJerry Jelinekutilities for the changes above. Although these tools were changed, host 329*7b1019a6SJerry Jelinekoperating systems that simply use the default handlers for SystemMemory, 330*7b1019a6SJerry JelinekSystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 331*7b1019a6SJerry Jelinek 332*7b1019a6SJerry JelinekFor example, in the code below, DEV1 is conditionally added to the 333*7b1019a6SJerry Jelineknamespace by the DSDT via module-level code that accesses an operation 334*7b1019a6SJerry Jelinekregion. The SSDT references DEV1 via the Scope operator. DEV1 must be 335*7b1019a6SJerry Jelinekcreated immediately after the DSDT is loaded in order for the SSDT to 336*7b1019a6SJerry Jelineksuccessfully reference DEV1. Previously, this code would cause an 337*7b1019a6SJerry JelinekAE_NOT_EXIST exception during the load of the SSDT. Now, this code is 338*7b1019a6SJerry Jelinekfully supported by ACPICA. 339*7b1019a6SJerry Jelinek 340*7b1019a6SJerry Jelinek DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 341*7b1019a6SJerry Jelinek { 342*7b1019a6SJerry Jelinek OperationRegion (OPR1, SystemMemory, 0x400, 32) 343*7b1019a6SJerry Jelinek Field (OPR1, AnyAcc, NoLock, Preserve) 344*7b1019a6SJerry Jelinek { 345*7b1019a6SJerry Jelinek FLD1, 1 346*7b1019a6SJerry Jelinek } 347*7b1019a6SJerry Jelinek If (FLD1) 348*7b1019a6SJerry Jelinek { 349*7b1019a6SJerry Jelinek Device (\DEV1) 350*7b1019a6SJerry Jelinek { 351*7b1019a6SJerry Jelinek } 352*7b1019a6SJerry Jelinek } 353*7b1019a6SJerry Jelinek } 354*7b1019a6SJerry Jelinek DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 355*7b1019a6SJerry Jelinek { 356*7b1019a6SJerry Jelinek External (\DEV1, DeviceObj) 357*7b1019a6SJerry Jelinek Scope (\DEV1) 358*7b1019a6SJerry Jelinek { 359*7b1019a6SJerry Jelinek } 360*7b1019a6SJerry Jelinek } 361*7b1019a6SJerry Jelinek 362*7b1019a6SJerry JelinekFixed an AML interpreter problem where control method invocations were 363*7b1019a6SJerry Jelineknot handled correctly when the invocation was itself a SuperName argument 364*7b1019a6SJerry Jelinekto another ASL operator. In these cases, the method was not invoked. 365*7b1019a6SJerry JelinekACPICA BZ 1002. Affects the following ASL operators that have a SuperName 366*7b1019a6SJerry Jelinekargument: 367*7b1019a6SJerry Jelinek Store 368*7b1019a6SJerry Jelinek Acquire, Wait 369*7b1019a6SJerry Jelinek CondRefOf, RefOf 370*7b1019a6SJerry Jelinek Decrement, Increment 371*7b1019a6SJerry Jelinek Load, Unload 372*7b1019a6SJerry Jelinek Notify 373*7b1019a6SJerry Jelinek Signal, Release, Reset 374*7b1019a6SJerry Jelinek SizeOf 375*7b1019a6SJerry Jelinek 376*7b1019a6SJerry JelinekImplemented automatic String-to-ObjectReference conversion support for 377*7b1019a6SJerry Jelinekpackages returned by predefined names (such as _DEP). A common BIOS error 378*7b1019a6SJerry Jelinekis to add double quotes around an ObjectReference namepath, which turns 379*7b1019a6SJerry Jelinekthe reference into an unexpected string object. This support detects the 380*7b1019a6SJerry Jelinekproblem and corrects it before the package is returned to the caller that 381*7b1019a6SJerry Jelinekinvoked the method. Lv Zheng. 382*7b1019a6SJerry Jelinek 383*7b1019a6SJerry JelinekImplemented extensions to the Concatenate operator. Concatenate now 384*7b1019a6SJerry Jelinekaccepts any type of object, it is not restricted to simply 385*7b1019a6SJerry JelinekInteger/String/Buffer. For objects other than these 3 basic data types, 386*7b1019a6SJerry Jelinekthe argument is treated as a string containing the name of the object 387*7b1019a6SJerry Jelinektype. This expands the utility of Concatenate and the Printf/Fprintf 388*7b1019a6SJerry Jelinekmacros. ACPICA BZ 1222. 389*7b1019a6SJerry Jelinek 390*7b1019a6SJerry JelinekCleaned up the output of the ASL Debug object. The timer() value is now 391*7b1019a6SJerry Jelinekoptional and no longer emitted by default. Also, the basic data types of 392*7b1019a6SJerry JelinekInteger/String/Buffer are simply emitted as their values, without a data 393*7b1019a6SJerry Jelinektype string -- since the data type is obvious from the output. ACPICA BZ 394*7b1019a6SJerry Jelinek1221. 395*7b1019a6SJerry Jelinek 396*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 397*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 398*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 399*7b1019a6SJerry Jelinekhas a much larger code and data size. 400*7b1019a6SJerry Jelinek 401*7b1019a6SJerry Jelinek Current Release: 402*7b1019a6SJerry Jelinek Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 403*7b1019a6SJerry Jelinek Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 404*7b1019a6SJerry Jelinek Previous Release: 405*7b1019a6SJerry Jelinek Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 406*7b1019a6SJerry Jelinek Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 407*7b1019a6SJerry Jelinek 408*7b1019a6SJerry Jelinek 409*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 410*7b1019a6SJerry Jelinek 411*7b1019a6SJerry JelinekiASL: Fixed some issues with the ASL Include() operator. This operator 412*7b1019a6SJerry Jelinekwas incorrectly defined in the iASL parser rules, causing a new scope to 413*7b1019a6SJerry Jelinekbe opened for the code within the include file. This could lead to 414*7b1019a6SJerry Jelinekseveral issues, including allowing ASL code that is technically illegal 415*7b1019a6SJerry Jelinekand not supported by AML interpreters. Note, this does not affect the 416*7b1019a6SJerry Jelinekrelated #include preprocessor operator. ACPICA BZ 1212. 417*7b1019a6SJerry Jelinek 418*7b1019a6SJerry JelinekiASL/Disassembler: Implemented support for the ASL ElseIf operator. This 419*7b1019a6SJerry Jelinekoperator is essentially an ASL macro since there is no AML opcode 420*7b1019a6SJerry Jelinekassociated with it. The code emitted by the iASL compiler for ElseIf is 421*7b1019a6SJerry Jelinekan Else opcode followed immediately by an If opcode. The disassembler 422*7b1019a6SJerry Jelinekwill now emit an ElseIf if it finds an Else immediately followed by an 423*7b1019a6SJerry JelinekIf. This simplifies the decoded ASL, especially for deeply nested 424*7b1019a6SJerry JelinekIf..Else and large Switch constructs. Thus, the disassembled code more 425*7b1019a6SJerry Jelinekclosely follows the original source ASL. ACPICA BZ 1211. Example: 426*7b1019a6SJerry Jelinek 427*7b1019a6SJerry Jelinek Old disassembly: 428*7b1019a6SJerry Jelinek Else 429*7b1019a6SJerry Jelinek { 430*7b1019a6SJerry Jelinek If (Arg0 == 0x02) 431*7b1019a6SJerry Jelinek { 432*7b1019a6SJerry Jelinek Local0 = 0x05 433*7b1019a6SJerry Jelinek } 434*7b1019a6SJerry Jelinek } 435*7b1019a6SJerry Jelinek 436*7b1019a6SJerry Jelinek New disassembly: 437*7b1019a6SJerry Jelinek ElseIf (Arg0 == 0x02) 438*7b1019a6SJerry Jelinek { 439*7b1019a6SJerry Jelinek Local0 = 0x05 440*7b1019a6SJerry Jelinek } 441*7b1019a6SJerry Jelinek 442*7b1019a6SJerry JelinekAcpiExec: Added support for the new module level code behavior and the 443*7b1019a6SJerry Jelinekearly region installation. This required a small change to the 444*7b1019a6SJerry Jelinekinitialization, since AcpiExec must install its own operation region 445*7b1019a6SJerry Jelinekhandlers. 446*7b1019a6SJerry Jelinek 447*7b1019a6SJerry JelinekAcpiExec: Added support to make the debug object timer optional. Default 448*7b1019a6SJerry Jelinekis timer disabled. This cleans up the debug object output -- the timer 449*7b1019a6SJerry Jelinekdata is rarely used. 450*7b1019a6SJerry Jelinek 451*7b1019a6SJerry JelinekAcpiExec: Multiple ACPI tables are now loaded in the order that they 452*7b1019a6SJerry Jelinekappear on the command line. This can be important when there are 453*7b1019a6SJerry Jelinekinterdependencies/references between the tables. 454*7b1019a6SJerry Jelinek 455*7b1019a6SJerry JelinekiASL/Templates. Add support to generate template files with multiple 456*7b1019a6SJerry JelinekSSDTs within a single output file. Also added ommand line support to 457*7b1019a6SJerry Jelinekspecify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 458*7b1019a6SJerry Jelinek1223, 1225. 459*7b1019a6SJerry Jelinek 460*7b1019a6SJerry Jelinek 461*7b1019a6SJerry Jelinek---------------------------------------- 462*7b1019a6SJerry Jelinek24 November 2015. Summary of changes for version 20151124: 463*7b1019a6SJerry Jelinek 464*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 465*7b1019a6SJerry Jelinek 466*7b1019a6SJerry JelinekFixed a possible regression for a previous update to FADT handling. The 467*7b1019a6SJerry JelinekFADT no longer has a fixed table ID, causing some issues with code that 468*7b1019a6SJerry Jelinekwas hardwired to a specific ID. Lv Zheng. 469*7b1019a6SJerry Jelinek 470*7b1019a6SJerry JelinekFixed a problem where the method auto-serialization could interfere with 471*7b1019a6SJerry Jelinekthe current SyncLevel. This change makes the auto-serialization support 472*7b1019a6SJerry Jelinektransparent to the SyncLevel support and management. 473*7b1019a6SJerry Jelinek 474*7b1019a6SJerry JelinekRemoved support for the _SUB predefined name in AcpiGetObjectInfo. This 475*7b1019a6SJerry Jelinekinterface is intended for early access to the namespace during the 476*7b1019a6SJerry Jelinekinitial namespace device discovery walk. The _SUB method has been seen to 477*7b1019a6SJerry Jelinekaccess operation regions in some cases, causing errors because the 478*7b1019a6SJerry Jelinekoperation regions are not fully initialized. 479*7b1019a6SJerry Jelinek 480*7b1019a6SJerry JelinekAML Debugger: Fixed some issues with the terminate/quit/exit commands 481*7b1019a6SJerry Jelinekthat can cause faults. Lv Zheng. 482*7b1019a6SJerry Jelinek 483*7b1019a6SJerry JelinekAML Debugger: Add thread ID support so that single-step mode only applies 484*7b1019a6SJerry Jelinekto the AML Debugger thread. This prevents runtime errors within some 485*7b1019a6SJerry Jelinekkernels. Lv Zheng. 486*7b1019a6SJerry Jelinek 487*7b1019a6SJerry JelinekEliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 488*7b1019a6SJerry Jelinekmethods that are invoked by this interface are optional, removed warnings 489*7b1019a6SJerry Jelinekemitted for the case where one or more of these methods do not exist. 490*7b1019a6SJerry JelinekACPICA BZ 1208, original change by Prarit Bhargava. 491*7b1019a6SJerry Jelinek 492*7b1019a6SJerry JelinekMade a major pass through the entire ACPICA source code base to 493*7b1019a6SJerry Jelinekstandardize formatting that has diverged a bit over time. There are no 494*7b1019a6SJerry Jelinekfunctional changes, but this will of course cause quite a few code 495*7b1019a6SJerry Jelinekdifferences from the previous ACPICA release. 496*7b1019a6SJerry Jelinek 497*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 498*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 499*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 500*7b1019a6SJerry Jelinekhas a much larger code and data size. 501*7b1019a6SJerry Jelinek 502*7b1019a6SJerry Jelinek Current Release: 503*7b1019a6SJerry Jelinek Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 504*7b1019a6SJerry Jelinek Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 505*7b1019a6SJerry Jelinek Previous Release: 506*7b1019a6SJerry Jelinek Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 507*7b1019a6SJerry Jelinek Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 508*7b1019a6SJerry Jelinek 509*7b1019a6SJerry Jelinek 510*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 511*7b1019a6SJerry Jelinek 512*7b1019a6SJerry JelinekiASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 513*7b1019a6SJerry Jelinekdefinition blocks within a single ASL file and the resulting AML file. 514*7b1019a6SJerry JelinekSupport for this type of file was also added to the various tools that 515*7b1019a6SJerry Jelinekuse binary AML files: acpiexec, acpixtract, and the AML disassembler. The 516*7b1019a6SJerry Jelinekexample code below shows two definition blocks within the same file: 517*7b1019a6SJerry Jelinek 518*7b1019a6SJerry Jelinek DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 519*7b1019a6SJerry Jelinek0x12345678) 520*7b1019a6SJerry Jelinek { 521*7b1019a6SJerry Jelinek } 522*7b1019a6SJerry Jelinek DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 523*7b1019a6SJerry Jelinek { 524*7b1019a6SJerry Jelinek } 525*7b1019a6SJerry Jelinek 526*7b1019a6SJerry JelinekiASL: Enhanced typechecking for the Name() operator. All expressions for 527*7b1019a6SJerry Jelinekthe value of the named object must be reduced/folded to a single constant 528*7b1019a6SJerry Jelinekat compile time, as per the ACPI specification (the AML definition of 529*7b1019a6SJerry JelinekName()). 530*7b1019a6SJerry Jelinek 531*7b1019a6SJerry JelinekiASL: Fixed some code indentation issues for the -ic and -ia options (C 532*7b1019a6SJerry Jelinekand assembly headers). Now all emitted code correctly begins in column 1. 533*7b1019a6SJerry Jelinek 534*7b1019a6SJerry JelinekiASL: Added an error message for an attempt to open a Scope() on an 535*7b1019a6SJerry Jelinekobject defined in an SSDT. The DSDT is always loaded into the namespace 536*7b1019a6SJerry Jelinekfirst, so any attempt to open a Scope on an SSDT object will fail at 537*7b1019a6SJerry Jelinekruntime. 538*7b1019a6SJerry Jelinek 539*7b1019a6SJerry Jelinek 540*7b1019a6SJerry Jelinek---------------------------------------- 541*7b1019a6SJerry Jelinek30 September 2015. Summary of changes for version 20150930: 542*7b1019a6SJerry Jelinek 543*7b1019a6SJerry Jelinek1) ACPICA kernel-resident subsystem: 544*7b1019a6SJerry Jelinek 545*7b1019a6SJerry JelinekDebugger: Implemented several changes and bug fixes to assist support for 546*7b1019a6SJerry Jelinekthe in-kernel version of the AML debugger. Lv Zheng. 547*7b1019a6SJerry Jelinek- Fix the "predefined" command for in-kernel debugger. 548*7b1019a6SJerry Jelinek- Do not enter debug command loop for the help and version commands. 549*7b1019a6SJerry Jelinek- Disallow "execute" command during execution/single-step of a method. 550*7b1019a6SJerry Jelinek 551*7b1019a6SJerry JelinekInterpreter: Updated runtime typechecking for all operators that have 552*7b1019a6SJerry Jelinektarget operands. The operand is resolved and validated that it is legal. 553*7b1019a6SJerry JelinekFor example, the target cannot be a non-data object such as a Device, 554*7b1019a6SJerry JelinekMutex, ThermalZone, etc., as per the ACPI specification. 555*7b1019a6SJerry Jelinek 556*7b1019a6SJerry JelinekDebugger: Fixed the double-mutex user I/O handshake to work when local 557*7b1019a6SJerry Jelinekdeadlock detection is enabled. 558*7b1019a6SJerry Jelinek 559*7b1019a6SJerry JelinekDebugger: limited display of method locals and arguments (LocalX and 560*7b1019a6SJerry JelinekArgX) to only those that have actually been initialized. This prevents 561*7b1019a6SJerry Jelineklines of extraneous output. 562*7b1019a6SJerry Jelinek 563*7b1019a6SJerry JelinekUpdated the definition of the NFIT table to correct the bit polarity of 564*7b1019a6SJerry Jelinekone flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 565*7b1019a6SJerry Jelinek 566*7b1019a6SJerry JelinekExample Code and Data Size: These are the sizes for the OS-independent 567*7b1019a6SJerry Jelinekacpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 568*7b1019a6SJerry Jelinekdebug version of the code includes the debug output trace mechanism and 569*7b1019a6SJerry Jelinekhas a much larger code and data size. 570*7b1019a6SJerry Jelinek 571*7b1019a6SJerry Jelinek Current Release: 572*7b1019a6SJerry Jelinek Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 573*7b1019a6SJerry Jelinek Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 574*7b1019a6SJerry Jelinek Previous Release: 575*7b1019a6SJerry Jelinek Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 576*7b1019a6SJerry Jelinek Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 577*7b1019a6SJerry Jelinek 578*7b1019a6SJerry Jelinek 579*7b1019a6SJerry Jelinek2) iASL Compiler/Disassembler and Tools: 580*7b1019a6SJerry Jelinek 581*7b1019a6SJerry JelinekiASL: Improved the compile-time typechecking for operands of many of the 582*7b1019a6SJerry JelinekASL operators: 583*7b1019a6SJerry Jelinek 584*7b1019a6SJerry Jelinek-- Added an option to disable compiler operand/operator typechecking (- 585*7b1019a6SJerry Jelinekot). 586*7b1019a6SJerry Jelinek 587*7b1019a6SJerry Jelinek-- For the following operators, the TermArg operands are now validated 588*7b1019a6SJerry Jelinekwhen possible to be Integer data objects: BankField, OperationRegion, 589*7b1019a6SJerry JelinekDataTableRegion, Buffer, and Package. 590*7b1019a6SJerry Jelinek 591*7b1019a6SJerry Jelinek-- Store (Source, Target): Both the source and target operands are 592*7b1019a6SJerry Jelinekresolved and checked that the operands are both legal. For example, 593*7b1019a6SJerry Jelinekneither operand can be a non-data object such as a Device, Mutex, 594*7b1019a6SJerry JelinekThermalZone, etc. Note, as per the ACPI specification, the CopyObject 595*7b1019a6SJerry Jelinekoperator can be used to store an object to any type of target object. 596*7b1019a6SJerry Jelinek 597*7b1019a6SJerry Jelinek-- Store (Source, Target): If the source is a Package object, the target 598*7b1019a6SJerry Jelinekmust be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 599*7b1019a6SJerry Jelinekis a Package, the source must also be a Package. 600*7b1019a6SJerry Jelinek 601*7b1019a6SJerry Jelinek-- Store (Source, Target): A warning is issued if the source and target 602*7b1019a6SJerry Jelinekresolve to the identical named object. 603*7b1019a6SJerry Jelinek 604*7b1019a6SJerry Jelinek-- Store (Source, <method invocation>): An error is generated for the 605*7b1019a6SJerry Jelinektarget method invocation, as this construct is not supported by the AML 606*7b1019a6SJerry Jelinekinterpreter. 607*7b1019a6SJerry Jelinek 608*7b1019a6SJerry Jelinek-- For all ASL math and logic operators, the target operand must be a 609*7b1019a6SJerry Jelinekdata object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 610*7b1019a6SJerry Jelinekincludes the function return value also. 611*7b1019a6SJerry Jelinek 612*7b1019a6SJerry Jelinek-- External declarations are also included in the typechecking where 613*7b1019a6SJerry Jelinekpossible. External objects defined using the UnknownObj keyword cannot be 614*7b1019a6SJerry Jelinektypechecked, however. 615*7b1019a6SJerry Jelinek 616*7b1019a6SJerry JelinekiASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 617*7b1019a6SJerry Jelinekoperator: 618*7b1019a6SJerry Jelinek- Legacy code: Index(PKG1, 3) 619*7b1019a6SJerry Jelinek- New ASL+ code: PKG1[3] 620