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,
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]