changes.txt revision 167802
1117521Snjl----------------------------------------
2151937Sjkim20 March 2007. Summary of changes for version 20070320:
3151937Sjkim
4151937Sjkim1) ACPI CA Core Subsystem:
5151937Sjkim
6151937SjkimImplemented a change to the order of interpretation and
7151937Sjkimevaluation of AML operand objects within the AML interpreter. The
8151937Sjkiminterpreter now evaluates operands in the order that they appear
9151937Sjkimin the AML stream (and the corresponding ASL code), instead of in
10151937Sjkimthe reverse order (after the entire operand list has been
11151937Sjkimparsed). The previous behavior caused several subtle
12151937Sjkimincompatibilities with the Microsoft AML interpreter as well as
13151937Sjkimbeing somewhat non-intuitive. BZ 7871, local BZ 263. Valery
14151937SjkimPodrezov.
15151937Sjkim
16151937SjkimImplemented a change to the ACPI Global Lock support. All
17151937Sjkiminterfaces to the global lock now allow the same thread to
18151937Sjkimacquire the lock multiple times. This affects the
19151937SjkimAcpiAcquireGlobalLock external interface to the global lock as
20151937Sjkimwell as the internal use of the global lock to support AML fields
21151937Sjkim-- a control method that is holding the global lock can now
22151937Sjkimsimultaneously access AML fields that require global lock
23151937Sjkimprotection. Previously, in both cases, this would have resulted
24151937Sjkimin an AE_ALREADY_ACQUIRED exception. The change to
25151937SjkimAcpiAcquireGlobalLock is of special interest to drivers for the
26151937SjkimEmbedded Controller. There is no change to the behavior of the
27151937SjkimAML Acquire operator, as this can already be used to acquire a
28151937Sjkimmutex multiple times by the same thread. BZ 8066. With assistance
29151937Sjkimfrom Alexey Starikovskiy.
30151937Sjkim
31151937SjkimFixed a problem where invalid objects could be referenced in the
32151937SjkimAML Interpreter after error conditions. During operand
33151937Sjkimevaluation, ensure that the internal "Return Object" field is
34151937Sjkimcleared on error and only valid pointers are stored there. Caused
35151937Sjkimoccasional access to deleted objects that resulted in "large
36151937Sjkimreference count" warning messages. Valery Podrezov.
37151937Sjkim
38151937SjkimFixed a problem where an AE_STACK_OVERFLOW internal exception
39151937Sjkimcould occur on deeply nested control method invocations. BZ 7873,
40151937Sjkimlocal BZ 487. Valery Podrezov.
41151937Sjkim
42151937SjkimFixed an internal problem with the handling of result objects on
43151937Sjkimthe interpreter result stack. BZ 7872. Valery Podrezov.
44151937Sjkim
45151937SjkimRemoved obsolete code that handled the case where AML_NAME_OP is
46151937Sjkimthe target of a reference (Reference.Opcode). This code was no
47151937Sjkimlonger necessary. BZ 7874. Valery Podrezov.
48151937Sjkim
49151937SjkimRemoved obsolete ACPI_NO_INTEGER64_SUPPORT from two header files.
50151937SjkimThis was a remnant from the previously discontinued 16-bit
51151937Sjkimsupport.
52151937Sjkim
53151937SjkimExample Code and Data Size: These are the sizes for the OS-
54151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
55151937Sjkim32-bit compiler. The debug version of the code includes the debug
56151937Sjkimoutput trace mechanism and has a much larger code and data size.
57151937Sjkim
58151937Sjkim  Previous Release:
59151937Sjkim    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
60151937Sjkim    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
61151937Sjkim  Current Release:
62151937Sjkim    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
63151937Sjkim    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
64151937Sjkim
65151937Sjkim----------------------------------------
66151937Sjkim26 January 2007. Summary of changes for version 20070126:
67151937Sjkim
68151937Sjkim1) ACPI CA Core Subsystem:
69151937Sjkim
70151937SjkimAdded the 2007 copyright to all module headers and signons. This
71151937Sjkimaffects virtually every file in the ACPICA core subsystem, the
72151937SjkimiASL compiler, and the utilities.
73151937Sjkim
74151937SjkimImplemented a fix for an incorrect parameter passed to
75151937SjkimAcpiTbDeleteTable during a table load. A bad pointer was passed
76151937Sjkimin the case where the DSDT is overridden, causing a fault in this
77151937Sjkimcase.
78151937Sjkim
79151937SjkimExample Code and Data Size: These are the sizes for the OS-
80151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
81151937Sjkim32-bit compiler. The debug version of the code includes the debug
82151937Sjkimoutput trace mechanism and has a much larger code and data size.
83151937Sjkim
84151937Sjkim  Previous Release:
85151937Sjkim    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
86151937Sjkim    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
87151937Sjkim  Current Release:
88151937Sjkim    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
89151937Sjkim    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
90151937Sjkim
91151937Sjkim----------------------------------------
92151937Sjkim15 December 2006. Summary of changes for version 20061215:
93151937Sjkim
94151937Sjkim1) ACPI CA Core Subsystem:
95151937Sjkim
96151937SjkimSupport for 16-bit ACPICA has been completely removed since it is
97151937Sjkimno longer necessary and it clutters the code. All 16-bit macros,
98151937Sjkimtypes, and conditional compiles have been removed, cleaning up
99151937Sjkimand simplifying the code across the entire subsystem. DOS support
100151937Sjkimis no longer needed since the bootable Linux firmware kit is now
101151937Sjkimavailable.
102151937Sjkim
103151937SjkimThe handler for the Global Lock is now removed during
104151937SjkimAcpiTerminate to enable a clean subsystem restart, via the
105151937Sjkimimplementation of the AcpiEvRemoveGlobalLockHandler function.
106151937Sjkim(With assistance from Joel Bretz, HP)
107151937Sjkim
108151937SjkimImplemented enhancements to the multithreading support within the
109151937Sjkimdebugger to enable improved multithreading debugging and
110151937Sjkimevaluation of the subsystem. (Valery Podrezov)
111151937Sjkim
112151937SjkimDebugger: Enhanced the Statistics/Memory command to emit the
113151937Sjkimtotal (maximum) memory used during the execution, as well as the
114151937Sjkimmaximum memory consumed by each of the various object types.
115151937Sjkim(Valery Podrezov)
116151937Sjkim
117151937SjkimExample Code and Data Size: These are the sizes for the OS-
118151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
119151937Sjkim32-bit compiler. The debug version of the code includes the debug
120151937Sjkimoutput trace mechanism and has a much larger code and data size.
121151937Sjkim
122151937Sjkim  Previous Release:
123151937Sjkim    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
124151937Sjkim    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
125151937Sjkim  Current Release:
126151937Sjkim    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
127151937Sjkim    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
128151937Sjkim
129151937Sjkim
130151937Sjkim2) iASL Compiler/Disassembler and Tools:
131151937Sjkim
132151937SjkimAcpiExec: Implemented a new option (-m) to display full memory
133151937Sjkimuse statistics upon subsystem/program termination. (Valery
134151937SjkimPodrezov)
135151937Sjkim
136151937Sjkim----------------------------------------
137151937Sjkim09 November 2006. Summary of changes for version 20061109:
138151937Sjkim
139151937Sjkim1) ACPI CA Core Subsystem:
140151937Sjkim
141151937SjkimOptimized the Load ASL operator in the case where the source
142151937Sjkimoperand is an operation region. Simply map the operation region
143151937Sjkimmemory, instead of performing a bytewise read. (Region must be of
144151937Sjkimtype SystemMemory, see below.)
145151937Sjkim
146151937SjkimFixed the Load ASL operator for the case where the source operand
147151937Sjkimis a region field. A buffer object is also allowed as the source
148151937Sjkimoperand. BZ 480
149151937Sjkim
150151937SjkimFixed a problem where the Load ASL operator allowed the source
151151937Sjkimoperand to be an operation region of any type. It is now
152151937Sjkimrestricted to regions of type SystemMemory, as per the ACPI
153151937Sjkimspecification. BZ 481
154151937Sjkim
155151937SjkimAdditional cleanup and optimizations for the new Table Manager
156151937Sjkimcode.
157151937Sjkim
158151937SjkimAcpiEnable will now fail if all of the required ACPI tables are
159151937Sjkimnot loaded (FADT, FACS, DSDT). BZ 477
160151937Sjkim
161151937SjkimAdded #pragma pack(8/4) to acobject.h to ensure that the
162151937Sjkimstructures in this header are always compiled as aligned. The
163151937SjkimACPI_OPERAND_OBJECT has been manually optimized to be aligned and
164151937Sjkimwill not work if it is byte-packed.
165151937Sjkim
166151937SjkimExample Code and Data Size: These are the sizes for the OS-
167151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
168151937Sjkim32-bit compiler. The debug version of the code includes the debug
169151937Sjkimoutput trace mechanism and has a much larger code and data size.
170151937Sjkim
171151937Sjkim  Previous Release:
172151937Sjkim    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
173151937Sjkim    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
174151937Sjkim  Current Release:
175151937Sjkim    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
176151937Sjkim    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
177151937Sjkim
178151937Sjkim
179151937Sjkim2) iASL Compiler/Disassembler and Tools:
180151937Sjkim
181151937SjkimFixed a problem where the presence of the _OSI predefined control
182151937Sjkimmethod within complex expressions could cause an internal
183151937Sjkimcompiler error.
184151937Sjkim
185151937SjkimAcpiExec: Implemented full region support for multiple address
186151937Sjkimspaces. SpaceId is now part of the REGION object. BZ 429
187151937Sjkim
188151937Sjkim----------------------------------------
189151937Sjkim11 October 2006. Summary of changes for version 20061011:
190151937Sjkim
191151937Sjkim1) ACPI CA Core Subsystem:
192151937Sjkim
193151937SjkimCompleted an AML interpreter performance enhancement for control
194151937Sjkimmethod execution. Previously a 2-pass parse/execution, control
195151937Sjkimmethods are now completely parsed and executed in a single pass.
196151937SjkimThis improves overall interpreter performance by ~25%, reduces
197151937Sjkimcode size, and reduces CPU stack use. (Valery Podrezov +
198151937Sjkiminterpreter changes in version 20051202 that eliminated namespace
199151937Sjkimloading during the pass one parse.)
200151937Sjkim
201151937SjkimImplemented _CID support for PCI Root Bridge detection. If the
202151937Sjkim_HID does not match the predefined PCI Root Bridge IDs, the _CID
203151937Sjkimlist (if present) is now obtained and also checked for an ID
204151937Sjkimmatch.
205151937Sjkim
206151937SjkimImplemented additional support for the PCI _ADR execution:
207151937Sjkimupsearch until a device scope is found before executing _ADR.
208151937SjkimThis allows PCI_Config operation regions to be declared locally
209151937Sjkimwithin control methods underneath PCI device objects.
210151937Sjkim
211151937SjkimFixed a problem with a possible race condition between threads
212151937Sjkimexecuting AcpiWalkNamespace and the AML interpreter. This
213151937Sjkimcondition was removed by modifying AcpiWalkNamespace to (by
214151937Sjkimdefault) ignore all temporary namespace entries created during
215151937Sjkimany concurrent control method execution. An additional namespace
216151937Sjkimrace condition is known to exist between AcpiWalkNamespace and
217151937Sjkimthe Load/Unload ASL operators and is still under investigation.
218151937Sjkim
219151937SjkimRestructured the AML ParseLoop function, breaking it into several
220151937Sjkimsubfunctions in order to reduce CPU stack use and improve
221151937Sjkimmaintainability. (Mikhail Kouzmich)
222151937Sjkim
223151937SjkimAcpiGetHandle: Fix for parameter validation to detect invalid
224151937Sjkimcombinations of prefix handle and pathname. BZ 478
225151937Sjkim
226151937SjkimExample Code and Data Size: These are the sizes for the OS-
227151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
228151937Sjkim32-bit compiler. The debug version of the code includes the debug
229151937Sjkimoutput trace mechanism and has a much larger code and data size.
230151937Sjkim
231151937Sjkim  Previous Release:
232151937Sjkim    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
233151937Sjkim    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
234151937Sjkim  Current Release:
235151937Sjkim    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
236151937Sjkim    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
237151937Sjkim
238151937Sjkim2) iASL Compiler/Disassembler and Tools:
239151937Sjkim
240151937SjkimPorted the -g option (get local ACPI tables) to the new ACPICA
241151937SjkimTable Manager to restore original behavior.
242151937Sjkim
243151937Sjkim----------------------------------------
244151937Sjkim27 September 2006. Summary of changes for version 20060927:
245151937Sjkim
246151937Sjkim1) ACPI CA Core Subsystem:
247151937Sjkim
248151937SjkimRemoved the "Flags" parameter from AcpiGetRegister and
249151937SjkimAcpiSetRegister. These functions now use a spinlock for mutual
250151937Sjkimexclusion and the interrupt level indication flag is not needed.
251151937Sjkim
252151937SjkimFixed a problem with the Global Lock where the lock could appear
253151937Sjkimto be obtained before it is actually obtained. The global lock
254151937Sjkimsemaphore was inadvertently created with one unit instead of zero
255151937Sjkimunits. (BZ 464) Fiodor Suietov.
256151937Sjkim
257151937SjkimFixed a possible memory leak and fault in
258151937SjkimAcpiExResolveObjectToValue during a read from a buffer or region
259151937Sjkimfield. (BZ 458) Fiodor Suietov.
260151937Sjkim
261151937SjkimExample Code and Data Size: These are the sizes for the OS-
262151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
263151937Sjkim32-bit compiler. The debug version of the code includes the debug
264151937Sjkimoutput trace mechanism and has a much larger code and data size.
265151937Sjkim
266151937Sjkim  Previous Release:
267151937Sjkim    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
268151937Sjkim    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
269151937Sjkim  Current Release:
270151937Sjkim    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
271151937Sjkim    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
272151937Sjkim
273151937Sjkim
274151937Sjkim2) iASL Compiler/Disassembler and Tools:
275151937Sjkim
276151937SjkimFixed a compilation problem with the pre-defined Resource
277151937SjkimDescriptor field names where an "object does not exist" error
278151937Sjkimcould be incorrectly generated if the parent ResourceTemplate
279151937Sjkimpathname places the template within a different namespace scope
280151937Sjkimthan the current scope. (BZ 7212)
281151937Sjkim
282151937SjkimFixed a problem where the compiler could hang after syntax errors
283151937Sjkimdetected in an ElseIf construct. (BZ 453)
284151937Sjkim
285151937SjkimFixed a problem with the AmlFilename parameter to the
286151937SjkimDefinitionBlock() operator. An incorrect output filename was
287151937Sjkimproduced when this parameter was a null string (""). Now, the
288151937Sjkimoriginal input filename is used as the AML output filename, with
289151937Sjkiman ".aml" extension.
290151937Sjkim
291151937SjkimImplemented a generic batch command mode for the AcpiExec utility
292151937Sjkim(execute any AML debugger command) (Valery Podrezov).
293151937Sjkim
294151937Sjkim----------------------------------------
295151937Sjkim12 September 2006. Summary of changes for version 20060912:
296151937Sjkim
297151937Sjkim1) ACPI CA Core Subsystem:
298151937Sjkim
299151937SjkimEnhanced the implementation of the "serialized mode" of the
300151937Sjkiminterpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.)
301151937SjkimWhen this mode is specified, instead of creating a serialization
302151937Sjkimsemaphore per control method, the interpreter lock is simply no
303151937Sjkimlonger released before a blocking operation during control method
304151937Sjkimexecution. This effectively makes the AML Interpreter single-
305151937Sjkimthreaded. The overhead of a semaphore per-method is eliminated.
306151937Sjkim
307151937SjkimFixed a regression where an error was no longer emitted if a
308151937Sjkimcontrol method attempts to create 2 objects of the same name.
309151937SjkimThis once again returns AE_ALREADY_EXISTS. When this exception
310151937Sjkimoccurs, it invokes the mechanism that will dynamically serialize
311151937Sjkimthe control method to possible prevent future errors. (BZ 440)
312151937Sjkim
313151937SjkimIntegrated a fix for a problem with PCI Express HID detection in
314151937Sjkimthe PCI Config Space setup procedure. (BZ 7145)
315151937Sjkim
316151937SjkimMoved all FADT-related functions to a new file, tbfadt.c.
317151937SjkimEliminated the AcpiHwInitialize function - the FADT registers are
318151937Sjkimnow validated when the table is loaded.
319151937Sjkim
320151937SjkimAdded two new warnings during FADT verification - 1) if the FADT
321151937Sjkimis larger than the largest known FADT version, and 2) if there is
322151937Sjkima mismatch between a 32-bit block address and the 64-bit X
323151937Sjkimcounterpart (when both are non-zero.)
324151937Sjkim
325151937SjkimExample Code and Data Size: These are the sizes for the OS-
326151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
327151937Sjkim32-bit compiler. The debug version of the code includes the debug
328151937Sjkimoutput trace mechanism and has a much larger code and data size.
329151937Sjkim
330151937Sjkim  Previous Release:
331151937Sjkim    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
332151937Sjkim    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
333151937Sjkim  Current Release:
334151937Sjkim    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
335151937Sjkim    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
336151937Sjkim
337151937Sjkim
338151937Sjkim2) iASL Compiler/Disassembler and Tools:
339151937Sjkim
340151937SjkimFixed a problem with the implementation of the Switch() operator
341151937Sjkimwhere the temporary variable was declared too close to the actual
342151937SjkimSwitch, instead of at method level. This could cause a problem if
343151937Sjkimthe Switch() operator is within a while loop, causing an error on
344151937Sjkimthe second iteration. (BZ 460)
345151937Sjkim
346151937SjkimDisassembler - fix for error emitted for unknown type for target
347151937Sjkimof scope operator. Now, ignore it and continue.
348151937Sjkim
349151937SjkimDisassembly of an FADT now verifies the input FADT and reports
350151937Sjkimany errors found. Fix for proper disassembly of full-sized (ACPI
351151937Sjkim2.0) FADTs.
352151937Sjkim
353151937SjkimDisassembly of raw data buffers with byte initialization data now
354151937Sjkimprefixes each output line with the current buffer offset.
355151937Sjkim
356151937SjkimDisassembly of ASF! table now includes all variable-length data
357151937Sjkimfields at the end of some of the subtables.
358151937Sjkim
359151937SjkimThe disassembler now emits a comment if a buffer appears to be a
360151937SjkimResourceTemplate, but cannot be disassembled as such because the
361151937SjkimEndTag does not appear at the very end of the buffer.
362151937Sjkim
363151937SjkimAcpiExec - Added the "-t" command line option to enable the
364151937Sjkimserialized mode of the AML interpreter.
365151937Sjkim
366151937Sjkim----------------------------------------
367151937Sjkim31 August 2006. Summary of changes for version 20060831:
368151937Sjkim
369151937Sjkim1) ACPI CA Core Subsystem:
370151937Sjkim
371151937SjkimMiscellaneous fixes for the Table Manager:
372151937Sjkim- Correctly initialize internal common FADT for all 64-bit "X"
373151937Sjkimfields
374151937Sjkim- Fixed a couple table mapping issues during table load
375151937Sjkim- Fixed a couple alignment issues for IA64
376151937Sjkim- Initialize input array to zero in AcpiInitializeTables
377151937Sjkim- Additional parameter validation for AcpiGetTable,
378151937SjkimAcpiGetTableHeader, AcpiGetTableByIndex
379151937Sjkim
380151937SjkimChange for GPE support: when a "wake" GPE is received, all wake
381151937SjkimGPEs are now immediately disabled to prevent the waking GPE from
382151937Sjkimfiring again and to prevent other wake GPEs from interrupting the
383151937Sjkimwake process.
384151937Sjkim
385151937SjkimAdded the AcpiGpeCount global that tracks the number of processed
386151937SjkimGPEs, to be used for debugging systems with a large number of
387151937SjkimACPI interrupts.
388151937Sjkim
389151937SjkimImplemented support for the "DMAR" ACPI table (DMA Redirection
390151937SjkimTable) in both the ACPICA headers and the disassembler.
391151937Sjkim
392151937SjkimExample Code and Data Size: These are the sizes for the OS-
393151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
394151937Sjkim32-bit compiler. The debug version of the code includes the debug
395151937Sjkimoutput trace mechanism and has a much larger code and data size.
396151937Sjkim
397151937Sjkim  Previous Release:
398151937Sjkim    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
399151937Sjkim    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
400151937Sjkim  Current Release:
401151937Sjkim    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
402151937Sjkim    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
403151937Sjkim
404151937Sjkim
405151937Sjkim2) iASL Compiler/Disassembler and Tools:
406151937Sjkim
407151937SjkimDisassembler support for the DMAR ACPI table.
408151937Sjkim
409151937Sjkim----------------------------------------
410151937Sjkim23 August 2006. Summary of changes for version 20060823:
411151937Sjkim
412151937Sjkim1) ACPI CA Core Subsystem:
413151937Sjkim
414151937SjkimThe Table Manager component has been completely redesigned and
415151937Sjkimreimplemented. The new design is much simpler, and reduces the
416151937Sjkimoverall code and data size of the kernel-resident ACPICA by
417151937Sjkimapproximately 5%. Also, it is now possible to obtain the ACPI
418151937Sjkimtables very early during kernel initialization, even before
419151937Sjkimdynamic memory management is initialized. (Alexey Starikovskiy,
420151937SjkimFiodor Suietov, Bob Moore)
421151937Sjkim
422151937SjkimObsolete ACPICA interfaces:
423151937Sjkim
424151937Sjkim- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early
425151937Sjkimkernel init time).
426151937Sjkim- AcpiLoadTable: Not needed.
427151937Sjkim- AcpiUnloadTable: Not needed.
428151937Sjkim
429151937SjkimNew ACPICA interfaces:
430151937Sjkim
431151937Sjkim- AcpiInitializeTables: Must be called before the table manager
432151937Sjkimcan be used.
433151937Sjkim- AcpiReallocateRootTable: Used to transfer the root table to
434151937Sjkimdynamically allocated memory after it becomes available.
435151937Sjkim- AcpiGetTableByIndex: Allows the host to easily enumerate all
436151937SjkimACPI tables in the RSDT/XSDT.
437151937Sjkim
438151937SjkimOther ACPICA changes:
439151937Sjkim
440151937Sjkim- AcpiGetTableHeader returns the actual mapped table header, not
441151937Sjkima copy. Use AcpiOsUnmapMemory to free this mapping.
442151937Sjkim- AcpiGetTable returns the actual mapped table. The mapping is
443151937Sjkimmanaged internally and must not be deleted by the caller. Use of
444151937Sjkimthis interface causes no additional dynamic memory allocation.
445151937Sjkim- AcpiFindRootPointer: Support for physical addressing has been
446151937Sjkimeliminated, it appeared to be unused.
447151937Sjkim- The interface to AcpiOsMapMemory has changed to be consistent
448151937Sjkimwith the other allocation interfaces.
449151937Sjkim- The interface to AcpiOsGetRootPointer has changed to eliminate
450151937Sjkimunnecessary parameters.
451151937Sjkim- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64
452151937Sjkimbits on 64-bit platforms. Was previously 64 bits on all
453151937Sjkimplatforms.
454151937Sjkim- The interface to the ACPI Global Lock acquire/release macros
455151937Sjkimhave changed slightly since ACPICA no longer keeps a local copy
456151937Sjkimof the FACS with a constructed pointer to the actual global lock.
457151937Sjkim
458151937SjkimPorting to the new table manager:
459151937Sjkim
460151937Sjkim- AcpiInitializeTables: Must be called once, and can be called
461151937Sjkimanytime during the OS initialization process. It allows the host
462151937Sjkimto specify an area of memory to be used to store the internal
463151937Sjkimversion of the RSDT/XSDT (root table). This allows the host to
464151937Sjkimaccess ACPI tables before memory management is initialized and
465151937Sjkimrunning.
466151937Sjkim- AcpiReallocateRootTable: Can be called after memory management
467151937Sjkimis running to copy the root table to a dynamically allocated
468151937Sjkimarray, freeing up the scratch memory specified in the call to
469151937SjkimAcpiInitializeTables.
470151937Sjkim- AcpiSubsystemInitialize: This existing interface is independent
471151937Sjkimof the Table Manager, and does not have to be called before the
472151937SjkimTable Manager can be used, it only must be called before the rest
473151937Sjkimof ACPICA can be used.
474151937Sjkim- ACPI Tables: Some changes have been made to the names and
475151937Sjkimstructure of the actbl.h and actbl1.h header files and may
476151937Sjkimrequire changes to existing code. For example, bitfields have
477151937Sjkimbeen completely removed because of their lack of portability
478151937Sjkimacross C compilers.
479151937Sjkim- Update interfaces to the Global Lock acquire/release macros if
480151937Sjkimlocal versions are used. (see acwin.h)
481151937Sjkim
482151937SjkimObsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
483151937Sjkim
484151937SjkimNew files: tbfind.c
485151937Sjkim
486151937SjkimExample Code and Data Size: These are the sizes for the OS-
487151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
488151937Sjkim32-bit compiler. The debug version of the code includes the debug
489151937Sjkimoutput trace mechanism and has a much larger code and data size.
490151937Sjkim
491151937Sjkim  Previous Release:
492151937Sjkim    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
493151937Sjkim    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
494151937Sjkim  Current Release:
495151937Sjkim    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
496151937Sjkim    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
497151937Sjkim
498151937Sjkim
499151937Sjkim2) iASL Compiler/Disassembler and Tools:
500151937Sjkim
501151937SjkimNo changes for this release.
502151937Sjkim
503151937Sjkim----------------------------------------
504151937Sjkim21 July 2006. Summary of changes for version 20060721:
505151937Sjkim
506151937Sjkim1) ACPI CA Core Subsystem:
507151937Sjkim
508151937SjkimThe full source code for the ASL test suite used to validate the
509151937SjkimiASL compiler and the ACPICA core subsystem is being released
510151937Sjkimwith the ACPICA source for the first time. The source is
511151937Sjkimcontained in a separate package and consists of over 1100 files
512151937Sjkimthat exercise all ASL/AML operators. The package should appear on
513151937Sjkimthe Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
514151937SjkimSuietov)
515151937Sjkim
516151937SjkimCompleted a new design and implementation for support of the ACPI
517151937SjkimGlobal Lock. On the OS side, the global lock is now treated as a
518151937Sjkimstandard AML mutex. Previously, multiple OS threads could
519151937Sjkim"acquire" the global lock simultaneously. However, this could
520151937Sjkimcause the BIOS to be starved out of the lock - especially in
521151937Sjkimcases such as the Embedded Controller driver where there is a
522151937Sjkimtight coupling between the OS and the BIOS.
523151937Sjkim
524151937SjkimImplemented an optimization for the ACPI Global Lock interrupt
525151937Sjkimmechanism. The Global Lock interrupt handler no longer queues the
526151937Sjkimexecution of a separate thread to signal the global lock
527151937Sjkimsemaphore. Instead, the semaphore is signaled directly from the
528151937Sjkiminterrupt handler.
529151937Sjkim
530151937SjkimImplemented support within the AML interpreter for package
531151937Sjkimobjects that contain a larger AML length (package list length)
532151937Sjkimthan the package element count. In this case, the length of the
533151937Sjkimpackage is truncated to match the package element count. Some
534151937SjkimBIOS code apparently modifies the package length on the fly, and
535151937Sjkimthis change supports this behavior. Provides compatibility with
536151937Sjkimthe MS AML interpreter. (With assistance from Fiodor Suietov)
537151937Sjkim
538151937SjkimImplemented a temporary fix for the BankValue parameter of a Bank
539151937SjkimField to support all constant values, now including the Zero and
540151937SjkimOne opcodes. Evaluation of this parameter must eventually be
541151937Sjkimconverted to a full TermArg evaluation. A not-implemented error
542151937Sjkimis now returned (temporarily) for non-constant values for this
543151937Sjkimparameter.
544151937Sjkim
545151937SjkimFixed problem reports (Fiodor Suietov) integrated:
546151937Sjkim- Fix for premature object deletion after CopyObject on Operation
547151937SjkimRegion (BZ 350)
548151937Sjkim
549151937SjkimExample Code and Data Size: These are the sizes for the OS-
550151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
551151937Sjkim32-bit compiler. The debug version of the code includes the debug
552151937Sjkimoutput trace mechanism and has a much larger code and data size.
553151937Sjkim
554151937Sjkim  Previous Release:
555151937Sjkim    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
556151937Sjkim    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
557151937Sjkim  Current Release:
558151937Sjkim    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
559151937Sjkim    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
560151937Sjkim
561151937Sjkim
562151937Sjkim2) iASL Compiler/Disassembler and Tools:
563151937Sjkim
564151937SjkimNo changes for this release.
565151937Sjkim
566151937Sjkim----------------------------------------
567151937Sjkim07 July 2006. Summary of changes for version 20060707:
568151937Sjkim
569151937Sjkim1) ACPI CA Core Subsystem:
570151937Sjkim
571151937SjkimAdded the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C
572151937Sjkimcompilers that do not allow the initialization of address
573151937Sjkimpointers within packed structures - even though the hardware
574151937Sjkimitself may support misaligned transfers. Some of the debug data
575151937Sjkimstructures are packed by default to minimize size.
576151937Sjkim
577151937SjkimAdded an error message for the case where AcpiOsGetThreadId()
578151937Sjkimreturns zero. A non-zero value is required by the core ACPICA
579151937Sjkimcode to ensure the proper operation of AML mutexes and recursive
580151937Sjkimcontrol methods.
581151937Sjkim
582151937SjkimThe DSDT is now the only ACPI table that determines whether the
583151937SjkimAML interpreter is in 32-bit or 64-bit mode. Not really a
584151937Sjkimfunctional change, but the hooks for per-table 32/64 switching
585151937Sjkimhave been removed from the code. A clarification to the ACPI
586151937Sjkimspecification is forthcoming in ACPI 3.0B.
587151937Sjkim
588151937SjkimFixed a possible leak of an OwnerID in the error path of
589151937SjkimAcpiTbInitTableDescriptor (tbinstal.c), and migrated all table
590151937SjkimOwnerID deletion to a single place in AcpiTbUninstallTable to
591151937Sjkimcorrect possible leaks when using the AcpiTbDeleteTablesByType
592151937Sjkiminterface (with assistance from Lance Ortiz.)
593151937Sjkim
594151937SjkimFixed a problem with Serialized control methods where the
595151937Sjkimsemaphore associated with the method could be over-signaled after
596151937Sjkimmultiple method invocations.
597151937Sjkim
598151937SjkimFixed two issues with the locking of the internal namespace data
599151937Sjkimstructure. Both the Unload() operator and AcpiUnloadTable
600151937Sjkiminterface now lock the namespace during the namespace deletion
601151937Sjkimassociated with the table unload (with assistance from Linn
602151937SjkimCrosetto.)
603151937Sjkim
604151937SjkimFixed problem reports (Valery Podrezov) integrated:
605151937Sjkim- Eliminate unnecessary memory allocation for CreateXxxxField (BZ
606151937Sjkim5426)
607151937Sjkim
608151937SjkimFixed problem reports (Fiodor Suietov) integrated:
609151937Sjkim- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
610151937Sjkim- On Address Space handler deletion, needless deactivation call
611151937Sjkim(BZ 374)
612151937Sjkim- AcpiRemoveAddressSpaceHandler: validate Device handle parameter
613151937Sjkim(BZ 375)
614151937Sjkim- Possible memory leak, Notify sub-objects of Processor, Power,
615151937SjkimThermalZone (BZ 376)
616151937Sjkim- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ
617151937Sjkim378)
618151937Sjkim- Minimum Length of RSDT should be validated (BZ 379)
619151937Sjkim- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj
620151937Sjkimhas no Handler (BZ (380)
621151937Sjkim- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified
622151937Sjkimtype loaded (BZ 381)
623151937Sjkim
624151937SjkimExample Code and Data Size: These are the sizes for the OS-
625151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
626151937Sjkim32-bit compiler. The debug version of the code includes the debug
627151937Sjkimoutput trace mechanism and has a much larger code and data size.
628151937Sjkim
629151937Sjkim  Previous Release:
630151937Sjkim    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
631151937Sjkim    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
632151937Sjkim  Current Release:
633151937Sjkim    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
634151937Sjkim    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
635151937Sjkim
636151937Sjkim
637151937Sjkim2) iASL Compiler/Disassembler and Tools:
638151937Sjkim
639151937SjkimFixed problem reports:
640151937SjkimCompiler segfault when ASL contains a long (>1024) String
641151937Sjkimdeclaration (BZ 436)
642151937Sjkim
643151937Sjkim----------------------------------------
644151937Sjkim23 June 2006. Summary of changes for version 20060623:
645151937Sjkim
646151937Sjkim1) ACPI CA Core Subsystem:
647151937Sjkim
648151937SjkimImplemented a new ACPI_SPINLOCK type for the OSL lock interfaces.
649151937SjkimThis allows the type to be customized to the host OS for improved
650151937Sjkimefficiency (since a spinlock is usually a very small object.)
651151937Sjkim
652151937SjkimImplemented support for "ignored" bits in the ACPI registers.
653151937SjkimAccording to the ACPI specification, these bits should be
654151937Sjkimpreserved when writing the registers via a read/modify/write
655151937Sjkimcycle. There are 3 bits preserved in this manner: PM1_CONTROL[0]
656151937Sjkim(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
657151937Sjkim
658151937SjkimImplemented the initial deployment of new OSL mutex interfaces.
659151937SjkimSince some host operating systems have separate mutex and
660151937Sjkimsemaphore objects, this feature was requested. The base code now
661151937Sjkimuses mutexes (and the new mutex interfaces) wherever a binary
662151937Sjkimsemaphore was used previously. However, for the current release,
663151937Sjkimthe mutex interfaces are defined as macros to map them to the
664151937Sjkimexisting semaphore interfaces. Therefore, no OSL changes are
665151937Sjkimrequired at this time. (See acpiosxf.h)
666151937Sjkim
667151937SjkimFixed several problems with the support for the control method
668151937SjkimSyncLevel parameter. The SyncLevel now works according to the
669151937SjkimACPI specification and in concert with the Mutex SyncLevel
670151937Sjkimparameter, since the current SyncLevel is a property of the
671151937Sjkimexecuting thread. Mutual exclusion for control methods is now
672151937Sjkimimplemented with a mutex instead of a semaphore.
673151937Sjkim
674151937SjkimFixed three instances of the use of the C shift operator in the
675151937Sjkimbitfield support code (exfldio.c) to avoid the use of a shift
676151937Sjkimvalue larger than the target data width. The behavior of C
677151937Sjkimcompilers is undefined in this case and can cause unpredictable
678151937Sjkimresults, and therefore the case must be detected and avoided.
679151937Sjkim(Fiodor Suietov)
680151937Sjkim
681151937SjkimAdded an info message whenever an SSDT or OEM table is loaded
682151937Sjkimdynamically via the Load() or LoadTable() ASL operators. This
683151937Sjkimshould improve debugging capability since it will show exactly
684151937Sjkimwhat tables have been loaded (beyond the tables present in the
685151937SjkimRSDT/XSDT.)
686151937Sjkim
687151937SjkimExample Code and Data Size: These are the sizes for the OS-
688151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
689151937Sjkim32-bit compiler. The debug version of the code includes the debug
690151937Sjkimoutput trace mechanism and has a much larger code and data size.
691151937Sjkim
692151937Sjkim  Previous Release:
693151937Sjkim    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
694151937Sjkim    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
695151937Sjkim  Current Release:
696151937Sjkim    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
697151937Sjkim    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
698151937Sjkim
699151937Sjkim
700151937Sjkim2) iASL Compiler/Disassembler and Tools:
701151937Sjkim
702151937SjkimNo changes for this release.
703151937Sjkim
704151937Sjkim----------------------------------------
705151937Sjkim08 June 2006. Summary of changes for version 20060608:
706151937Sjkim
707151937Sjkim1) ACPI CA Core Subsystem:
708151937Sjkim
709151937SjkimConverted the locking mutex used for the ACPI hardware to a
710151937Sjkimspinlock. This change should eliminate all problems caused by
711151937Sjkimattempting to acquire a semaphore at interrupt level, and it
712151937Sjkimmeans that all ACPICA external interfaces that directly access
713151937Sjkimthe ACPI hardware can be safely called from interrupt level. OSL
714151937Sjkimcode that implements the semaphore interfaces should be able to
715151937Sjkimeliminate any workarounds for being called at interrupt level.
716151937Sjkim
717151937SjkimFixed a regression introduced in 20060526 where the ACPI device
718151937Sjkiminitialization could be prematurely aborted with an AE_NOT_FOUND
719151937Sjkimif a device did not have an optional _INI method.
720151937Sjkim
721151937SjkimFixed an IndexField issue where a write to the Data Register
722151937Sjkimshould be limited in size to the AccessSize (width) of the
723151937SjkimIndexField itself. (BZ 433, Fiodor Suietov)
724151937Sjkim
725151937SjkimFixed problem reports (Valery Podrezov) integrated:
726151937Sjkim- Allow store of ThermalZone objects to Debug object (BZ
727151937Sjkim5369/5370)
728151937Sjkim
729151937SjkimFixed problem reports (Fiodor Suietov) integrated:
730151937Sjkim- AcpiGetTableHeader doesn't handle multiple instances correctly
731151937Sjkim(BZ 364)
732151937Sjkim
733151937SjkimRemoved four global mutexes that were obsolete and were no longer
734151937Sjkimbeing used.
735151937Sjkim
736151937SjkimExample Code and Data Size: These are the sizes for the OS-
737151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
738151937Sjkim32-bit compiler. The debug version of the code includes the debug
739151937Sjkimoutput trace mechanism and has a much larger code and data size.
740151937Sjkim
741151937Sjkim  Previous Release:
742151937Sjkim    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
743151937Sjkim    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
744151937Sjkim  Current Release:
745151937Sjkim    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
746151937Sjkim    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
747151937Sjkim
748151937Sjkim
749151937Sjkim2) iASL Compiler/Disassembler and Tools:
750151937Sjkim
751151937SjkimFixed a fault when using -g option (get tables from registry) on
752151937SjkimWindows machines.
753151937Sjkim
754151937SjkimFixed problem reports integrated:
755151937Sjkim- Generate error if CreateField NumBits parameter is zero. (BZ
756151937Sjkim405)
757151937Sjkim- Fault if Offset/Length in Field unit is very large (BZ 432,
758151937SjkimFiodor Suietov)
759151937Sjkim- Global table revision override (-r) is ignored (BZ 413)
760151937Sjkim
761151937Sjkim----------------------------------------
762151937Sjkim26 May 2006. Summary of changes for version 20060526:
763151937Sjkim
764151937Sjkim1) ACPI CA Core Subsystem:
765151937Sjkim
766151937SjkimRestructured, flattened, and simplified the internal interfaces
767151937Sjkimfor namespace object evaluation - resulting in smaller code, less
768151937SjkimCPU stack use, and fewer interfaces. (With assistance from
769151937SjkimMikhail Kouzmich)
770151937Sjkim
771151937SjkimFixed a problem with the CopyObject operator where the first
772151937Sjkimparameter was not typed correctly for the parser, interpreter,
773151937Sjkimcompiler, and disassembler. Caused various errors and unexpected
774151937Sjkimbehavior.
775151937Sjkim
776151937SjkimFixed a problem where a ShiftLeft or ShiftRight of more than 64
777151937Sjkimbits produced incorrect results with some C compilers. Since the
778151937Sjkimbehavior of C compilers when the shift value is larger than the
779151937Sjkimdatatype width is apparently not well defined, the interpreter
780151937Sjkimnow detects this condition and simply returns zero as expected in
781151937Sjkimall such cases. (BZ 395)
782151937Sjkim
783151937SjkimFixed problem reports (Valery Podrezov) integrated:
784151937Sjkim- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ
785151937Sjkim5329)
786151937Sjkim- Allow interpreter to handle nested method declarations (BZ
787151937Sjkim5361)
788151937Sjkim
789151937SjkimFixed problem reports (Fiodor Suietov) integrated:
790151937Sjkim- AcpiTerminate doesn't free debug memory allocation list objects
791151937Sjkim(BZ 355)
792151937Sjkim- After Core Subsystem shutdown, AcpiSubsystemStatus returns
793151937SjkimAE_OK (BZ 356)
794151937Sjkim- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ
795151937Sjkim357)
796151937Sjkim- Resource Manager should return AE_TYPE for non-device objects
797151937Sjkim(BZ 358)
798151937Sjkim- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
799151937Sjkim- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData
800151937Sjkim(BZ 360)
801151937Sjkim- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
802151937Sjkim- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
803151937Sjkim- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is
804151937Sjkimloaded (BZ 365)
805151937Sjkim- Status of the Global Initialization Handler call not used (BZ
806151937Sjkim366)
807151937Sjkim- Incorrect object parameter to Global Initialization Handler (BZ
808151937Sjkim367)
809151937Sjkim
810151937SjkimExample Code and Data Size: These are the sizes for the OS-
811151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
812151937Sjkim32-bit compiler. The debug version of the code includes the debug
813151937Sjkimoutput trace mechanism and has a much larger code and data size.
814151937Sjkim
815151937Sjkim  Previous Release:
816151937Sjkim    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
817151937Sjkim    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
818151937Sjkim  Current Release:
819151937Sjkim    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
820151937Sjkim    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
821151937Sjkim
822151937Sjkim
823151937Sjkim2) iASL Compiler/Disassembler and Tools:
824151937Sjkim
825151937SjkimModified the parser to allow the names IO, DMA, and IRQ to be
826151937Sjkimused as namespace identifiers with no collision with existing
827151937Sjkimresource descriptor macro names. This provides compatibility with
828151937Sjkimother ASL compilers and is most useful for
829151937Sjkimdisassembly/recompilation of existing tables without parse
830151937Sjkimerrors. (With assistance from Thomas Renninger)
831151937Sjkim
832151937SjkimDisassembler: fixed an incorrect disassembly problem with the
833151937SjkimDataTableRegion and CopyObject operators. Fixed a possible fault
834151937Sjkimduring disassembly of some Alias operators.
835151937Sjkim
836151937Sjkim----------------------------------------
837151937Sjkim12 May 2006. Summary of changes for version 20060512:
838151937Sjkim
839151937Sjkim1) ACPI CA Core Subsystem:
840151937Sjkim
841151937SjkimReplaced the AcpiOsQueueForExecution interface with a new
842151937Sjkiminterface named AcpiOsExecute. The major difference is that the
843151937Sjkimnew interface does not have a Priority parameter, this appeared
844151937Sjkimto be useless and has been replaced by a Type parameter. The Type
845151937Sjkimtells the host what type of execution is being requested, such as
846151937Sjkimglobal lock handler, notify handler, GPE handler, etc. This
847151937Sjkimallows the host to queue and execute the request as appropriate
848151937Sjkimfor the request type, possibly using different work queues and
849151937Sjkimdifferent priorities for the various request types. This enables
850151937Sjkimfixes for multithreading deadlock problems such as BZ #5534, and
851151937Sjkimwill require changes to all existing OS interface layers. (Alexey
852151937SjkimStarikovskiy and Bob Moore)
853151937Sjkim
854151937SjkimFixed a possible memory leak associated with the support for the
855151937Sjkimso-called "implicit return" ACPI extension. Reported by FreeBSD,
856151937SjkimBZ #6514. (Fiodor Suietov)
857151937Sjkim
858151937SjkimFixed a problem with the Load() operator where a table load from
859151937Sjkiman operation region could overwrite an internal table buffer by
860151937Sjkimup to 7 bytes and cause alignment faults on IPF systems. (With
861151937Sjkimassistance from Luming Yu)
862151937Sjkim
863151937SjkimExample Code and Data Size: These are the sizes for the OS-
864151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
865151937Sjkim32-bit compiler. The debug version of the code includes the debug
866151937Sjkimoutput trace mechanism and has a much larger code and data size.
867151937Sjkim
868151937Sjkim  Previous Release:
869151937Sjkim    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
870151937Sjkim    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
871151937Sjkim  Current Release:
872151937Sjkim    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
873151937Sjkim    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
874151937Sjkim
875151937Sjkim
876151937Sjkim
877151937Sjkim2) iASL Compiler/Disassembler and Tools:
878151937Sjkim
879151937SjkimDisassembler: Implemented support to cross reference the internal
880151937Sjkimnamespace and automatically generate ASL External() statements
881151937Sjkimfor symbols not defined within the current table being
882151937Sjkimdisassembled. This will simplify the disassembly and
883151937Sjkimrecompilation of interdependent tables such as SSDTs since these
884151937Sjkimstatements will no longer have to be added manually.
885151937Sjkim
886151937SjkimDisassembler: Implemented experimental support to automatically
887151937Sjkimdetect invocations of external control methods and generate
888151937Sjkimappropriate External() statements. This is problematic because
889151937Sjkimthe AML cannot be correctly parsed until the number of arguments
890151937Sjkimfor each control method is known. Currently, standalone method
891151937Sjkiminvocations and invocations as the source operand of a Store()
892151937Sjkimstatement are supported.
893151937Sjkim
894151937SjkimDisassembler: Implemented support for the ASL pseudo-operators
895151937SjkimLNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled
896151937Sjkimas LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this
897151937Sjkimmakes the disassembled ASL code more readable and likely closer
898151937Sjkimto the original ASL source.
899151937Sjkim
900151937Sjkim----------------------------------------
901151937Sjkim21 April 2006. Summary of changes for version 20060421:
902151937Sjkim
903151937Sjkim1) ACPI CA Core Subsystem:
904151937Sjkim
905151937SjkimRemoved a device initialization optimization introduced in
906151937Sjkim20051216 where the _STA method was not run unless an _INI was
907151937Sjkimalso present for the same device. This optimization could cause
908151937Sjkimproblems because it could allow _INI methods to be run within a
909151937Sjkimnot-present device subtree. (If a not-present device had no _INI,
910151937Sjkim_STA would not be run, the not-present status would not be
911151937Sjkimdiscovered, and the children of the device would be incorrectly
912151937Sjkimtraversed.)
913151937Sjkim
914151937SjkimImplemented a new _STA optimization where namespace subtrees that
915151937Sjkimdo not contain _INI are identified and ignored during device
916151937Sjkiminitialization. Selectively running _STA can significantly
917151937Sjkimimprove boot time on large machines (with assistance from Len
918151937SjkimBrown.)
919151937Sjkim
920151937SjkimImplemented support for the device initialization case where the
921151937Sjkimreturned _STA flags indicate a device not-present but
922151937Sjkimfunctioning. In this case, _INI is not run, but the device
923151937Sjkimchildren are examined for presence, as per the ACPI
924151937Sjkimspecification.
925151937Sjkim
926151937SjkimImplemented an additional change to the IndexField support in
927151937Sjkimorder to conform to MS behavior. The value written to the Index
928151937SjkimRegister is not simply a byte offset, it is a byte offset in
929151937Sjkimunits of the access width of the parent Index Field. (Fiodor
930151937SjkimSuietov)
931151937Sjkim
932151937SjkimDefined and deployed a new OSL interface, AcpiOsValidateAddress.
933151937SjkimThis interface is called during the creation of all AML operation
934151937Sjkimregions, and allows the host OS to exert control over what
935151937Sjkimaddresses it will allow the AML code to access. Operation Regions
936151937Sjkimwhose addresses are disallowed will cause a runtime exception
937151937Sjkimwhen they are actually accessed (will not affect or abort table
938151937Sjkimloading.) See oswinxf or osunixxf for an example implementation.
939151937Sjkim
940151937SjkimDefined and deployed a new OSL interface,
941151937SjkimAcpiOsValidateInterface. This interface allows the host OS to
942151937Sjkimmatch the various "optional" interface/behavior strings for the
943151937Sjkim_OSI predefined control method as appropriate (with assistance
944151937Sjkimfrom Bjorn Helgaas.) See oswinxf or osunixxf for an example
945151937Sjkimimplementation.
946151937Sjkim
947151937SjkimRestructured and corrected various problems in the exception
948151937Sjkimhandling code paths within DsCallControlMethod and
949151937SjkimDsTerminateControlMethod in dsmethod (with assistance from
950151937SjkimTakayoshi Kochi.)
951151937Sjkim
952151937SjkimModified the Linux source converter to ignore quoted string
953151937Sjkimliterals while converting identifiers from mixed to lower case.
954151937SjkimThis will correct problems with the disassembler and other areas
955151937Sjkimwhere such strings must not be modified.
956151937Sjkim
957151937SjkimThe ACPI_FUNCTION_* macros no longer require quotes around the
958151937Sjkimfunction name. This allows the Linux source converter to convert
959151937Sjkimthe names, now that the converter ignores quoted strings.
960151937Sjkim
961151937SjkimExample Code and Data Size: These are the sizes for the OS-
962151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
963151937Sjkim32-bit compiler. The debug version of the code includes the debug
964151937Sjkimoutput trace mechanism and has a much larger code and data size.
965151937Sjkim
966151937Sjkim  Previous Release:
967151937Sjkim
968151937Sjkim    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
969151937Sjkim    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
970151937Sjkim  Current Release:
971151937Sjkim    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
972151937Sjkim    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
973151937Sjkim
974151937Sjkim
975151937Sjkim2) iASL Compiler/Disassembler and Tools:
976151937Sjkim
977151937SjkimImplemented 3 new warnings for iASL, and implemented multiple
978151937Sjkimwarning levels (w2 flag).
979151937Sjkim
980151937Sjkim1) Ignored timeouts: If the TimeoutValue parameter to Wait or
981151937SjkimAcquire is not WAIT_FOREVER (0xFFFF) and the code does not
982151937Sjkimexamine the return value to check for the possible timeout, a
983151937Sjkimwarning is issued.
984151937Sjkim
985151937Sjkim2) Useless operators: If an ASL operator does not specify an
986151937Sjkimoptional target operand and it also does not use the function
987151937Sjkimreturn value from the operator, a warning is issued since the
988151937Sjkimoperator effectively does nothing.
989151937Sjkim
990151937Sjkim3) Unreferenced objects: If a namespace object is created, but
991151937Sjkimnever referenced, a warning is issued. This is a warning level 2
992151937Sjkimsince there are cases where this is ok, such as when a secondary
993151937Sjkimtable is loaded that uses the unreferenced objects. Even so, care
994151937Sjkimis taken to only flag objects that don't look like they will ever
995151937Sjkimbe used. For example, the reserved methods (starting with an
996151937Sjkimunderscore) are usually not referenced because it is expected
997151937Sjkimthat the OS will invoke them.
998151937Sjkim
999151937Sjkim----------------------------------------
1000151937Sjkim31 March 2006. Summary of changes for version 20060331:
1001151937Sjkim
1002151937Sjkim1) ACPI CA Core Subsystem:
1003151937Sjkim
1004151937SjkimImplemented header file support for the following additional ACPI
1005151937Sjkimtables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT.
1006151937SjkimWith this support, all current and known ACPI tables are now
1007151937Sjkimdefined in the ACPICA headers and are available for use by device
1008151937Sjkimdrivers and other software.
1009151937Sjkim
1010151937SjkimImplemented support to allow tables that contain ACPI names with
1011151937Sjkiminvalid characters to be loaded. Previously, this would cause the
1012151937Sjkimtable load to fail, but since there are several known cases of
1013151937Sjkimsuch tables on existing machines, this change was made to enable
1014151937SjkimACPI support for them. Also, this matches the behavior of the
1015151937SjkimMicrosoft ACPI implementation.
1016151937Sjkim
1017151937SjkimFixed a couple regressions introduced during the memory
1018151937Sjkimoptimization in the 20060317 release. The namespace node
1019151937Sjkimdefinition required additional reorganization and an internal
1020151937Sjkimdatatype that had been changed to 8-bit was restored to 32-bit.
1021151937Sjkim(Valery Podrezov)
1022151937Sjkim
1023151937SjkimFixed a problem where a null pointer passed to
1024151937SjkimAcpiUtDeleteGenericState could be passed through to
1025151937SjkimAcpiOsReleaseObject which is unexpected. Such null pointers are
1026151937Sjkimnow trapped and ignored, matching the behavior of the previous
1027151937Sjkimimplementation before the deployment of AcpiOsReleaseObject.
1028151937Sjkim(Valery Podrezov, Fiodor Suietov)
1029151937Sjkim
1030151937SjkimFixed a memory mapping leak during the deletion of a SystemMemory
1031151937Sjkimoperation region where a cached memory mapping was not deleted.
1032151937SjkimThis became a noticeable problem for operation regions that are
1033151937Sjkimdefined within frequently used control methods. (Dana Meyers)
1034151937Sjkim
1035151937SjkimReorganized the ACPI table header files into two main files: one
1036151937Sjkimfor the ACPI tables consumed by the ACPICA core, and another for
1037151937Sjkimthe miscellaneous ACPI tables that are consumed by the drivers
1038151937Sjkimand other software. The various FADT definitions were merged into
1039151937Sjkimone common section and three different tables (ACPI 1.0, 1.0+,
1040151937Sjkimand 2.0)
1041151937Sjkim
1042151937SjkimExample Code and Data Size: These are the sizes for the OS-
1043151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0
1044151937Sjkim32-bit compiler. The debug version of the code includes the debug
1045151937Sjkimoutput trace mechanism and has a much larger code and data size.
1046151937Sjkim
1047151937Sjkim  Previous Release:
1048151937Sjkim    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
1049151937Sjkim    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
1050151937Sjkim  Current Release:
1051151937Sjkim    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
1052151937Sjkim    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
1053151937Sjkim
1054151937Sjkim
1055151937Sjkim2) iASL Compiler/Disassembler and Tools:
1056151937Sjkim
1057151937SjkimDisassembler: Implemented support to decode and format all non-
1058151937SjkimAML ACPI tables (tables other than DSDTs and SSDTs.) This
1059151937Sjkimincludes the new tables added to the ACPICA headers, therefore
1060151937Sjkimall current and known ACPI tables are supported.
1061151937Sjkim
1062151937SjkimDisassembler: The change to allow ACPI names with invalid
1063151937Sjkimcharacters also enables the disassembly of such tables. Invalid
1064151937Sjkimcharacters within names are changed to '*' to make the name
1065151937Sjkimprintable; the iASL compiler will still generate an error for
1066151937Sjkimsuch names, however, since this is an invalid ACPI character.
1067151937Sjkim
1068151937SjkimImplemented an option for AcpiXtract (-a) to extract all tables
1069151937Sjkimfound in the input file. The default invocation extracts only the
1070151937SjkimDSDTs and SSDTs.
1071151937Sjkim
1072151937SjkimFixed a couple of gcc generation issues for iASL and AcpiExec and
1073151937Sjkimadded a makefile for the AcpiXtract utility.
1074151937Sjkim
1075151937Sjkim----------------------------------------
1076151937Sjkim17 March 2006. Summary of changes for version 20060317:
1077151937Sjkim
1078151937Sjkim1) ACPI CA Core Subsystem:
1079151937Sjkim
1080151937SjkimImplemented the use of a cache object for all internal namespace
1081151937Sjkimnodes. Since there are about 1000 static nodes in a typical
1082151937Sjkimsystem, this will decrease memory use for cache implementations
1083151937Sjkimthat minimize per-allocation overhead (such as a slab allocator.)
1084151937Sjkim
1085151937SjkimRemoved the reference count mechanism for internal namespace
1086151937Sjkimnodes, since it was deemed unnecessary. This reduces the size of
1087151937Sjkimeach namespace node by about 5%-10% on all platforms. Nodes are
1088151937Sjkimnow 20 bytes for the 32-bit case, and 32 bytes for the 64-bit
1089151937Sjkimcase.
1090151937Sjkim
1091151937SjkimOptimized several internal data structures to reduce object size
1092151937Sjkimon 64-bit platforms by packing data within the 64-bit alignment.
1093151937SjkimThis includes the frequently used ACPI_OPERAND_OBJECT, of which
1094151937Sjkimthere can be ~1000 static instances corresponding to the
1095151937Sjkimnamespace objects.
1096151937Sjkim
1097151937SjkimAdded two new strings for the predefined _OSI method: "Windows
1098151937Sjkim2001.1 SP1" and "Windows 2006".
1099151937Sjkim
1100151937SjkimSplit the allocation tracking mechanism out to a separate file,
1101151937Sjkimfrom utalloc.c to uttrack.c. This mechanism appears to be only
1102151937Sjkimuseful for application-level code. Kernels may wish to not
1103151937Sjkiminclude uttrack.c in distributions.
1104151937Sjkim
1105151937SjkimRemoved all remnants of the obsolete ACPI_REPORT_* macros and the
1106151937Sjkimassociated code. (These macros have been replaced by the
1107151937SjkimACPI_ERROR and ACPI_WARNING macros.)
1108151937Sjkim
1109151937SjkimCode and Data Size: These are the sizes for the acpica.lib
1110151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1111151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug
1112151937Sjkimversion of the code includes the debug output trace mechanism and
1113151937Sjkimhas a much larger code and data size. Note that these values will
1114151937Sjkimvary depending on the efficiency of the compiler and the compiler
1115151937Sjkimoptions used during generation.
1116151937Sjkim
1117151937Sjkim  Previous Release:
1118151937Sjkim    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1119151937Sjkim    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
1120151937Sjkim  Current Release:
1121151937Sjkim    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
1122151937Sjkim    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
1123151937Sjkim
1124151937Sjkim
1125151937Sjkim2) iASL Compiler/Disassembler and Tools:
1126151937Sjkim
1127151937SjkimImplemented an ANSI C version of the acpixtract utility. This
1128151937Sjkimversion will automatically extract the DSDT and all SSDTs from
1129151937Sjkimthe input acpidump text file and dump the binary output to
1130151937Sjkimseparate files. It can also display a summary of the input file
1131151937Sjkimincluding the headers for each table found and will extract any
1132151937Sjkimsingle ACPI table, with any signature. (See
1133151937Sjkimsource/tools/acpixtract)
1134151937Sjkim
1135151937Sjkim----------------------------------------
1136151937Sjkim10 March 2006. Summary of changes for version 20060310:
1137151937Sjkim
1138151937Sjkim1) ACPI CA Core Subsystem:
1139151937Sjkim
1140151937SjkimTagged all external interfaces to the subsystem with the new
1141151937SjkimACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary
1142151937Sjkimto assist kernel integration. For Linux, the macro resolves to
1143151937Sjkimthe EXPORT_SYMBOL macro. The default definition is NULL.
1144151937Sjkim
1145151937SjkimAdded the ACPI_THREAD_ID type for the return value from
1146151937SjkimAcpiOsGetThreadId. This allows the host to define this as
1147151937Sjkimnecessary to simplify kernel integration. The default definition
1148151937Sjkimis ACPI_NATIVE_UINT.
1149151937Sjkim
1150151937SjkimFixed two interpreter problems related to error processing, the
1151151937Sjkimdeletion of objects, and placing invalid pointers onto the
1152151937Sjkiminternal operator result stack. BZ 6028, 6151 (Valery Podrezov)
1153151937Sjkim
1154151937SjkimIncreased the reference count threshold where a warning is
1155151937Sjkimemitted for large reference counts in order to eliminate
1156151937Sjkimunnecessary warnings on systems with large namespaces (especially
1157151937Sjkim64-bit.) Increased the value from 0x400 to 0x800.
1158151937Sjkim
1159151937SjkimDue to universal disagreement as to the meaning of the 'c' in the
1160151937Sjkimcalloc() function, the ACPI_MEM_CALLOCATE macro has been renamed
1161151937Sjkimto ACPI_ALLOCATE_ZEROED so that the purpose of the interface is
1162151937Sjkim'clear'. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to
1163151937SjkimACPI_ALLOCATE and ACPI_FREE.
1164151937Sjkim
1165151937SjkimCode and Data Size: These are the sizes for the acpica.lib
1166151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1167151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug
1168151937Sjkimversion of the code includes the debug output trace mechanism and
1169151937Sjkimhas a much larger code and data size. Note that these values will
1170151937Sjkimvary depending on the efficiency of the compiler and the compiler
1171151937Sjkimoptions used during generation.
1172151937Sjkim
1173151937Sjkim  Previous Release:
1174151937Sjkim    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
1175151937Sjkim    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
1176151937Sjkim  Current Release:
1177151937Sjkim    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1178151937Sjkim    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
1179151937Sjkim
1180151937Sjkim
1181151937Sjkim2) iASL Compiler/Disassembler:
1182151937Sjkim
1183151937SjkimDisassembler: implemented support for symbolic resource
1184151937Sjkimdescriptor references. If a CreateXxxxField operator references a
1185151937Sjkimfixed offset within a resource descriptor, a name is assigned to
1186151937Sjkimthe descriptor and the offset is translated to the appropriate
1187151937Sjkimresource tag and pathname. The addition of this support brings
1188151937Sjkimthe disassembled code very close to the original ASL source code
1189151937Sjkimand helps eliminate run-time errors when the disassembled code is
1190151937Sjkimmodified (and recompiled) in such a way as to invalidate the
1191151937Sjkimoriginal fixed offsets.
1192151937Sjkim
1193151937SjkimImplemented support for a Descriptor Name as the last parameter
1194151937Sjkimto the ASL Register() macro. This parameter was inadvertently
1195151937Sjkimleft out of the ACPI specification, and will be added for ACPI
1196151937Sjkim3.0b.
1197151937Sjkim
1198151937SjkimFixed a problem where the use of the "_OSI" string (versus the
1199151937Sjkimfull path "\_OSI") caused an internal compiler error. ("No back
1200151937Sjkimptr to op")
1201151937Sjkim
1202151937SjkimFixed a problem with the error message that occurs when an
1203151937Sjkiminvalid string is used for a _HID object (such as one with an
1204151937Sjkimembedded asterisk: "*PNP010A".) The correct message is now
1205151937Sjkimdisplayed.
1206151937Sjkim
1207151937Sjkim----------------------------------------
1208151937Sjkim17 February 2006. Summary of changes for version 20060217:
1209151937Sjkim
1210151937Sjkim1) ACPI CA Core Subsystem:
1211151937Sjkim
1212151937SjkimImplemented a change to the IndexField support to match the
1213151937Sjkimbehavior of the Microsoft AML interpreter. The value written to
1214151937Sjkimthe Index register is now a byte offset, no longer an index based
1215151937Sjkimupon the width of the Data register. This should fix IndexField
1216151937Sjkimproblems seen on some machines where the Data register is not
1217151937Sjkimexactly one byte wide. The ACPI specification will be clarified
1218151937Sjkimon this point.
1219151937Sjkim
1220151937SjkimFixed a problem where several resource descriptor types could
1221151937Sjkimoverrun the internal descriptor buffer due to size
1222151937Sjkimmiscalculation: VendorShort, VendorLong, and Interrupt. This was
1223151937Sjkimnoticed on IA64 machines, but could affect all platforms.
1224151937Sjkim
1225151937SjkimFixed a problem where individual resource descriptors were
1226151937Sjkimmisaligned within the internal buffer, causing alignment faults
1227151937Sjkimon IA64 platforms.
1228151937Sjkim
1229151937SjkimCode and Data Size: These are the sizes for the acpica.lib
1230151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1231151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug
1232151937Sjkimversion of the code includes the debug output trace mechanism and
1233151937Sjkimhas a much larger code and data size. Note that these values will
1234151937Sjkimvary depending on the efficiency of the compiler and the compiler
1235151937Sjkimoptions used during generation.
1236151937Sjkim
1237151937Sjkim  Previous Release:
1238151937Sjkim    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1239151937Sjkim    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
1240151937Sjkim  Current Release:
1241151937Sjkim    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
1242151937Sjkim    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
1243151937Sjkim
1244151937Sjkim
1245151937Sjkim2) iASL Compiler/Disassembler:
1246151937Sjkim
1247151937SjkimImplemented support for new reserved names: _WDG and _WED are
1248151937SjkimMicrosoft extensions for Windows Instrumentation Management, _TDL
1249151937Sjkimis a new ACPI-defined method (Throttling Depth Limit.)
1250151937Sjkim
1251151937SjkimFixed a problem where a zero-length VendorShort or VendorLong
1252151937Sjkimresource descriptor was incorrectly emitted as a descriptor of
1253151937Sjkimlength one.
1254151937Sjkim
1255151937Sjkim----------------------------------------
1256151937Sjkim10 February 2006. Summary of changes for version 20060210:
1257151937Sjkim
1258151937Sjkim1) ACPI CA Core Subsystem:
1259151937Sjkim
1260151937SjkimRemoved a couple of extraneous ACPI_ERROR messages that appeared
1261151937Sjkimduring normal execution. These became apparent after the
1262151937Sjkimconversion from ACPI_DEBUG_PRINT.
1263151937Sjkim
1264151937SjkimFixed a problem where the CreateField operator could hang if the
1265151937SjkimBitIndex or NumBits parameter referred to a named object. (Valery
1266151937SjkimPodrezov, BZ 5359)
1267151937Sjkim
1268151937SjkimFixed a problem where a DeRefOf operation on a buffer object
1269151937Sjkimincorrectly failed with an exception. This also fixes a couple of
1270151937Sjkimrelated RefOf and DeRefOf issues. (Valery Podrezov, BZ
1271151937Sjkim5360/5392/5387)
1272151937Sjkim
1273151937SjkimFixed a problem where the AE_BUFFER_LIMIT exception was returned
1274151937Sjkiminstead of AE_STRING_LIMIT on an out-of-bounds Index() operation.
1275151937Sjkim(Valery Podrezov, BZ 5480)
1276151937Sjkim
1277151937SjkimImplemented a memory cleanup at the end of the execution of each
1278151937Sjkimiteration of an AML While() loop, preventing the accumulation of
1279151937Sjkimoutstanding objects. (Valery Podrezov, BZ 5427)
1280151937Sjkim
1281151937SjkimEliminated a chunk of duplicate code in the object resolution
1282151937Sjkimcode. (Valery Podrezov, BZ 5336)
1283151937Sjkim
1284151937SjkimFixed several warnings during the 64-bit code generation.
1285151937Sjkim
1286151937SjkimThe AcpiSrc source code conversion tool now inserts one line of
1287151937Sjkimwhitespace after an if() statement that is followed immediately
1288151937Sjkimby a comment, improving readability of the Linux code.
1289151937Sjkim
1290151937SjkimCode and Data Size: The current and previous library sizes for
1291151937Sjkimthe core subsystem are shown below. These are the code and data
1292151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1293151937Sjkim32-bit compiler. These values do not include any ACPI driver or
1294151937SjkimOSPM code. The debug version of the code includes the debug
1295151937Sjkimoutput trace mechanism and has a much larger code and data size.
1296151937SjkimNote that these values will vary depending on the efficiency of
1297151937Sjkimthe compiler and the compiler options used during generation.
1298151937Sjkim
1299151937Sjkim  Previous Release:
1300151937Sjkim    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
1301151937Sjkim    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
1302151937Sjkim  Current Release:
1303151937Sjkim    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1304151937Sjkim    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
1305151937Sjkim
1306151937Sjkim
1307151937Sjkim2) iASL Compiler/Disassembler:
1308151937Sjkim
1309151937SjkimFixed a problem with the disassembly of a BankField operator with
1310151937Sjkima complex expression for the BankValue parameter.
1311151937Sjkim
1312151937Sjkim----------------------------------------
1313151937Sjkim27 January 2006. Summary of changes for version 20060127:
1314151937Sjkim
1315151937Sjkim1) ACPI CA Core Subsystem:
1316151937Sjkim
1317151937SjkimImplemented support in the Resource Manager to allow unresolved
1318151937Sjkimnamestring references within resource package objects for the
1319151937Sjkim_PRT method. This support is in addition to the previously
1320151937Sjkimimplemented unresolved reference support within the AML parser.
1321151937SjkimIf the interpreter slack mode is enabled, these unresolved
1322151937Sjkimreferences will be passed through to the caller as a NULL package
1323151937Sjkimentry.
1324151937Sjkim
1325151937SjkimImplemented and deployed new macros and functions for error and
1326151937Sjkimwarning messages across the subsystem. These macros are simpler
1327151937Sjkimand generate less code than their predecessors. The new macros
1328151937SjkimACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace
1329151937Sjkimthe ACPI_REPORT_* macros. The older macros remain defined to
1330151937Sjkimallow ACPI drivers time to migrate to the new macros.
1331151937Sjkim
1332151937SjkimImplemented the ACPI_CPU_FLAGS type to simplify host OS
1333151937Sjkimintegration of the Acquire/Release Lock OSL interfaces.
1334151937Sjkim
1335151937SjkimFixed a problem where Alias ASL operators are sometimes not
1336151937Sjkimcorrectly resolved, in both the interpreter and the iASL
1337151937Sjkimcompiler.
1338151937Sjkim
1339151937SjkimFixed several problems with the implementation of the
1340151937SjkimConcatenateResTemplate ASL operator. As per the ACPI
1341151937Sjkimspecification, zero length buffers are now treated as a single
1342151937SjkimEndTag. One-length buffers always cause a fatal exception. Non-
1343151937Sjkimzero length buffers that do not end with a full 2-byte EndTag
1344151937Sjkimcause a fatal exception.
1345151937Sjkim
1346151937SjkimFixed a possible structure overwrite in the AcpiGetObjectInfo
1347151937Sjkimexternal interface. (With assistance from Thomas Renninger)
1348151937Sjkim
1349151937SjkimCode and Data Size: The current and previous library sizes for
1350151937Sjkimthe core subsystem are shown below. These are the code and data
1351151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1352151937Sjkim32-bit compiler. These values do not include any ACPI driver or
1353151937SjkimOSPM code. The debug version of the code includes the debug
1354151937Sjkimoutput trace mechanism and has a much larger code and data size.
1355151937SjkimNote that these values will vary depending on the efficiency of
1356151937Sjkimthe compiler and the compiler options used during generation.
1357151937Sjkim
1358151937Sjkim  Previous Release:
1359151937Sjkim    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
1360151937Sjkim    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
1361151937Sjkim  Current Release:
1362151937Sjkim    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
1363151937Sjkim    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
1364138287Smarks
1365138287Smarks
1366138287Smarks2) iASL Compiler/Disassembler:
1367138287Smarks
1368151937SjkimFixed an internal error that was generated for any forward
1369151937Sjkimreferences to ASL Alias objects.
1370151937Sjkim
1371138287Smarks----------------------------------------
1372151937Sjkim13 January 2006. Summary of changes for version 20060113:
1373151937Sjkim
1374151937Sjkim1) ACPI CA Core Subsystem:
1375138287Smarks
1376151937SjkimAdded 2006 copyright to all module headers and signons. This
1377151937Sjkimaffects virtually every file in the ACPICA core subsystem, iASL
1378151937Sjkimcompiler, and the utilities.
1379151937Sjkim
1380151937SjkimEnhanced the ACPICA error reporting in order to simplify user
1381151937Sjkimmigration to the non-debug version of ACPICA. Replaced all
1382151937Sjkiminstances of the ACPI_DEBUG_PRINT macro invoked at the
1383151937SjkimACPI_DB_ERROR and ACPI_DB_WARN debug levels with the
1384138287SmarksACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, respectively.
1385151937SjkimThis preserves all error and warning messages in the non-debug
1386151937Sjkimversion of the ACPICA code (this has been referred to as the
1387151937Sjkim"debug lite" option.) Over 200 cases were converted to create a
1388151937Sjkimtotal of over 380 error/warning messages across the ACPICA code.
1389138287SmarksThis increases the code and data size of the default non-debug
1390151937Sjkimversion of the code somewhat (about 13K), but all error/warning
1391151937Sjkimreporting may be disabled if desired (and code eliminated) by
1392151937Sjkimspecifying the ACPI_NO_ERROR_MESSAGES compile-time configuration
1393151937Sjkimoption. The size of the debug version of ACPICA remains about the
1394151937Sjkimsame.
1395151937Sjkim
1396151937SjkimFixed a memory leak within the AML Debugger "Set" command. One
1397151937Sjkimobject was not properly deleted for every successful invocation
1398138287Smarksof the command.
1399151937Sjkim
1400151937SjkimCode and Data Size: The current and previous library sizes for
1401151937Sjkimthe core subsystem are shown below. These are the code and data
1402151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1403151937Sjkim32-bit compiler. These values do not include any ACPI driver or
1404151937SjkimOSPM code. The debug version of the code includes the debug
1405138287Smarksoutput trace mechanism and has a much larger code and data size.
1406138287SmarksNote that these values will vary depending on the efficiency of
1407138287Smarksthe compiler and the compiler options used during generation.
1408138287Smarks
1409138287Smarks  Previous Release:
1410138287Smarks    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
1411138287Smarks    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
1412138287Smarks  Current Release:
1413138287Smarks    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
1414138287Smarks    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
1415138287Smarks
1416138287Smarks
1417138287Smarks2) iASL Compiler/Disassembler:
1418138287Smarks
1419138287SmarksThe compiler now officially supports the ACPI 3.0a specification
1420138287Smarksthat was released on December 30, 2005. (Specification is
1421138287Smarksavailable at www.acpi.info)
1422138287Smarks
1423138287Smarks----------------------------------------
1424138287Smarks16 December 2005. Summary of changes for version 20051216:
1425138287Smarks
1426138287Smarks1) ACPI CA Core Subsystem:
1427138287Smarks
1428138287SmarksImplemented optional support to allow unresolved names within ASL
1429138287SmarksPackage objects. A null object is inserted in the package when a
1430138287Smarksnamed reference cannot be located in the current namespace.
1431138287SmarksEnabled via the interpreter slack flag, this should eliminate
1432138287SmarksAE_NOT_FOUND exceptions seen on machines that contain such code.
1433138287Smarks
1434138287SmarksImplemented an optimization to the initialization sequence that
1435138287Smarkscan improve boot time. During ACPI device initialization, the
1436138287Smarks_STA method is now run if and only if the _INI method exists. The
1437138287Smarks_STA method is used to determine if the device is present; An
1438138287Smarks_INI can only be run if _STA returns present, but it is a waste
1439138287Smarksof time to run the _STA method if the _INI does not exist.
1440138287Smarks(Prototype and assistance from Dong Wei)
1441138287Smarks
1442138287SmarksImplemented use of the C99 uintptr_t for the pointer casting
1443138287Smarksmacros if it is available in the current compiler. Otherwise, the
1444138287Smarksdefault (void *) cast is used as before.
1445138287Smarks
1446138287SmarksFixed some possible memory leaks found within the execution path
1447138287Smarksof the Break, Continue, If, and CreateField operators. (Valery
1448138287SmarksPodrezov)
1449138287Smarks
1450138287SmarksFixed a problem introduced in the 20051202 release where an
1451138287Smarksexception is generated during method execution if a control
1452138287Smarksmethod attempts to declare another method.
1453138287Smarks
1454138287SmarksMoved resource descriptor string constants that are used by both
1455138287Smarksthe AML disassembler and AML debugger to the common utilities
1456138287Smarksdirectory so that these components are independent.
1457138287Smarks
1458138287SmarksImplemented support in the AcpiExec utility (-e switch) to
1459138287Smarksglobally ignore exceptions during control method execution
1460138287Smarks(method is not aborted.)
1461138287Smarks
1462138287SmarksAdded the rsinfo.c source file to the AcpiExec makefile for
1463138287SmarksLinux/Unix generation.
1464138287Smarks
1465138287SmarksCode and Data Size: The current and previous library sizes for
1466138287Smarksthe core subsystem are shown below. These are the code and data
1467138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1468138287Smarks32-bit compiler. These values do not include any ACPI driver or
1469138287SmarksOSPM code. The debug version of the code includes the debug
1470138287Smarksoutput trace mechanism and has a much larger code and data size.
1471138287SmarksNote that these values will vary depending on the efficiency of
1472138287Smarksthe compiler and the compiler options used during generation.
1473138287Smarks
1474138287Smarks  Previous Release:
1475138287Smarks    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1476138287Smarks    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
1477138287Smarks  Current Release:
1478138287Smarks    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
1479138287Smarks    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
1480138287Smarks
1481138287Smarks
1482138287Smarks2) iASL Compiler/Disassembler:
1483138287Smarks
1484138287SmarksFixed a problem where a CPU stack overflow fault could occur if a
1485138287Smarksrecursive method call was made from within a Return statement.
1486138287Smarks
1487138287Smarks----------------------------------------
1488138287Smarks02 December 2005. Summary of changes for version 20051202:
1489138287Smarks
1490138287Smarks1) ACPI CA Core Subsystem:
1491138287Smarks
1492138287SmarksModified the parsing of control methods to no longer create
1493138287Smarksnamespace objects during the first pass of the parse. Objects are
1494138287Smarksnow created only during the execute phase, at the moment the
1495138287Smarksnamespace creation operator is encountered in the AML (Name,
1496138287SmarksOperationRegion, CreateByteField, etc.) This should eliminate
1497138287SmarksALREADY_EXISTS exceptions seen on some machines where reentrant
1498138287Smarkscontrol methods are protected by an AML mutex. The mutex will now
1499138287Smarkscorrectly block multiple threads from attempting to create the
1500138287Smarkssame object more than once.
1501138287Smarks
1502138287SmarksIncreased the number of available Owner Ids for namespace object
1503138287Smarkstracking from 32 to 255. This should eliminate the OWNER_ID_LIMIT
1504138287Smarksexceptions seen on some machines with a large number of ACPI
1505138287Smarkstables (either static or dynamic).
1506138287Smarks
1507138287SmarksFixed a problem with the AcpiExec utility where a fault could
1508138287Smarksoccur when the -b switch (batch mode) is used.
1509138287Smarks
1510138287SmarksEnhanced the namespace dump routine to output the owner ID for
1511138287Smarkseach namespace object.
1512138287Smarks
1513138287SmarksCode and Data Size: The current and previous library sizes for
1514138287Smarksthe core subsystem are shown below. These are the code and data
1515138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1516138287Smarks32-bit compiler. These values do not include any ACPI driver or
1517138287SmarksOSPM code. The debug version of the code includes the debug
1518138287Smarksoutput trace mechanism and has a much larger code and data size.
1519138287SmarksNote that these values will vary depending on the efficiency of
1520138287Smarksthe compiler and the compiler options used during generation.
1521138287Smarks
1522138287Smarks  Previous Release:
1523138287Smarks    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1524138287Smarks    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1525138287Smarks  Current Release:
1526138287Smarks    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1527138287Smarks    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
1528138287Smarks
1529138287Smarks
1530138287Smarks2) iASL Compiler/Disassembler:
1531138287Smarks
1532138287SmarksFixed a parse error during compilation of certain Switch/Case
1533138287Smarksconstructs. To simplify the parse, the grammar now allows for
1534138287Smarksmultiple Default statements and this error is now detected and
1535138287Smarksflagged during the analysis phase.
1536138287Smarks
1537138287SmarksDisassembler: The disassembly now includes the contents of the
1538138287Smarksoriginal table header within a comment at the start of the file.
1539138287SmarksThis includes the name and version of the original ASL compiler.
1540138287Smarks
1541138287Smarks----------------------------------------
1542138287Smarks17 November 2005. Summary of changes for version 20051117:
1543138287Smarks
1544138287Smarks1) ACPI CA Core Subsystem:
1545138287Smarks
1546138287SmarksFixed a problem in the AML parser where the method thread count
1547138287Smarkscould be decremented below zero if any errors occurred during the
1548138287Smarksmethod parse phase. This should eliminate AE_AML_METHOD_LIMIT
1549138287Smarksexceptions seen on some machines. This also fixed a related
1550138287Smarksregression with the mechanism that detects and corrects methods
1551138287Smarksthat cannot properly handle reentrancy (related to the deployment
1552138287Smarksof the new OwnerId mechanism.)
1553138287Smarks
1554138287SmarksEliminated the pre-parsing of control methods (to detect errors)
1555138287Smarksduring table load. Related to the problem above, this was causing
1556138287Smarksunwind issues if any errors occurred during the parse, and it
1557138287Smarksseemed to be overkill. A table load should not be aborted if
1558138287Smarksthere are problems with any single control method, thus rendering
1559138287Smarksthis feature rather pointless.
1560138287Smarks
1561138287SmarksFixed a problem with the new table-driven resource manager where
1562138287Smarksan internal buffer overflow could occur for small resource
1563138287Smarkstemplates.
1564138287Smarks
1565138287SmarksImplemented a new external interface, AcpiGetVendorResource. This
1566138287Smarksinterface will find and return a vendor-defined resource
1567138287Smarksdescriptor within a _CRS or _PRS method via an ACPI 3.0 UUID
1568138287Smarksmatch. With assistance from Bjorn Helgaas.
1569138287Smarks
1570138287SmarksRemoved the length limit (200) on string objects as per the
1571138287Smarksupcoming ACPI 3.0A specification. This affects the following
1572138287Smarksareas of the interpreter: 1) any implicit conversion of a Buffer
1573138287Smarksto a String, 2) a String object result of the ASL Concatentate
1574138287Smarksoperator, 3) the String object result of the ASL ToString
1575138287Smarksoperator.
1576138287Smarks
1577138287SmarksFixed a problem in the Windows OS interface layer (OSL) where a
1578138287SmarksWAIT_FOREVER on a semaphore object would incorrectly timeout.
1579138287SmarksThis allows the multithreading features of the AcpiExec utility
1580138287Smarksto work properly under Windows.
1581138287Smarks
1582138287SmarksUpdated the Linux makefiles for the iASL compiler and AcpiExec to
1583138287Smarksinclude the recently added file named "utresrc.c".
1584138287Smarks
1585138287SmarksCode and Data Size: The current and previous library sizes for
1586138287Smarksthe core subsystem are shown below. These are the code and data
1587138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1588138287Smarks32-bit compiler. These values do not include any ACPI driver or
1589138287SmarksOSPM code. The debug version of the code includes the debug
1590138287Smarksoutput trace mechanism and has a much larger code and data size.
1591138287SmarksNote that these values will vary depending on the efficiency of
1592138287Smarksthe compiler and the compiler options used during generation.
1593138287Smarks
1594138287Smarks  Previous Release:
1595138287Smarks    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
1596138287Smarks    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1597138287Smarks  Current Release:
1598138287Smarks    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1599138287Smarks    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1600138287Smarks
1601138287Smarks
1602138287Smarks2) iASL Compiler/Disassembler:
1603138287Smarks
1604138287SmarksRemoved the limit (200) on string objects as per the upcoming
1605138287SmarksACPI 3.0A specification. For the iASL compiler, this means that
1606138287Smarksstring literals within the source ASL can be of any length.
1607138287Smarks
1608138287SmarksEnhanced the listing output to dump the AML code for resource
1609138287Smarksdescriptors immediately after the ASL code for each descriptor,
1610138287Smarksinstead of in a block at the end of the entire resource template.
1611138287Smarks
1612138287SmarksEnhanced the compiler debug output to dump the entire original
1613138287Smarksparse tree constructed during the parse phase, before any
1614138287Smarkstransforms are applied to the tree. The transformed tree is
1615138287Smarksdumped also.
1616138287Smarks
1617138287Smarks----------------------------------------
1618138287Smarks02 November 2005. Summary of changes for version 20051102:
1619138287Smarks
1620138287Smarks1) ACPI CA Core Subsystem:
1621138287Smarks
1622138287SmarksModified the subsystem initialization sequence to improve GPE
1623138287Smarkssupport. The GPE initialization has been split into two parts in
1624138287Smarksorder to defer execution of the _PRW methods (Power Resources for
1625138287SmarksWake) until after the hardware is fully initialized and the SCI
1626138287Smarkshandler is installed. This allows the _PRW methods to access
1627138287Smarksfields protected by the Global Lock. This will fix systems where
1628138287Smarksa NO_GLOBAL_LOCK exception has been seen during initialization.
1629138287Smarks
1630138287SmarksConverted the ACPI internal object disassemble and display code
1631138287Smarkswithin the AML debugger to fully table-driven operation, reducing
1632138287Smarkscode size and increasing maintainability.
1633138287Smarks
1634138287SmarksFixed a regression with the ConcatenateResTemplate() ASL operator
1635138287Smarksintroduced in the 20051021 release.
1636138287Smarks
1637138287SmarksImplemented support for "local" internal ACPI object types within
1638138287Smarksthe debugger "Object" command and the AcpiWalkNamespace external
1639138287Smarksinterfaces. These local types include RegionFields, BankFields,
1640138287SmarksIndexFields, Alias, and reference objects.
1641138287Smarks
1642138287SmarksMoved common AML resource handling code into a new file,
1643138287Smarks"utresrc.c". This code is shared by both the Resource Manager and
1644138287Smarksthe AML Debugger.
1645138287Smarks
1646138287SmarksCode and Data Size: The current and previous library sizes for
1647138287Smarksthe core subsystem are shown below. These are the code and data
1648138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1649138287Smarks32-bit compiler. These values do not include any ACPI driver or
1650138287SmarksOSPM code. The debug version of the code includes the debug
1651138287Smarksoutput trace mechanism and has a much larger code and data size.
1652138287SmarksNote that these values will vary depending on the efficiency of
1653138287Smarksthe compiler and the compiler options used during generation.
1654138287Smarks
1655138287Smarks  Previous Release:
1656138287Smarks    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
1657138287Smarks    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
1658138287Smarks  Current Release:
1659138287Smarks    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
1660138287Smarks    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1661138287Smarks
1662138287Smarks
1663138287Smarks2) iASL Compiler/Disassembler:
1664138287Smarks
1665138287SmarksFixed a problem with very large initializer lists (more than 4000
1666138287Smarkselements) for both Buffer and Package objects where the parse
1667138287Smarksstack could overflow.
1668138287Smarks
1669138287SmarksEnhanced the pre-compile source code scan for non-ASCII
1670138287Smarkscharacters to ignore characters within comment fields. The scan
1671138287Smarksis now always performed and is no longer optional, detecting
1672138287Smarksinvalid characters within a source file immediately rather than
1673138287Smarksduring the parse phase or later.
1674138287Smarks
1675138287SmarksEnhanced the ASL grammar definition to force early reductions on
1676138287Smarksall list-style grammar elements so that the overall parse stack
1677138287Smarksusage is greatly reduced. This should improve performance and
1678138287Smarksreduce the possibility of parse stack overflow.
1679138287Smarks
1680138287SmarksEliminated all reduce/reduce conflicts in the iASL parser
1681138287Smarksgeneration. Also, with the addition of a %expected statement, the
1682138287Smarkscompiler generates from source with no warnings.
1683138287Smarks
1684138287SmarksFixed a possible segment fault in the disassembler if the input
1685138287Smarksfilename does not contain a "dot" extension (Thomas Renninger).
1686138287Smarks
1687138287Smarks----------------------------------------
1688138287Smarks21 October 2005. Summary of changes for version 20051021:
1689138287Smarks
1690138287Smarks1) ACPI CA Core Subsystem:
1691138287Smarks
1692138287SmarksImplemented support for the EM64T and other x86-64 processors.
1693138287SmarksThis essentially entails recognizing that these processors
1694138287Smarkssupport non-aligned memory transfers. Previously, all 64-bit
1695138287Smarksprocessors were assumed to lack hardware support for non-aligned
1696138287Smarkstransfers.
1697138287Smarks
1698138287SmarksCompleted conversion of the Resource Manager to nearly full table-
1699138287Smarksdriven operation. Specifically, the resource conversion code
1700138287Smarks(convert AML to internal format and the reverse) and the debug
1701138287Smarkscode to dump internal resource descriptors are fully table-
1702138287Smarksdriven, reducing code and data size and improving
1703138287Smarksmaintainability.
1704138287Smarks
1705138287SmarksThe OSL interfaces for Acquire and Release Lock now use a 64-bit
1706138287Smarksflag word on 64-bit processors instead of a fixed 32-bit word.
1707138287Smarks(With assistance from Alexey Starikovskiy)
1708138287Smarks
1709138287SmarksImplemented support within the resource conversion code for the
1710138287SmarksType-Specific byte within the various ACPI 3.0 *WordSpace macros.
1711138287Smarks
1712138287SmarksFixed some issues within the resource conversion code for the
1713138287Smarkstype-specific flags for both Memory and I/O address resource
1714138287Smarksdescriptors. For Memory, implemented support for the MTP and TTP
1715138287Smarksflags. For I/O, split the TRS and TTP flags into two separate
1716138287Smarksfields.
1717138287Smarks
1718138287SmarksCode and Data Size: The current and previous library sizes for
1719138287Smarksthe core subsystem are shown below. These are the code and data
1720138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1721138287Smarks32-bit compiler. These values do not include any ACPI driver or
1722138287SmarksOSPM code. The debug version of the code includes the debug
1723138287Smarksoutput trace mechanism and has a much larger code and data size.
1724138287SmarksNote that these values will vary depending on the efficiency of
1725138287Smarksthe compiler and the compiler options used during generation.
1726138287Smarks
1727138287Smarks  Previous Release:
1728138287Smarks    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
1729138287Smarks    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
1730138287Smarks  Current Release:
1731138287Smarks    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
1732138287Smarks    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
1733138287Smarks
1734138287Smarks
1735138287Smarks
1736138287Smarks2) iASL Compiler/Disassembler:
1737138287Smarks
1738138287SmarksRelaxed a compiler restriction that disallowed a ResourceIndex
1739138287Smarksbyte if the corresponding ResourceSource string was not also
1740138287Smarkspresent in a resource descriptor declaration. This restriction
1741138287Smarkscaused problems with existing AML/ASL code that includes the
1742138287SmarksIndex byte without the string. When such AML was disassembled, it
1743138287Smarkscould not be compiled without modification. Further, the modified
1744138287Smarkscode created a resource template with a different size than the
1745138287Smarksoriginal, breaking code that used fixed offsets into the resource
1746138287Smarkstemplate buffer.
1747138287Smarks
1748138287SmarksRemoved a recent feature of the disassembler to ignore a lone
1749138287SmarksResourceIndex byte. This byte is now emitted if present so that
1750138287Smarksthe exact AML can be reproduced when the disassembled code is
1751138287Smarksrecompiled.
1752138287Smarks
1753138287SmarksImproved comments and text alignment for the resource descriptor
1754138287Smarkscode emitted by the disassembler.
1755138287Smarks
1756138287SmarksImplemented disassembler support for the ACPI 3.0 AccessSize
1757138287Smarksfield within a Register() resource descriptor.
1758138287Smarks
1759138287Smarks----------------------------------------
1760138287Smarks30 September 2005. Summary of changes for version 20050930:
1761138287Smarks
1762138287Smarks1) ACPI CA Core Subsystem:
1763138287Smarks
1764138287SmarksCompleted a major overhaul of the Resource Manager code -
1765138287Smarksspecifically, optimizations in the area of the AML/internal
1766138287Smarksresource conversion code. The code has been optimized to simplify
1767138287Smarksand eliminate duplicated code, CPU stack use has been decreased
1768138287Smarksby optimizing function parameters and local variables, and naming
1769138287Smarksconventions across the manager have been standardized for clarity
1770138287Smarksand ease of maintenance (this includes function, parameter,
1771138287Smarksvariable, and struct/typedef names.) The update may force changes
1772138287Smarksin some driver code, depending on how resources are handled by
1773138287Smarksthe host OS.
1774138287Smarks
1775138287SmarksAll Resource Manager dispatch and information tables have been
1776138287Smarksmoved to a single location for clarity and ease of maintenance.
1777138287SmarksOne new file was created, named "rsinfo.c".
1778138287Smarks
1779138287SmarksThe ACPI return macros (return_ACPI_STATUS, etc.) have been
1780138287Smarksmodified to guarantee that the argument is not evaluated twice,
1781138287Smarksmaking them less prone to macro side-effects. However, since
1782138287Smarksthere exists the possibility of additional stack use if a
1783138287Smarksparticular compiler cannot optimize them (such as in the debug
1784138287Smarksgeneration case), the original macros are optionally available.
1785138287SmarksNote that some invocations of the return_VALUE macro may now
1786138287Smarkscause size mismatch warnings; the return_UINT8 and return_UINT32
1787138287Smarksmacros are provided to eliminate these. (From Randy Dunlap)
1788138287Smarks
1789138287SmarksImplemented a new mechanism to enable debug tracing for
1790138287Smarksindividual control methods. A new external interface,
1791138287SmarksAcpiDebugTrace, is provided to enable this mechanism. The intent
1792138287Smarksis to allow the host OS to easily enable and disable tracing for
1793138287Smarksproblematic control methods. This interface can be easily exposed
1794138287Smarksto a user or debugger interface if desired. See the file
1795138287Smarkspsxface.c for details.
1796138287Smarks
1797138287SmarksAcpiUtCallocate will now return a valid pointer if a length of
1798138287Smarkszero is specified - a length of one is used and a warning is
1799138287Smarksissued. This matches the behavior of AcpiUtAllocate.
1800138287Smarks
1801138287SmarksCode and Data Size: The current and previous library sizes for
1802138287Smarksthe core subsystem are shown below. These are the code and data
1803138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1804138287Smarks32-bit compiler. These values do not include any ACPI driver or
1805138287SmarksOSPM code. The debug version of the code includes the debug
1806138287Smarksoutput trace mechanism and has a much larger code and data size.
1807138287SmarksNote that these values will vary depending on the efficiency of
1808138287Smarksthe compiler and the compiler options used during generation.
1809138287Smarks
1810138287Smarks  Previous Release:
1811138287Smarks    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
1812138287Smarks    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
1813138287Smarks  Current Release:
1814138287Smarks    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
1815138287Smarks    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
1816138287Smarks
1817138287Smarks
1818138287Smarks2) iASL Compiler/Disassembler:
1819138287Smarks
1820138287SmarksA remark is issued if the effective compile-time length of a
1821138287Smarkspackage or buffer is zero. Previously, this was a warning.
1822138287Smarks
1823138287Smarks----------------------------------------
1824138287Smarks16 September 2005. Summary of changes for version 20050916:
1825138287Smarks
1826138287Smarks1) ACPI CA Core Subsystem:
1827138287Smarks
1828138287SmarksFixed a problem within the Resource Manager where support for the
1829138287SmarksGeneric Register descriptor was not fully implemented. This
1830138287Smarksdescriptor is now fully recognized, parsed, disassembled, and
1831138287Smarksdisplayed.
1832138287Smarks
1833138287SmarksCompletely restructured the Resource Manager code to utilize
1834138287Smarkstable-driven dispatch and lookup, eliminating many of the large
1835138287Smarksswitch() statements. This reduces overall subsystem code size and
1836138287Smarkscode complexity. Affects the resource parsing and construction,
1837138287Smarksdisassembly, and debug dump output.
1838138287Smarks
1839138287SmarksCleaned up and restructured the debug dump output for all
1840138287Smarksresource descriptors. Improved readability of the output and
1841138287Smarksreduced code size.
1842138287Smarks
1843138287SmarksFixed a problem where changes to internal data structures caused
1844138287Smarksthe optional ACPI_MUTEX_DEBUG code to fail compilation if
1845138287Smarksspecified.
1846138287Smarks
1847138287SmarksCode and Data Size: The current and previous library sizes for
1848138287Smarksthe core subsystem are shown below. These are the code and data
1849138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
1850138287Smarks32-bit compiler. These values do not include any ACPI driver or
1851138287SmarksOSPM code. The debug version of the code includes the debug
1852138287Smarksoutput trace mechanism and has a much larger code and data size.
1853138287SmarksNote that these values will vary depending on the efficiency of
1854138287Smarksthe compiler and the compiler options used during generation.
1855138287Smarks
1856138287Smarks  Previous Release:
1857138287Smarks    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
1858138287Smarks    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
1859138287Smarks  Current Release:
1860138287Smarks    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
1861138287Smarks    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
1862138287Smarks
1863138287Smarks
1864138287Smarks2) iASL Compiler/Disassembler:
1865138287Smarks
1866138287SmarksUpdated the disassembler to automatically insert an
1867138287SmarksEndDependentFn() macro into the ASL stream if this macro is
1868138287Smarksmissing in the original AML code, simplifying compilation of the
1869138287Smarksresulting ASL module.
1870138287Smarks
1871138287SmarksFixed a problem in the disassembler where a disassembled
1872138287SmarksResourceSource string (within a large resource descriptor) was
1873138287Smarksnot surrounded by quotes and not followed by a comma, causing
1874138287Smarkserrors when the resulting ASL module was compiled. Also, escape
1875138287Smarkssequences within a ResourceSource string are now handled
1876138287Smarkscorrectly (especially "\\")
1877138287Smarks
1878138287Smarks----------------------------------------
1879138287Smarks02 September 2005. Summary of changes for version 20050902:
1880138287Smarks
1881138287Smarks1) ACPI CA Core Subsystem:
1882138287Smarks
1883138287SmarksFixed a problem with the internal Owner ID allocation and
1884138287Smarksdeallocation mechanisms for control method execution and
1885138287Smarksrecursive method invocation. This should eliminate the
1886138287SmarksOWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on
1887138287Smarkssome systems. Recursive method invocation depth is currently
1888138287Smarkslimited to 255. (Alexey Starikovskiy)
1889138287Smarks
1890138287SmarksCompletely eliminated all vestiges of support for the "module-
1891138287Smarkslevel executable code" until this support is fully implemented
1892138287Smarksand debugged. This should eliminate the NO_RETURN_VALUE
1893138287Smarksexceptions seen during table load on some systems that invoke
1894138287Smarksthis support.
1895138287Smarks
1896138287SmarksFixed a problem within the resource manager code where the
1897138287Smarkstransaction flags for a 64-bit address descriptor were handled
1898138287Smarksincorrectly in the type-specific flag byte.
1899138287Smarks
1900138287SmarksConsolidated duplicate code within the address descriptor
1901138287Smarksresource manager code, reducing overall subsystem code size.
1902138287Smarks
1903138287SmarksFixed a fault when using the AML debugger "disassemble" command
1904138287Smarksto disassemble individual control methods.
1905138287Smarks
1906138287SmarksRemoved references to the "release_current" directory within the
1907138287SmarksUnix release package.
1908138287Smarks
1909138287SmarksCode and Data Size: The current and previous core subsystem
1910138287Smarkslibrary sizes are shown below. These are the code and data sizes
1911138287Smarksfor the acpica.lib produced by the Microsoft Visual C++ 6.0
1912138287Smarkscompiler. These values do not include any ACPI driver or OSPM
1913131440Smarkscode. The debug version of the code includes the debug output
1914131440Smarkstrace mechanism and has a much larger code and data size. Note
1915131440Smarksthat these values will vary depending on the efficiency of the
1916131440Smarkscompiler and the compiler options used during generation.
1917131440Smarks
1918131440Smarks  Previous Release:
1919131440Smarks    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1920131440Smarks    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
1921131440Smarks  Current Release:
1922131440Smarks    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
1923131440Smarks    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
1924131440Smarks
1925131440Smarks
1926131440Smarks2) iASL Compiler/Disassembler:
1927131440Smarks
1928131440SmarksImplemented an error check for illegal duplicate values in the
1929131440Smarksinterrupt and dma lists for the following ASL macros: Dma(),
1930131440SmarksIrq(), IrqNoFlags(), and Interrupt().
1931131440Smarks
1932131440SmarksImplemented error checking for the Irq() and IrqNoFlags() macros
1933131440Smarksto detect too many values in the interrupt list (16 max) and
1934131440Smarksinvalid values in the list (range 0 - 15)
1935131440Smarks
1936131440SmarksThe maximum length string literal within an ASL file is now
1937131440Smarksrestricted to 200 characters as per the ACPI specification.
1938131440Smarks
1939131440SmarksFixed a fault when using the -ln option (generate namespace
1940131440Smarkslisting).
1941131440Smarks
1942131440SmarksImplemented an error check to determine if a DescriptorName
1943131440Smarkswithin a resource descriptor has already been used within the
1944131440Smarkscurrent scope.
1945131440Smarks
1946131440Smarks----------------------------------------
1947131440Smarks15 August 2005.  Summary of changes for version 20050815:
1948131440Smarks
1949131440Smarks1) ACPI CA Core Subsystem:
1950131440Smarks
1951131440SmarksImplemented a full bytewise compare to determine if a table load
1952131440Smarksrequest is attempting to load a duplicate table. The compare is
1953131440Smarksperformed if the table signatures and table lengths match. This
1954131440Smarkswill allow different tables with the same OEM Table ID and
1955131440Smarksrevision to be loaded - probably against the ACPI specification,
1956131440Smarksbut discovered in the field nonetheless.
1957131440Smarks
1958131440SmarksAdded the changes.txt logfile to each of the zipped release
1959131440Smarkspackages.
1960129684Snjl
1961129684SnjlCode and Data Size: Current and previous core subsystem library
1962129684Snjlsizes are shown below. These are the code and data sizes for the
1963129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1964129684Snjlthese values do not include any ACPI driver or OSPM code. The
1965129684Snjldebug version of the code includes the debug output trace
1966129684Snjlmechanism and has a much larger code and data size. Note that
1967129684Snjlthese values will vary depending on the efficiency of the
1968129684Snjlcompiler and the compiler options used during generation.
1969129684Snjl
1970129684Snjl  Previous Release:
1971129684Snjl    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1972129684Snjl    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
1973129684Snjl  Current Release:
1974129684Snjl    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1975129684Snjl    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
1976129684Snjl
1977129684Snjl
1978129684Snjl2) iASL Compiler/Disassembler:
1979129684Snjl
1980129684SnjlFixed a problem where incorrect AML code could be generated for
1981129684SnjlPackage objects if optimization is disabled (via the -oa switch).
1982129684Snjl
1983129684SnjlFixed a problem with where incorrect AML code is generated for
1984129684Snjlvariable-length packages when the package length is not specified
1985129684Snjland the number of initializer values is greater than 255.
1986129684Snjl
1987129684Snjl
1988129684Snjl----------------------------------------
1989129684Snjl29 July 2005.  Summary of changes for version 20050729:
1990129684Snjl
1991129684Snjl1) ACPI CA Core Subsystem:
1992129684Snjl
1993129684SnjlImplemented support to ignore an attempt to install/load a
1994129684Snjlparticular ACPI table more than once. Apparently there exists
1995129684SnjlBIOS code that repeatedly attempts to load the same SSDT upon
1996129684Snjlcertain events. With assistance from Venkatesh Pallipadi.
1997129684Snjl
1998129684SnjlRestructured the main interface to the AML parser in order to
1999129684Snjlcorrectly handle all exceptional conditions. This will prevent
2000129684Snjlleakage of the OwnerId resource and should eliminate the
2001129684SnjlAE_OWNER_ID_LIMIT exceptions seen on some machines. With
2002129684Snjlassistance from Alexey Starikovskiy.
2003129684Snjl
2004129684SnjlSupport for "module level code" has been disabled in this version
2005129684Snjldue to a number of issues that have appeared on various machines.
2006129684SnjlThe support can be enabled by defining
2007129684SnjlACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When
2008129684Snjlthe issues are fully resolved, the code will be enabled by
2009129684Snjldefault again.
2010129684Snjl
2011129684SnjlModified the internal functions for debug print support to define
2012129684Snjlthe FunctionName parameter as a (const char *) for compatibility
2013129684Snjlwith compiler built-in macros such as __FUNCTION__, etc.
2014129684Snjl
2015129684SnjlLinted the entire ACPICA source tree for both 32-bit and 64-bit.
2016129684Snjl
2017129684SnjlImplemented support to display an object count summary for the
2018129684SnjlAML Debugger commands Object and Methods.
2019129684Snjl
2020129684SnjlCode and Data Size: Current and previous core subsystem library
2021129684Snjlsizes are shown below. These are the code and data sizes for the
2022129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2023129684Snjlthese values do not include any ACPI driver or OSPM code. The
2024129684Snjldebug version of the code includes the debug output trace
2025129684Snjlmechanism and has a much larger code and data size. Note that
2026129684Snjlthese values will vary depending on the efficiency of the
2027129684Snjlcompiler and the compiler options used during generation.
2028129684Snjl
2029129684Snjl  Previous Release:
2030129684Snjl    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
2031129684Snjl    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
2032129684Snjl  Current Release:
2033129684Snjl    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
2034129684Snjl    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
2035129684Snjl
2036129684Snjl
2037129684Snjl2) iASL Compiler/Disassembler:
2038129684Snjl
2039129684SnjlFixed a regression that appeared in the 20050708 version of the
2040129684Snjlcompiler where an error message was inadvertently emitted for
2041129684Snjlinvocations of the _OSI reserved control method.
2042129684Snjl
2043129684Snjl----------------------------------------
2044129684Snjl08 July 2005.  Summary of changes for version 20050708:
2045129684Snjl
2046129684Snjl1) ACPI CA Core Subsystem:
2047129684Snjl
2048129684SnjlThe use of the CPU stack in the debug version of the subsystem
2049129684Snjlhas been considerably reduced. Previously, a debug structure was
2050129684Snjldeclared in every function that used the debug macros. This
2051129684Snjlstructure has been removed in favor of declaring the individual
2052129684Snjlelements as parameters to the debug functions. This reduces the
2053129684Snjlcumulative stack use during nested execution of ACPI function
2054129684Snjlcalls at the cost of a small increase in the code size of the
2055129684Snjldebug version of the subsystem. With assistance from Alexey
2056129684SnjlStarikovskiy and Len Brown.
2057129684Snjl
2058129684SnjlAdded the ACPI_GET_FUNCTION_NAME macro to enable the compiler-
2059129684Snjldependent headers to define a macro that will return the current
2060129684Snjlfunction name at runtime (such as __FUNCTION__ or _func_, etc.)
2061129684SnjlThe function name is used by the debug trace output. If
2062129684SnjlACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent
2063129684Snjlheader, the function name is saved on the CPU stack (one pointer
2064129684Snjlper function.) This mechanism is used because apparently there
2065129684Snjlexists no standard ANSI-C defined macro that that returns the
2066129684Snjlfunction name.
2067129684Snjl
2068129684SnjlRedesigned and reimplemented the "Owner ID" mechanism used to
2069129684Snjltrack namespace objects created/deleted by ACPI tables and
2070129684Snjlcontrol method execution. A bitmap is now used to allocate and
2071129684Snjlfree the IDs, thus solving the wraparound problem present in the
2072129684Snjlprevious implementation. The size of the namespace node
2073129684Snjldescriptor was reduced by 2 bytes as a result (Alexey
2074129684SnjlStarikovskiy).
2075129684Snjl
2076129684SnjlRemoved the UINT32_BIT and UINT16_BIT types that were used for
2077129684Snjlthe bitfield flag definitions within the headers for the
2078129684Snjlpredefined ACPI tables. These have been replaced by UINT8_BIT in
2079129684Snjlorder to increase the code portability of the subsystem. If the
2080129684Snjluse of UINT8 remains a problem, we may be forced to eliminate
2081129684Snjlbitfields entirely because of a lack of portability.
2082129684Snjl
2083129684SnjlEnhanced the performance of the AcpiUtUpdateObjectReference
2084129684Snjlprocedure. This is a frequently used function and this
2085129684Snjlimprovement increases the performance of the entire subsystem
2086129684Snjl(Alexey Starikovskiy).
2087129684Snjl
2088129684SnjlFixed several possible memory leaks and the inverse - premature
2089129684Snjlobject deletion (Alexey Starikovskiy).
2090129684Snjl
2091129684SnjlCode and Data Size: Current and previous core subsystem library
2092129684Snjlsizes are shown below. These are the code and data sizes for the
2093129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2094129684Snjlthese values do not include any ACPI driver or OSPM code. The
2095129684Snjldebug version of the code includes the debug output trace
2096129684Snjlmechanism and has a much larger code and data size. Note that
2097129684Snjlthese values will vary depending on the efficiency of the
2098129684Snjlcompiler and the compiler options used during generation.
2099129684Snjl
2100129684Snjl  Previous Release:
2101129684Snjl    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
2102129684Snjl    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
2103129684Snjl  Current Release:
2104129684Snjl    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
2105129684Snjl    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
2106129684Snjl
2107129684Snjl----------------------------------------
2108129684Snjl24 June 2005.  Summary of changes for version 20050624:
2109129684Snjl
2110129684Snjl1) ACPI CA Core Subsystem:
2111129684Snjl
2112129684SnjlModified the new OSL cache interfaces to use ACPI_CACHE_T as the
2113129684Snjltype for the host-defined cache object. This allows the OSL
2114129684Snjlimplementation to define and type this object in any manner
2115129684Snjldesired, simplifying the OSL implementation. For example,
2116129684SnjlACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be
2117129684Snjldefined in the OS-specific header file for other operating
2118129684Snjlsystems as required.
2119129684Snjl
2120129684SnjlChanged the interface to AcpiOsAcquireObject to directly return
2121129684Snjlthe requested object as the function return (instead of
2122129684SnjlACPI_STATUS.) This change was made for performance reasons, since
2123129684Snjlthis is the purpose of the interface in the first place.
2124129684SnjlAcpiOsAcquireObject is now similar to the AcpiOsAllocate
2125129684Snjlinterface.
2126129684Snjl
2127129684SnjlImplemented a new AML debugger command named Businfo. This
2128129684Snjlcommand displays information about all devices that have an
2129129684Snjlassociate _PRT object. The _ADR, _HID, _UID, and _CID are
2130129684Snjldisplayed for these devices.
2131128212Snjl
2132128212SnjlModified the initialization sequence in AcpiInitializeSubsystem
2133128212Snjlto call the OSL interface AcpiOslInitialize first, before any
2134128212Snjllocal initialization. This change was required because the global
2135128212Snjlinitialization now calls OSL interfaces.
2136128212Snjl
2137128212SnjlEnhanced the Dump command to display the entire contents of
2138128212SnjlPackage objects (including all sub-objects and their values.)
2139128212Snjl
2140128212SnjlRestructured the code base to split some files because of size
2141128212Snjland/or because the code logically belonged in a separate file.
2142128212SnjlNew files are listed below. All makefiles and project files
2143128212Snjlincluded in the ACPI CA release have been updated.
2144128212Snjl    utilities/utcache.c           /* Local cache interfaces */
2145128212Snjl    utilities/utmutex.c           /* Local mutex support */
2146128212Snjl    utilities/utstate.c           /* State object support */
2147128212Snjl    interpreter/parser/psloop.c   /* Main AML parse loop */
2148128212Snjl
2149128212SnjlCode and Data Size: Current and previous core subsystem library
2150128212Snjlsizes are shown below. These are the code and data sizes for the
2151128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2152128212Snjlthese values do not include any ACPI driver or OSPM code. The
2153128212Snjldebug version of the code includes the debug output trace
2154128212Snjlmechanism and has a much larger code and data size. Note that
2155128212Snjlthese values will vary depending on the efficiency of the
2156128212Snjlcompiler and the compiler options used during generation.
2157128212Snjl
2158128212Snjl  Previous Release:
2159128212Snjl    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
2160128212Snjl    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
2161128212Snjl  Current Release:
2162128212Snjl    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
2163128212Snjl    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
2164128212Snjl
2165128212Snjl
2166128212Snjl2) iASL Compiler/Disassembler:
2167128212Snjl
2168128212SnjlFixed a regression introduced in version 20050513 where the use
2169128212Snjlof a Package object within a Case() statement caused a compile
2170128212Snjltime exception. The original behavior has been restored (a
2171128212SnjlMatch() operator is emitted.)
2172128212Snjl
2173128212Snjl----------------------------------------
2174128212Snjl17 June 2005.  Summary of changes for version 20050617:
2175128212Snjl
2176128212Snjl1) ACPI CA Core Subsystem:
2177128212Snjl
2178128212SnjlMoved the object cache operations into the OS interface layer
2179128212Snjl(OSL) to allow the host OS to handle these operations if desired
2180128212Snjl(for example, the Linux OSL will invoke the slab allocator). This
2181128212Snjlsupport is optional; the compile time define ACPI_USE_LOCAL_CACHE
2182128212Snjlmay be used to utilize the original cache code in the ACPI CA
2183128212Snjlcore. The new OSL interfaces are shown below. See utalloc.c for
2184128212Snjlan example implementation, and acpiosxf.h for the exact interface
2185128212Snjldefinitions. With assistance from Alexey Starikovskiy.
2186128212Snjl    AcpiOsCreateCache
2187128212Snjl    AcpiOsDeleteCache
2188128212Snjl    AcpiOsPurgeCache
2189128212Snjl    AcpiOsAcquireObject
2190128212Snjl    AcpiOsReleaseObject
2191128212Snjl
2192128212SnjlModified the interfaces to AcpiOsAcquireLock and
2193128212SnjlAcpiOsReleaseLock to return and restore a flags parameter. This
2194128212Snjlfits better with many OS lock models. Note: the current execution
2195128212Snjlstate (interrupt handler or not) is no longer passed to these
2196128212Snjlinterfaces. If necessary, the OSL must determine this state by
2197128212Snjlitself, a simple and fast operation. With assistance from Alexey
2198128212SnjlStarikovskiy.
2199128212Snjl
2200128212SnjlFixed a problem in the ACPI table handling where a valid XSDT was
2201128212Snjlassumed present if the revision of the RSDP was 2 or greater.
2202128212SnjlAccording to the ACPI specification, the XSDT is optional in all
2203128212Snjlcases, and the table manager therefore now checks for both an
2204128212SnjlRSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is
2205128212Snjlused. Some ACPI 2.0 compliant BIOSs contain only the RSDT.
2206128212Snjl
2207128212SnjlFixed an interpreter problem with the Mid() operator in the case
2208128212Snjlof an input string where the resulting output string is of zero
2209128212Snjllength. It now correctly returns a valid, null terminated string
2210128212Snjlobject instead of a string object with a null pointer.
2211128212Snjl
2212128212SnjlFixed a problem with the control method argument handling to
2213128212Snjlallow a store to an Arg object that already contains an object of
2214128212Snjltype Device. The Device object is now correctly overwritten.
2215128212SnjlPreviously, an error was returned.
2216128212Snjl
2217128212Snjl
2218128212SnjlEnhanced the debugger Find command to emit object values in
2219128212Snjladdition to the found object pathnames. The output format is the
2220128212Snjlsame as the dump namespace command.
2221128212Snjl
2222128212SnjlEnhanced the debugger Set command. It now has the ability to set
2223128212Snjlthe value of any Named integer object in the namespace
2224128212Snjl(Previously, only method locals and args could be set.)
2225128212Snjl
2226128212SnjlCode and Data Size: Current and previous core subsystem library
2227128212Snjlsizes are shown below. These are the code and data sizes for the
2228128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2229128212Snjlthese values do not include any ACPI driver or OSPM code. The
2230128212Snjldebug version of the code includes the debug output trace
2231128212Snjlmechanism and has a much larger code and data size. Note that
2232128212Snjlthese values will vary depending on the efficiency of the
2233128212Snjlcompiler and the compiler options used during generation.
2234128212Snjl
2235128212Snjl  Previous Release:
2236128212Snjl    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
2237128212Snjl    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
2238127175Snjl  Current Release:
2239127175Snjl    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
2240127175Snjl    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
2241127175Snjl
2242127175Snjl
2243127175Snjl2) iASL Compiler/Disassembler:
2244127175Snjl
2245127175SnjlFixed a regression in the disassembler where if/else/while
2246127175Snjlconstructs were output incorrectly. This problem was introduced
2247127175Snjlin the previous release (20050526). This problem also affected
2248127175Snjlthe single-step disassembly in the debugger.
2249127175Snjl
2250127175SnjlFixed a problem where compiling the reserved _OSI method would
2251127175Snjlrandomly (but rarely) produce compile errors.
2252127175Snjl
2253127175SnjlEnhanced the disassembler to emit compilable code in the face of
2254127175Snjlincorrect AML resource descriptors. If the optional
2255127175SnjlResourceSourceIndex is present, but the ResourceSource is not, do
2256127175Snjlnot emit the ResourceSourceIndex in the disassembly. Otherwise,
2257127175Snjlthe resulting code cannot be compiled without errors.
2258127175Snjl
2259127175Snjl----------------------------------------
2260127175Snjl26 May 2005.  Summary of changes for version 20050526:
2261127175Snjl
2262127175Snjl1) ACPI CA Core Subsystem:
2263127175Snjl
2264127175SnjlImplemented support to execute Type 1 and Type 2 AML opcodes
2265127175Snjlappearing at the module level (not within a control method.)
2266127175SnjlThese opcodes are executed exactly once at the time the table is
2267127175Snjlloaded. This type of code was legal up until the release of ACPI
2268127175Snjl2.0B (2002) and is now supported within ACPI CA in order to
2269127175Snjlprovide backwards compatibility with earlier BIOS
2270127175Snjlimplementations. This eliminates the "Encountered executable code
2271127175Snjlat module level" warning that was previously generated upon
2272127175Snjldetection of such code.
2273127175Snjl
2274127175SnjlFixed a problem in the interpreter where an AE_NOT_FOUND
2275127175Snjlexception could inadvertently be generated during the lookup of
2276127175Snjlnamespace objects in the second pass parse of ACPI tables and
2277127175Snjlcontrol methods. It appears that this problem could occur during
2278127175Snjlthe resolution of forward references to namespace objects.
2279127175Snjl
2280127175SnjlAdded the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex
2281127175Snjlfunction, corresponding to the same #ifdef in the
2282127175SnjlAcpiUtAcquireMutex function. This allows the deadlock detection
2283127175Snjldebug code to be compiled out in the normal case, improving mutex
2284127175Snjlperformance (and overall subsystem performance) considerably.
2285127175Snjl
2286127175SnjlImplemented a handful of miscellaneous fixes for possible memory
2287127175Snjlleaks on error conditions and error handling control paths. These
2288127175Snjlfixes were suggested by FreeBSD and the Coverity Prevent source
2289127175Snjlcode analysis tool.
2290127175Snjl
2291127175SnjlAdded a check for a null RSDT pointer in AcpiGetFirmwareTable
2292127175Snjl(tbxfroot.c) to prevent a fault in this error case.
2293127175Snjl
2294127175SnjlCode and Data Size: Current and previous core subsystem library
2295127175Snjlsizes are shown below. These are the code and data sizes for the
2296127175Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2297127175Snjlthese values do not include any ACPI driver or OSPM code. The
2298127175Snjldebug version of the code includes the debug output trace
2299127175Snjlmechanism and has a much larger code and data size. Note that
2300126372Snjlthese values will vary depending on the efficiency of the
2301126372Snjlcompiler and the compiler options used during generation.
2302126372Snjl
2303126372Snjl  Previous Release:
2304126372Snjl    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
2305126372Snjl    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
2306126372Snjl  Current Release:
2307126372Snjl    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
2308126372Snjl    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
2309126372Snjl
2310126372Snjl
2311126372Snjl2) iASL Compiler/Disassembler:
2312126372Snjl
2313126372SnjlImplemented support to allow Type 1 and Type 2 ASL operators to
2314126372Snjlappear at the module level (not within a control method.) These
2315126372Snjloperators will be executed once at the time the table is loaded.
2316126372SnjlThis type of code was legal up until the release of ACPI 2.0B
2317126372Snjl(2002) and is now supported by the iASL compiler in order to
2318126372Snjlprovide backwards compatibility with earlier BIOS ASL code.
2319126372Snjl
2320126372SnjlThe ACPI integer width (specified via the table revision ID or
2321126372Snjlthe -r override, 32 or 64 bits) is now used internally during
2322126372Snjlcompile-time constant folding to ensure that constants are
2323126372Snjltruncated to 32 bits if necessary. Previously, the revision ID
2324126372Snjlvalue was only emitted in the AML table header.
2325126372Snjl
2326126372SnjlAn error message is now generated for the Mutex and Method
2327126372Snjloperators if the SyncLevel parameter is outside the legal range
2328126372Snjlof 0 through 15.
2329126372Snjl
2330126372SnjlFixed a problem with the Method operator ParameterTypes list
2331126372Snjlhandling (ACPI 3.0). Previously, more than 2 types or 2 arguments
2332126372Snjlgenerated a syntax error.  The actual underlying implementation
2333126372Snjlof method argument typechecking is still under development,
2334126372Snjlhowever.
2335126372Snjl
2336126372Snjl----------------------------------------
2337126372Snjl13 May 2005.  Summary of changes for version 20050513:
2338126372Snjl
2339126372Snjl1) ACPI CA Core Subsystem:
2340126372Snjl
2341126372SnjlImplemented support for PCI Express root bridges -- added support
2342126372Snjlfor device PNP0A08 in the root bridge search within
2343126372SnjlAcpiEvPciConfigRegionSetup.
2344126372Snjl
2345126372SnjlThe interpreter now automatically truncates incoming 64-bit
2346126372Snjlconstants to 32 bits if currently executing out of a 32-bit ACPI
2347126372Snjltable (Revision < 2). This also affects the iASL compiler
2348126372Snjlconstant folding. (Note: as per below, the iASL compiler no
2349126372Snjllonger allows 64-bit constants within 32-bit tables.)
2350126372Snjl
2351126372SnjlFixed a problem where string and buffer objects with "static"
2352126372Snjlpointers (pointers to initialization data within an ACPI table)
2353126372Snjlwere not handled consistently. The internal object copy operation
2354126372Snjlnow always copies the data to a newly allocated buffer,
2355126372Snjlregardless of whether the source object is static or not.
2356126372Snjl
2357126372SnjlFixed a problem with the FromBCD operator where an implicit
2358126372Snjlresult conversion was improperly performed while storing the
2359126372Snjlresult to the target operand. Since this is an "explicit
2360126372Snjlconversion" operator, the implicit conversion should never be
2361126372Snjlperformed on the output.
2362126372Snjl
2363126372SnjlFixed a problem with the CopyObject operator where a copy to an
2364126372Snjlexisting named object did not always completely overwrite the
2365126372Snjlexisting object stored at name. Specifically, a buffer-to-buffer
2366126372Snjlcopy did not delete the existing buffer.
2367126372Snjl
2368126372SnjlReplaced "InterruptLevel" with "InterruptNumber" in all GPE
2369126372Snjlinterfaces and structs for consistency.
2370126372Snjl
2371126372SnjlCode and Data Size: Current and previous core subsystem library
2372126372Snjlsizes are shown below. These are the code and data sizes for the
2373126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2374126372Snjlthese values do not include any ACPI driver or OSPM code. The
2375126372Snjldebug version of the code includes the debug output trace
2376126372Snjlmechanism and has a much larger code and data size. Note that
2377126372Snjlthese values will vary depending on the efficiency of the
2378126372Snjlcompiler and the compiler options used during generation.
2379126372Snjl
2380126372Snjl  Previous Release:
2381126372Snjl    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
2382126372Snjl    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
2383126372Snjl  Current Release: (Same sizes)
2384126372Snjl    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
2385126372Snjl    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
2386126372Snjl
2387126372Snjl
2388126372Snjl2) iASL Compiler/Disassembler:
2389126372Snjl
2390126372SnjlThe compiler now emits a warning if an attempt is made to
2391126372Snjlgenerate a 64-bit integer constant from within a 32-bit ACPI
2392126372Snjltable (Revision < 2). The integer is truncated to 32 bits.
2393126372Snjl
2394126372SnjlFixed a problem with large package objects: if the static length
2395126372Snjlof the package is greater than 255, the "variable length package"
2396126372Snjlopcode is emitted. Previously, this caused an error. This
2397126372Snjlrequires an update to the ACPI spec, since it currently
2398126372Snjl(incorrectly) states that packages larger than 255 elements are
2399126372Snjlnot allowed.
2400126372Snjl
2401126372SnjlThe disassembler now correctly handles variable length packages
2402126372Snjland packages larger than 255 elements.
2403126372Snjl
2404126372Snjl----------------------------------------
2405126372Snjl08 April 2005.  Summary of changes for version 20050408:
2406126372Snjl
2407126372Snjl1) ACPI CA Core Subsystem:
2408126372Snjl
2409126372SnjlFixed three cases in the interpreter where an "index" argument to
2410126372Snjlan ASL function was still (internally) 32 bits instead of the
2411126372Snjlrequired 64 bits. This was the Index argument to the Index, Mid,
2412126372Snjland Match operators.
2413126372Snjl
2414126372SnjlThe "strupr" function is now permanently local (AcpiUtStrupr),
2415126372Snjlsince this is not a POSIX-defined function and not present in
2416126372Snjlmost kernel-level C libraries. All references to the C library
2417126372Snjlstrupr function have been removed from the headers.
2418126372Snjl
2419126372SnjlCompleted the deployment of static functions/prototypes. All
2420126372Snjlprototypes with the static attribute have been moved from the
2421126372Snjlheaders to the owning C file.
2422126372Snjl
2423126372SnjlImplemented an extract option (-e) for the AcpiBin utility (AML
2424126372Snjlbinary utility). This option allows the utility to extract
2425126372Snjlindividual ACPI tables from the output of AcpiDmp. It provides
2426126372Snjlthe same functionality of the acpixtract.pl perl script without
2427126372Snjlthe worry of setting the correct perl options. AcpiBin runs on
2428126372SnjlWindows and has not yet been generated/validated in the
2429126372SnjlLinux/Unix environment (but should be soon).
2430126372Snjl
2431126372SnjlUpdated and fixed the table dump option for AcpiBin (-d). This
2432126372Snjloption converts a single ACPI table to a hex/ascii file, similar
2433126372Snjlto the output of AcpiDmp.
2434126372Snjl
2435126372SnjlCode and Data Size: Current and previous core subsystem library
2436126372Snjlsizes are shown below. These are the code and data sizes for the
2437126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2438126372Snjlthese values do not include any ACPI driver or OSPM code. The
2439126372Snjldebug version of the code includes the debug output trace
2440126372Snjlmechanism and has a much larger code and data size. Note that
2441126372Snjlthese values will vary depending on the efficiency of the
2442126372Snjlcompiler and the compiler options used during generation.
2443126372Snjl
2444126372Snjl  Previous Release:
2445126372Snjl    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
2446126372Snjl    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
2447126372Snjl  Current Release:
2448126372Snjl    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
2449126372Snjl    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
2450126372Snjl
2451126372Snjl
2452126372Snjl2) iASL Compiler/Disassembler:
2453126372Snjl
2454126372SnjlDisassembler fix: Added a check to ensure that the table length
2455126372Snjlfound in the ACPI table header within the input file is not
2456126372Snjllonger than the actual input file size. This indicates some kind
2457126372Snjlof file or table corruption.
2458126372Snjl
2459126372Snjl----------------------------------------
2460126372Snjl29 March 2005.  Summary of changes for version 20050329:
2461126372Snjl
2462126372Snjl1) ACPI CA Core Subsystem:
2463126372Snjl
2464126372SnjlAn error is now generated if an attempt is made to create a
2465126372SnjlBuffer Field of length zero (A CreateField with a length operand
2466126372Snjlof zero.)
2467126372Snjl
2468126372SnjlThe interpreter now issues a warning whenever executable code at
2469126372Snjlthe module level is detected during ACPI table load. This will
2470126372Snjlgive some idea of the prevalence of this type of code.
2471126372Snjl
2472126372SnjlImplemented support for references to named objects (other than
2473126372Snjlcontrol methods) within package objects.
2474126372Snjl
2475126372SnjlEnhanced package object output for the debug object. Package
2476126372Snjlobjects are now completely dumped, showing all elements.
2477126372Snjl
2478126372SnjlEnhanced miscellaneous object output for the debug object. Any
2479126372Snjlobject can now be written to the debug object (for example, a
2480126372Snjldevice object can be written, and the type of the object will be
2481126372Snjldisplayed.)
2482126372Snjl
2483126372SnjlThe "static" qualifier has been added to all local functions
2484126372Snjlacross both the core subsystem and the iASL compiler.
2485126372Snjl
2486126372SnjlThe number of "long" lines (> 80 chars) within the source has
2487126372Snjlbeen significantly reduced, by about 1/3.
2488126372Snjl
2489126372SnjlCleaned up all header files to ensure that all CA/iASL functions
2490126372Snjlare prototyped (even static functions) and the formatting is
2491126372Snjlconsistent.
2492126372Snjl
2493126372SnjlTwo new header files have been added, acopcode.h and acnames.h.
2494126372Snjl
2495126372SnjlRemoved several obsolete functions that were no longer used.
2496126372Snjl
2497126372SnjlCode and Data Size: Current and previous core subsystem library
2498126372Snjlsizes are shown below. These are the code and data sizes for the
2499126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2500126372Snjlthese values do not include any ACPI driver or OSPM code. The
2501126372Snjldebug version of the code includes the debug output trace
2502126372Snjlmechanism and has a much larger code and data size. Note that
2503126372Snjlthese values will vary depending on the efficiency of the
2504126372Snjlcompiler and the compiler options used during generation.
2505126372Snjl
2506126372Snjl  Previous Release:
2507126372Snjl    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2508126372Snjl    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
2509126372Snjl  Current Release:
2510126372Snjl    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
2511126372Snjl    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
2512126372Snjl
2513126372Snjl
2514126372Snjl
2515126372Snjl2) iASL Compiler/Disassembler:
2516126372Snjl
2517126372SnjlFixed a problem with the resource descriptor generation/support.
2518126372SnjlFor the ResourceSourceIndex and the ResourceSource fields, both
2519126372Snjlmust be present, or both must be not present - can't have one
2520126372Snjlwithout the other.
2521126372Snjl
2522126372SnjlThe compiler now returns non-zero from the main procedure if any
2523126372Snjlerrors have occurred during the compilation.
2524126372Snjl
2525126372Snjl
2526126372Snjl----------------------------------------
2527126372Snjl09 March 2005.  Summary of changes for version 20050309:
2528126372Snjl
2529126372Snjl1) ACPI CA Core Subsystem:
2530126372Snjl
2531126372SnjlThe string-to-buffer implicit conversion code has been modified
2532126372Snjlagain after a change to the ACPI specification.  In order to
2533126372Snjlmatch the behavior of the other major ACPI implementation, the
2534126372Snjltarget buffer is no longer truncated if the source string is
2535126372Snjlsmaller than an existing target buffer. This change requires an
2536126372Snjlupdate to the ACPI spec, and should eliminate the recent
2537126372SnjlAE_AML_BUFFER_LIMIT issues.
2538126372Snjl
2539126372SnjlThe "implicit return" support was rewritten to a new algorithm
2540126372Snjlthat solves the general case. Rather than attempt to determine
2541126372Snjlwhen a method is about to exit, the result of every ASL operator
2542126372Snjlis saved momentarily until the very next ASL operator is
2543126372Snjlexecuted. Therefore, no matter how the method exits, there will
2544126372Snjlalways be a saved implicit return value. This feature is only
2545126372Snjlenabled with the AcpiGbl_EnableInterpreterSlack flag, and should
2546126372Snjleliminate AE_AML_NO_RETURN_VALUE errors when enabled.
2547126372Snjl
2548126372SnjlImplemented implicit conversion support for the predicate
2549126372Snjl(operand) of the If, Else, and While operators. String and Buffer
2550126372Snjlarguments are automatically converted to Integers.
2551126372Snjl
2552126372SnjlChanged the string-to-integer conversion behavior to match the
2553126372Snjlnew ACPI errata: "If no integer object exists, a new integer is
2554126372Snjlcreated. The ASCII string is interpreted as a hexadecimal
2555126372Snjlconstant. Each string character is interpreted as a hexadecimal
2556126372Snjlvalue (`0'-`9', `A'-`F', `a', `f'), starting with the first
2557126372Snjlcharacter as the most significant digit, and ending with the
2558126372Snjlfirst non-hexadecimal character or end-of-string." This means
2559126372Snjlthat the first non-hex character terminates the conversion and
2560126372Snjlthis is the code that was changed.
2561126372Snjl
2562126372SnjlFixed a problem where the ObjectType operator would fail (fault)
2563126372Snjlwhen used on an Index of a Package which pointed to a null
2564126372Snjlpackage element. The operator now properly returns zero
2565126372Snjl(Uninitialized) in this case.
2566126372Snjl
2567126372SnjlFixed a problem where the While operator used excessive memory by
2568126372Snjlnot properly popping the result stack during execution. There was
2569126372Snjlno memory leak after execution, however. (Code provided by Valery
2570126372SnjlPodrezov.)
2571126372Snjl
2572126372SnjlFixed a problem where references to control methods within
2573126372SnjlPackage objects caused the method to be invoked, instead of
2574126372Snjlproducing a reference object pointing to the method.
2575126372Snjl
2576126372SnjlRestructured and simplified the pswalk.c module
2577126372Snjl(AcpiPsDeleteParseTree) to improve performance and reduce code
2578126372Snjlsize. (Code provided by Alexey Starikovskiy.)
2579126372Snjl
2580126372SnjlCode and Data Size: Current and previous core subsystem library
2581126372Snjlsizes are shown below. These are the code and data sizes for the
2582126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2583126372Snjlthese values do not include any ACPI driver or OSPM code. The
2584126372Snjldebug version of the code includes the debug output trace
2585126372Snjlmechanism and has a much larger code and data size. Note that
2586126372Snjlthese values will vary depending on the efficiency of the
2587126372Snjlcompiler and the compiler options used during generation.
2588126372Snjl
2589126372Snjl  Previous Release:
2590126372Snjl    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2591126372Snjl    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
2592126372Snjl  Current Release:
2593126372Snjl    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2594126372Snjl    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
2595126372Snjl
2596126372Snjl
2597126372Snjl2) iASL Compiler/Disassembler:
2598126372Snjl
2599126372SnjlFixed a problem with the Return operator with no arguments. Since
2600126372Snjlthe AML grammar for the byte encoding requires an operand for the
2601126372SnjlReturn opcode, the compiler now emits a Return(Zero) for this
2602126372Snjlcase.  An ACPI specification update has been written for this
2603126372Snjlcase.
2604126372Snjl
2605126372SnjlFor tables other than the DSDT, namepath optimization is
2606126372Snjlautomatically disabled. This is because SSDTs can be loaded
2607126372Snjlanywhere in the namespace, the compiler has no knowledge of
2608126372Snjlwhere, and thus cannot optimize namepaths.
2609126372Snjl
2610126372SnjlAdded "ProcessorObj" to the ObjectTypeKeyword list. This object
2611126372Snjltype was inadvertently omitted from the ACPI specification, and
2612126372Snjlwill require an update to the spec.
2613126372Snjl
2614126372SnjlThe source file scan for ASCII characters is now optional (-a).
2615126372SnjlThis change was made because some vendors place non-ascii
2616126372Snjlcharacters within comments. However, the scan is simply a brute-
2617126372Snjlforce byte compare to ensure all characters in the file are in
2618126372Snjlthe range 0x00 to 0x7F.
2619126372Snjl
2620126372SnjlFixed a problem with the CondRefOf operator where the compiler
2621126372Snjlwas inappropriately checking for the existence of the target.
2622126372SnjlSince the point of the operator is to check for the existence of
2623126372Snjlthe target at run-time, the compiler no longer checks for the
2624126372Snjltarget existence.
2625126372Snjl
2626126372SnjlFixed a problem where errors generated from the internal AML
2627126372Snjlinterpreter during constant folding were not handled properly,
2628126372Snjlcausing a fault.
2629126372Snjl
2630126372SnjlFixed a problem with overly aggressive range checking for the
2631126372SnjlStall operator. The valid range (max 255) is now only checked if
2632126372Snjlthe operand is of type Integer. All other operand types cannot be
2633126372Snjlstatically checked.
2634126372Snjl
2635126372SnjlFixed a problem where control method references within the RefOf,
2636126372SnjlDeRefOf, and ObjectType operators were not treated properly. They
2637126372Snjlare now treated as actual references, not method invocations.
2638126372Snjl
2639126372SnjlFixed and enhanced the "list namespace" option (-ln). This option
2640126372Snjlwas broken a number of releases ago.
2641126372Snjl
2642126372SnjlImproved error handling for the Field, IndexField, and BankField
2643126372Snjloperators. The compiler now cleanly reports and recovers from
2644126372Snjlerrors in the field component (FieldUnit) list.
2645126372Snjl
2646126372SnjlFixed a disassembler problem where the optional
2647126372SnjlResourceDescriptor fields TRS and TTP were not always handled
2648126372Snjlcorrectly.
2649126372Snjl
2650126372SnjlDisassembler - Comments in output now use "//" instead of "/*"
2651126372Snjl
2652126372Snjl----------------------------------------
2653126372Snjl28 February 2005.  Summary of changes for version 20050228:
2654126372Snjl
2655126372Snjl1) ACPI CA Core Subsystem:
2656126372Snjl
2657126372SnjlFixed a problem where the result of an Index() operator (an
2658126372Snjlobject reference) must increment the reference count on the
2659126372Snjltarget object for the life of the object reference.
2660126372Snjl
2661126372SnjlImplemented AML Interpreter and Debugger support for the new ACPI
2662126372Snjl3.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace,
2663126372Snjland WordSpace resource descriptors.
2664126372Snjl
2665117521SnjlImplemented support in the _OSI method for the ACPI 3.0 "Extended
2666117521SnjlAddress Space Descriptor" string, indicating interpreter support
2667117521Snjlfor the descriptors above.
2668117521Snjl
2669117521SnjlImplemented header support for the new ACPI 3.0 FADT flag bits.
2670117521Snjl
2671117521SnjlImplemented header support for the new ACPI 3.0 PCI Express bits
2672117521Snjlfor the PM1 status/enable registers.
2673117521Snjl
2674117521SnjlUpdated header support for the MADT processor local Apic struct
2675117521Snjland MADT platform interrupt source struct for new ACPI 3.0
2676117521Snjlfields.
2677117521Snjl
2678117521SnjlImplemented header support for the SRAT and SLIT ACPI tables.
2679117521Snjl
2680117521SnjlImplemented the -s switch in AcpiExec to enable the
2681117521Snjl"InterpreterSlack" flag at runtime.
2682117521Snjl
2683117521SnjlCode and Data Size: Current and previous core subsystem library
2684117521Snjlsizes are shown below. These are the code and data sizes for the
2685117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2686117521Snjlthese values do not include any ACPI driver or OSPM code. The
2687117521Snjldebug version of the code includes the debug output trace
2688117521Snjlmechanism and has a much larger code and data size. Note that
2689117521Snjlthese values will vary depending on the efficiency of the
2690117521Snjlcompiler and the compiler options used during generation.
2691117521Snjl
2692117521Snjl  Previous Release:
2693117521Snjl    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
2694117521Snjl    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
2695117521Snjl  Current Release:
2696117521Snjl    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2697117521Snjl    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
2698117521Snjl
2699117521Snjl
2700117521Snjl2) iASL Compiler/Disassembler:
2701117521Snjl
2702117521SnjlFixed a problem with the internal 64-bit String-to-integer
2703117521Snjlconversion with strings less than two characters long.
2704126372Snjl
2705126372SnjlFixed a problem with constant folding where the result of the
2706126372SnjlIndex() operator can not be considered a constant. This means
2707126372Snjlthat Index() cannot be a type3 opcode and this will require an
2708117521Snjlupdate to the ACPI specification.
2709117521Snjl
2710117521SnjlDisassembler: Implemented support for the TTP, MTP, and TRS
2711117521Snjlresource descriptor fields. These fields were inadvertently
2712117521Snjlignored and not output in the disassembly of the resource
2713126372Snjldescriptor.
2714126372Snjl
2715126372Snjl
2716117521Snjl ----------------------------------------
2717117521Snjl11 February 2005.  Summary of changes for version 20050211:
2718117521Snjl
2719117521Snjl1) ACPI CA Core Subsystem:
2720117521Snjl
2721126372SnjlImplemented ACPI 3.0 support for implicit conversion within the
2722126372SnjlMatch() operator. MatchObjects can now be of type integer,
2723126372Snjlbuffer, or string instead of just type integer.  Package elements
2724117521Snjlare implicitly converted to the type of the MatchObject. This
2725117521Snjlchange aligns the behavior of Match() with the behavior of the
2726117521Snjlother logical operators (LLess(), etc.) It also requires an
2727117521Snjlerrata change to the ACPI specification as this support was
2728117521Snjlintended for ACPI 3.0, but was inadvertently omitted.
2729117521Snjl
2730117521SnjlFixed a problem with the internal implicit "to buffer"
2731117521Snjlconversion. Strings that are converted to buffers will cause
2732126372Snjlbuffer truncation if the string is smaller than the target
2733126372Snjlbuffer. Integers that are converted to buffers will not cause
2734126372Snjlbuffer truncation, only zero extension (both as per the ACPI
2735126372Snjlspec.) The problem was introduced when code was added to truncate
2736126372Snjlthe buffer, but this should not be performed in all cases, only
2737126372Snjlthe string case.
2738117521Snjl
2739117521SnjlFixed a problem with the Buffer and Package operators where the
2740117521Snjlinterpreter would get confused if two such operators were used as
2741117521Snjloperands to an ASL operator (such as
2742117521SnjlLLess(Buffer(1){0},Buffer(1){1}). The internal result stack was
2743117521Snjlnot being popped after the execution of these operators,
2744117521Snjlresulting in an AE_NO_RETURN_VALUE exception.
2745117521Snjl
2746117521SnjlFixed a problem with constructs of the form
2747117521SnjlStore(Index(...),...). The reference object returned from Index
2748117521Snjlwas inadvertently resolved to an actual value. This problem was
2749117521Snjlintroduced in version 20050114 when the behavior of Store() was
2750126372Snjlmodified to restrict the object types that can be used as the
2751126372Snjlsource operand (to match the ACPI specification.)
2752117521Snjl
2753117521SnjlReduced excessive stack use within the AcpiGetObjectInfo
2754117521Snjlprocedure.
2755117521Snjl
2756117521SnjlAdded a fix to aclinux.h to allow generation of AcpiExec on
2757117521SnjlLinux.
2758117521Snjl
2759117521SnjlUpdated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS
2760117521Snjlstruct.
2761117521Snjl
2762117521SnjlCode and Data Size: Current and previous core subsystem library
2763117521Snjlsizes are shown below. These are the code and data sizes for the
2764117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2765126372Snjlthese values do not include any ACPI driver or OSPM code. The
2766126372Snjldebug version of the code includes the debug output trace
2767117521Snjlmechanism and has a much larger code and data size. Note that
2768117521Snjlthese values will vary depending on the efficiency of the
2769117521Snjlcompiler and the compiler options used during generation.
2770117521Snjl
2771117521Snjl  Previous Release:
2772117521Snjl    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
2773117521Snjl    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
2774117521Snjl  Current Release:
2775117521Snjl    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
2776117521Snjl    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
2777117521Snjl
2778117521Snjl
2779117521Snjl2) iASL Compiler/Disassembler:
2780117521Snjl
2781117521SnjlFixed a code generation problem in the constant folding
2782117521Snjloptimization code where incorrect code was generated if a
2783117521Snjlconstant was reduced to a buffer object (i.e., a reduced type 5
2784117521Snjlopcode.)
2785117521Snjl
2786126372SnjlFixed a typechecking problem for the ToBuffer operator. Caused by
2787126372Snjlan incorrect return type in the internal opcode information
2788126372Snjltable.
2789117521Snjl
2790117521Snjl----------------------------------------
2791117521Snjl25 January 2005.  Summary of changes for version 20050125:
2792117521Snjl
2793117521Snjl1) ACPI CA Core Subsystem:
2794117521Snjl
2795117521SnjlFixed a recently introduced problem with the Global Lock where
2796117521Snjlthe underlying semaphore was not created.  This problem was
2797117521Snjlintroduced in version 20050114, and caused an AE_AML_NO_OPERAND
2798126372Snjlexception during an Acquire() operation on _GL.
2799126372Snjl
2800126372SnjlThe local object cache is now optional, and is disabled by
2801126372Snjldefault. Both AcpiExec and the iASL compiler enable the cache
2802126372Snjlbecause they run in user mode and this enhances their
2803126372Snjlperformance. #define ACPI_ENABLE_OBJECT_CACHE to enable the local
2804126372Snjlcache.
2805117521Snjl
2806117521SnjlFixed an issue in the internal function AcpiUtEvaluateObject
2807126372Snjlconcerning the optional "implicit return" support where an error
2808126372Snjlwas returned if no return object was expected, but one was
2809126372Snjlimplicitly returned. AE_OK is now returned in this case and the
2810117521Snjlimplicitly returned object is deleted. AcpiUtEvaluateObject is
2811117521Snjlonly occasionally used, and only to execute reserved methods such
2812117521Snjlas _STA and _INI where the return type is known up front.
2813117521Snjl
2814117521SnjlFixed a few issues with the internal convert-to-integer code. It
2815117521Snjlnow returns an error if an attempt is made to convert a null
2816117521Snjlstring, a string of only blanks/tabs, or a zero-length buffer.
2817117521SnjlThis affects both implicit conversion and explicit conversion via
2818117521Snjlthe ToInteger() operator.
2819117521Snjl
2820117521SnjlThe internal debug code in AcpiUtAcquireMutex has been commented
2821117521Snjlout. It is not needed for normal operation and should increase
2822126372Snjlthe performance of the entire subsystem. The code remains in case
2823126372Snjlit is needed for debug purposes again.
2824126372Snjl
2825117521SnjlThe AcpiExec source and makefile are included in the Unix/Linux
2826117521Snjlpackage for the first time.
2827117521Snjl
2828117521SnjlCode and Data Size: Current and previous core subsystem library
2829117521Snjlsizes are shown below. These are the code and data sizes for the
2830117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2831117521Snjlthese values do not include any ACPI driver or OSPM code. The
2832117521Snjldebug version of the code includes the debug output trace
2833117521Snjlmechanism and has a much larger code and data size. Note that
2834117521Snjlthese values will vary depending on the efficiency of the
2835117521Snjlcompiler and the compiler options used during generation.
2836117521Snjl
2837117521Snjl  Previous Release:
2838117521Snjl    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
2839117521Snjl    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
2840117521Snjl  Current Release:
2841126372Snjl    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
2842126372Snjl    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
2843126372Snjl
2844126372Snjl2) iASL Compiler/Disassembler:
2845126372Snjl
2846126372SnjlSwitch/Case support: A warning is now issued if the type of the
2847126372SnjlSwitch value cannot be determined at compile time. For example,
2848126372SnjlSwitch(Arg0) will generate the warning, and the type is assumed
2849126372Snjlto be an integer. As per the ACPI spec, use a construct such as
2850117521SnjlSwitch(ToInteger(Arg0)) to eliminate the warning.
2851117521Snjl
2852117521SnjlSwitch/Case support: Implemented support for buffer and string
2853117521Snjlobjects as the switch value.  This is an ACPI 3.0 feature, now
2854117521Snjlthat LEqual supports buffers and strings.
2855117521Snjl
2856117521SnjlSwitch/Case support: The emitted code for the LEqual()
2857117521Snjlcomparisons now uses the switch value as the first operand, not
2858117521Snjlthe second. The case value is now the second operand, and this
2859117521Snjlallows the case value to be implicitly converted to the type of
2860117521Snjlthe switch value, not the other way around.
2861117521Snjl
2862117521SnjlSwitch/Case support: Temporary variables are now emitted
2863117521Snjlimmediately within the control method, not at the global level.
2864117521SnjlThis means that there are now 36 temps available per-method, not
2865117521Snjl36 temps per-module as was the case with the earlier
2866117521Snjlimplementation (_T_0 through _T_9 and _T_A through _T_Z.)
2867117521Snjl
2868117521Snjl----------------------------------------
2869117521Snjl14 January 2005.  Summary of changes for version 20050114:
2870117521Snjl
2871126372SnjlAdded 2005 copyright to all module headers.  This affects every
2872126372Snjlmodule in the core subsystem, iASL compiler, and the utilities.
2873126372Snjl
2874117521Snjl1) ACPI CA Core Subsystem:
2875117521Snjl
2876117521SnjlFixed an issue with the String-to-Buffer conversion code where
2877117521Snjlthe string null terminator was not included in the buffer after
2878117521Snjlconversion, but there is existing ASL that assumes the string
2879117521Snjlnull terminator is included. This is the root of the
2880117521SnjlACPI_AML_BUFFER_LIMIT regression. This problem was introduced in
2881117521Snjlthe previous version when the code was updated to correctly set
2882117521Snjlthe converted buffer size as per the ACPI specification. The ACPI
2883117521Snjlspec is ambiguous and will be updated to specify that the null
2884126372Snjlterminator must be included in the converted buffer. This also
2885126372Snjlaffects the ToBuffer() ASL operator.
2886117521Snjl
2887117521SnjlFixed a problem with the Mid() ASL/AML operator where it did not
2888117521Snjlwork correctly on Buffer objects. Newly created sub-buffers were
2889117521Snjlnot being marked as initialized.
2890117521Snjl
2891126372Snjl
2892126372SnjlFixed a problem in AcpiTbFindTable where incorrect string
2893117521Snjlcompares were performed on the OemId and OemTableId table header
2894117521Snjlfields.  These fields are not null terminated, so strncmp is now
2895117521Snjlused instead of strcmp.
2896117521Snjl
2897117521SnjlImplemented a restriction on the Store() ASL/AML operator to
2898117521Snjlalign the behavior with the ACPI specification.  Previously, any
2899117521Snjlobject could be used as the source operand.  Now, the only
2900117521Snjlobjects that may be used are Integers, Buffers, Strings,
2901117521SnjlPackages, Object References, and DDB Handles.  If necessary, the
2902117521Snjloriginal behavior can be restored by enabling the
2903117521SnjlEnableInterpreterSlack flag.
2904117521Snjl
2905126372SnjlEnhanced the optional "implicit return" support to allow an
2906126372Snjlimplicit return value from methods that are invoked externally
2907117521Snjlvia the AcpiEvaluateObject interface.  This enables implicit
2908117521Snjlreturns from the _STA and _INI methods, for example.
2909117521Snjl
2910117521SnjlChanged the Revision() ASL/AML operator to return the current
2911117521Snjlversion of the AML interpreter, in the YYYYMMDD format.
2912117521SnjlPreviously, it incorrectly returned the supported ACPI version
2913117521Snjl(This is the function of the _REV method).
2914117521Snjl
2915117521SnjlUpdated the _REV predefined method to return the currently
2916117521Snjlsupported version of ACPI, now 3.
2917117521Snjl
2918117521SnjlImplemented batch mode option for the AcpiExec utility (-b).
2919117521Snjl
2920117521SnjlCode and Data Size: Current and previous core subsystem library
2921117521Snjlsizes are shown below. These are the code and data sizes for the
2922117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2923117521Snjlthese values do not include any ACPI driver or OSPM code. The
2924117521Snjldebug version of the code includes the debug output trace
2925117521Snjlmechanism and has a much larger code and data size. Note that
2926117521Snjlthese values will vary depending on the efficiency of the
2927117521Snjlcompiler and the compiler options used during generation.
2928117521Snjl
2929117521Snjl  Previous Release:
2930126372Snjl    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2931126372Snjl    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
2932126372Snjl  Current Release:
2933126372Snjl    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
2934126372Snjl    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
2935126372Snjl
2936126372Snjl----------------------------------------
2937126372Snjl10 December 2004.  Summary of changes for version 20041210:
2938126372Snjl
2939117521SnjlACPI 3.0 support is nearing completion in both the iASL compiler
2940117521Snjland the ACPI CA core subsystem.
2941117521Snjl
2942117521Snjl1) ACPI CA Core Subsystem:
2943117521Snjl
2944117521SnjlFixed a problem in the ToDecimalString operator where the
2945117521Snjlresulting string length was incorrectly calculated. The length is
2946117521Snjlnow calculated exactly, eliminating incorrect AE_STRING_LIMIT
2947117521Snjlexceptions.
2948117521Snjl
2949114237SnjlFixed a problem in the ToHexString operator to allow a maximum
2950114237Snjl200 character string to be produced.
2951114237Snjl
2952114237SnjlFixed a problem in the internal string-to-buffer and buffer-to-
2953114237Snjlbuffer copy routine where the length of the resulting buffer was
2954114237Snjlnot truncated to the new size (if the target buffer already
2955114237Snjlexisted).
2956114237Snjl
2957114237SnjlCode and Data Size: Current and previous core subsystem library
2958114237Snjlsizes are shown below. These are the code and data sizes for the
2959114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2960114237Snjlthese values do not include any ACPI driver or OSPM code. The
2961114237Snjldebug version of the code includes the debug output trace
2962114237Snjlmechanism and has a much larger code and data size. Note that
2963114237Snjlthese values will vary depending on the efficiency of the
2964126372Snjlcompiler and the compiler options used during generation.
2965126372Snjl
2966126372Snjl  Previous Release:
2967126372Snjl    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2968114237Snjl    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
2969114237Snjl  Current Release:
2970114237Snjl    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2971114237Snjl    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
2972114237Snjl
2973114237Snjl
2974114237Snjl2) iASL Compiler/Disassembler:
2975114237Snjl
2976126372SnjlImplemented the new ACPI 3.0 resource template macros -
2977126372SnjlDWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace,
2978126372SnjlQWordSpace, and WordSpace. Includes support in the disassembler.
2979126372Snjl
2980114237SnjlImplemented support for the new (ACPI 3.0) parameter to the
2981114237SnjlRegister macro, AccessSize.
2982114237Snjl
2983114237SnjlFixed a problem where the _HE resource name for the Interrupt
2984114237Snjlmacro was referencing bit 0 instead of bit 1.
2985126372Snjl
2986126372SnjlImplemented check for maximum 255 interrupts in the Interrupt
2987126372Snjlmacro.
2988126372Snjl
2989126372SnjlFixed a problem with the predefined resource descriptor names
2990126372Snjlwhere incorrect AML code was generated if the offset within the
2991126372Snjlresource buffer was 0 or 1.  The optimizer shortened the AML code
2992126372Snjlto a single byte opcode but did not update the surrounding
2993126372Snjlpackage lengths.
2994114237Snjl
2995114237SnjlChanges to the Dma macro:  All channels within the channel list
2996114237Snjlmust be in the range 0-7.  Maximum 8 channels can be specified.
2997114237SnjlBusMaster operand is optional (default is BusMaster).
2998114237Snjl
2999114237SnjlImplemented check for maximum 7 data bytes for the VendorShort
3000114237Snjlmacro.
3001114237Snjl
3002114237SnjlThe ReadWrite parameter is now optional for the Memory32 and
3003114237Snjlsimilar macros.
3004114237Snjl
3005114237Snjl----------------------------------------
3006114237Snjl03 December 2004.  Summary of changes for version 20041203:
3007114237Snjl
3008114237Snjl1) ACPI CA Core Subsystem:
3009114237Snjl
3010114237SnjlThe low-level field insertion/extraction code (exfldio) has been
3011114237Snjlcompletely rewritten to eliminate unnecessary complexity, bugs,
3012114237Snjland boundary conditions.
3013114237Snjl
3014114237SnjlFixed a problem in the ToInteger, ToBuffer, ToHexString, and
3015126372SnjlToDecimalString operators where the input operand could be
3016126372Snjlinadvertently deleted if no conversion was necessary (e.g., if
3017114237Snjlthe input to ToInteger was an Integer object.)
3018114237Snjl
3019114237SnjlFixed a problem with the ToDecimalString and ToHexString where an
3020114237Snjlincorrect exception code was returned if the resulting string
3021114237Snjlwould be > 200 chars.  AE_STRING_LIMIT is now returned.
3022114237Snjl
3023114237SnjlFixed a problem with the Concatenate operator where AE_OK was
3024114237Snjlalways returned, even if the operation failed.
3025114237Snjl
3026114237SnjlFixed a problem in oswinxf (used by AcpiExec and iASL) to allow >
3027114237Snjl128 semaphores to be allocated.
3028114237Snjl
3029114237SnjlCode and Data Size: Current and previous core subsystem library
3030114237Snjlsizes are shown below. These are the code and data sizes for the
3031114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3032114237Snjlthese values do not include any ACPI driver or OSPM code. The
3033114237Snjldebug version of the code includes the debug output trace
3034114237Snjlmechanism and has a much larger code and data size. Note that
3035114237Snjlthese values will vary depending on the efficiency of the
3036114237Snjlcompiler and the compiler options used during generation.
3037114237Snjl
3038117521Snjl  Previous Release:
3039114237Snjl    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3040114237Snjl    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3041114237Snjl  Current Release:
3042114237Snjl    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
3043114237Snjl    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
3044114237Snjl
3045114237Snjl
3046114237Snjl2) iASL Compiler/Disassembler:
3047126372Snjl
3048126372SnjlFixed typechecking for the ObjectType and SizeOf operators.
3049126372SnjlProblem was recently introduced in 20041119.
3050126372Snjl
3051114237SnjlFixed a problem with the ToUUID macro where the upper nybble of
3052114237Snjleach buffer byte was inadvertently set to zero.
3053114237Snjl
3054114237Snjl----------------------------------------
3055114237Snjl19 November 2004.  Summary of changes for version 20041119:
3056114237Snjl
3057114237Snjl1) ACPI CA Core Subsystem:
3058114237Snjl
3059114237SnjlFixed a problem in the internal ConvertToInteger routine where
3060114237Snjlnew integers were not truncated to 32 bits for 32-bit ACPI
3061114237Snjltables. This routine converts buffers and strings to integers.
3062114237Snjl
3063114237SnjlImplemented support to store a value to an Index() on a String
3064114237Snjlobject. This is an ACPI 2.0 feature that had not yet been
3065114237Snjlimplemented.
3066114237Snjl
3067114237SnjlImplemented new behavior for storing objects to individual
3068114237Snjlpackage elements (via the Index() operator). The previous
3069114237Snjlbehavior was to invoke the implicit conversion rules if an object
3070114237Snjlwas already present at the index.  The new behavior is to simply
3071114237Snjldelete any existing object and directly store the new object.
3072114237SnjlAlthough the ACPI specification seems unclear on this subject,
3073114237Snjlother ACPI implementations behave in this manner.  (This is the
3074126372Snjlroot of the AE_BAD_HEX_CONSTANT issue.)
3075126372Snjl
3076114237SnjlModified the RSDP memory scan mechanism to support the extended
3077114237Snjlchecksum for ACPI 2.0 (and above) RSDPs. Note that the search
3078114237Snjlcontinues until a valid RSDP signature is found with a valid
3079114237Snjlchecksum.
3080114237Snjl
3081114237SnjlCode and Data Size: Current and previous core subsystem library
3082114237Snjlsizes are shown below. These are the code and data sizes for the
3083114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3084114237Snjlthese values do not include any ACPI driver or OSPM code. The
3085114237Snjldebug version of the code includes the debug output trace
3086114237Snjlmechanism and has a much larger code and data size. Note that
3087114237Snjlthese values will vary depending on the efficiency of the
3088114237Snjlcompiler and the compiler options used during generation.
3089114237Snjl
3090114237Snjl  Previous Release:
3091114237Snjl    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3092114237Snjl    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3093114237Snjl  Current Release:
3094114237Snjl    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3095114237Snjl    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3096114237Snjl
3097114237Snjl
3098114237Snjl2) iASL Compiler/Disassembler:
3099114237Snjl
3100114237SnjlFixed a missing semicolon in the aslcompiler.y file.
3101114237Snjl
3102102550Siwasaki----------------------------------------
3103114237Snjl05 November 2004.  Summary of changes for version 20041105:
3104114237Snjl
3105114237Snjl1) ACPI CA Core Subsystem:
3106114237Snjl
3107114237SnjlImplemented support for FADT revision 2.  This was an interim
3108114237Snjltable (between ACPI 1.0 and ACPI 2.0) that adds support for the
3109126372SnjlFADT reset register.
3110126372Snjl
3111126372SnjlImplemented optional support to allow uninitialized LocalX and
3112126372SnjlArgX variables in a control method.  The variables are
3113126372Snjlinitialized to an Integer object with a value of zero.  This
3114126372Snjlsupport is enabled by setting the AcpiGbl_EnableInterpreterSlack
3115126372Snjlflag to TRUE.
3116126372Snjl
3117126372SnjlImplemented support for Integer objects for the SizeOf operator.
3118126372SnjlEither 4 or 8 is returned, depending on the current integer size
3119126372Snjl(32-bit or 64-bit, depending on the parent table revision).
3120126372Snjl
3121126372SnjlFixed a problem in the implementation of the SizeOf and
3122126372SnjlObjectType operators where the operand was resolved to a value
3123126372Snjltoo early, causing incorrect return values for some objects.
3124114237Snjl
3125114237SnjlFixed some possible memory leaks during exceptional conditions.
3126114237Snjl
3127114237SnjlCode and Data Size: Current and previous core subsystem library
3128114237Snjlsizes are shown below. These are the code and data sizes for the
3129114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3130114237Snjlthese values do not include any ACPI driver or OSPM code. The
3131114237Snjldebug version of the code includes the debug output trace
3132126372Snjlmechanism and has a much larger code and data size. Note that
3133126372Snjlthese values will vary depending on the efficiency of the
3134126372Snjlcompiler and the compiler options used during generation.
3135126372Snjl
3136126372Snjl  Previous Release:
3137126372Snjl    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3138126372Snjl    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
3139126372Snjl  Current Release:
3140126372Snjl    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3141114237Snjl    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3142114237Snjl
3143114237Snjl
3144114237Snjl2) iASL Compiler/Disassembler:
3145114237Snjl
3146114237SnjlImplemented support for all ACPI 3.0 reserved names and methods.
3147114237Snjl
3148114237SnjlImplemented all ACPI 3.0 grammar elements in the front-end,
3149114237Snjlincluding support for semicolons.
3150114237Snjl
3151114237SnjlImplemented the ACPI 3.0 Function() and ToUUID() macros
3152114237Snjl
3153114237SnjlFixed a problem in the disassembler where a Scope() operator
3154114237Snjlwould not be emitted properly if the target of the scope was in
3155114237Snjlanother table.
3156114237Snjl
3157114237Snjl----------------------------------------
3158114237Snjl15 October 2004.  Summary of changes for version 20041015:
3159114237Snjl
3160114237SnjlNote:  ACPI CA is currently undergoing an in-depth and complete
3161114237Snjlformal evaluation to test/verify the following areas. Other
3162114237Snjlsuggestions are welcome. This will result in an increase in the
3163114237Snjlfrequency of releases and the number of bug fixes in the next few
3164114237Snjlmonths.
3165114237Snjl  - Functional tests for all ASL/AML operators
3166114237Snjl  - All implicit/explicit type conversions
3167114237Snjl  - Bit fields and operation regions
3168114237Snjl  - 64-bit math support and 32-bit-only "truncated" math support
3169114237Snjl  - Exceptional conditions, both compiler and interpreter
3170114237Snjl  - Dynamic object deletion and memory leaks
3171114237Snjl  - ACPI 3.0 support when implemented
3172114237Snjl  - External interfaces to the ACPI subsystem
3173114237Snjl
3174114237Snjl
3175114237Snjl1) ACPI CA Core Subsystem:
3176114237Snjl
3177114237SnjlFixed two alignment issues on 64-bit platforms - within debug
3178114237Snjlstatements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed
3179114237Snjlreferences to the Address field within the non-aligned ACPI
3180114237Snjlgeneric address structure.
3181114237Snjl
3182114237SnjlFixed a problem in the Increment and Decrement operators where
3183114237Snjlincorrect operand resolution could result in the inadvertent
3184114237Snjlmodification of the original integer when the integer is passed
3185114237Snjlinto another method as an argument and the arg is then
3186114237Snjlincremented/decremented.
3187114237Snjl
3188114237SnjlFixed a problem in the FromBCD operator where the upper 32-bits
3189114237Snjlof a 64-bit BCD number were truncated during conversion.
3190114237Snjl
3191114237SnjlFixed a problem in the ToDecimal operator where the length of the
3192114237Snjlresulting string could be set incorrectly too long if the input
3193114237Snjloperand was a Buffer object.
3194114237Snjl
3195114237SnjlFixed a problem in the Logical operators (LLess, etc.) where a
3196114237SnjlNULL byte (0) within a buffer would prematurely terminate a
3197114237Snjlcompare between buffer objects.
3198114237Snjl
3199114237SnjlAdded a check for string overflow (>200 characters as per the
3200114237SnjlACPI specification) during the Concatenate operator with two
3201126372Snjlstring operands.
3202126372Snjl
3203126372SnjlCode and Data Size: Current and previous core subsystem library
3204114237Snjlsizes are shown below. These are the code and data sizes for the
3205114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3206114237Snjlthese values do not include any ACPI driver or OSPM code. The
3207114237Snjldebug version of the code includes the debug output trace
3208114237Snjlmechanism and has a much larger code and data size. Note that
3209114237Snjlthese values will vary depending on the efficiency of the
3210114237Snjlcompiler and the compiler options used during generation.
3211114237Snjl
3212114237Snjl  Previous Release:
3213114237Snjl    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3214114237Snjl    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
3215114237Snjl  Current Release:
3216114237Snjl    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3217126372Snjl    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
3218126372Snjl
3219126372Snjl
3220126372Snjl
3221126372Snjl2) iASL Compiler/Disassembler:
3222126372Snjl
3223126372SnjlAllow the use of the ObjectType operator on uninitialized Locals
3224126372Snjland Args (returns 0 as per the ACPI specification).
3225126372Snjl
3226114237SnjlFixed a problem where the compiler would fault if there was a
3227114237Snjlsyntax error in the FieldName of all of the various
3228114237SnjlCreateXXXField operators.
3229114237Snjl
3230114237SnjlDisallow the use of lower case letters within the EISAID macro,
3231114237Snjlas per the ACPI specification.  All EISAID strings must be of the
3232114237Snjlform "UUUNNNN" Where U is an uppercase letter and N is a hex
3233114237Snjldigit.
3234114237Snjl
3235114237Snjl
3236114237Snjl----------------------------------------
3237114237Snjl06 October 2004.  Summary of changes for version 20041006:
3238114237Snjl
3239114237Snjl1) ACPI CA Core Subsystem:
3240114237Snjl
3241114237SnjlImplemented support for the ACPI 3.0 Timer operator. This ASL
3242114237Snjlfunction implements a 64-bit timer with 100 nanosecond
3243114237Snjlgranularity.
3244114237Snjl
3245114237SnjlDefined a new OSL interface, AcpiOsGetTimer. This interface is
3246114237Snjlused to implement the ACPI 3.0 Timer operator.  This allows the
3247114237Snjlhost OS to implement the timer with the best clock available.
3248126372SnjlAlso, it keeps the core subsystem out of the clock handling
3249126372Snjlbusiness, since the host OS (usually) performs this function.
3250126372Snjl
3251126372SnjlFixed an alignment issue on 64-bit platforms. The
3252126372SnjlHwLowLevelRead(Write) functions use a 64-bit address which is
3253126372Snjlpart of the packed ACPI Generic Address Structure. Since the
3254126372Snjlstructure is non-aligned, the alignment macros are now used to
3255126372Snjlextract the address to a local variable before use.
3256126372Snjl
3257126372SnjlFixed a problem where the ToInteger operator assumed all input
3258114237Snjlstrings were hexadecimal. The operator now handles both decimal
3259114237Snjlstrings and hex strings (prefixed with "0x").
3260114237Snjl
3261126372SnjlFixed a problem where the string length in the string object
3262126372Snjlcreated as a result of the internal ConvertToString procedure
3263126372Snjlcould be incorrect. This potentially affected all implicit
3264126372Snjlconversions and also the ToDecimalString and ToHexString
3265114237Snjloperators.
3266114237Snjl
3267126372SnjlFixed two problems in the ToString operator. If the length
3268126372Snjlparameter was zero, an incorrect string object was created and
3269126372Snjlthe value of the input length parameter was inadvertently changed
3270126372Snjlfrom zero to Ones.
3271114237Snjl
3272114237SnjlFixed a problem where the optional ResourceSource string in the
3273114237SnjlExtendedIRQ resource macro was ignored.
3274114237Snjl
3275114237SnjlSimplified the interfaces to the internal division functions,
3276114237Snjlreducing code size and complexity.
3277114237Snjl
3278114237SnjlCode and Data Size: Current and previous core subsystem library
3279114237Snjlsizes are shown below. These are the code and data sizes for the
3280114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3281114237Snjlthese values do not include any ACPI driver or OSPM code. The
3282114237Snjldebug version of the code includes the debug output trace
3283126372Snjlmechanism and has a much larger code and data size. Note that
3284126372Snjlthese values will vary depending on the efficiency of the
3285126372Snjlcompiler and the compiler options used during generation.
3286114237Snjl
3287114237Snjl  Previous Release:
3288126372Snjl    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
3289126372Snjl    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
3290126372Snjl  Current Release:
3291126372Snjl    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3292126372Snjl    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
3293126372Snjl
3294126372Snjl
3295126372Snjl2) iASL Compiler/Disassembler:
3296126372Snjl
3297114237SnjlImplemented support for the ACPI 3.0 Timer operator.
3298114237Snjl
3299114237SnjlFixed a problem where the Default() operator was inadvertently
3300114237Snjlignored in a Switch/Case block.  This was a problem in the
3301114237Snjltranslation of the Switch statement to If...Else pairs.
3302114237Snjl
3303114237SnjlAdded support to allow a standalone Return operator, with no
3304114237Snjlparentheses (or operands).
3305114237Snjl
3306114237SnjlFixed a problem with code generation for the ElseIf operator
3307114237Snjlwhere the translated Else...If parse tree was improperly
3308114237Snjlconstructed leading to the loss of some code.
3309114237Snjl
3310114237Snjl----------------------------------------
3311114237Snjl22 September 2004.  Summary of changes for version 20040922:
3312114237Snjl
3313114237Snjl1) ACPI CA Core Subsystem:
3314114237Snjl
3315126372SnjlFixed a problem with the implementation of the LNot() operator
3316126372Snjlwhere "Ones" was not returned for the TRUE case. Changed the code
3317126372Snjlto return Ones instead of (!Arg) which was usually 1. This change
3318114237Snjlaffects iASL constant folding for this operator also.
3319114237Snjl
3320114237SnjlFixed a problem in AcpiUtInitializeBuffer where an existing
3321114237Snjlbuffer was not initialized properly -- Now zero the entire buffer
3322114237Snjlin this case where the buffer already exists.
3323114237Snjl
3324114237SnjlChanged the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
3325114237SnjlMilliseconds) to simply (ACPI_INTEGER Milliseconds). This
3326114237Snjlsimplifies all related code considerably. This will require
3327114237Snjlchanges/updates to all OS interface layers (OSLs.)
3328114237Snjl
3329114237SnjlImplemented a new external interface,
3330114237SnjlAcpiInstallExceptionHandler, to allow a system exception handler
3331114237Snjlto be installed. This handler is invoked upon any run-time
3332114237Snjlexception that occurs during control method execution.
3333114237Snjl
3334114237SnjlAdded support for the DSDT in AcpiTbFindTable. This allows the
3335114237SnjlDataTableRegion() operator to access the local copy of the DSDT.
3336114237Snjl
3337114237SnjlCode and Data Size: Current and previous core subsystem library
3338114237Snjlsizes are shown below. These are the code and data sizes for the
3339126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3340126372Snjlthese values do not include any ACPI driver or OSPM code. The
3341126372Snjldebug version of the code includes the debug output trace
3342114237Snjlmechanism and has a much larger code and data size. Note that
3343114237Snjlthese values will vary depending on the efficiency of the
3344114237Snjlcompiler and the compiler options used during generation.
3345114237Snjl
3346114237Snjl  Previous Release:
3347114237Snjl    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
3348126372Snjl    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
3349126372Snjl  Current Release:
3350126372Snjl    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
3351126372Snjl    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
3352126372Snjl
3353126372Snjl
3354126372Snjl2) iASL Compiler/Disassembler:
3355114237Snjl
3356114237SnjlFixed a problem with constant folding and the LNot operator. LNot
3357126372Snjlwas returning 1 in the TRUE case, not Ones as per the ACPI
3358126372Snjlspecification. This could result in the generation of an
3359126372Snjlincorrect folded/reduced constant.
3360126372Snjl
3361126372SnjlEnd-Of-File is now allowed within a "//"-style comment.  A parse
3362126372Snjlerror no longer occurs if such a comment is at the very end of
3363126372Snjlthe input ASL source file.
3364126372Snjl
3365126372SnjlImplemented the "-r" option to override the Revision in the table
3366114237Snjlheader. The initial use of this option will be to simplify the
3367114237Snjlevaluation of the AML interpreter by allowing a single ASL source
3368114237Snjlmodule to be compiled for either 32-bit or 64-bit integers.
3369114237Snjl
3370114237Snjl
3371114237Snjl----------------------------------------
3372114237Snjl27 August 2004.  Summary of changes for version 20040827:
3373114237Snjl
3374114237Snjl1) ACPI CA Core Subsystem:
3375114237Snjl
3376114237Snjl- Implemented support for implicit object conversion in the non-
3377114237Snjlnumeric logical operators (LEqual, LGreater, LGreaterEqual,
3378114237SnjlLLess, LLessEqual, and LNotEqual.)  Any combination of
3379114237SnjlIntegers/Strings/Buffers may now be used; the second operand is
3380114237Snjlimplicitly converted on the fly to match the type of the first
3381114237Snjloperand.  For example:
3382114237Snjl
3383114237Snjl    LEqual (Source1, Source2)
3384114237Snjl
3385114237SnjlSource1 and Source2 must each evaluate to an integer, a string,
3386114237Snjlor a buffer. The data type of Source1 dictates the required type
3387114237Snjlof Source2. Source2 is implicitly converted if necessary to match
3388114237Snjlthe type of Source1.
3389114237Snjl
3390114237Snjl- Updated and corrected the behavior of the string conversion
3391114237Snjlsupport.  The rules concerning conversion of buffers to strings
3392107325Siwasaki(according to the ACPI specification) are as follows:
3393104470Siwasaki
3394107325SiwasakiToDecimalString - explicit byte-wise conversion of buffer to
3395107325Siwasakistring of decimal values (0-255) separated by commas. ToHexString
3396114237Snjl- explicit byte-wise conversion of buffer to string of hex values
3397114237Snjl(0-FF) separated by commas. ToString - explicit byte-wise
3398114237Snjlconversion of buffer to string.  Byte-by-byte copy with no
3399114237Snjltransform except NULL terminated. Any other implicit buffer-to-
3400107325Siwasakistring conversion - byte-wise conversion of buffer to string of
3401114237Snjlhex values (0-FF) separated by spaces.
3402114237Snjl
3403114237Snjl- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
3404114237Snjl
3405107325Siwasaki- Fixed a problem in AcpiNsGetPathnameLength where the returned
3406107325Siwasakilength was one byte too short in the case of a node in the root
3407107325Siwasakiscope.  This could cause a fault during debug output.
3408107325Siwasaki
3409107325Siwasaki- Code and Data Size: Current and previous core subsystem library
3410114237Snjlsizes are shown below.  These are the code and data sizes for the
3411114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3412107325Siwasakithese values do not include any ACPI driver or OSPM code.  The
3413114237Snjldebug version of the code includes the debug output trace
3414114237Snjlmechanism and has a much larger code and data size.  Note that
3415126372Snjlthese values will vary depending on the efficiency of the
3416126372Snjlcompiler and the compiler options used during generation.
3417126372Snjl
3418107325Siwasaki  Previous Release:
3419114237Snjl    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
3420114237Snjl    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
3421114237Snjl  Current Release:
3422126372Snjl    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
3423126372Snjl    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
3424107325Siwasaki
3425107325Siwasaki
3426114237Snjl2) iASL Compiler/Disassembler:
3427114237Snjl
3428114237Snjl- Fixed a Linux generation error.
3429126372Snjl
3430126372Snjl
3431114237Snjl----------------------------------------
3432107325Siwasaki16 August 2004.  Summary of changes for version 20040816:
3433107325Siwasaki
3434126372Snjl1) ACPI CA Core Subsystem:
3435126372Snjl
3436126372SnjlDesigned and implemented support within the AML interpreter for
3437126372Snjlthe so-called "implicit return".  This support returns the result
3438126372Snjlof the last ASL operation within a control method, in the absence
3439126372Snjlof an explicit Return() operator.  A few machines depend on this
3440126372Snjlbehavior, even though it is not explicitly supported by the ASL
3441126372Snjllanguage.  It is optional support that can be enabled at runtime
3442126372Snjlvia the AcpiGbl_EnableInterpreterSlack flag.
3443107325Siwasaki
3444107325SiwasakiRemoved support for the PCI_Config address space from the
3445107325Siwasakiinternal low level hardware interfaces (AcpiHwLowLevelRead and
3446107325SiwasakiAcpiHwLowLevelWrite).  This support was not used internally, and
3447107325Siwasakiwould not work correctly anyway because the PCI bus number and
3448107325Siwasakisegment number were not supported.  There are separate interfaces
3449107325Siwasakifor PCI configuration space access because of the unique
3450107325Siwasakiinterface.
3451107325Siwasaki
3452107325SiwasakiCode and Data Size: Current and previous core subsystem library
3453107325Siwasakisizes are shown below.  These are the code and data sizes for the
3454114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3455114237Snjlthese values do not include any ACPI driver or OSPM code.  The
3456114237Snjldebug version of the code includes the debug output trace
3457114237Snjlmechanism and has a much larger code and data size.  Note that
3458114237Snjlthese values will vary depending on the efficiency of the
3459107325Siwasakicompiler and the compiler options used during generation.
3460107325Siwasaki
3461126372Snjl  Previous Release:
3462126372Snjl    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3463107325Siwasaki    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
3464107325Siwasaki  Current Release:
3465107325Siwasaki    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
3466107325Siwasaki    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
3467107325Siwasaki
3468114237Snjl
3469114237Snjl2) iASL Compiler/Disassembler:
3470114237Snjl
3471114237SnjlFixed a problem where constants in ASL expressions at the root
3472114237Snjllevel (not within a control method) could be inadvertently
3473114237Snjltruncated during code generation.  This problem was introduced in
3474107325Siwasakithe 20040715 release.
3475114237Snjl
3476107325Siwasaki
3477107325Siwasaki----------------------------------------
3478107325Siwasaki15 July 2004.  Summary of changes for version 20040715:
3479107325Siwasaki
3480114237Snjl1) ACPI CA Core Subsystem:
3481114237Snjl
3482107325SiwasakiRestructured the internal HW GPE interfaces to pass/track the
3483107325Siwasakicurrent state of interrupts (enabled/disabled) in order to avoid
3484107325Siwasakipossible deadlock and increase flexibility of the interfaces.
3485107325Siwasaki
3486107325SiwasakiImplemented a "lexicographical compare" for String and Buffer
3487114237Snjlobjects within the logical operators -- LGreater, LLess,
3488114237SnjlLGreaterEqual, and LLessEqual -- as per further clarification to
3489107325Siwasakithe ACPI specification.  Behavior is similar to C library
3490107325Siwasaki"strcmp".
3491107325Siwasaki
3492107325SiwasakiCompleted a major reduction in CPU stack use for the
3493107325SiwasakiAcpiGetFirmwareTable external function.  In the 32-bit non-debug
3494107325Siwasakicase, the stack use has been reduced from 168 bytes to 32 bytes.
3495107325Siwasaki
3496107325SiwasakiDeployed a new run-time configuration flag,
3497107325SiwasakiAcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML
3498107325Siwasakiinterpreter to forgive certain bad AML constructs.  Default
3499126372Snjlsetting is FALSE.
3500126372Snjl
3501107325SiwasakiImplemented the first use of AcpiGbl_EnableInterpreterSlack in
3502107325Siwasakithe Field IO support code.  If enabled, it allows field access to
3503126372Snjlgo beyond the end of a region definition if the field is within
3504126372Snjlthe region length rounded up to the next access width boundary (a
3505126372Snjlcommon coding error.)
3506126372Snjl
3507126372SnjlRenamed OSD_HANDLER to ACPI_OSD_HANDLER, and
3508126372SnjlOSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency
3509126372Snjlwith other ACPI symbols.  Also, these symbols are lowercased by
3510126372Snjlthe latest version of the AcpiSrc tool.
3511126372Snjl
3512107325SiwasakiThe prototypes for the PCI interfaces in acpiosxf.h have been
3513107325Siwasakiupdated to rename "Register" to simply "Reg" to prevent certain
3514107325Siwasakicompilers from complaining.
3515107325Siwasaki
3516107325SiwasakiCode and Data Size: Current and previous core subsystem library
3517107325Siwasakisizes are shown below.  These are the code and data sizes for the
3518107325Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3519107325Siwasakithese values do not include any ACPI driver or OSPM code.  The
3520107325Siwasakidebug version of the code includes the debug output trace
3521107325Siwasakimechanism and has a much larger code and data size.  Note that
3522107325Siwasakithese values will vary depending on the efficiency of the
3523107325Siwasakicompiler and the compiler options used during generation.
3524107325Siwasaki
3525107325Siwasaki  Previous Release:
3526107325Siwasaki    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3527107325Siwasaki    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
3528107325Siwasaki  Current Release:
3529107325Siwasaki    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3530107325Siwasaki    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
3531107325Siwasaki
3532107325Siwasaki
3533107325Siwasaki2) iASL Compiler/Disassembler:
3534107325Siwasaki
3535107325SiwasakiImplemented full support for Package objects within the Case()
3536107325Siwasakioperator.  Note: The Break() operator is currently not supported
3537107325Siwasakiwithin Case blocks (TermLists) as there is some question about
3538107325Siwasakibackward compatibility with ACPI 1.0 interpreters.
3539107325Siwasaki
3540126372Snjl
3541126372SnjlFixed a problem where complex terms were not supported properly
3542114237Snjlwithin the Switch() operator.
3543107325Siwasaki
3544107325SiwasakiEliminated extraneous warning for compiler-emitted reserved names
3545114237Snjlof the form "_T_x".  (Used in Switch/Case operators.)
3546114237Snjl
3547114237SnjlEliminated optimization messages for "_T_x" objects and small
3548114237Snjlconstants within the DefinitionBlock operator.
3549107325Siwasaki
3550107325Siwasaki
3551114237Snjl----------------------------------------
3552114237Snjl15 June 2004.  Summary of changes for version 20040615:
3553114237Snjl
3554114237Snjl1) ACPI CA Core Subsystem:
3555107325Siwasaki
3556114237SnjlImplemented support for Buffer and String objects (as per ACPI
3557126372Snjl2.0) for the following ASL operators:  LEqual, LGreater, LLess,
3558126372SnjlLGreaterEqual, and LLessEqual.
3559114237Snjl
3560114237SnjlAll directory names in the entire source package are lower case,
3561114237Snjlas they were in earlier releases.
3562114237Snjl
3563114237SnjlImplemented "Disassemble" command in the AML debugger that will
3564107325Siwasakidisassemble a single control method.
3565126372Snjl
3566126372SnjlCode and Data Size: Current and previous core subsystem library
3567126372Snjlsizes are shown below.  These are the code and data sizes for the
3568126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3569126372Snjlthese values do not include any ACPI driver or OSPM code.  The
3570126372Snjldebug version of the code includes the debug output trace
3571126372Snjlmechanism and has a much larger code and data size.  Note that
3572126372Snjlthese values will vary depending on the efficiency of the
3573126372Snjlcompiler and the compiler options used during generation.
3574107325Siwasaki
3575107325Siwasaki  Previous Release:
3576107325Siwasaki    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
3577107325Siwasaki    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
3578107325Siwasaki
3579107325Siwasaki  Current Release:
3580107325Siwasaki    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3581107325Siwasaki    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
3582107325Siwasaki
3583107325Siwasaki
3584107325Siwasaki2) iASL Compiler/Disassembler:
3585107325Siwasaki
3586114237SnjlImplemented support for Buffer and String objects (as per ACPI
3587126372Snjl2.0) for the following ASL operators:  LEqual, LGreater, LLess,
3588126372SnjlLGreaterEqual, and LLessEqual.
3589114237Snjl
3590107325SiwasakiAll directory names in the entire source package are lower case,
3591107325Siwasakias they were in earlier releases.
3592107325Siwasaki
3593107325SiwasakiFixed a fault when using the -g or -d<nofilename> options if the
3594114237SnjlFADT was not found.
3595114237Snjl
3596114237SnjlFixed an issue with the Windows version of the compiler where
3597114237Snjllater versions of Windows place the FADT in the registry under
3598107325Siwasakithe name "FADT" and not "FACP" as earlier versions did.  This
3599114237Snjlapplies when using the -g or -d<nofilename> options.  The
3600114237Snjlcompiler now looks for both strings as necessary.
3601107325Siwasaki
3602107325SiwasakiFixed a problem with compiler namepath optimization where a
3603107325Siwasakinamepath within the Scope() operator could not be optimized if
3604107325Siwasakithe namepath was a subpath of the current scope path.
3605107325Siwasaki
3606107325Siwasaki----------------------------------------
3607107325Siwasaki27 May 2004.  Summary of changes for version 20040527:
3608114237Snjl
3609114237Snjl1) ACPI CA Core Subsystem:
3610114237Snjl
3611114237SnjlCompleted a new design and implementation for EBDA (Extended BIOS
3612114237SnjlData Area) support in the RSDP scan code.  The original code
3613114237Snjlimproperly scanned for the EBDA by simply scanning from memory
3614126372Snjllocation 0 to 0x400.  The correct method is to first obtain the
3615126372SnjlEBDA pointer from within the BIOS data area, then scan 1K of
3616126372Snjlmemory starting at the EBDA pointer.  There appear to be few if
3617126372Snjlany machines that place the RSDP in the EBDA, however.
3618126372Snjl
3619114237SnjlIntegrated a fix for a possible fault during evaluation of
3620107325SiwasakiBufferField arguments.  Obsolete code that was causing the
3621114237Snjlproblem was removed.
3622114237Snjl
3623114237SnjlFound and fixed a problem in the Field Support Code where data
3624114237Snjlcould be corrupted on a bit field read that starts on an aligned
3625114237Snjlboundary but does not end on an aligned boundary.  Merged the
3626114237Snjlread/write "datum length" calculation code into a common
3627107325Siwasakiprocedure.
3628114237Snjl
3629114237SnjlRolled in a couple of changes to the FreeBSD-specific header.
3630114237Snjl
3631114237Snjl
3632114237SnjlCode and Data Size: Current and previous core subsystem library
3633107325Siwasakisizes are shown below.  These are the code and data sizes for the
3634107325Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3635107325Siwasakithese values do not include any ACPI driver or OSPM code.  The
3636114237Snjldebug version of the code includes the debug output trace
3637114237Snjlmechanism and has a much larger code and data size.  Note that
3638126372Snjlthese values will vary depending on the efficiency of the
3639126372Snjlcompiler and the compiler options used during generation.
3640107325Siwasaki
3641107325Siwasaki  Previous Release:
3642107325Siwasaki    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3643107325Siwasaki    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
3644107325Siwasaki  Current Release:
3645107325Siwasaki    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
3646107325Siwasaki    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
3647107325Siwasaki
3648107325Siwasaki
3649107325Siwasaki2) iASL Compiler/Disassembler:
3650107325Siwasaki
3651107325SiwasakiFixed a generation warning produced by some overly-verbose
3652107325Siwasakicompilers for a 64-bit constant.
3653107325Siwasaki
3654126372Snjl----------------------------------------
3655126372Snjl14 May 2004.  Summary of changes for version 20040514:
3656114237Snjl
3657114237Snjl1) ACPI CA Core Subsystem:
3658126372Snjl
3659126372SnjlFixed a problem where hardware GPE enable bits sometimes not set
3660107325Siwasakiproperly during and after GPE method execution.  Result of 04/27
3661107325Siwasakichanges.
3662107325Siwasaki
3663114237SnjlRemoved extra "clear all GPEs" when sleeping/waking.
3664114237Snjl
3665126372SnjlRemoved AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the
3666126372Snjlsingle AcpiHwWriteGpeEnableReg. Changed a couple of calls to the
3667126372Snjlfunctions above to the new AcpiEv* calls as appropriate.
3668126372Snjl
3669126372SnjlACPI_OS_NAME was removed from the OS-specific headers.  The
3670107325Siwasakidefault name is now "Microsoft Windows NT" for maximum
3671107325Siwasakicompatibility.  However this can be changed by modifying the
3672126372Snjlacconfig.h file.
3673126372Snjl
3674126372SnjlAllow a single invocation of AcpiInstallNotifyHandler for a
3675126372Snjlhandler that traps both types of notifies (System, Device).  Use
3676107325SiwasakiACPI_ALL_NOTIFY flag.
3677114237Snjl
3678114237SnjlRun _INI methods on ThermalZone objects.  This is against the
3679114237SnjlACPI specification, but there is apparently ASL code in the field
3680107325Siwasakithat has these _INI methods, and apparently "other" AML
3681107325Siwasakiinterpreters execute them.
3682114237Snjl
3683114237SnjlPerformed a full 16/32/64 bit lint that resulted in some small
3684107325Siwasakichanges.
3685107325Siwasaki
3686107325SiwasakiAdded a sleep simulation command to the AML debugger to test
3687107325Siwasakisleep code.
3688104470Siwasaki
3689104470SiwasakiCode and Data Size: Current and previous core subsystem library
3690104470Siwasakisizes are shown below.  These are the code and data sizes for the
3691104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3692104470Siwasakithese values do not include any ACPI driver or OSPM code.  The
3693104470Siwasakidebug version of the code includes the debug output trace
3694104470Siwasakimechanism and has a much larger code and data size.  Note that
3695126372Snjlthese values will vary depending on the efficiency of the
3696126372Snjlcompiler and the compiler options used during generation.
3697104470Siwasaki
3698104470Siwasaki  Previous Release:
3699104470Siwasaki    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3700126372Snjl    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
3701126372Snjl  Current Release:
3702104470Siwasaki    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3703104470Siwasaki    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
3704104470Siwasaki
3705126372Snjl----------------------------------------
3706126372Snjl27 April 2004.  Summary of changes for version 20040427:
3707104470Siwasaki
3708104470Siwasaki1) ACPI CA Core Subsystem:
3709114237Snjl
3710126372SnjlCompleted a major overhaul of the GPE handling within ACPI CA.
3711126372SnjlThere are now three types of GPEs:  wake-only, runtime-only, and
3712104470Siwasakicombination wake/run.  The only GPEs allowed to be combination
3713104470Siwasakiwake/run are for button-style devices such as a control-method
3714126372Snjlpower button, control-method sleep button, or a notebook lid
3715126372Snjlswitch.  GPEs that have an _Lxx or _Exx method and are not
3716126372Snjlreferenced by any _PRW methods are marked for "runtime" and
3717126372Snjlhardware enabled.  Any GPE that is referenced by a _PRW method is
3718104470Siwasakimarked for "wake" (and disabled at runtime).  However, at sleep
3719104470Siwasakitime, only those GPEs that have been specifically enabled for
3720104470Siwasakiwake via the AcpiEnableGpe interface will actually be hardware
3721126372Snjlenabled.
3722126372Snjl
3723126372SnjlA new external interface has been added, AcpiSetGpeType(), that
3724126372Snjlis meant to be used by device drivers to force a GPE to a
3725126372Snjlparticular type.  It will be especially useful for the drivers
3726126372Snjlfor the button devices mentioned above.
3727126372Snjl
3728126372SnjlCompleted restructuring of the ACPI CA initialization sequence so
3729126372Snjlthat default operation region handlers are installed before GPEs
3730126372Snjlare initialized and the _PRW methods are executed.  This will
3731104470Siwasakiprevent errors when the _PRW methods attempt to access system
3732104470Siwasakimemory or I/O space.
3733126372Snjl
3734126372SnjlGPE enable/disable no longer reads the GPE enable register.  We
3735126372Snjlnow keep the enable info for runtime and wake separate and in the
3736126372SnjlGPE_EVENT_INFO.  We thus no longer depend on the hardware to
3737126372Snjlmaintain these bits.
3738126372Snjl
3739126372SnjlAlways clear the wake status and fixed/GPE status bits before
3740126372Snjlsleep, even for state S5.
3741126372Snjl
3742104470SiwasakiImproved the AML debugger output for displaying the GPE blocks
3743104470Siwasakiand their current status.
3744104470Siwasaki
3745104470SiwasakiAdded new strings for the _OSI method, of the form "Windows 2001
3746104470SiwasakiSPx" where x = 0,1,2,3,4.
3747104470Siwasaki
3748104470SiwasakiFixed a problem where the physical address was incorrectly
3749104470Siwasakicalculated when the Load() operator was used to directly load
3750104470Siwasakifrom an Operation Region (vs. loading from a Field object.)  Also
3751104470Siwasakiadded check for minimum table length for this case.
3752104470Siwasaki
3753104470SiwasakiFix for multiple mutex acquisition.  Restore original thread
3754104470SiwasakiSyncLevel on mutex release.
3755104470Siwasaki
3756104470SiwasakiAdded ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
3757104470Siwasakiconsistency with the other fields returned.
3758114237Snjl
3759104470SiwasakiShrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one
3760104470Siwasakisuch structure for each GPE in the system, so the size of this
3761104470Siwasakistructure is important.
3762104470Siwasaki
3763104470SiwasakiCPU stack requirement reduction:  Cleaned up the method execution
3764104470Siwasakiand object evaluation paths so that now a parameter structure is
3765104470Siwasakipassed, instead of copying the various method parameters over and
3766104470Siwasakiover again.
3767104470Siwasaki
3768104470SiwasakiIn evregion.c:  Correctly exit and reenter the interpreter region
3769104470Siwasakiif and only if dispatching an operation region request to a user-
3770104470Siwasakiinstalled handler.  Do not exit/reenter when dispatching to a
3771104470Siwasakidefault handler (e.g., default system memory or I/O handlers)
3772104470Siwasaki
3773104470Siwasaki
3774104470SiwasakiNotes for updating drivers for the new GPE support.  The
3775104470Siwasakifollowing changes must be made to ACPI-related device drivers
3776104470Siwasakithat are attached to one or more GPEs: (This information will be
3777104470Siwasakiadded to the ACPI CA Programmer Reference.)
3778104470Siwasaki
3779104470Siwasaki1) AcpiInstallGpeHandler no longer automatically enables the GPE,
3780104470Siwasakiyou must explicitly call AcpiEnableGpe.
3781114237Snjl2) There is a new interface called AcpiSetGpeType. This should be
3782114237Snjlcalled before enabling the GPE.  Also, this interface will
3783126372Snjlautomatically disable the GPE if it is currently enabled.
3784126372Snjl3) AcpiEnableGpe no longer supports a GPE type flag.
3785126372Snjl
3786104470SiwasakiSpecific drivers that must be changed:
3787104470Siwasaki1) EC driver:
3788104470Siwasaki    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
3789114237SnjlAeGpeHandler, NULL);
3790114237Snjl    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
3791114237Snjl    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
3792104470Siwasaki
3793104470Siwasaki2) Button Drivers (Power, Lid, Sleep):
3794104470SiwasakiRun _PRW method under parent device
3795104470SiwasakiIf _PRW exists: /* This is a control-method button */
3796104470Siwasaki    Extract GPE number and possibly GpeDevice
3797114237Snjl    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
3798114237Snjl    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
3799126372Snjl
3800126372SnjlFor all other devices that have _PRWs, we automatically set the
3801126372SnjlGPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically
3802104470Siwasaki(wake) enabled.  This must be done on a selective basis, usually
3803104470Siwasakirequiring some kind of user app to allow the user to pick the
3804104470Siwasakiwake devices.
3805104470Siwasaki
3806104470Siwasaki
3807114237SnjlCode and Data Size: Current and previous core subsystem library
3808114237Snjlsizes are shown below.  These are the code and data sizes for the
3809104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3810104470Siwasakithese values do not include any ACPI driver or OSPM code.  The
3811104470Siwasakidebug version of the code includes the debug output trace
3812104470Siwasakimechanism and has a much larger code and data size.  Note that
3813104470Siwasakithese values will vary depending on the efficiency of the
3814104470Siwasakicompiler and the compiler options used during generation.
3815104470Siwasaki
3816114237Snjl  Previous Release:
3817114237Snjl    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
3818104470Siwasaki    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
3819104470Siwasaki  Current Release:
3820104470Siwasaki
3821104470Siwasaki    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3822104470Siwasaki    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
3823104470Siwasaki
3824104470Siwasaki
3825114237Snjl
3826114237Snjl----------------------------------------
3827114237Snjl02 April 2004.  Summary of changes for version 20040402:
3828114237Snjl
3829114237Snjl1) ACPI CA Core Subsystem:
3830104470Siwasaki
3831104470SiwasakiFixed an interpreter problem where an indirect store through an
3832104470SiwasakiArgX parameter was incorrectly applying the "implicit conversion
3833104470Siwasakirules" during the store.  From the ACPI specification: "If the
3834114237Snjltarget is a method local or argument (LocalX or ArgX), no
3835114237Snjlconversion is performed and the result is stored directly to the
3836114237Snjltarget".  The new behavior is to disable implicit conversion
3837104470Siwasakiduring ALL stores to an ArgX.
3838104470Siwasaki
3839104470SiwasakiChanged the behavior of the _PRW method scan to ignore any and
3840104470Siwasakiall errors returned by a given _PRW.  This prevents the scan from
3841104470Siwasakiaborting from the failure of any single _PRW.
3842104470Siwasaki
3843104470SiwasakiMoved the runtime configuration parameters from the global init
3844114237Snjlprocedure to static variables in acglobal.h.  This will allow the
3845114237Snjlhost to override the default values easily.
3846114237Snjl
3847126372SnjlCode and Data Size: Current and previous core subsystem library
3848126372Snjlsizes are shown below.  These are the code and data sizes for the
3849104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3850114237Snjlthese values do not include any ACPI driver or OSPM code.  The
3851114237Snjldebug version of the code includes the debug output trace
3852114237Snjlmechanism and has a much larger code and data size.  Note that
3853114237Snjlthese values will vary depending on the efficiency of the
3854104470Siwasakicompiler and the compiler options used during generation.
3855104470Siwasaki
3856104470Siwasaki  Previous Release:
3857104470Siwasaki    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
3858104470Siwasaki    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
3859104470Siwasaki  Current Release:
3860104470Siwasaki    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
3861104470Siwasaki    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
3862104470Siwasaki
3863104470Siwasaki
3864104470Siwasaki2) iASL Compiler/Disassembler:
3865104470Siwasaki
3866104470SiwasakiiASL now fully disassembles SSDTs.  However, External()
3867126372Snjlstatements are not generated automatically for unresolved symbols
3868126372Snjlat this time.  This is a planned feature for future
3869104470Siwasakiimplementation.
3870104470Siwasaki
3871104470SiwasakiFixed a scoping problem in the disassembler that occurs when the
3872104470Siwasakitype of the target of a Scope() operator is overridden.  This
3873104470Siwasakiproblem caused an incorrectly nested internal namespace to be
3874104470Siwasakiconstructed.
3875104470Siwasaki
3876104470SiwasakiAny warnings or errors that are emitted during disassembly are
3877104470Siwasakinow commented out automatically so that the resulting file can be
3878114237Snjlrecompiled without any hand editing.
3879114237Snjl
3880104470Siwasaki----------------------------------------
3881114237Snjl26 March 2004.  Summary of changes for version 20040326:
3882114237Snjl
3883114237Snjl1) ACPI CA Core Subsystem:
3884104470Siwasaki
3885114237SnjlImplemented support for "wake" GPEs via interaction between GPEs
3886114237Snjland the _PRW methods.  Every GPE that is pointed to by one or
3887104470Siwasakimore _PRWs is identified as a WAKE GPE and by default will no
3888114237Snjllonger be enabled at runtime.  Previously, we were blindly
3889114237Snjlenabling all GPEs with a corresponding _Lxx or _Exx method - but
3890104470Siwasakimost of these turn out to be WAKE GPEs anyway.  We believe this
3891104470Siwasakihas been the cause of thousands of "spurious" GPEs on some
3892126372Snjlsystems.
3893126372Snjl
3894114237SnjlThis new GPE behavior is can be reverted to the original behavior
3895104470Siwasaki(enable ALL GPEs at runtime) via a runtime flag.
3896104470Siwasaki
3897104470SiwasakiFixed a problem where aliased control methods could not access
3898104470Siwasakiobjects properly.  The proper scope within the namespace was not
3899104470Siwasakiinitialized (transferred to the target of the aliased method)
3900104470Siwasakibefore executing the target method.
3901102550Siwasaki
3902102550SiwasakiFixed a potential race condition on internal object deletion on
3903102550Siwasakithe return object in AcpiEvaluateObject.
3904102550Siwasaki
3905114237SnjlIntegrated a fix for resource descriptors where both _MEM and
3906114237Snjl_MTP were being extracted instead of just _MEM.  (i.e. bitmask
3907126372Snjlwas incorrectly too wide, 0x0F instead of 0x03.)
3908126372Snjl
3909126372SnjlAdded a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
3910126372Snjlpreventing a fault in some cases.
3911102550Siwasaki
3912114237SnjlUpdated Notify() values for debug statements in evmisc.c
3913114237Snjl
3914102550SiwasakiReturn proper status from AcpiUtMutexInitialize, not just simply
3915102550SiwasakiAE_OK.
3916102550Siwasaki
3917114237SnjlCode and Data Size: Current and previous core subsystem library
3918114237Snjlsizes are shown below.  These are the code and data sizes for the
3919126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3920126372Snjlthese values do not include any ACPI driver or OSPM code.  The
3921126372Snjldebug version of the code includes the debug output trace
3922126372Snjlmechanism and has a much larger code and data size.  Note that
3923114237Snjlthese values will vary depending on the efficiency of the
3924114237Snjlcompiler and the compiler options used during generation.
3925114237Snjl
3926102550Siwasaki  Previous Release:
3927114237Snjl
3928114237Snjl    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
3929126372Snjl    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
3930126372Snjl  Current Release:
3931114237Snjl    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
3932126372Snjl    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
3933126372Snjl
3934126372Snjl----------------------------------------
3935102550Siwasaki11 March 2004.  Summary of changes for version 20040311:
3936102550Siwasaki
3937126372Snjl1) ACPI CA Core Subsystem:
3938126372Snjl
3939126372SnjlFixed a problem where errors occurring during the parse phase of
3940126372Snjlcontrol method execution did not abort cleanly.  For example,
3941126372Snjlobjects created and installed in the namespace were not deleted.
3942126372SnjlThis caused all subsequent invocations of the method to return
3943126372Snjlthe AE_ALREADY_EXISTS exception.
3944126372Snjl
3945126372SnjlImplemented a mechanism to force a control method to "Serialized"
3946102550Siwasakiexecution if the method attempts to create namespace objects.
3947102550Siwasaki(The root of the AE_ALREADY_EXISTS problem.)
3948104470Siwasaki
3949104470SiwasakiImplemented support for the predefined _OSI "internal" control
3950102550Siwasakimethod.  Initial supported strings are "Linux", "Windows 2000",
3951104470Siwasaki"Windows 2001", and "Windows 2001.1", and can be easily upgraded
3952104470Siwasakifor new strings as necessary.  This feature will allow "other"
3953102550Siwasakioperating systems to execute the fully tested, "Windows" code
3954102550Siwasakipath through the ASL code
3955102550Siwasaki
3956102550SiwasakiGlobal Lock Support:  Now allows multiple acquires and releases
3957102550Siwasakiwith any internal thread.  Removed concept of "owning thread" for
3958102550Siwasakithis special mutex.
3959102550Siwasaki
3960102550SiwasakiFixed two functions that were inappropriately declaring large
3961102550Siwasakiobjects on the CPU stack:  PsParseLoop, NsEvaluateRelative.
3962102550SiwasakiReduces the stack usage during method execution considerably.
3963104470Siwasaki
3964104470SiwasakiFixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where
3965102550Siwasakithe S4Bios_f field was incorrectly defined as UINT32 instead of
3966102550SiwasakiUINT32_BIT.
3967102550Siwasaki
3968102550SiwasakiFixed a problem where AcpiEvGpeDetect would fault if there were
3969102550Siwasakino GPEs defined on the machine.
3970102550Siwasaki
3971102550SiwasakiImplemented two runtime options:  One to force all control method
3972102550Siwasakiexecution to "Serialized" to mimic Windows behavior, another to
3973102550Siwasakidisable _OSI support if it causes problems on a given machine.
3974102550Siwasaki
3975114237SnjlCode and Data Size: Current and previous core subsystem library
3976114237Snjlsizes are shown below.  These are the code and data sizes for the
3977114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3978114237Snjlthese values do not include any ACPI driver or OSPM code.  The
3979102550Siwasakidebug version of the code includes the debug output trace
3980102550Siwasakimechanism and has a much larger code and data size.  Note that
3981114237Snjlthese values will vary depending on the efficiency of the
3982114237Snjlcompiler and the compiler options used during generation.
3983114237Snjl
3984126372Snjl  Previous Release:
3985126372Snjl    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
3986126372Snjl    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
3987126372Snjl  Current Release:
3988126372Snjl    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
3989126372Snjl    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
3990102550Siwasaki
3991114237Snjl2) iASL Compiler/Disassembler:
3992114237Snjl
3993114237SnjlFixed an array size problem for FreeBSD that would cause the
3994114237Snjlcompiler to fault.
3995114237Snjl
3996114237Snjl----------------------------------------
3997114237Snjl20 February 2004.  Summary of changes for version 20040220:
3998102550Siwasaki
3999114237Snjl
4000114237Snjl1) ACPI CA Core Subsystem:
4001114237Snjl
4002126372SnjlImplemented execution of _SxD methods for Device objects in the
4003126372SnjlGetObjectInfo interface.
4004102550Siwasaki
4005114237SnjlFixed calls to _SST method to pass the correct arguments.
4006114237Snjl
4007114237SnjlAdded a call to _SST on wake to restore to "working" state.
4008114237Snjl
4009126372SnjlCheck for End-Of-Buffer failure case in the WalkResources
4010126372Snjlinterface.
4011102550Siwasaki
4012104470SiwasakiIntegrated fix for 64-bit alignment issue in acglobal.h by moving
4013114237Snjltwo structures to the beginning of the file.
4014114237Snjl
4015114237SnjlAfter wake, clear GPE status register(s) before enabling GPEs.
4016102550Siwasaki
4017114237SnjlAfter wake, clear/enable power button.  (Perhaps we should
4018114237Snjlclear/enable all fixed events upon wake.)
4019114237Snjl
4020114237SnjlFixed a couple of possible memory leaks in the Namespace manager.
4021114237Snjl
4022102550SiwasakiIntegrated latest acnetbsd.h file.
4023114237Snjl
4024114237Snjl----------------------------------------
4025114237Snjl11 February 2004.  Summary of changes for version 20040211:
4026102550Siwasaki
4027104470Siwasaki
4028114237Snjl1) ACPI CA Core Subsystem:
4029114237Snjl
4030104470SiwasakiCompleted investigation and implementation of the call-by-
4031102550Siwasakireference mechanism for control method arguments.
4032102550Siwasaki
4033102550SiwasakiFixed a problem where a store of an object into an indexed
4034102550Siwasakipackage could fail if the store occurs within a different method
4035102550Siwasakithan the method that created the package.
4036102550Siwasaki
4037102550SiwasakiFixed a problem where the ToDecimal operator could return
4038114237Snjlincorrect results.
4039114237Snjl
4040126372SnjlFixed a problem where the CopyObject operator could fail on some
4041126372Snjlof the more obscure objects (e.g., Reference objects.)
4042126372Snjl
4043126372SnjlImproved the output of the Debug object to display buffer,
4044114237Snjlpackage, and index objects.
4045114237Snjl
4046114237SnjlFixed a problem where constructs of the form "RefOf (ArgX)" did
4047102550Siwasakinot return the expected result.
4048114237Snjl
4049114237SnjlAdded permanent ACPI_REPORT_ERROR macros for all instances of the
4050114237SnjlACPI_AML_INTERNAL exception.
4051102550Siwasaki
4052114237SnjlIntegrated latest version of acfreebsd.h
4053114237Snjl
4054114237Snjl----------------------------------------
4055102550Siwasaki16 January 2004.  Summary of changes for version 20040116:
4056102550Siwasaki
4057126372SnjlThe purpose of this release is primarily to update the copyright
4058126372Snjlyears in each module, thus causing a huge number of diffs.  There
4059126372Snjlare a few small functional changes, however.
4060126372Snjl
4061126372Snjl1) ACPI CA Core Subsystem:
4062126372Snjl
4063126372SnjlImproved error messages when there is a problem finding one or
4064126372Snjlmore of the required base ACPI tables
4065126372Snjl
4066102550SiwasakiReintroduced the definition of APIC_HEADER in actbl.h
4067102550Siwasaki
4068104470SiwasakiChanged definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
4069104470Siwasaki
4070102550SiwasakiRemoved extraneous reference to NewObj in dsmthdat.c
4071104470Siwasaki
4072104470Siwasaki2) iASL compiler
4073102550Siwasaki
4074102550SiwasakiFixed a problem introduced in December that disabled the correct
4075102550Siwasakidisassembly of Resource Templates
4076102550Siwasaki
4077102550Siwasaki
4078102550Siwasaki----------------------------------------
4079114237Snjl03 December 2003.  Summary of changes for version 20031203:
4080114237Snjl
4081102550Siwasaki1) ACPI CA Core Subsystem:
4082102550Siwasaki
4083102550SiwasakiChanged the initialization of Operation Regions during subsystem
4084102550Siwasakiinit to perform two entire walks of the ACPI namespace; The first
4085114237Snjlto initialize the regions themselves, the second to execute the
4086114237Snjl_REG methods.  This fixed some interdependencies across _REG
4087114237Snjlmethods found on some machines.
4088114237Snjl
4089114237SnjlFixed a problem where a Store(Local0, Local1) could simply update
4090114237Snjlthe object reference count, and not create a new copy of the
4091102550Siwasakiobject if the Local1 is uninitialized.
4092102550Siwasaki
4093102550SiwasakiImplemented support for the _SST reserved method during sleep
4094102550Siwasakitransitions.
4095114237Snjl
4096114237SnjlImplemented support to clear the SLP_TYP and SLP_EN bits when
4097114237Snjlwaking up, this is apparently required by some machines.
4098102550Siwasaki
4099104470SiwasakiWhen sleeping, clear the wake status only if SleepState is not
4100104470SiwasakiS5.
4101126372Snjl
4102126372SnjlFixed a problem in AcpiRsExtendedIrqResource() where an incorrect
4103126372Snjlpointer arithmetic advanced a string pointer too far.
4104102550Siwasaki
4105102550SiwasakiFixed a problem in AcpiTbGetTablePtr() where a garbage pointer
4106102550Siwasakicould be returned if the requested table has not been loaded.
4107102550Siwasaki
4108102550SiwasakiWithin the support for IRQ resources, restructured the handling
4109102550Siwasakiof
4110102550Siwasakithe active and edge/level bits.
4111102550Siwasaki
4112114237SnjlFixed a few problems in AcpiPsxExecute() where memory could be
4113114237Snjlleaked under certain error conditions.
4114114237Snjl
4115114237SnjlImproved error messages for the cases where the ACPI mode could
4116126372Snjlnot be entered.
4117126372Snjl
4118126372SnjlCode and Data Size: Current and previous core subsystem library
4119126372Snjlsizes are shown below.  These are the code and data sizes for the
4120126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4121114237Snjlthese values do not include any ACPI driver or OSPM code.  The
4122102550Siwasakidebug version of the code includes the debug output trace
4123114237Snjlmechanism and has a much larger code and data size.  Note that
4124126372Snjlthese values will vary depending on the efficiency of the
4125126372Snjlcompiler
4126114237Snjland the compiler options used during generation.
4127114237Snjl
4128102550Siwasaki  Previous Release (20031029):
4129104470Siwasaki    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
4130114237Snjl    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
4131114237Snjl  Current Release:
4132114237Snjl    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
4133102550Siwasaki    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
4134102550Siwasaki
4135126372Snjl2) iASL Compiler/Disassembler:
4136126372Snjl
4137102550SiwasakiImplemented a fix for the iASL disassembler where a bad index was
4138104470Siwasakigenerated.  This was most noticeable on 64-bit platforms
4139104470Siwasaki
4140126372Snjl
4141126372Snjl----------------------------------------
4142114237Snjl29 October 2003.  Summary of changes for version 20031029:
4143114237Snjl
4144102550Siwasaki1) ACPI CA Core Subsystem:
4145102550Siwasaki
4146102550Siwasaki
4147102550SiwasakiFixed a problem where a level-triggered GPE with an associated
4148114237Snjl_Lxx control method was incorrectly cleared twice.
4149114237Snjl
4150126372SnjlFixed a problem with the Field support code where an access can
4151126372Snjloccur beyond the end-of-region if the field is non-aligned but
4152102550Siwasakiextends to the very end of the parent region (resulted in an
4153102550SiwasakiAE_AML_REGION_LIMIT exception.)
4154102550Siwasaki
4155102550SiwasakiFixed a problem with ACPI Fixed Events where an RT Clock handler
4156102550Siwasakiwould not get invoked on an RTC event.  The RTC event bitmasks
4157102550Siwasakifor
4158102550Siwasakithe PM1 registers were not being initialized properly.
4159102550Siwasaki
4160102550SiwasakiImplemented support for executing _STA and _INI methods for
4161114237SnjlProcessor objects.  Although this is currently not part of the
4162114237SnjlACPI specification, there is existing ASL code that depends on
4163114237Snjlthe
4164114237Snjlinit-time execution of these methods.
4165102550Siwasaki
4166102550SiwasakiImplemented and deployed a GetDescriptorName function to decode
4167102550Siwasakithe various types of internal descriptors.  Guards against null
4168102550Siwasakidescriptors during debug output also.
4169102550Siwasaki
4170114237SnjlImplemented and deployed a GetNodeName function to extract the 4-
4171114237Snjlcharacter namespace node name.  This function simplifies the
4172104470Siwasakidebug
4173102550Siwasakiand error output, as well as guarding against null pointers
4174114237Snjlduring
4175126372Snjloutput.
4176126372Snjl
4177102550SiwasakiImplemented and deployed the ACPI_FORMAT_UINT64 helper macro to
4178102550Siwasakisimplify the debug and error output of 64-bit integers.  This
4179102550Siwasakimacro replaces the HIDWORD and LODWORD macros for dumping these
4180114237Snjlintegers.
4181114237Snjl
4182102550SiwasakiUpdated the implementation of the Stall() operator to only call
4183102550SiwasakiAcpiOsStall(), and also return an error if the operand is larger
4184102550Siwasakithan 255.  This preserves the required behavior of not
4185102550Siwasakirelinquishing the processor, as would happen if AcpiOsSleep() was
4186102550Siwasakicalled for "long stalls".
4187102550Siwasaki
4188102550SiwasakiConstructs of the form "Store(LocalX,LocalX)" where LocalX is not
4189104470Siwasakiinitialized are now treated as NOOPs.
4190114237Snjl
4191114237SnjlCleaned up a handful of warnings during 64-bit generation.
4192114237Snjl
4193114237SnjlFixed a reported error where and incorrect GPE number was passed
4194126372Snjlto the GPE dispatch handler.  This value is only used for error
4195126372Snjloutput, however.  Used this opportunity to clean up and
4196126372Snjlstreamline
4197102550Siwasakithe GPE dispatch code.
4198102550Siwasaki
4199114237SnjlCode and Data Size: Current and previous core subsystem library
4200126372Snjlsizes are shown below.  These are the code and data sizes for the
4201126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4202102550Siwasakithese values do not include any ACPI driver or OSPM code.  The
4203104470Siwasaki
4204114237Snjldebug version of the code includes the debug output trace
4205114237Snjlmechanism and has a much larger code and data size.  Note that
4206114237Snjlthese values will vary depending on the efficiency of the
4207102550Siwasakicompiler
4208102550Siwasakiand the compiler options used during generation.
4209104470Siwasaki
4210104470Siwasaki  Previous Release (20031002):
4211104470Siwasaki    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
4212104470Siwasaki    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
4213104470Siwasaki  Current Release:
4214126372Snjl    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
4215126372Snjl    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
4216114237Snjl
4217126372Snjl
4218126372Snjl2) iASL Compiler/Disassembler:
4219102550Siwasaki
4220102550SiwasakiUpdated the iASL compiler to return an error if the operand to
4221126372Snjlthe
4222126372SnjlStall() operator is larger than 255.
4223114237Snjl
4224114237Snjl
4225114237Snjl----------------------------------------
4226114237Snjl02 October 2003.  Summary of changes for version 20031002:
4227126372Snjl
4228126372Snjl
4229114237Snjl1) ACPI CA Core Subsystem:
4230102550Siwasaki
4231102550SiwasakiFixed a problem with Index Fields where the index was not
4232104470Siwasakiincremented for fields that require multiple writes to the
4233104470Siwasakiindex/data registers (Fields that are wider than the data
4234102550Siwasakiregister.)
4235104470Siwasaki
4236104470SiwasakiFixed a problem with all Field objects where a write could go
4237102550Siwasakibeyond the end-of-field if the field was larger than the access
4238102550Siwasakigranularity and therefore required multiple writes to complete
4239102550Siwasakithe
4240102550Siwasakirequest.  An extra write beyond the end of the field could happen
4241104470Siwasakiinadvertently.
4242104470Siwasaki
4243102550SiwasakiFixed a problem with Index Fields where a BUFFER_OVERFLOW error
4244102550Siwasakiwould incorrectly be returned if the width of the Data Register
4245102550Siwasakiwas larger than the specified field access width.
4246102550Siwasaki
4247114237SnjlCompleted fixes for LoadTable() and Unload() and verified their
4248126372Snjloperation.  Implemented full support for the "DdbHandle" object
4249126372Snjlthroughout the ACPI CA subsystem.
4250114237Snjl
4251102550SiwasakiImplemented full support for the MADT and ECDT tables in the ACPI
4252114237SnjlCA header files.  Even though these tables are not directly
4253114237Snjlconsumed by ACPI CA, the header definitions are useful for ACPI
4254114237Snjldevice drivers.
4255114237Snjl
4256114237SnjlIntegrated resource descriptor fixes posted to the Linux ACPI
4257102550Siwasakilist.  This included checks for minimum descriptor length, and
4258114237Snjlsupport for trailing NULL strings within descriptors that have
4259114237Snjloptional string elements.
4260114237Snjl
4261114237SnjlCode and Data Size: Current and previous core subsystem library
4262102550Siwasakisizes are shown below.  These are the code and data sizes for the
4263102550Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4264126372Snjlthese values do not include any ACPI driver or OSPM code.  The
4265126372Snjldebug version of the code includes the debug output trace
4266102550Siwasakimechanism and has a much larger code and data size.  Note that
4267102550Siwasakithese values will vary depending on the efficiency of the
4268102550Siwasakicompiler
4269102550Siwasakiand the compiler options used during generation.
4270102550Siwasaki
4271102550Siwasaki  Previous Release (20030918):
4272102550Siwasaki    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
4273102550Siwasaki    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
4274102550Siwasaki  Current Release:
4275104470Siwasaki    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
4276104470Siwasaki    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
4277126372Snjl
4278126372Snjl
4279126372Snjl2) iASL Compiler:
4280126372Snjl
4281126372SnjlImplemented detection of non-ASCII characters within the input
4282126372Snjlsource ASL file.  This catches attempts to compile binary (AML)
4283126372Snjlfiles early in the compile, with an informative error message.
4284102550Siwasaki
4285114237SnjlFixed a problem where the disassembler would fault if the output
4286126372Snjlfilename could not be generated or if the output file could not
4287126372Snjlbe
4288114237Snjlopened.
4289102550Siwasaki
4290114237Snjl----------------------------------------
4291114237Snjl18 September 2003.  Summary of changes for version 20030918:
4292114237Snjl
4293102550Siwasaki
4294114237Snjl1) ACPI CA Core Subsystem:
4295114237Snjl
4296102550SiwasakiFound and fixed a longstanding problem with the late execution of
4297104470Siwasakithe various deferred AML opcodes (such as Operation Regions,
4298126372SnjlBuffer Fields, Buffers, and Packages).  If the name string
4299126372Snjlspecified for the name of the new object placed the object in a
4300114237Snjlscope other than the current scope, the initialization/execution
4301102550Siwasakiof the opcode failed.  The solution to this problem was to
4302102550Siwasakiimplement a mechanism where the late execution of such opcodes
4303126372Snjldoes not attempt to lookup/create the name a second time in an
4304126372Snjlincorrect scope.  This fixes the "region size computed
4305126372Snjlincorrectly" problem.
4306126372Snjl
4307126372SnjlFixed a call to AcpiHwRegisterWrite in hwregs.c that was causing
4308126372Snjla
4309126372SnjlGlobal Lock AE_BAD_PARAMETER error.
4310126372Snjl
4311126372SnjlFixed several 64-bit issues with prototypes, casting and data
4312102550Siwasakitypes.
4313102550Siwasaki
4314104470SiwasakiRemoved duplicate prototype from acdisasm.h
4315104470Siwasaki
4316102550SiwasakiFixed an issue involving EC Operation Region Detach (Shaohua Li)
4317104470Siwasaki
4318104470SiwasakiCode and Data Size: Current and previous core subsystem library
4319102550Siwasakisizes are shown below.  These are the code and data sizes for the
4320102550Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4321102550Siwasakithese values do not include any ACPI driver or OSPM code.  The
4322102550Siwasakidebug version of the code includes the debug output trace
4323102550Siwasakimechanism and has a much larger code and data size.  Note that
4324114237Snjlthese values will vary depending on the efficiency of the
4325114237Snjlcompiler
4326102550Siwasakiand the compiler options used during generation.
4327102550Siwasaki
4328102550Siwasaki  Previous Release:
4329102550Siwasaki
4330102550Siwasaki    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
4331102550Siwasaki    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
4332102550Siwasaki  Current Release:
4333102550Siwasaki    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
4334102550Siwasaki    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
4335102550Siwasaki
4336102550Siwasaki
4337102550Siwasaki2) Linux:
4338102550Siwasaki
4339102550SiwasakiFixed the AcpiOsSleep implementation in osunixxf.c to pass the
4340102550Siwasakicorrect sleep time in seconds.
4341102550Siwasaki
4342126372Snjl----------------------------------------
4343126372Snjl14 July 2003.  Summary of changes for version 20030619:
4344126372Snjl
4345126372Snjl1) ACPI CA Core Subsystem:
4346126372Snjl
4347102550SiwasakiParse SSDTs in order discovered, as opposed to reverse order
4348102550Siwasaki(Hrvoje Habjanic)
4349102550Siwasaki
4350114237SnjlFixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
4351114237SnjlKlausner,
4352102550Siwasaki   Nate Lawson)
4353114237Snjl
4354114237Snjl
4355114237Snjl2) Linux:
4356114237Snjl
4357102550SiwasakiDynamically allocate SDT list (suggested by Andi Kleen)
4358114237Snjl
4359114237Snjlproc function return value cleanups (Andi Kleen)
4360114237Snjl
4361114237SnjlCorrectly handle NMI watchdog during long stalls (Andrew Morton)
4362102550Siwasaki
4363102550SiwasakiMake it so acpismp=force works (reported by Andrew Morton)
4364126372Snjl
4365126372Snjl
4366126372Snjl----------------------------------------
4367126372Snjl19 June 2003.  Summary of changes for version 20030619:
4368126372Snjl
4369102550Siwasaki1) ACPI CA Core Subsystem:
4370102550Siwasaki
4371102550SiwasakiFix To/FromBCD, eliminating the need for an arch-specific
4372102550Siwasaki#define.
4373114237Snjl
4374114237SnjlDo not acquire a semaphore in the S5 shutdown path.
4375102550Siwasaki
4376102550SiwasakiFix ex_digits_needed for 0. (Takayoshi Kochi)
4377126372Snjl
4378126372SnjlFix sleep/stall code reversal. (Andi Kleen)
4379114237Snjl
4380102550SiwasakiRevert a change having to do with control method calling
4381102550Siwasakisemantics.
4382102550Siwasaki
4383102550Siwasaki2) Linux:
4384102550Siwasaki
4385102550Siwasakiacpiphp update (Takayoshi Kochi)
4386102550Siwasaki
4387102550SiwasakiExport acpi_disabled for sonypi (Stelian Pop)
4388114237Snjl
4389114237SnjlMention acpismp=force in config help
4390114237Snjl
4391126372SnjlRe-add acpitable.c and acpismp=force. This improves backwards
4392126372Snjl
4393126372Snjlcompatibility and also cleans up the code to a significant
4394102550Siwasakidegree.
4395114237Snjl
4396114237SnjlAdd ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
4397114237Snjl
4398114237Snjl----------------------------------------
4399102550Siwasaki22 May 2003.  Summary of changes for version 20030522:
4400104470Siwasaki
4401104470Siwasaki1) ACPI CA Core Subsystem:
4402102550Siwasaki
4403102550SiwasakiFound and fixed a reported problem where an AE_NOT_FOUND error
4404114237Snjloccurred occasionally during _BST evaluation.  This turned out to
4405114237Snjlbe an Owner ID allocation issue where a called method did not get
4406102550Siwasakia new ID assigned to it.  Eventually, (after 64k calls), the
4407102550SiwasakiOwner
4408126372SnjlID UINT16 would wraparound so that the ID would be the same as
4409126372Snjlthe
4410126372Snjlcaller's and the called method would delete the caller's
4411126372Snjlnamespace.
4412126372Snjl
4413126372SnjlImplemented extended error reporting for control methods that are
4414126372Snjlaborted due to a run-time exception.  Output includes the exact
4415126372SnjlAML instruction that caused the method abort, a dump of the
4416126372Snjlmethod
4417102550Siwasakilocals and arguments at the time of the abort, and a trace of all
4418102550Siwasakinested control method calls.
4419104470Siwasaki
4420104470SiwasakiModified the interpreter to allow the creation of buffers of zero
4421102550Siwasakilength from the AML code. Implemented new code to ensure that no
4422104470Siwasakiattempt is made to actually allocate a memory buffer (of length
4423104470Siwasakizero) - instead, a simple buffer object with a NULL buffer
4424102550Siwasakipointer
4425102550Siwasakiand length zero is created.  A warning is no longer issued when
4426102550Siwasakithe AML attempts to create a zero-length buffer.
4427102550Siwasaki
4428104470SiwasakiImplemented a workaround for the "leading asterisk issue" in
4429104470Siwasaki_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
4430126372Snjlasterisk is automatically removed if present in any HID, UID, or
4431126372SnjlCID strings.  The iASL compiler will still flag this asterisk as
4432102550Siwasakian error, however.
4433114237Snjl
4434114237SnjlImplemented full support for _CID methods that return a package
4435102550Siwasakiof
4436102550Siwasakimultiple CIDs (Compatible IDs).  The AcpiGetObjectInfo()
4437102550Siwasakiinterface
4438102550Siwasakinow additionally returns a device _CID list if present.  This
4439102550Siwasakirequired a change to the external interface in order to pass an
4440102550SiwasakiACPI_BUFFER object as a parameter since the _CID list is of
4441102550Siwasakivariable length.
4442102550Siwasaki
4443102550SiwasakiFixed a problem with the new AE_SAME_HANDLER exception where
4444102550Siwasakihandler initialization code did not know about this exception.
4445102550Siwasaki
4446102550SiwasakiCode and Data Size: Current and previous core subsystem library
4447114237Snjlsizes are shown below.  These are the code and data sizes for the
4448114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4449114237Snjlthese values do not include any ACPI driver or OSPM code.  The
4450102550Siwasakidebug version of the code includes the debug output trace
4451104470Siwasakimechanism and has a much larger code and data size.  Note that
4452104470Siwasakithese values will vary depending on the efficiency of the
4453104470Siwasakicompiler
4454104470Siwasakiand the compiler options used during generation.
4455114237Snjl
4456114237Snjl  Previous Release (20030509):
4457104470Siwasaki    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
4458104470Siwasaki    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
4459104470Siwasaki  Current Release:
4460104470Siwasaki    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
4461102550Siwasaki    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
4462114237Snjl
4463102550Siwasaki
4464114237Snjl2) Linux:
4465114237Snjl
4466102550SiwasakiFixed a bug in which we would reinitialize the ACPI interrupt
4467114237Snjlafter it was already working, thus disabling all ACPI and the
4468114237SnjlIRQs
4469114237Snjlfor any other device sharing the interrupt. (Thanks to Stian
4470114237SnjlJordet)
4471102550Siwasaki
4472102550SiwasakiToshiba driver update (John Belmonte)
4473126372Snjl
4474126372SnjlReturn only 0 or 1 for our interrupt handler status (Andrew
4475102550SiwasakiMorton)
4476104470Siwasaki
4477104470Siwasaki
4478102550Siwasaki3) iASL Compiler:
4479104470Siwasaki
4480104470SiwasakiFixed a reported problem where multiple (nested) ElseIf()
4481104470Siwasakistatements were not handled correctly by the compiler, resulting
4482104470Siwasakiin incorrect warnings and incorrect AML code.  This was a problem
4483102550Siwasakiin both the ASL parser and the code generator.
4484102550Siwasaki
4485102550Siwasaki
4486102550Siwasaki4) Documentation:
4487102550Siwasaki
4488126372SnjlAdded changes to existing interfaces, new exception codes, and
4489126372Snjlnew
4490102550Siwasakitext concerning reference count object management versus garbage
4491114237Snjlcollection.
4492114237Snjl
4493102550Siwasaki----------------------------------------
4494102550Siwasaki09 May 2003.  Summary of changes for version 20030509.
4495102550Siwasaki
4496102550Siwasaki
4497102550Siwasaki1) ACPI CA Core Subsystem:
4498102550Siwasaki
4499114237SnjlChanged the subsystem initialization sequence to hold off
4500114237Snjlinstallation of address space handlers until the hardware has
4501114237Snjlbeen
4502114237Snjlinitialized and the system has entered ACPI mode.  This is
4503102550Siwasakibecause
4504102550Siwasakithe installation of space handlers can cause _REG methods to be
4505114237Snjlrun.  Previously, the _REG methods could potentially be run
4506114237Snjlbefore
4507114237SnjlACPI mode was enabled.
4508102550Siwasaki
4509114237SnjlFixed some memory leak issues related to address space handler
4510114237Snjland
4511114237Snjlnotify handler installation.  There were some problems with the
4512114237Snjlreference count mechanism caused by the fact that the handler
4513114237Snjlobjects are shared across several namespace objects.
4514114237Snjl
4515114237SnjlFixed a reported problem where reference counts within the
4516102550Siwasakinamespace were not properly updated when named objects created by
4517114237Snjlmethod execution were deleted.
4518114237Snjl
4519114237SnjlFixed a reported problem where multiple SSDTs caused a deletion
4520114237Snjlissue during subsystem termination.  Restructured the table data
4521114237Snjlstructures to simplify the linked lists and the related code.
4522126372Snjl
4523126372SnjlFixed a problem where the table ID associated with secondary
4524126372Snjltables (SSDTs) was not being propagated into the namespace
4525126372Snjlobjects
4526102550Siwasakicreated by those tables.  This would only present a problem for
4527104470Siwasakitables that are unloaded at run-time, however.
4528104470Siwasaki
4529104470SiwasakiUpdated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
4530104470Siwasakitype as the length parameter (instead of UINT32).
4531104470Siwasaki
4532126372SnjlSolved a long-standing problem where an ALREADY_EXISTS error
4533126372Snjlappears on various systems.  This problem could happen when there
4534126372Snjlare multiple PCI_Config operation regions under a single PCI root
4535126372Snjlbus.  This doesn't happen very frequently, but there are some
4536126372Snjlsystems that do this in the ASL.
4537102550Siwasaki
4538102550SiwasakiFixed a reported problem where the internal DeleteNode function
4539114237Snjlwas incorrectly handling the case where a namespace node was the
4540114237Snjlfirst in the parent's child list, and had additional peers (not
4541102550Siwasakithe only child, but first in the list of children.)
4542114237Snjl
4543114237SnjlCode and Data Size: Current core subsystem library sizes are
4544114237Snjlshown
4545102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
4546126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
4547126372Snjlvalues do not include any ACPI driver or OSPM code.  The debug
4548126372Snjlversion of the code includes the debug output trace mechanism and
4549126372Snjlhas a much larger code and data size.  Note that these values
4550126372Snjlwill
4551126372Snjlvary depending on the efficiency of the compiler and the compiler
4552126372Snjloptions used during generation.
4553126372Snjl
4554126372Snjl  Previous Release
4555102550Siwasaki    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
4556102550Siwasaki    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
4557104470Siwasaki  Current Release:
4558104470Siwasaki    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
4559102550Siwasaki    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
4560104470Siwasaki
4561104470Siwasaki
4562102550Siwasaki2) Linux:
4563102550Siwasaki
4564102550SiwasakiAllow ":" in OS override string (Ducrot Bruno)
4565102550Siwasaki
4566102550SiwasakiKobject fix (Greg KH)
4567102550Siwasaki
4568102550Siwasaki
4569102550Siwasaki3 iASL Compiler/Disassembler:
4570102550Siwasaki
4571104470SiwasakiFixed a problem in the generation of the C source code files (AML
4572104470Siwasakiis emitted in C source statements for BIOS inclusion) where the
4573114237SnjlAscii dump that appears within a C comment at the end of each
4574114237Snjlline
4575102550Siwasakicould cause a compile time error if the AML sequence happens to
4576104470Siwasakihave an open comment or close comment sequence embedded.
4577104470Siwasaki
4578104470Siwasaki
4579102550Siwasaki----------------------------------------
4580102550Siwasaki24 April 2003.  Summary of changes for version 20030424.
4581102550Siwasaki
4582102550Siwasaki
4583102550Siwasaki1) ACPI CA Core Subsystem:
4584102550Siwasaki
4585102550SiwasakiSupport for big-endian systems has been implemented.  Most of the
4586104470Siwasakisupport has been invisibly added behind big-endian versions of
4587114237Snjlthe
4588126372SnjlACPI_MOVE_* macros.
4589126372Snjl
4590102550SiwasakiFixed a problem in AcpiHwDisableGpeBlock() and
4591104470SiwasakiAcpiHwClearGpeBlock() where an incorrect offset was passed to the
4592126372Snjllow level hardware write routine.  The offset parameter was
4593126372Snjlactually eliminated from the low level read/write routines
4594126372Snjlbecause
4595126372Snjlthey had become obsolete.
4596126372Snjl
4597126372SnjlFixed a problem where a handler object was deleted twice during
4598126372Snjlthe removal of a fixed event handler.
4599102550Siwasaki
4600104470Siwasaki
4601114237Snjl2) Linux:
4602114237Snjl
4603114237SnjlA fix for SMP systems with link devices was contributed by
4604114237Snjl
4605114237SnjlCompaq's Dan Zink.
4606114237Snjl
4607102550Siwasaki(2.5) Return whether we handled the interrupt in our IRQ handler.
4608104470Siwasaki(Linux ISRs no longer return void, so we can propagate the
4609126372Snjlhandler
4610126372Snjlreturn value from the ACPI CA core back to the OS.)
4611126372Snjl
4612126372Snjl
4613102550Siwasaki
4614102550Siwasaki3) Documentation:
4615114237Snjl
4616114237SnjlThe ACPI CA Programmer Reference has been updated to reflect new
4617102550Siwasakiinterfaces and changes to existing interfaces.
4618102550Siwasaki
4619102550Siwasaki----------------------------------------
4620102550Siwasaki28 March 2003.  Summary of changes for version 20030328.
4621102550Siwasaki
4622102550Siwasaki1) ACPI CA Core Subsystem:
4623114237Snjl
4624114237SnjlThe GPE Block Device support has been completed.  New interfaces
4625104470Siwasakiare AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
4626102550Siwasakiinterfaces (enable, disable, clear, getstatus) have been split
4627102550Siwasakiinto separate interfaces for Fixed Events and General Purpose
4628126372SnjlEvents (GPEs) in order to support GPE Block Devices properly.
4629126372Snjl
4630126372SnjlFixed a problem where the error message "Failed to acquire
4631126372Snjlsemaphore" would appear during operations on the embedded
4632126372Snjlcontroller (EC).
4633126372Snjl
4634126372SnjlCode and Data Size: Current core subsystem library sizes are
4635126372Snjlshown
4636126372Snjlbelow.  These are the code and data sizes for the acpica.lib
4637102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
4638102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
4639104470Siwasakiversion of the code includes the debug output trace mechanism and
4640104470Siwasakihas a much larger code and data size.  Note that these values
4641102550Siwasakiwill
4642104470Siwasakivary depending on the efficiency of the compiler and the compiler
4643104470Siwasakioptions used during generation.
4644102550Siwasaki
4645102550Siwasaki  Previous Release
4646102550Siwasaki    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
4647102550Siwasaki    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
4648114237Snjl  Current Release:
4649114237Snjl    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
4650114237Snjl    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
4651114237Snjl
4652114237Snjl
4653114237Snjl----------------------------------------
4654114237Snjl28 February 2003.  Summary of changes for version 20030228.
4655114237Snjl
4656114237Snjl
4657114237Snjl1) ACPI CA Core Subsystem:
4658102550Siwasaki
4659114237SnjlThe GPE handling and dispatch code has been completely overhauled
4660114237Snjlin preparation for support of GPE Block Devices (ID ACPI0006).
4661114237SnjlThis affects internal data structures and code only; there should
4662114237Snjlbe no differences visible externally.  One new file has been
4663114237Snjladded, evgpeblk.c
4664102550Siwasaki
4665104470SiwasakiThe FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
4666104470Siwasakifields that are used to determine the GPE block lengths.  The
4667102550SiwasakiREGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
4668104470Siwasakistructures are ignored.  This is per the ACPI specification but
4669104470Siwasakiit
4670102550Siwasakiisn't very clear.  The full 256 Block 0/1 GPEs are now supported
4671114237Snjl(the use of REGISTER_BIT_WIDTH limited the number of GPEs to
4672114237Snjl128).
4673102550Siwasaki
4674102550SiwasakiIn the SCI interrupt handler, removed the read of the PM1_CONTROL
4675114237Snjlregister to look at the SCI_EN bit.  On some machines, this read
4676114237Snjlcauses an SMI event and greatly slows down SCI events.  (This may
4677102550Siwasakiin fact be the cause of slow battery status response on some
4678114237Snjlsystems.)
4679114237Snjl
4680102550SiwasakiFixed a problem where a store of a NULL string to a package
4681102550Siwasakiobject
4682102550Siwasakicould cause the premature deletion of the object.  This was seen
4683102550Siwasakiduring execution of the battery _BIF method on some systems,
4684102550Siwasakiresulting in no battery data being returned.
4685102550Siwasaki
4686104470SiwasakiAdded AcpiWalkResources interface to simplify parsing of resource
4687104470Siwasakilists.
4688102550Siwasaki
4689102550SiwasakiCode and Data Size: Current core subsystem library sizes are
4690126372Snjlshown
4691126372Snjlbelow.  These are the code and data sizes for the acpica.lib
4692102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
4693102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
4694126372Snjlversion of the code includes the debug output trace mechanism and
4695126372Snjlhas a much larger code and data size.  Note that these values
4696102550Siwasakiwill
4697114237Snjlvary depending on the efficiency of the compiler and the compiler
4698114237Snjloptions used during generation.
4699102550Siwasaki
4700102550Siwasaki  Previous Release
4701102550Siwasaki    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4702102550Siwasaki    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4703102550Siwasaki  Current Release:
4704102550Siwasaki    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
4705102550Siwasaki    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
4706102550Siwasaki
4707102550Siwasaki
4708102550Siwasaki2) Linux
4709114237Snjl
4710114237SnjlS3 fixes (Ole Rohne)
4711126372Snjl
4712126372SnjlUpdate ACPI PHP driver with to use new acpi_walk_resource API
4713102550Siwasaki(Bjorn Helgaas)
4714102550Siwasaki
4715126372SnjlAdd S4BIOS support (Pavel Machek)
4716126372Snjl
4717126372SnjlMap in entire table before performing checksum (John Stultz)
4718126372Snjl
4719102550SiwasakiExpand the mem= cmdline to allow the specification of reserved
4720114237Snjland
4721114237SnjlACPI DATA blocks (Pavel Machek)
4722114237Snjl
4723114237SnjlNever use ACPI on VISWS
4724102550Siwasaki
4725102550SiwasakiFix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
4726102550Siwasaki
4727102550SiwasakiRevert a change that allowed P_BLK lengths to be 4 or 5. This is
4728104470Siwasakicausing us to think that some systems support C2 when they really
4729104470Siwasakidon't.
4730102550Siwasaki
4731114237SnjlDo not count processor objects for non-present CPUs (Thanks to
4732126372SnjlDominik Brodowski)
4733126372Snjl
4734126372Snjl
4735102550Siwasaki3) iASL Compiler:
4736102550Siwasaki
4737102550SiwasakiFixed a problem where ASL include files could not be found and
4738102550Siwasakiopened.
4739102550Siwasaki
4740102550SiwasakiAdded support for the _PDC reserved name.
4741102550Siwasaki
4742102550Siwasaki
4743102550Siwasaki----------------------------------------
4744102550Siwasaki22 January 2003.  Summary of changes for version 20030122.
4745102550Siwasaki
4746102550Siwasaki
4747102550Siwasaki1) ACPI CA Core Subsystem:
4748102550Siwasaki
4749102550SiwasakiAdded a check for constructs of the form:  Store (Local0, Local0)
4750102550Siwasakiwhere Local0 is not initialized.  Apparently, some BIOS
4751104470Siwasakiprogrammers believe that this is a NOOP.  Since this store
4752126372Snjldoesn't
4753126372Snjldo anything anyway, the new prototype behavior will ignore this
4754114237Snjlerror.  This is a case where we can relax the strict checking in
4755114237Snjlthe interpreter in the name of compatibility.
4756114237Snjl
4757102550Siwasaki
4758102550Siwasaki2) Linux
4759102550Siwasaki
4760102550SiwasakiThe AcpiSrc Source Conversion Utility has been released with the
4761114237SnjlLinux package for the first time.  This is the utility that is
4762114237Snjlused to convert the ACPI CA base source code to the Linux
4763102550Siwasakiversion.
4764102550Siwasaki
4765126372Snjl(Both) Handle P_BLK lengths shorter than 6 more gracefully
4766126372Snjl
4767102550Siwasaki(Both) Move more headers to include/acpi, and delete an unused
4768102550Siwasakiheader.
4769102550Siwasaki
4770102550Siwasaki(Both) Move drivers/acpi/include directory to include/acpi
4771114237Snjl
4772102550Siwasaki(Both) Boot functions don't use cmdline, so don't pass it around
4773114237Snjl
4774102550Siwasaki(Both) Remove include of unused header (Adrian Bunk)
4775104470Siwasaki
4776104470Siwasaki(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
4777102550Siwasakithe
4778102550Siwasakiformer now also includes the latter, acpiphp.h only needs the
4779102550Siwasakione,
4780102550Siwasakinow.
4781102550Siwasaki
4782102550Siwasaki(2.5) Make it possible to select method of bios restoring after
4783102550SiwasakiS3
4784102550Siwasakiresume. [=> no more ugly ifdefs] (Pavel Machek)
4785102550Siwasaki
4786102550Siwasaki(2.5) Make proc write interfaces work (Pavel Machek)
4787114237Snjl
4788114237Snjl(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
4789102550Siwasaki
4790114237Snjl(2.5) Break out ACPI Perf code into its own module, under cpufreq
4791114237Snjl(Dominik Brodowski)
4792126372Snjl
4793126372Snjl(2.4) S4BIOS support (Ducrot Bruno)
4794126372Snjl
4795126372Snjl(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
4796102550SiwasakiVisinoni)
4797114237Snjl
4798114237Snjl
4799102550Siwasaki3) iASL Compiler:
4800102550Siwasaki
4801126372SnjlAdded support to disassemble SSDT and PSDTs.
4802126372Snjl
4803126372SnjlImplemented support to obtain SSDTs from the Windows registry if
4804102550Siwasakiavailable.
4805104470Siwasaki
4806104470Siwasaki
4807104470Siwasaki----------------------------------------
4808114237Snjl09 January 2003.  Summary of changes for version 20030109.
4809102550Siwasaki
4810114237Snjl1) ACPI CA Core Subsystem:
4811114237Snjl
4812126372SnjlChanged the behavior of the internal Buffer-to-String conversion
4813126372Snjlfunction.  The current ACPI specification states that the
4814102550Siwasakicontents
4815102550Siwasakiof the buffer are "converted to a string of two-character
4816126372Snjlhexadecimal numbers, each separated by a space".  Unfortunately,
4817126372Snjlthis definition is not backwards compatible with existing ACPI
4818126372Snjl1.0
4819126372Snjlimplementations (although the behavior was not defined in the
4820126372SnjlACPI
4821126372Snjl1.0 specification).  The new behavior simply copies data from the
4822126372Snjlbuffer to the string until a null character is found or the end
4823126372Snjlof
4824126372Snjlthe buffer is reached.  The new String object is always null
4825102550Siwasakiterminated.  This problem was seen during the generation of _BIF
4826102550Siwasakibattery data where incorrect strings were returned for battery
4827126372Snjltype, etc.  This will also require an errata to the ACPI
4828126372Snjlspecification.
4829126372Snjl
4830126372SnjlRenamed all instances of NATIVE_UINT and NATIVE_INT to
4831126372SnjlACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
4832126372Snjl
4833126372SnjlCopyright in all module headers (both Linux and non-Linux) has be
4834126372Snjlupdated to 2003.
4835126372Snjl
4836102550SiwasakiCode and Data Size: Current core subsystem library sizes are
4837102550Siwasakishown
4838104470Siwasakibelow.  These are the code and data sizes for the acpica.lib
4839104470Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
4840102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
4841104470Siwasakiversion of the code includes the debug output trace mechanism and
4842104470Siwasakihas a much larger code and data size.  Note that these values
4843102550Siwasakiwill
4844102550Siwasakivary depending on the efficiency of the compiler and the compiler
4845102550Siwasakioptions used during generation.
4846102550Siwasaki
4847102550Siwasaki  Previous Release
4848102550Siwasaki    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4849102550Siwasaki    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4850114237Snjl  Current Release:
4851114237Snjl    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4852102550Siwasaki    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4853102550Siwasaki
4854102550Siwasaki
4855102550Siwasaki2) Linux
4856102550Siwasaki
4857102550SiwasakiFixed an oops on module insertion/removal (Matthew Tippett)
4858104470Siwasaki
4859102550Siwasaki(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
4860102550Siwasaki
4861102550Siwasaki(2.5) Replace pr_debug (Randy Dunlap)
4862102550Siwasaki
4863102550Siwasaki(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
4864102550Siwasaki
4865114237Snjl(Both) Eliminate spawning of thread from timer callback, in favor
4866114237Snjlof schedule_work()
4867114237Snjl
4868126372Snjl(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
4869126372Snjl
4870126372Snjl(Both) Added define for Fixed Function HW region (Matthew Wilcox)
4871102550Siwasaki
4872102550Siwasaki(Both) Add missing statics to button.c (Pavel Machek)
4873126372Snjl
4874126372SnjlSeveral changes have been made to the source code translation
4875126372Snjlutility that generates the Linux Code in order to make the code
4876102550Siwasakimore "Linux-like":
4877102550Siwasaki
4878102550SiwasakiAll typedefs on structs and unions have been removed in keeping
4879102550Siwasakiwith the Linux coding style.
4880102550Siwasaki
4881102550SiwasakiRemoved the non-Linux SourceSafe module revision number from each
4882102550Siwasakimodule header.
4883114237Snjl
4884114237SnjlCompleted major overhaul of symbols to be lowercased for linux.
4885114237SnjlDoubled the number of symbols that are lowercased.
4886104470Siwasaki
4887126372SnjlFixed a problem where identifiers within procedure headers and
4888126372Snjlwithin quotes were not fully lower cased (they were left with a
4889126372Snjlstarting capital.)
4890102550Siwasaki
4891114237SnjlSome C macros whose only purpose is to allow the generation of 16-
4892114237Snjlbit code are now completely removed in the Linux code, increasing
4893114237Snjlreadability and maintainability.
4894114237Snjl
4895114237Snjl----------------------------------------
4896126372Snjl
4897126372Snjl12 December 2002.  Summary of changes for version 20021212.
4898126372Snjl
4899126372Snjl
4900126372Snjl1) ACPI CA Core Subsystem:
4901102550Siwasaki
4902102550SiwasakiFixed a problem where the creation of a zero-length AML Buffer
4903102550Siwasakiwould cause a fault.
4904102550Siwasaki
4905114237SnjlFixed a problem where a Buffer object that pointed to a static
4906114237SnjlAML
4907114237Snjlbuffer (in an ACPI table) could inadvertently be deleted, causing
4908102550Siwasakimemory corruption.
4909102550Siwasaki
4910104470SiwasakiFixed a problem where a user buffer (passed in to the external
4911104470SiwasakiACPI CA interfaces) could be overwritten if the buffer was too
4912102550Siwasakismall to complete the operation, causing memory corruption.
4913114237Snjl
4914114237SnjlFixed a problem in the Buffer-to-String conversion code where a
4915114237Snjlstring of length one was always returned, regardless of the size
4916126372Snjlof the input Buffer object.
4917126372Snjl
4918102550SiwasakiRemoved the NATIVE_CHAR data type across the entire source due to
4919104470Siwasakilack of need and lack of consistent use.
4920104470Siwasaki
4921114237SnjlCode and Data Size: Current core subsystem library sizes are
4922114237Snjlshown
4923114237Snjlbelow.  These are the code and data sizes for the acpica.lib
4924114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
4925102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
4926114237Snjlversion of the code includes the debug output trace mechanism and
4927114237Snjlhas a much larger code and data size.  Note that these values
4928102550Siwasakiwill
4929102550Siwasakivary depending on the efficiency of the compiler and the compiler
4930102550Siwasakioptions used during generation.
4931102550Siwasaki
4932102550Siwasaki  Previous Release
4933104470Siwasaki    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
4934102550Siwasaki    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
4935114237Snjl  Current Release:
4936114237Snjl    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4937102550Siwasaki    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4938102550Siwasaki
4939102550Siwasaki
4940102550Siwasaki----------------------------------------
4941102550Siwasaki05 December 2002.  Summary of changes for version 20021205.
4942102550Siwasaki
4943102550Siwasaki1) ACPI CA Core Subsystem:
4944114237Snjl
4945126372SnjlFixed a problem where a store to a String or Buffer object could
4946126372Snjlcause corruption of the DSDT if the object type being stored was
4947114237Snjlthe same as the target object type and the length of the object
4948102550Siwasakibeing stored was equal to or smaller than the original (existing)
4949104470Siwasakitarget object.  This was seen to cause corruption of battery _BIF
4950126372Snjlbuffers if the _BIF method modified the buffer on the fly.
4951126372Snjl
4952102550SiwasakiFixed a problem where an internal error was generated if a
4953114237Snjlcontrol
4954114237Snjlmethod invocation was used in an OperationRegion, Buffer, or
4955102550SiwasakiPackage declaration.  This was caused by the deferred parsing of
4956102550Siwasakithe control method and thus the deferred creation of the internal
4957102550Siwasakimethod object.  The solution to this problem was to create the
4958102550Siwasakiinternal method object at the moment the method is encountered in
4959102550Siwasakithe first pass - so that subsequent references to the method will
4960126372Snjlable to obtain the required parameter count and thus properly
4961126372Snjlparse the method invocation.  This problem presented itself as an
4962102550SiwasakiAE_AML_INTERNAL during the pass 1 parse phase during table load.
4963102550Siwasaki
4964126372SnjlFixed a problem where the internal String object copy routine did
4965126372Snjlnot always allocate sufficient memory for the target String
4966114237Snjlobject
4967114237Snjland caused memory corruption.  This problem was seen to cause
4968114237Snjl"Allocation already present in list!" errors as memory allocation
4969114237Snjlbecame corrupted.
4970126372Snjl
4971126372SnjlImplemented a new function for the evaluation of namespace
4972114237Snjlobjects
4973102550Siwasakithat allows the specification of the allowable return object
4974102550Siwasakitypes.  This simplifies a lot of code that checks for a return
4975114237Snjlobject of one or more specific objects returned from the
4976114237Snjlevaluation (such as _STA, etc.)  This may become and external
4977102550Siwasakifunction if it would be useful to ACPI-related drivers.
4978114237Snjl
4979114237SnjlCompleted another round of prefixing #defines with "ACPI_" for
4980102550Siwasakiclarity.
4981102550Siwasaki
4982102550SiwasakiCompleted additional code restructuring to allow more modular
4983104470Siwasakilinking for iASL compiler and AcpiExec.  Several files were split
4984104470Siwasakicreating new files.  New files:  nsparse.c dsinit.c evgpe.c
4985102550Siwasaki
4986102550SiwasakiImplemented an abort mechanism to terminate an executing control
4987102550Siwasakimethod via the AML debugger.  This feature is useful for
4988102550Siwasakidebugging
4989102550Siwasakicontrol methods that depend (wait) for specific hardware
4990102550Siwasakiresponses.
4991102550Siwasaki
4992102550SiwasakiCode and Data Size: Current core subsystem library sizes are
4993102550Siwasakishown
4994104470Siwasakibelow.  These are the code and data sizes for the acpica.lib
4995102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
4996104470Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
4997102550Siwasakiversion of the code includes the debug output trace mechanism and
4998102550Siwasakihas a much larger code and data size.  Note that these values
4999102550Siwasakiwill
5000102550Siwasakivary depending on the efficiency of the compiler and the compiler
5001102550Siwasakioptions used during generation.
5002114237Snjl
5003126372Snjl  Previous Release
5004126372Snjl    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5005126372Snjl    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
5006126372Snjl  Current Release:
5007126372Snjl    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
5008126372Snjl    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
5009126372Snjl
5010126372Snjl
5011102550Siwasaki2) iASL Compiler/Disassembler
5012102550Siwasaki
5013102550SiwasakiFixed a compiler code generation problem for "Interrupt" Resource
5014102550SiwasakiDescriptors.  If specified in the ASL, the optional "Resource
5015104470SiwasakiSource Index" and "Resource Source" fields were not inserted into
5016114237Snjlthe correct location within the AML resource descriptor, creating
5017114237Snjlan invalid descriptor.
5018114237Snjl
5019114237SnjlFixed a disassembler problem for "Interrupt" resource
5020102550Siwasakidescriptors.
5021104470SiwasakiThe optional "Resource Source Index" and "Resource Source" fields
5022104470Siwasakiwere ignored.
5023102550Siwasaki
5024102550Siwasaki
5025102550Siwasaki----------------------------------------
5026102550Siwasaki22 November 2002.  Summary of changes for version 20021122.
5027102550Siwasaki
5028102550Siwasaki
5029102550Siwasaki1) ACPI CA Core Subsystem:
5030102550Siwasaki
5031102550SiwasakiFixed a reported problem where an object stored to a Method Local
5032102550Siwasakior Arg was not copied to a new object during the store - the
5033102550Siwasakiobject pointer was simply copied to the Local/Arg.  This caused
5034102550Siwasakiall subsequent operations on the Local/Arg to also affect the
5035102550Siwasakioriginal source of the store operation.
5036102550Siwasaki
5037114237SnjlFixed a problem where a store operation to a Method Local or Arg
5038114237Snjlwas not completed properly if the Local/Arg contained a reference
5039102550Siwasaki(from RefOf) to a named field.  The general-purpose store-to-
5040114237Snjlnamespace-node code is now used so that this case is handled
5041114237Snjlautomatically.
5042102550Siwasaki
5043102550SiwasakiFixed a problem where the internal object copy routine would
5044102550Siwasakicause
5045102550Siwasakia protection fault if the object being copied was a Package and
5046102550Siwasakicontained either 1) a NULL package element or 2) a nested sub-
5047104470Siwasakipackage.
5048126372Snjl
5049126372SnjlFixed a problem with the GPE initialization that resulted from an
5050102550Siwasakiambiguity in the ACPI specification.  One section of the
5051102550Siwasakispecification states that both the address and length of the GPE
5052102550Siwasakiblock must be zero if the block is not supported.  Another
5053104470Siwasakisection
5054126372Snjlimplies that only the address need be zero if the block is not
5055126372Snjlsupported.  The code has been changed so that both the address
5056126372Snjland
5057126372Snjlthe length must be non-zero to indicate a valid GPE block (i.e.,
5058126372Snjlif either the address or the length is zero, the GPE block is
5059126372Snjlinvalid.)
5060126372Snjl
5061102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5062104470Siwasakishown
5063102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
5064114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
5065126372Snjlvalues do not include any ACPI driver or OSPM code.  The debug
5066126372Snjlversion of the code includes the debug output trace mechanism and
5067126372Snjlhas a much larger code and data size.  Note that these values
5068102550Siwasakiwill
5069102550Siwasakivary depending on the efficiency of the compiler and the compiler
5070114237Snjloptions used during generation.
5071114237Snjl
5072114237Snjl  Previous Release
5073102550Siwasaki    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
5074114237Snjl    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
5075114237Snjl  Current Release:
5076104470Siwasaki    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5077126372Snjl    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
5078126372Snjl
5079126372Snjl
5080102550Siwasaki2) Linux
5081102550Siwasaki
5082102550SiwasakiCleaned up EC driver. Exported an external EC read/write
5083102550Siwasakiinterface. By going through this, other drivers (most notably
5084126372Snjlsonypi) will be able to serialize access to the EC.
5085126372Snjl
5086114237Snjl
5087114237Snjl3) iASL Compiler/Disassembler
5088114237Snjl
5089114237SnjlImplemented support to optionally generate include files for both
5090114237SnjlASM and C (the -i switch).  This simplifies BIOS development by
5091114237Snjlautomatically creating include files that contain external
5092102550Siwasakideclarations for the symbols that are created within the
5093102550Siwasaki
5094114237Snjl(optionally generated) ASM and C AML source files.
5095114237Snjl
5096102550Siwasaki
5097114237Snjl----------------------------------------
5098114237Snjl15 November 2002.  Summary of changes for version 20021115.
5099102550Siwasaki
5100102550Siwasaki1) ACPI CA Core Subsystem:
5101102550Siwasaki
5102114237SnjlFixed a memory leak problem where an error during resolution of
5103114237Snjl
5104102550Siwasakimethod arguments during a method invocation from another method
5105102550Siwasakifailed to cleanup properly by deleting all successfully resolved
5106102550Siwasakiargument objects.
5107102550Siwasaki
5108102550SiwasakiFixed a problem where the target of the Index() operator was not
5109102550Siwasakicorrectly constructed if the source object was a package.  This
5110102550Siwasakiproblem has not been detected because the use of a target operand
5111102550Siwasakiwith Index() is very rare.
5112102550Siwasaki
5113102550SiwasakiFixed a problem with the Index() operator where an attempt was
5114104470Siwasakimade to delete the operand objects twice.
5115104470Siwasaki
5116102550SiwasakiFixed a problem where an attempt was made to delete an operand
5117102550Siwasakitwice during execution of the CondRefOf() operator if the target
5118102550Siwasakidid not exist.
5119102550Siwasaki
5120114237SnjlImplemented the first of perhaps several internal create object
5121114237Snjlfunctions that create and initialize a specific object type.
5122114237SnjlThis
5123102550Siwasakiconsolidates duplicated code wherever the object is created, thus
5124114237Snjlshrinking the size of the subsystem.
5125114237Snjl
5126114237SnjlImplemented improved debug/error messages for errors that occur
5127102550Siwasakiduring nested method invocations.  All executing method pathnames
5128114237Snjlare displayed (with the error) as the call stack is unwound -
5129114237Snjlthus
5130114237Snjlsimplifying debug.
5131114237Snjl
5132102550SiwasakiFixed a problem introduced in the 10/02 release that caused
5133114237Snjlpremature deletion of a buffer object if a buffer was used as an
5134114237SnjlASL operand where an integer operand is required (Thus causing an
5135114237Snjlimplicit object conversion from Buffer to Integer.)  The change
5136126372Snjlin
5137126372Snjlthe 10/02 release was attempting to fix a memory leak (albeit
5138126372Snjlincorrectly.)
5139126372Snjl
5140102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5141114237Snjlshown
5142114237Snjlbelow.  These are the code and data sizes for the acpica.lib
5143102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
5144114237Snjlvalues do not include any ACPI driver or OSPM code.  The debug
5145114237Snjlversion of the code includes the debug output trace mechanism and
5146114237Snjlhas a much larger code and data size.  Note that these values
5147102550Siwasakiwill
5148102550Siwasakivary depending on the efficiency of the compiler and the compiler
5149126372Snjloptions used during generation.
5150126372Snjl
5151114237Snjl  Previous Release
5152114237Snjl    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
5153114237Snjl    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
5154114237Snjl  Current Release:
5155126372Snjl    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
5156126372Snjl    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
5157114237Snjl
5158102550Siwasaki
5159102550Siwasaki2) Linux
5160114237Snjl
5161114237SnjlChanged the implementation of the ACPI semaphores to use down()
5162102550Siwasakiinstead of down_interruptable().  It is important that the
5163102550Siwasakiexecution of ACPI control methods not be interrupted by signals.
5164114237SnjlMethods must run to completion, or the system may be left in an
5165114237Snjlunknown/unstable state.
5166102550Siwasaki
5167102550SiwasakiFixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
5168102550Siwasakiset.
5169102550Siwasaki(Shawn Starr)
5170102550Siwasaki
5171104470Siwasaki
5172114237Snjl3) iASL Compiler/Disassembler
5173114237Snjl
5174114237Snjl
5175114237SnjlChanged the default location of output files.  All output files
5176114237Snjlare now placed in the current directory by default instead of in
5177102550Siwasakithe directory of the source file.  This change may affect some
5178114237Snjlexisting makefiles, but it brings the behavior of the compiler in
5179114237Snjlline with other similar tools.  The location of the output files
5180114237Snjlcan be overridden with the -p command line switch.
5181114237Snjl
5182114237Snjl
5183126372Snjl----------------------------------------
5184126372Snjl11 November 2002.  Summary of changes for version 20021111.
5185102550Siwasaki
5186104470Siwasaki
5187104470Siwasaki0) ACPI Specification 2.0B is released and is now available at:
5188104470Siwasakihttp://www.acpi.info/index.html
5189102550Siwasaki
5190102550Siwasaki
5191102550Siwasaki1) ACPI CA Core Subsystem:
5192102550Siwasaki
5193102550SiwasakiImplemented support for the ACPI 2.0 SMBus Operation Regions.
5194102550SiwasakiThis includes the early detection and handoff of the request to
5195102550Siwasakithe SMBus region handler (avoiding all of the complex field
5196102550Siwasakisupport code), and support for the bidirectional return packet
5197102550Siwasakifrom an SMBus write operation.  This paves the way for the
5198102550Siwasakidevelopment of SMBus drivers in each host operating system.
5199102550Siwasaki
5200102550SiwasakiFixed a problem where the semaphore WAIT_FOREVER constant was
5201102550Siwasakidefined as 32 bits, but must be 16 bits according to the ACPI
5202104470Siwasakispecification.  This had the side effect of causing ASL
5203104470SiwasakiMutex/Event timeouts even though the ASL code requested a wait
5204126372Snjlforever.  Changed all internal references to the ACPI timeout
5205126372Snjlparameter to 16 bits to prevent future problems.  Changed the
5206126372Snjlname
5207102550Siwasakiof WAIT_FOREVER to ACPI_WAIT_FOREVER.
5208104470Siwasaki
5209104470SiwasakiCode and Data Size: Current core subsystem library sizes are
5210102550Siwasakishown
5211102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
5212114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
5213102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
5214114237Snjlversion of the code includes the debug output trace mechanism and
5215114237Snjlhas a much larger code and data size.  Note that these values
5216114237Snjlwill
5217114237Snjlvary depending on the efficiency of the compiler and the compiler
5218126372Snjloptions used during generation.
5219126372Snjl
5220102550Siwasaki  Previous Release
5221102550Siwasaki    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5222102550Siwasaki    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
5223104470Siwasaki  Current Release:
5224126372Snjl    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
5225126372Snjl    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
5226126372Snjl
5227126372Snjl
5228126372Snjl2) Linux
5229126372Snjl
5230126372SnjlModule loading/unloading fixes (John Cagle)
5231126372Snjl
5232126372Snjl
5233126372Snjl3) iASL Compiler/Disassembler
5234126372Snjl
5235102550SiwasakiAdded support for the SMBBlockProcessCall keyword (ACPI 2.0)
5236102550Siwasaki
5237114237SnjlImplemented support for the disassembly of all SMBus protocol
5238114237Snjlkeywords (SMBQuick, SMBWord, etc.)
5239102550Siwasaki
5240102550Siwasaki----------------------------------------
5241114237Snjl01 November 2002.  Summary of changes for version 20021101.
5242114237Snjl
5243102550Siwasaki
5244102550Siwasaki1) ACPI CA Core Subsystem:
5245102550Siwasaki
5246114237SnjlFixed a problem where platforms that have a GPE1 block but no
5247114237SnjlGPE0
5248114237Snjlblock were not handled correctly.  This resulted in a "GPE
5249114237Snjloverlap" error message.  GPE0 is no longer required.
5250114237Snjl
5251114237SnjlRemoved code added in the previous release that inserted nodes
5252114237Snjlinto the namespace in alphabetical order.  This caused some side-
5253114237Snjleffects on various machines.  The root cause of the problem is
5254126372Snjlstill under investigation since in theory, the internal ordering
5255126372Snjlof the namespace nodes should not matter.
5256102550Siwasaki
5257114237Snjl
5258114237SnjlEnhanced error reporting for the case where a named object is not
5259114237Snjlfound during control method execution.  The full ACPI namepath
5260102550Siwasaki(name reference) of the object that was not found is displayed in
5261102550Siwasakithis case.
5262126372Snjl
5263126372SnjlNote: as a result of the overhaul of the namespace object types
5264102550Siwasakiin
5265102550Siwasakithe previous release, the namespace nodes for the predefined
5266102550Siwasakiscopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
5267114237Snjlinstead of ACPI_TYPE_ANY.  This simplifies the namespace
5268114237Snjlmanagement code but may affect code that walks the namespace tree
5269114237Snjllooking for specific object types.
5270114237Snjl
5271102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5272114237Snjlshown
5273114237Snjlbelow.  These are the code and data sizes for the acpica.lib
5274114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
5275102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
5276102550Siwasakiversion of the code includes the debug output trace mechanism and
5277102550Siwasakihas a much larger code and data size.  Note that these values
5278102550Siwasakiwill
5279102550Siwasakivary depending on the efficiency of the compiler and the compiler
5280102550Siwasakioptions used during generation.
5281102550Siwasaki
5282102550Siwasaki  Previous Release
5283114237Snjl    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
5284114237Snjl    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
5285126372Snjl  Current Release:
5286126372Snjl    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5287126372Snjl    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
5288102550Siwasaki
5289104470Siwasaki
5290104470Siwasaki2) Linux
5291104470Siwasaki
5292114237SnjlFixed a problem introduced in the previous release where the
5293114237SnjlProcessor and Thermal objects were not recognized and installed
5294102550Siwasakiin
5295114237Snjl/proc.  This was related to the scope type change described
5296114237Snjlabove.
5297102550Siwasaki
5298102550Siwasaki
5299102550Siwasaki3) iASL Compiler/Disassembler
5300102550Siwasaki
5301114237SnjlImplemented the -g option to get all of the required ACPI tables
5302114237Snjlfrom the registry and save them to files (Windows version of the
5303114237Snjlcompiler only.)  The required tables are the FADT, FACS, and
5304114237SnjlDSDT.
5305126372Snjl
5306126372SnjlAdded ACPI table checksum validation during table disassembly in
5307126372Snjlorder to catch corrupted tables.
5308126372Snjl
5309102550Siwasaki
5310114237Snjl----------------------------------------
5311114237Snjl22 October 2002.  Summary of changes for version 20021022.
5312114237Snjl
5313114237Snjl1) ACPI CA Core Subsystem:
5314114237Snjl
5315102550SiwasakiImplemented a restriction on the Scope operator that the target
5316114237Snjlmust already exist in the namespace at the time the operator is
5317114237Snjlencountered (during table load or method execution).  In other
5318126372Snjlwords, forward references are not allowed and Scope() cannot
5319126372Snjlcreate a new object. This changes the previous behavior where the
5320102550Siwasakiinterpreter would create the name if not found.  This new
5321114237Snjlbehavior
5322114237Snjlcorrectly enables the search-to-root algorithm during namespace
5323114237Snjllookup of the target name.  Because of this upsearch, this fixes
5324102550Siwasakithe known Compaq _SB_.OKEC problem and makes both the AML
5325102550Siwasakiinterpreter and iASL compiler compatible with other ACPI
5326102550Siwasakiimplementations.
5327102550Siwasaki
5328102550SiwasakiCompleted a major overhaul of the internal ACPI object types for
5329102550Siwasakithe ACPI Namespace and the associated operand objects.  Many of
5330102550Siwasakithese types had become obsolete with the introduction of the two-
5331102550Siwasakipass namespace load.  This cleanup simplifies the code and makes
5332102550Siwasakithe entire namespace load mechanism much clearer and easier to
5333102550Siwasakiunderstand.
5334114237Snjl
5335114237SnjlImproved debug output for tracking scope opening/closing to help
5336114237Snjldiagnose scoping issues.  The old scope name as well as the new
5337126372Snjlscope name are displayed.  Also improved error messages for
5338126372Snjlproblems with ASL Mutex objects and error messages for GPE
5339126372Snjlproblems.
5340126372Snjl
5341126372SnjlCleaned up the namespace dump code, removed obsolete code.
5342126372Snjl
5343126372SnjlAll string output (for all namespace/object dumps) now uses the
5344102550Siwasakicommon ACPI string output procedure which handles escapes
5345104470Siwasakiproperly
5346104470Siwasakiand does not emit non-printable characters.
5347102550Siwasaki
5348102550SiwasakiFixed some issues with constants in the 64-bit version of the
5349104470Siwasakilocal C library (utclib.c)
5350114237Snjl
5351114237Snjl
5352114237Snjl2) Linux
5353114237Snjl
5354114237SnjlEC Driver:  No longer attempts to acquire the Global Lock at
5355102550Siwasakiinterrupt level.
5356114237Snjl
5357114237Snjl
5358114237Snjl3) iASL Compiler/Disassembler
5359114237Snjl
5360114237SnjlImplemented ACPI 2.0B grammar change that disallows all Type 1
5361102550Siwasakiand
5362102550Siwasaki2 opcodes outside of a control method.  This means that the
5363114237Snjl"executable" operators (versus the "namespace" operators) cannot
5364114237Snjlbe used at the table level; they can only be used within a
5365114237Snjlcontrol
5366102550Siwasakimethod.
5367104470Siwasaki
5368104470SiwasakiImplemented the restriction on the Scope() operator where the
5369126372Snjltarget must already exist in the namespace at the time the
5370126372Snjloperator is encountered (during ASL compilation). In other words,
5371102550Siwasakiforward references are not allowed and Scope() cannot create a
5372104470Siwasakinew
5373104470Siwasakiobject.  This makes the iASL compiler compatible with other ACPI
5374104470Siwasakiimplementations and makes the Scope() implementation adhere to
5375104470Siwasakithe
5376114237SnjlACPI specification.
5377114237Snjl
5378102550SiwasakiFixed a problem where namepath optimization for the Alias
5379102550Siwasakioperator
5380126372Snjlwas optimizing the wrong path (of the two namepaths.)  This
5381126372Snjlcaused
5382102550Siwasakia "Missing alias link" error message.
5383104470Siwasaki
5384126372SnjlFixed a problem where an "unknown reserved name" warning could be
5385126372Snjlincorrectly generated for names like "_SB" when the trailing
5386126372Snjlunderscore is not used in the original ASL.
5387126372Snjl
5388126372SnjlFixed a problem where the reserved name check did not handle
5389126372SnjlNamePaths with multiple NameSegs correctly.  The first nameseg of
5390126372Snjlthe NamePath was examined instead of the last NameSeg.
5391126372Snjl
5392126372Snjl
5393126372Snjl----------------------------------------
5394126372Snjl
5395102550Siwasaki02 October 2002.  Summary of changes for this release.
5396102550Siwasaki
5397114237Snjl
5398114237Snjl1) ACPI CA Core Subsystem version 20021002:
5399102550Siwasaki
5400102550SiwasakiFixed a problem where a store/copy of a string to an existing
5401114237Snjlstring did not always set the string length properly in the
5402114237SnjlString
5403102550Siwasakiobject.
5404102550Siwasaki
5405102550SiwasakiFixed a reported problem with the ToString operator where the
5406102550Siwasakibehavior was identical to the ToHexString operator instead of
5407102550Siwasakijust
5408102550Siwasakisimply converting a raw buffer to a string data type.
5409102550Siwasaki
5410102550SiwasakiFixed a problem where CopyObject and the other "explicit"
5411104470Siwasakiconversion operators were not updating the internal namespace
5412104470Siwasakinode
5413102550Siwasakitype as part of the store operation.
5414102550Siwasaki
5415102550SiwasakiFixed a memory leak during implicit source operand conversion
5416104470Siwasakiwhere the original object was not deleted if it was converted to
5417104470Siwasakia
5418102550Siwasakinew object of a different type.
5419102550Siwasaki
5420102550SiwasakiEnhanced error messages for all problems associated with
5421102550Siwasakinamespace
5422102550Siwasakilookups.  Common procedure generates and prints the lookup name
5423102550Siwasakias
5424102550Siwasakiwell as the formatted status.
5425126372Snjl
5426126372SnjlCompleted implementation of a new design for the Alias support
5427126372Snjlwithin the namespace.  The existing design did not handle the
5428126372Snjlcase
5429126372Snjlwhere a new object was assigned to one of the two names due to
5430126372Snjlthe
5431126372Snjluse of an explicit conversion operator, resulting in the two
5432126372Snjlnames
5433102550Siwasakipointing to two different objects.  The new design simply points
5434102550Siwasakithe Alias name to the original name node - not to the object.
5435114237SnjlThis results in a level of indirection that must be handled in
5436114237Snjlthe
5437126372Snjlname resolution mechanism.
5438126372Snjl
5439102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5440102550Siwasakishown
5441102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
5442102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
5443102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
5444102550Siwasakiversion of the code includes the debug output trace mechanism and
5445102550Siwasakihas a larger code and data size.  Note that these values will
5446114237Snjlvary
5447102550Siwasakidepending on the efficiency of the compiler and the compiler
5448114237Snjloptions used during generation.
5449114237Snjl
5450102550Siwasaki  Previous Release
5451104470Siwasaki    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
5452104470Siwasaki    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
5453104470Siwasaki  Current Release:
5454102550Siwasaki    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
5455102550Siwasaki    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
5456114237Snjl
5457114237Snjl
5458102550Siwasaki2) Linux
5459104470Siwasaki
5460104470SiwasakiInitialize thermal driver's timer before it is used. (Knut
5461104470SiwasakiNeumann)
5462104470Siwasaki
5463102550SiwasakiAllow handling negative celsius values. (Kochi Takayoshi)
5464104470Siwasaki
5465104470SiwasakiFix thermal management and make trip points. R/W (Pavel Machek)
5466126372Snjl
5467126372SnjlFix /proc/acpi/sleep. (P. Christeas)
5468102550Siwasaki
5469114237SnjlIA64 fixes. (David Mosberger)
5470114237Snjl
5471102550SiwasakiFix reversed logic in blacklist code. (Sergio Monteiro Basto)
5472114237Snjl
5473114237SnjlReplace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
5474114237SnjlBrodowski)
5475126372Snjl
5476126372Snjl
5477126372Snjl3) iASL Compiler/Disassembler
5478114237Snjl
5479114237SnjlClarified some warning/error messages.
5480114237Snjl
5481102550Siwasaki
5482102550Siwasaki----------------------------------------
5483114237Snjl18 September 2002.  Summary of changes for this release.
5484114237Snjl
5485102550Siwasaki
5486102550Siwasaki1) ACPI CA Core Subsystem version 20020918:
5487102550Siwasaki
5488114237SnjlFixed a reported problem with reference chaining (via the Index()
5489114237Snjland RefOf() operators) in the ObjectType() and SizeOf()
5490114237Snjloperators.
5491102550SiwasakiThe definition of these operators includes the dereferencing of
5492102550Siwasakiall chained references to return information on the base object.
5493104470Siwasaki
5494104470SiwasakiFixed a problem with stores to indexed package elements - the
5495102550Siwasakiexisting code would not complete the store if an "implicit
5496102550Siwasakiconversion" was not performed.  In other words, if the existing
5497126372Snjlobject (package element) was to be replaced completely, the code
5498126372Snjldidn't handle this case.
5499126372Snjl
5500126372SnjlRelaxed typechecking on the ASL "Scope" operator to allow the
5501126372Snjltarget name to refer to an object of type Integer, String, or
5502126372SnjlBuffer, in addition to the scoping object types (Device,
5503126372Snjlpredefined Scopes, Processor, PowerResource, and ThermalZone.)
5504126372SnjlThis allows existing AML code that has workarounds for a bug in
5505126372SnjlWindows to function properly.  A warning is issued, however.
5506102550SiwasakiThis
5507104470Siwasakiaffects both the AML interpreter and the iASL compiler. Below is
5508104470Siwasakian example of this type of ASL code:
5509102550Siwasaki
5510102550Siwasaki      Name(DEB,0x00)
5511102550Siwasaki      Scope(DEB)
5512102550Siwasaki      {
5513102550Siwasaki
5514102550SiwasakiFixed some reported problems with 64-bit integer support in the
5515104470Siwasakilocal implementation of C library functions (clib.c)
5516104470Siwasaki
5517114237Snjl
5518114237Snjl2) Linux
5519102550Siwasaki
5520104470SiwasakiUse ACPI fix map region instead of IOAPIC region, since it is
5521104470Siwasakiundefined in non-SMP.
5522104470Siwasaki
5523104470SiwasakiEnsure that the SCI has the proper polarity and trigger, even on
5524102550Siwasakisystems that do not have an interrupt override entry in the MADT.
5525114237Snjl
5526114237Snjl2.5 big driver reorganization (Pat Mochel)
5527114237Snjl
5528102550SiwasakiUse early table mapping code from acpitable.c (Andi Kleen)
5529104470Siwasaki
5530114237SnjlNew blacklist entries (Andi Kleen)
5531114237Snjl
5532102550SiwasakiBlacklist improvements. Split blacklist code out into a separate
5533114237Snjlfile. Move checking the blacklist to very early. Previously, we
5534114237Snjlwould use ACPI tables, and then halfway through init, check the
5535104470Siwasakiblacklist -- too late. Now, it's early enough to completely fall-
5536102550Siwasakiback to non-ACPI.
5537104470Siwasaki
5538126372Snjl
5539126372Snjl3) iASL Compiler/Disassembler version 20020918:
5540102550Siwasaki
5541102550SiwasakiFixed a problem where the typechecking code didn't know that an
5542114237Snjlalias could point to a method.  In other words, aliases were not
5543114237Snjlbeing dereferenced during typechecking.
5544102550Siwasaki
5545114237Snjl
5546114237Snjl----------------------------------------
5547114237Snjl29 August 2002.  Summary of changes for this release.
5548114237Snjl
5549114237Snjl1) ACPI CA Core Subsystem Version 20020829:
5550102550Siwasaki
5551114237SnjlIf the target of a Scope() operator already exists, it must be an
5552114237Snjlobject type that actually opens a scope -- such as a Device,
5553114237SnjlMethod, Scope, etc.  This is a fatal runtime error.  Similar
5554114237Snjlerror
5555114237Snjlcheck has been added to the iASL compiler also.
5556102550Siwasaki
5557114237SnjlTightened up the namespace load to disallow multiple names in the
5558114237Snjlsame scope.  This previously was allowed if both objects were of
5559114237Snjlthe same type.  (i.e., a lookup was the same as entering a new
5560114237Snjlname).
5561102550Siwasaki
5562102550Siwasaki
5563126372Snjl2) Linux
5564126372Snjl
5565102550SiwasakiEnsure that the ACPI interrupt has the proper trigger and
5566114237Snjlpolarity.
5567114237Snjl
5568114237Snjllocal_irq_disable is extraneous. (Matthew Wilcox)
5569126372Snjl
5570126372SnjlMake "acpi=off" actually do what it says, and not use the ACPI
5571126372Snjlinterpreter *or* the tables.
5572114237Snjl
5573114237SnjlAdded arch-neutral support for parsing SLIT and SRAT tables
5574114237Snjl(Kochi
5575102550SiwasakiTakayoshi)
5576102550Siwasaki
5577114237Snjl
5578114237Snjl3) iASL Compiler/Disassembler  Version 20020829:
5579102550Siwasaki
5580102550SiwasakiImplemented namepath optimization for name declarations.  For
5581102550Siwasakiexample, a declaration like "Method (\_SB_.ABCD)" would get
5582114237Snjloptimized to "Method (ABCD)" if the declaration is within the
5583114237Snjl\_SB_ scope.  This optimization is in addition to the named
5584102550Siwasakireference path optimization first released in the previous
5585114237Snjlversion. This would seem to complete all possible optimizations
5586114237Snjlfor namepaths within the ASL/AML.
5587102550Siwasaki
5588102550SiwasakiIf the target of a Scope() operator already exists, it must be an
5589102550Siwasakiobject type that actually opens a scope -- such as a Device,
5590102550SiwasakiMethod, Scope, etc.
5591102550Siwasaki
5592102550SiwasakiImplemented a check and warning for unreachable code in the same
5593102550Siwasakiblock below a Return() statement.
5594102550Siwasaki
5595102550SiwasakiFixed a problem where the listing file was not generated if the
5596102550Siwasakicompiler aborted if the maximum error count was exceeded (200).
5597114237Snjl
5598114237SnjlFixed a problem where the typechecking of method return values
5599114237Snjlwas
5600114237Snjlbroken.  This includes the check for a return value when the
5601114237Snjlmethod is invoked as a TermArg (a return value is expected.)
5602102550Siwasaki
5603104470SiwasakiFixed a reported problem where EOF conditions during a quoted
5604104470Siwasakistring or comment caused a fault.
5605126372Snjl
5606126372Snjl
5607126372Snjl----------------------------------------
5608102550Siwasaki15 August 2002.  Summary of changes for this release.
5609114237Snjl
5610114237Snjl1) ACPI CA Core Subsystem Version 20020815:
5611126372Snjl
5612126372SnjlFixed a reported problem where a Store to a method argument that
5613102550Siwasakicontains a reference did not perform the indirect store
5614114237Snjlcorrectly.
5615114237SnjlThis problem was created during the conversion to the new
5616114237Snjlreference object model - the indirect store to a method argument
5617114237Snjlcode was not updated to reflect the new model.
5618102550Siwasaki
5619114237SnjlReworked the ACPI mode change code to better conform to ACPI 2.0,
5620114237Snjlhandle corner cases, and improve code legibility (Kochi
5621102550SiwasakiTakayoshi)
5622104470Siwasaki
5623104470SiwasakiFixed a problem with the pathname parsing for the carat (^)
5624102550Siwasakiprefix.  The heavy use of the carat operator by the new namepath
5625114237Snjloptimization in the iASL compiler uncovered a problem with the
5626114237SnjlAML
5627114237Snjlinterpreter handling of this prefix.  In the case where one or
5628126372Snjlmore carats precede a single nameseg, the nameseg was treated as
5629126372Snjlstandalone and the search rule (to root) was inadvertently
5630126372Snjlapplied.  This could cause both the iASL compiler and the
5631126372Snjlinterpreter to find the wrong object or to miss the error that
5632126372Snjlshould occur if the object does not exist at that exact pathname.
5633126372Snjl
5634114237SnjlFound and fixed the problem where the HP Pavilion DSDT would not
5635114237Snjlload.  This was a relatively minor tweak to the table loading
5636102550Siwasakicode
5637102550Siwasaki(a problem caused by the unexpected encounter with a method
5638102550Siwasakiinvocation not within a control method), but it does not solve
5639102550Siwasakithe
5640102550Siwasakioverall issue of the execution of AML code at the table level.
5641102550SiwasakiThis investigation is still ongoing.
5642104470Siwasaki
5643102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5644102550Siwasakishown
5645102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
5646102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
5647102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
5648104470Siwasakiversion of the code includes the debug output trace mechanism and
5649104470Siwasakihas a larger code and data size.  Note that these values will
5650104470Siwasakivary
5651102550Siwasakidepending on the efficiency of the compiler and the compiler
5652102550Siwasakioptions used during generation.
5653102550Siwasaki
5654102550Siwasaki  Previous Release
5655102550Siwasaki    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
5656102550Siwasaki    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
5657114237Snjl  Current Release:
5658114237Snjl    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
5659114237Snjl    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
5660126372Snjl
5661126372Snjl
5662126372Snjl2) Linux
5663102550Siwasaki
5664114237SnjlRemove redundant slab.h include (Brad Hards)
5665114237Snjl
5666114237SnjlFix several bugs in thermal.c (Herbert Nachtnebel)
5667114237Snjl
5668102550SiwasakiMake CONFIG_ACPI_BOOT work properly (Pavel Machek)
5669114237Snjl
5670114237SnjlChange acpi_system_suspend to use updated irq functions (Pavel
5671114237SnjlMachek)
5672114237Snjl
5673114237SnjlExport acpi_get_firmware_table (Matthew Wilcox)
5674102550Siwasaki
5675102550SiwasakiUse proper root proc entry for ACPI (Kochi Takayoshi)
5676126372Snjl
5677126372SnjlFix early-boot table parsing (Bjorn Helgaas)
5678126372Snjl
5679126372Snjl
5680126372Snjl3) iASL Compiler/Disassembler
5681126372Snjl
5682126372SnjlReworked the compiler options to make them more consistent and to
5683102550Siwasakiuse two-letter options where appropriate.  We were running out of
5684102550Siwasakisensible letters.   This may break some makefiles, so check the
5685102550Siwasakicurrent options list by invoking the compiler with no parameters.
5686114237Snjl
5687114237SnjlCompleted the design and implementation of the ASL namepath
5688102550Siwasakioptimization option for the compiler.  This option optimizes all
5689102550Siwasakireferences to named objects to the shortest possible path.  The
5690102550Siwasakifirst attempt tries to utilize a single nameseg (4 characters)
5691102550Siwasakiand
5692102550Siwasakithe "search-to-root" algorithm used by the interpreter.  If that
5693102550Siwasakicannot be used (because either the name is not in the search path
5694102550Siwasakior there is a conflict with another object with the same name),
5695102550Siwasakithe pathname is optimized using the carat prefix (usually a
5696102550Siwasakishorter string than specifying the entire path from the root.)
5697114237Snjl
5698102550SiwasakiImplemented support to obtain the DSDT from the Windows registry
5699114237Snjl(when the disassembly option is specified with no input file).
5700114237SnjlAdded this code as the implementation for AcpiOsTableOverride in
5701102550Siwasakithe Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
5702114237Snjlutility) to scan memory for the DSDT to the AcpiOsTableOverride
5703114237Snjlfunction in the DOS OSL to make the disassembler truly OS
5704102550Siwasakiindependent.
5705102550Siwasaki
5706102550SiwasakiImplemented a new option to disassemble and compile in one step.
5707102550SiwasakiWhen used without an input filename, this option will grab the
5708102550SiwasakiDSDT from the local machine, disassemble it, and compile it in
5709102550Siwasakione
5710104470Siwasakistep.
5711114237Snjl
5712126372SnjlAdded a warning message for invalid escapes (a backslash followed
5713126372Snjlby any character other than the allowable escapes).  This catches
5714114237Snjlthe quoted string error "\_SB_" (which should be "\\_SB_" ).
5715126372Snjl
5716126372SnjlAlso, there are numerous instances in the ACPI specification
5717126372Snjlwhere
5718102550Siwasakithis error occurs.
5719104470Siwasaki
5720104470SiwasakiAdded a compiler option to disable all optimizations.  This is
5721114237Snjlbasically the "compatibility mode" because by using this option,
5722114237Snjlthe AML code will come out exactly the same as other ASL
5723102550Siwasakicompilers.
5724114237Snjl
5725114237SnjlAdded error messages for incorrectly ordered dependent resource
5726114237Snjlfunctions.  This includes: missing EndDependentFn macro at end of
5727114237Snjldependent resource list, nested dependent function macros (both
5728102550Siwasakistart and end), and missing StartDependentFn macro.  These are
5729104470Siwasakicommon errors that should be caught at compile time.
5730114237Snjl
5731114237SnjlImplemented _OSI support for the disassembler and compiler.  _OSI
5732102550Siwasakimust be included in the namespace for proper disassembly (because
5733102550Siwasakithe disassembler must know the number of arguments.)
5734102550Siwasaki
5735126372SnjlAdded an "optimization" message type that is optional (off by
5736126372Snjldefault).  This message is used for all optimizations - including
5737102550Siwasakiconstant folding, integer optimization, and namepath
5738102550Siwasakioptimization.
5739102550Siwasaki
5740102550Siwasaki----------------------------------------
5741102550Siwasaki25 July 2002.  Summary of changes for this release.
5742114237Snjl
5743114237Snjl
5744114237Snjl1) ACPI CA Core Subsystem Version 20020725:
5745102550Siwasaki
5746102550SiwasakiThe AML Disassembler has been enhanced to produce compilable ASL
5747102550Siwasakicode and has been integrated into the iASL compiler (see below)
5748114237Snjlas
5749126372Snjlwell as the single-step disassembly for the AML debugger and the
5750126372Snjldisassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
5751126372Snjlresource templates and macros are fully supported.  The
5752126372Snjldisassembler has been tested on over 30 different AML files,
5753114237Snjlproducing identical AML when the resulting disassembled ASL file
5754114237Snjlis recompiled with the same ASL compiler.
5755114237Snjl
5756102550SiwasakiModified the Resource Manager to allow zero interrupts and zero
5757104470Siwasakidma channels during the GetCurrentResources call.  This was
5758104470Siwasakicausing problems on some platforms.
5759114237Snjl
5760114237SnjlAdded the AcpiOsRedirectOutput interface to the OSL to simplify
5761114237Snjloutput redirection for the AcpiOsPrintf and AcpiOsVprintf
5762126372Snjlinterfaces.
5763126372Snjl
5764126372SnjlCode and Data Size: Current core subsystem library sizes are
5765126372Snjlshown
5766126372Snjlbelow.  These are the code and data sizes for the acpica.lib
5767114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
5768114237Snjlvalues do not include any ACPI driver or OSPM code.  The debug
5769114237Snjlversion of the code includes the debug output trace mechanism and
5770102550Siwasakihas a larger code and data size.  Note that these values will
5771102550Siwasakivary
5772102550Siwasakidepending on the efficiency of the compiler and the compiler
5773102550Siwasakioptions used during generation.
5774102550Siwasaki
5775102550Siwasaki  Previous Release
5776102550Siwasaki    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
5777102550Siwasaki    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
5778114237Snjl  Current Release:
5779114237Snjl    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
5780114237Snjl    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
5781114237Snjl
5782114237Snjl
5783114237Snjl2) Linux
5784114237Snjl
5785102550SiwasakiFixed a panic in the EC driver (Dominik Brodowski)
5786104470Siwasaki
5787114237SnjlImplemented checksum of the R/XSDT itself during Linux table scan
5788114237Snjl(Richard Schaal)
5789114237Snjl
5790114237Snjl
5791114237Snjl3) iASL compiler
5792102550Siwasaki
5793102550SiwasakiThe AML disassembler is integrated into the compiler.  The "-d"
5794114237Snjloption invokes the disassembler  to completely disassemble an
5795114237Snjlinput AML file, producing as output a text ASL file with the
5796114237Snjlextension ".dsl" (to avoid name collisions with existing .asl
5797114237Snjlsource files.)  A future enhancement will allow the disassembler
5798114237Snjlto obtain the BIOS DSDT from the registry under Windows.
5799102550Siwasaki
5800114237SnjlFixed a problem with the VendorShort and VendorLong resource
5801102550Siwasakidescriptors where an invalid AML sequence was created.
5802102550Siwasaki
5803114237SnjlImplemented a fix for BufferData term in the ASL parser.  It was
5804114237Snjlinadvertently defined twice, allowing invalid syntax to pass and
5805114237Snjlcausing reduction conflicts.
5806126372Snjl
5807126372SnjlFixed a problem where the Ones opcode could get converted to a
5808102550Siwasakivalue of zero if "Ones" was used where a byte, word or dword
5809104470Siwasakivalue
5810104470Siwasakiwas expected.  The 64-bit value is now truncated to the correct
5811102550Siwasakisize with the correct value.
5812114237Snjl
5813114237Snjl
5814114237Snjl
5815102550Siwasaki----------------------------------------
5816114237Snjl02 July 2002.  Summary of changes for this release.
5817126372Snjl
5818126372Snjl
5819102550Siwasaki1) ACPI CA Core Subsystem Version 20020702:
5820102550Siwasaki
5821102550SiwasakiThe Table Manager code has been restructured to add several new
5822102550Siwasakifeatures.  Tables that are not required by the core subsystem
5823102550Siwasaki(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
5824102550Siwasakivalidated in any way and are returned from AcpiGetFirmwareTable
5825102550Siwasakiif
5826114237Snjlrequested.  The AcpiOsTableOverride interface is now called for
5827114237Snjleach table that is loaded by the subsystem in order to allow the
5828102550Siwasakihost to override any table it chooses.  Previously, only the DSDT
5829102550Siwasakicould be overridden.  Added one new files, tbrsdt.c and
5830102550Siwasakitbgetall.c.
5831114237Snjl
5832114237SnjlFixed a problem with the conversion of internal package objects
5833114237Snjlto
5834102550Siwasakiexternal objects (when a package is returned from a control
5835114237Snjlmethod.)  The return buffer length was set to zero instead of the
5836114237Snjlproper length of the package object.
5837102550Siwasaki
5838114237SnjlFixed a reported problem with the use of the RefOf and DeRefOf
5839114237Snjloperators when passing reference arguments to control methods.  A
5840114237Snjlnew type of Reference object is used internally for references
5841102550Siwasakiproduced by the RefOf operator.
5842102550Siwasaki
5843104470SiwasakiAdded additional error messages in the Resource Manager to
5844126372Snjlexplain
5845126372SnjlAE_BAD_DATA errors when they occur during resource parsing.
5846126372Snjl
5847114237SnjlSplit the AcpiEnableSubsystem into two primitives to enable a
5848102550Siwasakifiner granularity initialization sequence.  These two calls
5849104470Siwasakishould
5850104470Siwasakibe called in this order: AcpiEnableSubsystem (flags),
5851102550SiwasakiAcpiInitializeObjects (flags).  The flags parameter remains the
5852102550Siwasakisame.
5853102550Siwasaki
5854102550Siwasaki
5855102550Siwasaki2) Linux
5856102550Siwasaki
5857114237SnjlUpdated the ACPI utilities module to understand the new style of
5858114237Snjlfully resolved package objects that are now returned from the
5859126372Snjlcore
5860126372Snjlsubsystem.  This eliminates errors of the form:
5861126372Snjl
5862102550Siwasaki    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
5863114237Snjl    acpi_utils-0430 [145] acpi_evaluate_reference:
5864114237Snjl        Invalid element in package (not a device reference)
5865114237Snjl
5866114237SnjlThe method evaluation utility uses the new buffer allocation
5867102550Siwasakischeme instead of calling AcpiEvaluate Object twice.
5868102550Siwasaki
5869102550SiwasakiAdded support for ECDT. This allows the use of the Embedded
5870104470Siwasaki
5871114237SnjlController before the namespace has been fully initialized, which
5872114237Snjlis necessary for ACPI 2.0 support, and for some laptops to
5873102550Siwasakiinitialize properly. (Laptops using ECDT are still rare, so only
5874102550Siwasakilimited testing was performed of the added functionality.)
5875102550Siwasaki
5876102550SiwasakiFixed memory leaks in the EC driver.
5877102550Siwasaki
5878102550SiwasakiEliminated a brittle code structure in acpi_bus_init().
5879102550Siwasaki
5880102550SiwasakiEliminated the acpi_evaluate() helper function in utils.c. It is
5881102550Siwasakino longer needed since acpi_evaluate_object can optionally
5882102550Siwasakiallocate memory for the return object.
5883114237Snjl
5884114237SnjlImplemented fix for keyboard hang when getting battery readings
5885114237Snjlon
5886102550Siwasakisome systems (Stephen White)
5887102550Siwasaki
5888102550SiwasakiPCI IRQ routing update (Dominik Brodowski)
5889102550Siwasaki
5890104470SiwasakiFix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
5891126372Snjlsupport
5892126372Snjl
5893102550Siwasaki----------------------------------------
5894102550Siwasaki11 June 2002.  Summary of changes for this release.
5895102550Siwasaki
5896102550Siwasaki
5897102550Siwasaki1) ACPI CA Core Subsystem Version 20020611:
5898102550Siwasaki
5899102550SiwasakiFixed a reported problem where constants such as Zero and One
5900102550Siwasakiappearing within _PRT packages were not handled correctly within
5901102550Siwasakithe resource manager code.  Originally reported against the ASL
5902102550Siwasakicompiler because the code generator now optimizes integers to
5903102550Siwasakitheir minimal AML representation (i.e. AML constants if
5904102550Siwasakipossible.)
5905102550SiwasakiThe _PRT code now handles all AML constant opcodes correctly
5906102550Siwasaki(Zero, One, Ones, Revision).
5907102550Siwasaki
5908102550SiwasakiFixed a problem with the Concatenate operator in the AML
5909102550Siwasakiinterpreter where a buffer result object was incorrectly marked
5910102550Siwasakias
5911102550Siwasakinot fully evaluated, causing a run-time error of AE_AML_INTERNAL.
5912102550Siwasaki
5913102550SiwasakiAll package sub-objects are now fully resolved before they are
5914104470Siwasakireturned from the external ACPI interfaces.  This means that name
5915102550Siwasakistrings are resolved to object handles, and constant operators
5916114237Snjl(Zero, One, Ones, Revision) are resolved to Integers.
5917114237Snjl
5918102550SiwasakiImplemented immediate resolution of the AML Constant opcodes
5919102550Siwasaki(Zero, One, Ones, Revision) to Integer objects upon detection
5920102550Siwasakiwithin the AML stream. This has simplified and reduced the
5921102550Siwasakigenerated code size of the subsystem by eliminating about 10
5922102550Siwasakiswitch statements for these constants (which previously were
5923102550Siwasakicontained in Reference objects.)  The complicating issues are
5924102550Siwasakithat
5925102550Siwasakithe Zero opcode is used as a "placeholder" for unspecified
5926102550Siwasakioptional target operands and stores to constants are defined to
5927102550Siwasakibe
5928102550Siwasakino-ops.
5929102550Siwasaki
5930102550SiwasakiCode and Data Size: Current core subsystem library sizes are
5931102550Siwasakishown
5932102550Siwasakibelow. These are the code and data sizes for the acpica.lib
5933102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
5934102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
5935104470Siwasakiversion of the code includes the debug output trace mechanism and
5936126372Snjlhas a larger code and data size.  Note that these values will
5937126372Snjlvary
5938102550Siwasakidepending on the efficiency of the compiler and the compiler
5939102550Siwasakioptions used during generation.
5940126372Snjl
5941126372Snjl  Previous Release
5942102550Siwasaki    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
5943102550Siwasaki    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
5944102550Siwasaki  Current Release:
5945102550Siwasaki    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
5946126372Snjl    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
5947126372Snjl
5948126372Snjl
5949126372Snjl2) Linux
5950126372Snjl
5951126372Snjl
5952102550SiwasakiAdded preliminary support for obtaining _TRA data for PCI root
5953102550Siwasakibridges (Bjorn Helgaas).
5954102550Siwasaki
5955102550Siwasaki
5956102550Siwasaki3) iASL Compiler Version X2046:
5957102550Siwasaki
5958102550SiwasakiFixed a problem where the "_DDN" reserved name was defined to be
5959102550Siwasakia
5960104470Siwasakicontrol method with one argument.  There are no arguments, and
5961126372Snjl_DDN does not have to be a control method.
5962126372Snjl
5963102550SiwasakiFixed a problem with the Linux version of the compiler where the
5964104470Siwasakisource lines printed with error messages were the wrong lines.
5965114237SnjlThis turned out to be the "LF versus CR/LF" difference between
5966114237SnjlWindows and Unix.  This appears to be the longstanding issue
5967114237Snjlconcerning listing output and error messages.
5968102550Siwasaki
5969114237SnjlFixed a problem with the Linux version of compiler where opcode
5970114237Snjlnames within error messages were wrong.  This was caused by a
5971114237Snjlslight difference in the output of the Flex tool on Linux versus
5972126372SnjlWindows.
5973126372Snjl
5974102550SiwasakiFixed a problem with the Linux compiler where the hex output
5975102550Siwasakifiles
5976102550Siwasakicontained some garbage data caused by an internal buffer overrun.
5977102550Siwasaki
5978102550Siwasaki
5979102550Siwasaki----------------------------------------
5980102550Siwasaki17 May 2002.  Summary of changes for this release.
5981114237Snjl
5982114237Snjl
5983102550Siwasaki1) ACPI CA Core Subsystem Version 20020517:
5984102550Siwasaki
5985102550SiwasakiImplemented a workaround to an BIOS bug discovered on the HP
5986102550SiwasakiOmniBook where the FADT revision number and the table size are
5987102550Siwasakiinconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
5988102550Siwasakinew
5989102550Siwasakibehavior is to fallback to using only the ACPI 1.0 fields of the
5990102550SiwasakiFADT if the table is too small to be a ACPI 2.0 table as claimed
5991102550Siwasakiby the revision number.  Although this is a BIOS bug, this is a
5992102550Siwasakicase where the workaround is simple enough and with no side
5993102550Siwasakieffects, so it seemed prudent to add it.  A warning message is
5994102550Siwasakiissued, however.
5995102550Siwasaki
5996102550SiwasakiImplemented minimum size checks for the fixed-length ACPI tables
5997102550Siwasaki-
5998102550Siwasaki- the FADT and FACS, as well as consistency checks between the
5999102550Siwasakirevision number and the table size.
6000102550Siwasaki
6001102550SiwasakiFixed a reported problem in the table override support where the
6002102550Siwasakinew table pointer was incorrectly treated as a physical address
6003104470Siwasakiinstead of a logical address.
6004114237Snjl
6005114237SnjlEliminated the use of the AE_AML_ERROR exception and replaced it
6006114237Snjlwith more descriptive codes.
6007102550Siwasaki
6008114237SnjlFixed a problem where an exception would occur if an ASL Field
6009114237Snjlwas
6010114237Snjldefined with no named Field Units underneath it (used by some
6011102550Siwasakiindex fields).
6012114237Snjl
6013114237SnjlCode and Data Size: Current core subsystem library sizes are
6014126372Snjlshown
6015126372Snjlbelow.  These are the code and data sizes for the acpica.lib
6016126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
6017102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
6018102550Siwasakiversion of the code includes the debug output trace mechanism and
6019102550Siwasakihas a larger code and data size.  Note that these values will
6020102550Siwasakivary
6021102550Siwasakidepending on the efficiency of the compiler and the compiler
6022102550Siwasakioptions used during generation.
6023102550Siwasaki
6024102550Siwasaki  Previous Release
6025102550Siwasaki    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
6026102550Siwasaki    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
6027102550Siwasaki  Current Release:
6028114237Snjl    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
6029114237Snjl    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
6030102550Siwasaki
6031102550Siwasaki
6032102550Siwasaki
6033102550Siwasaki2) Linux
6034102550Siwasaki
6035102550SiwasakiMuch work done on ACPI init (MADT and PCI IRQ routing support).
6036104470Siwasaki(Paul D. and Dominik Brodowski)
6037104470Siwasaki
6038102550SiwasakiFix PCI IRQ-related panic on boot (Sam Revitch)
6039102550Siwasaki
6040126372SnjlSet BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
6041126372Snjl
6042126372SnjlFix "MHz" typo (Dominik Brodowski)
6043102550Siwasaki
6044104470SiwasakiFix RTC year 2000 issue (Dominik Brodowski)
6045114237Snjl
6046114237SnjlPreclude multiple button proc entries (Eric Brunet)
6047114237Snjl
6048114237SnjlMoved arch-specific code out of include/platform/aclinux.h
6049114237Snjl
6050102550Siwasaki3) iASL Compiler Version X2044:
6051104470Siwasaki
6052104470SiwasakiImplemented error checking for the string used in the EISAID
6053102550Siwasakimacro
6054102550Siwasaki(Usually used in the definition of the _HID object.)  The code
6055102550Siwasakinow
6056102550Siwasakistrictly enforces the PnP format - exactly 7 characters, 3
6057102550Siwasakiuppercase letters and 4 hex digits.
6058102550Siwasaki
6059102550SiwasakiIf a raw string is used in the definition of the _HID object
6060102550Siwasaki(instead of the EISAID macro), the string must contain all
6061102550Siwasakialphanumeric characters (e.g., "*PNP0011" is not allowed because
6062104470Siwasakiof the asterisk.)
6063102550Siwasaki
6064102550SiwasakiImplemented checking for invalid use of ACPI reserved names for
6065102550Siwasakimost of the name creation operators (Name, Device, Event, Mutex,
6066102550SiwasakiOperationRegion, PowerResource, Processor, and ThermalZone.)
6067102550SiwasakiPreviously, this check was only performed for control methods.
6068102550Siwasaki
6069102550SiwasakiImplemented an additional check on the Name operator to emit an
6070102550Siwasakierror if a reserved name that must be implemented in ASL as a
6071102550Siwasakicontrol method is used.  We know that a reserved name must be a
6072102550Siwasakimethod if it is defined with input arguments.
6073102550Siwasaki
6074102550SiwasakiThe warning emitted when a namespace object reference is not
6075102550Siwasakifound
6076102550Siwasakiduring the cross reference phase has been changed into an error.
6077102550SiwasakiThe "External" directive should be used for names defined in
6078102550Siwasakiother
6079102550Siwasakimodules.
6080102550Siwasaki
6081102550Siwasaki
6082102550Siwasaki4) Tools and Utilities
6083102550Siwasaki
6084102550SiwasakiThe 16-bit tools (adump16 and aexec16) have been regenerated and
6085102550Siwasakitested.
6086102550Siwasaki
6087102550SiwasakiFixed a problem with the output of both acpidump and adump16
6088102550Siwasakiwhere
6089102550Siwasakithe indentation of closing parentheses and brackets was not
6090114237Snjl
6091102550Siwasakialigned properly with the parent block.
6092102550Siwasaki
6093102550Siwasaki
6094102550Siwasaki----------------------------------------
6095102550Siwasaki03 May 2002.  Summary of changes for this release.
6096114237Snjl
6097114237Snjl
6098102550Siwasaki1) ACPI CA Core Subsystem Version 20020503:
6099114237Snjl
6100102550SiwasakiAdded support a new OSL interface that allows the host operating
6101102550Siwasaki
6102102550Siwasakisystem software to override the DSDT found in the firmware -
6103102550SiwasakiAcpiOsTableOverride.  With this interface, the OSL can examine
6104102550Siwasakithe
6105102550Siwasakiversion of the firmware DSDT and replace it with a different one
6106102550Siwasakiif desired.
6107102550Siwasaki
6108104470SiwasakiAdded new external interfaces for accessing ACPI registers from
6109104470Siwasakidevice drivers and other system software - AcpiGetRegister and
6110102550SiwasakiAcpiSetRegister.  This was simply an externalization of the
6111104470Siwasakiexisting AcpiHwBitRegister interfaces.
6112104470Siwasaki
6113102550SiwasakiFixed a regression introduced in the previous build where the
6114102550SiwasakiASL/AML CreateField operator always returned an error,
6115102550Siwasaki"destination must be a NS Node".
6116114237Snjl
6117114237SnjlExtended the maximum time (before failure) to successfully enable
6118126372SnjlACPI mode to 3 seconds.
6119126372Snjl
6120126372SnjlCode and Data Size: Current core subsystem library sizes are
6121102550Siwasakishown
6122104470Siwasakibelow.  These are the code and data sizes for the acpica.lib
6123126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
6124126372Snjlvalues do not include any ACPI driver or OSPM code.  The debug
6125102550Siwasakiversion of the code includes the debug output trace mechanism and
6126104470Siwasakihas a larger code and data size.  Note that these values will
6127114237Snjlvary
6128114237Snjldepending on the efficiency of the compiler and the compiler
6129102550Siwasakioptions used during generation.
6130102550Siwasaki
6131104470Siwasaki  Previous Release
6132114237Snjl    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
6133114237Snjl    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
6134114237Snjl  Current Release:
6135114237Snjl    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
6136114237Snjl    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
6137102550Siwasaki
6138104470Siwasaki
6139104470Siwasaki2) Linux
6140102550Siwasaki
6141104470SiwasakiEnhanced ACPI init code for SMP. We are now fully MPS and $PIR-
6142114237Snjlfree. While 3 out of 4 of our in-house systems work fine, the
6143114237Snjllast
6144114237Snjlone still hangs when testing the LAPIC timer.
6145104470Siwasaki
6146102550SiwasakiRenamed many files in 2.5 kernel release to omit "acpi_" from the
6147102550Siwasakiname.
6148102550Siwasaki
6149102550SiwasakiAdded warning on boot for Presario 711FR.
6150114237Snjl
6151114237SnjlSleep improvements (Pavel Machek)
6152102550Siwasaki
6153102550SiwasakiACPI can now be built without CONFIG_PCI enabled.
6154102550Siwasaki
6155102550SiwasakiIA64: Fixed memory map functions (JI Lee)
6156102550Siwasaki
6157114237Snjl
6158114237Snjl3) iASL Compiler Version X2043:
6159114237Snjl
6160102550SiwasakiAdded support to allow the compiler to be integrated into the MS
6161102550SiwasakiVC++ development environment for one-button compilation of single
6162102550Siwasakifiles or entire projects -- with error-to-source-line mapping.
6163114237Snjl
6164126372SnjlImplemented support for compile-time constant folding for the
6165126372SnjlType3, Type4, and Type5 opcodes first defined in the ACPI 2.0
6166114237Snjlspecification.  This allows the ASL writer to use expressions
6167114237Snjlinstead of Integer/Buffer/String constants in terms that must
6168102550Siwasakievaluate to constants at compile time and will also simplify the
6169102550Siwasakiemitted AML in any such sub-expressions that can be folded
6170102550Siwasaki(evaluated at compile-time.)  This increases the size of the
6171102550Siwasakicompiler significantly because a portion of the ACPI CA AML
6172102550Siwasakiinterpreter is included within the compiler in order to pre-
6173102550Siwasakievaluate constant expressions.
6174102550Siwasaki
6175102550Siwasaki
6176102550SiwasakiFixed a problem with the "Unicode" ASL macro that caused the
6177102550Siwasakicompiler to fault.  (This macro is used in conjunction with the
6178102550Siwasaki_STR reserved name.)
6179102550Siwasaki
6180102550SiwasakiImplemented an AML opcode optimization to use the Zero, One, and
6181102550SiwasakiOnes opcodes where possible to further reduce the size of integer
6182102550Siwasakiconstants and thus reduce the overall size of the generated AML
6183102550Siwasakicode.
6184102550Siwasaki
6185102550SiwasakiImplemented error checking for new reserved terms for ACPI
6186102550Siwasakiversion
6187102550Siwasaki2.0A.
6188102550Siwasaki
6189114237SnjlImplemented the -qr option to display the current list of ACPI
6190114237Snjlreserved names known to the compiler.
6191102550Siwasaki
6192102550SiwasakiImplemented the -qc option to display the current list of ASL
6193102550Siwasakioperators that are allowed within constant expressions and can
6194102550Siwasakitherefore be folded at compile time if the operands are
6195102550Siwasakiconstants.
6196104470Siwasaki
6197126372Snjl
6198126372Snjl4) Documentation
6199102550Siwasaki
6200114237SnjlUpdated the Programmer's Reference for new interfaces, data
6201114237Snjltypes,
6202114237Snjland memory allocation model options.
6203114237Snjl
6204102550SiwasakiUpdated the iASL Compiler User Reference to apply new format and
6205102550Siwasakiadd information about new features and options.
6206102550Siwasaki
6207102550Siwasaki----------------------------------------
6208102550Siwasaki19 April 2002.  Summary of changes for this release.
6209102550Siwasaki
6210104470Siwasaki1) ACPI CA Core Subsystem Version 20020419:
6211102550Siwasaki
6212102550SiwasakiThe source code base for the Core Subsystem has been completely
6213102550Siwasakicleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
6214114237Snjlversions.  The Lint option files used are included in the
6215114237Snjl/acpi/generate/lint directory.
6216114237Snjl
6217114237SnjlImplemented enhanced status/error checking across the entire
6218114237SnjlHardware manager subsystem.  Any hardware errors (reported from
6219102550Siwasakithe OSL) are now bubbled up and will abort a running control
6220104470Siwasakimethod.
6221126372Snjl
6222126372Snjl
6223114237SnjlFixed a problem where the per-ACPI-table integer width (32 or 64)
6224114237Snjlwas stored only with control method nodes, causing a fault when
6225114237Snjlnon-control method code was executed during table loading.  The
6226102550Siwasakisolution implemented uses a global variable to indicate table
6227102550Siwasakiwidth across the entire ACPI subsystem.  Therefore, ACPI CA does
6228102550Siwasakinot support mixed integer widths across different ACPI tables
6229102550Siwasaki(DSDT, SSDT).
6230114237Snjl
6231114237SnjlFixed a problem where NULL extended fields (X fields) in an ACPI
6232114237Snjl2.0 ACPI FADT caused the table load to fail.  Although the
6233114237Snjlexisting ACPI specification is a bit fuzzy on this topic, the new
6234102550Siwasakibehavior is to fall back on a ACPI 1.0 field if the corresponding
6235102550SiwasakiACPI 2.0 X field is zero (even though the table revision
6236114237Snjlindicates
6237114237Snjla full ACPI 2.0 table.)  The ACPI specification will be updated
6238114237Snjlto
6239114237Snjlclarify this issue.
6240102550Siwasaki
6241114237SnjlFixed a problem with the SystemMemory operation region handler
6242114237Snjlwhere memory was always accessed byte-wise even if the AML-
6243102550Siwasakispecified access width was larger than a byte.  This caused
6244102550Siwasakiproblems on systems with memory-mapped I/O.  Memory is now
6245102550Siwasakiaccessed with the width specified.  On systems that do not
6246114237Snjlsupport
6247114237Snjlnon-aligned transfers, a check is made to guarantee proper
6248102550Siwasakiaddress
6249102550Siwasakialignment before proceeding in order to avoid an AML-caused
6250102550Siwasakialignment fault within the kernel.
6251102550Siwasaki
6252114237Snjl
6253114237SnjlFixed a problem with the ExtendedIrq resource where only one byte
6254102550Siwasakiof the 4-byte Irq field was extracted.
6255102550Siwasaki
6256102550SiwasakiFixed the AcpiExDigitsNeeded() procedure to support _UID.  This
6257102550Siwasakifunction was out of date and required a rewrite.
6258104470Siwasaki
6259104470SiwasakiCode and Data Size: Current core subsystem library sizes are
6260102550Siwasakishown
6261102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
6262102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
6263102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
6264102550Siwasakiversion of the code includes the debug output trace mechanism and
6265102550Siwasakihas a larger code and data size.  Note that these values will
6266102550Siwasakivary
6267102550Siwasakidepending on the efficiency of the compiler and the compiler
6268102550Siwasakioptions used during generation.
6269102550Siwasaki
6270102550Siwasaki  Previous Release
6271114237Snjl    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
6272114237Snjl    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
6273114237Snjl  Current Release:
6274102550Siwasaki    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
6275102550Siwasaki    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
6276114237Snjl
6277114237Snjl
6278114237Snjl2) Linux
6279114237Snjl
6280114237SnjlPCI IRQ routing fixes (Dominik Brodowski)
6281102550Siwasaki
6282102550Siwasaki
6283102550Siwasaki3) iASL Compiler Version X2042:
6284114237Snjl
6285126372SnjlImplemented an additional compile-time error check for a field
6286126372Snjlunit whose size + minimum access width would cause a run-time
6287102550Siwasakiaccess beyond the end-of-region.  Previously, only the field size
6288114237Snjlitself was checked.
6289114237Snjl
6290114237SnjlThe Core subsystem and iASL compiler now share a common parse
6291102550Siwasakiobject in preparation for compile-time evaluation of the type
6292102550Siwasaki3/4/5 ASL operators.
6293102550Siwasaki
6294102550Siwasaki
6295102550Siwasaki----------------------------------------
6296102550SiwasakiSummary of changes for this release: 03_29_02
6297126372Snjl
6298126372Snjl1) ACPI CA Core Subsystem Version 20020329:
6299126372Snjl
6300114237SnjlImplemented support for late evaluation of TermArg operands to
6301102550SiwasakiBuffer and Package objects.  This allows complex expressions to
6302102550Siwasakibe
6303102550Siwasakiused in the declarations of these object types.
6304102550Siwasaki
6305102550SiwasakiFixed an ACPI 1.0 compatibility issue when reading Fields. In
6306102550SiwasakiACPI
6307102550Siwasaki1.0, if the field was larger than 32 bits, it was returned as a
6308102550Siwasakibuffer - otherwise it was returned as an integer.  In ACPI 2.0,
6309102550Siwasakithe field is returned as a buffer only if the field is larger
6310102550Siwasakithan
6311114237Snjl64 bits.  The TableRevision is now considered when making this
6312114237Snjlconversion to avoid incompatibility with existing ASL code.
6313114237Snjl
6314114237SnjlImplemented logical addressing for AcpiOsGetRootPointer.  This
6315102550Siwasakiallows an RSDP with either a logical or physical address.  With
6316102550Siwasakithis support, the host OS can now override all ACPI tables with
6317102550Siwasakione logical RSDP.  Includes implementation of  "typed" pointer
6318102550Siwasakisupport to allow a common data type for both physical and logical
6319102550Siwasakipointers internally.  This required a change to the
6320102550SiwasakiAcpiOsGetRootPointer interface.
6321102550Siwasaki
6322104470SiwasakiImplemented the use of ACPI 2.0 Generic Address Structures for
6323104470Siwasakiall
6324104470SiwasakiGPE, Fixed Event, and PM Timer I/O.  This allows the use of
6325102550Siwasakimemory
6326102550Siwasakimapped I/O for these ACPI features.
6327102550Siwasaki
6328102550SiwasakiInitialization now ignores not only non-required tables (All
6329102550Siwasakitables other than the FADT, FACS, DSDT, and SSDTs), but also does
6330114237Snjlnot validate the table headers of unrecognized tables.
6331114237Snjl
6332114237SnjlFixed a problem where a notify handler could only be
6333114237Snjlinstalled/removed on an object of type Device.  All "notify"
6334114237Snjl
6335114237Snjlobjects are now supported -- Devices, Processor, Power, and
6336114237SnjlThermal.
6337102550Siwasaki
6338102550SiwasakiRemoved most verbosity from the ACPI_DB_INFO debug level.  Only
6339102550Siwasakicritical information is returned when this debug level is
6340102550Siwasakienabled.
6341102550Siwasaki
6342102550SiwasakiCode and Data Size: Current core subsystem library sizes are
6343102550Siwasakishown
6344102550Siwasakibelow.  These are the code and data sizes for the acpica.lib
6345102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these
6346102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
6347126372Snjlversion of the code includes the debug output trace mechanism and
6348126372Snjlhas a larger code and data size.  Note that these values will
6349126372Snjlvary
6350114237Snjldepending on the efficiency of the compiler and the compiler
6351102550Siwasakioptions used during generation.
6352114237Snjl
6353114237Snjl  Previous Release
6354114237Snjl    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
6355102550Siwasaki    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
6356102550Siwasaki  Current Release:
6357104470Siwasaki    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
6358114237Snjl    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
6359114237Snjl
6360102550Siwasaki
6361102550Siwasaki2) Linux:
6362102550Siwasaki
6363114237SnjlThe processor driver (acpi_processor.c) now fully supports ACPI
6364114237Snjl2.0-based processor performance control (e.g. Intel(R)
6365114237SnjlSpeedStep(TM) technology) Note that older laptops that only have
6366102550Siwasakithe Intel "applet" interface are not supported through this.  The
6367114237Snjl'limit' and 'performance' interface (/proc) are fully functional.
6368114237Snjl[Note that basic policy for controlling performance state
6369114237Snjltransitions will be included in the next version of ospmd.]  The
6370102550Siwasakiidle handler was modified to more aggressively use C2, and PIIX4
6371114237Snjlerrata handling underwent a complete overhaul (big thanks to
6372114237SnjlDominik Brodowski).
6373102550Siwasaki
6374102550SiwasakiAdded support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
6375102550Siwasakibased devices in the ACPI namespace are now dynamically bound
6376102550Siwasaki(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
6377102550SiwasakiThis allows, among other things, ACPI to resolve bus numbers for
6378104470Siwasakisubordinate PCI bridges.
6379126372Snjl
6380126372SnjlEnhanced PCI IRQ routing to get the proper bus number for _PRT
6381126372Snjlentries defined underneath PCI bridges.
6382126372Snjl
6383126372SnjlAdded IBM 600E to bad bios list due to invalid _ADR value for
6384102550SiwasakiPIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
6385104470Siwasaki
6386126372SnjlIn the process of adding full MADT support (e.g. IOAPIC) for IA32
6387126372Snjl(acpi.c, mpparse.c) -- stay tuned.
6388102550Siwasaki
6389104470SiwasakiAdded back visual differentiation between fixed-feature and
6390126372Snjlcontrol-method buttons in dmesg.  Buttons are also subtyped (e.g.
6391126372Snjlbutton/power/PWRF) to simplify button identification.
6392126372Snjl
6393102550SiwasakiWe no longer use -Wno-unused when compiling debug. Please ignore
6394114237Snjlany "_THIS_MODULE defined but not used" messages.
6395102550Siwasaki
6396114237SnjlCan now shut down the system using "magic sysrq" key.
6397114237Snjl
6398102550Siwasaki
6399104470Siwasaki3) iASL Compiler version 2041:
6400104470Siwasaki
6401102550SiwasakiFixed a problem where conversion errors for hex/octal/decimal
6402114237Snjlconstants were not reported.
6403114237Snjl
6404102550SiwasakiImplemented a fix for the General Register template Address
6405102550Siwasakifield.
6406102550SiwasakiThis field was 8 bits when it should be 64.
6407102550Siwasaki
6408114237SnjlFixed a problem where errors/warnings were no longer being
6409114237Snjlemitted
6410102550Siwasakiwithin the listing output file.
6411104470Siwasaki
6412104470SiwasakiImplemented the ACPI 2.0A restriction on ACPI Table Signatures to
6413102550Siwasakiexactly 4 characters, alphanumeric only.
6414104470Siwasaki
6415104470Siwasaki
6416102550Siwasaki
6417114237Snjl
6418114237Snjl----------------------------------------
6419102550SiwasakiSummary of changes for this release: 03_08_02
6420102550Siwasaki
6421102550Siwasaki
6422102550Siwasaki1) ACPI CA Core Subsystem Version 20020308:
6423102550Siwasaki
6424102550SiwasakiFixed a problem with AML Fields where the use of the "AccessAny"
6425102550Siwasakikeyword could cause an interpreter error due to attempting to
6426102550Siwasakiread
6427102550Siwasakior write beyond the end of the parent Operation Region.
6428102550Siwasaki
6429102550SiwasakiFixed a problem in the SystemMemory Operation Region handler
6430102550Siwasakiwhere
6431102550Siwasakian attempt was made to map memory beyond the end of the region.
6432102550SiwasakiThis was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
6433102550Siwasakierrors on some Linux systems.
6434102550Siwasaki
6435102550SiwasakiFixed a problem where the interpreter/namespace "search to root"
6436114237Snjlalgorithm was not functioning for some object types.  Relaxed the
6437114237Snjlinternal restriction on the search to allow upsearches for all
6438114237Snjlexternal object types as well as most internal types.
6439114237Snjl
6440114237Snjl
6441102550Siwasaki2) Linux:
6442104470Siwasaki
6443104470SiwasakiWe now use safe_halt() macro versus individual calls to sti |
6444102550Siwasakihlt.
6445114237Snjl
6446114237SnjlWriting to the processor limit interface should now work. "echo
6447102550Siwasaki1"
6448102550Siwasakiwill increase the limit, 2 will decrease, and 0 will reset to the
6449102550Siwasaki
6450102550Siwasakidefault.
6451102550Siwasaki
6452114237Snjl
6453114237Snjl3) ASL compiler:
6454114237Snjl
6455102550SiwasakiFixed segfault on Linux version.
6456104470Siwasaki
6457126372Snjl
6458126372Snjl----------------------------------------
6459126372SnjlSummary of changes for this release: 02_25_02
6460102550Siwasaki
6461114237Snjl1) ACPI CA Core Subsystem:
6462102550Siwasaki
6463102550Siwasaki
6464102550SiwasakiFixed a problem where the GPE bit masks were not initialized
6465102550Siwasakiproperly, causing erratic GPE behavior.
6466102550Siwasaki
6467104470SiwasakiImplemented limited support for multiple calling conventions.
6468126372SnjlThe
6469126372Snjlcode can be generated with either the VPL (variable parameter
6470126372Snjllist, or "C") convention, or the FPL (fixed parameter list, or
6471126372Snjl"Pascal") convention.  The core subsystem is about 3.4% smaller
6472126372Snjlwhen generated with FPL.
6473102550Siwasaki
6474102550Siwasaki
6475102550Siwasaki2) Linux
6476102550Siwasaki
6477102550SiwasakiRe-add some /proc/acpi/event functionality that was lost during
6478102550Siwasakithe rewrite
6479104470Siwasaki
6480126372SnjlResolved issue with /proc events for fixed-feature buttons
6481126372Snjlshowing
6482104470Siwasakiup as the system device.
6483126372Snjl
6484126372SnjlFixed checks on C2/C3 latencies to be inclusive of maximum
6485102550Siwasakivalues.
6486102550Siwasaki
6487102550SiwasakiReplaced AE_ERRORs in acpi_osl.c with more specific error codes.
6488102550Siwasaki
6489114237SnjlChanged ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
6490114237Snjl
6491102550SiwasakiFixed limit interface & usage to fix bugs with passive cooling
6492102550Siwasakihysterisis.
6493104470Siwasaki
6494114237SnjlRestructured PRT support.
6495102550Siwasaki
6496114237Snjl
6497114237Snjl----------------------------------------
6498102550SiwasakiSummary of changes for this label: 02_14_02
6499102550Siwasaki
6500102550Siwasaki
6501102550Siwasaki1) ACPI CA Core Subsystem:
6502102550Siwasaki
6503114237SnjlImplemented support in AcpiLoadTable to allow loading of FACS and
6504114237SnjlFADT tables.
6505102550Siwasaki
6506102550SiwasakiSuport for the now-obsolete interim 0.71 64-bit ACPI tables has
6507102550Siwasakibeen removed.  All 64-bit platforms should be migrated to the
6508102550SiwasakiACPI
6509102550Siwasaki2.0 tables.  The actbl71.h header has been removed from the
6510102550Siwasakisource
6511102550Siwasakitree.
6512114237Snjl
6513126372SnjlAll C macros defined within the subsystem have been prefixed with
6514126372Snjl"ACPI_" to avoid collision with other system include files.
6515102550Siwasaki
6516104470SiwasakiRemoved the return value for the two AcpiOsPrint interfaces,
6517104470Siwasakisince
6518102550Siwasakiit is never used and causes lint warnings for ignoring the return
6519102550Siwasakivalue.
6520102550Siwasaki
6521102550SiwasakiAdded error checking to all internal mutex acquire and release
6522102550Siwasakicalls.  Although a failure from one of these interfaces is
6523102550Siwasakiprobably a fatal system error, these checks will cause the
6524114237Snjlimmediate abort of the currently executing method or interface.
6525114237Snjl
6526126372SnjlFixed a problem where the AcpiSetCurrentResources interface could
6527126372Snjlfault.  This was a side effect of the deployment of the new
6528126372Snjlmemory
6529102550Siwasakiallocation model.
6530114237Snjl
6531114237SnjlFixed a couple of problems with the Global Lock support
6532114237Snjlintroduced
6533114237Snjlin the last major build.  The "common" (1.0/2.0) internal FACS
6534114237Snjlwas
6535102550Siwasakibeing overwritten with the FACS signature and clobbering the
6536104470SiwasakiGlobal Lock pointer.  Also, the actual firmware FACS was being
6537104470Siwasakiunmapped after construction of the "common" FACS, preventing
6538102550Siwasakiaccess to the actual Global Lock field within it.  The "common"
6539114237Snjlinternal FACS is no longer installed as an actual ACPI table; it
6540114237Snjlis used simply as a global.
6541114237Snjl
6542114237SnjlCode and Data Size: Current core subsystem library sizes are
6543102550Siwasakishown
6544114237Snjlbelow.  These are the code and data sizes for the acpica.lib
6545114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
6546102550Siwasakivalues do not include any ACPI driver or OSPM code.  The debug
6547102550Siwasakiversion of the code includes the debug output trace mechanism and
6548102550Siwasakihas a larger code and data size.  Note that these values will
6549102550Siwasakivary
6550102550Siwasakidepending on the efficiency of the compiler and the compiler
6551114237Snjloptions used during generation.
6552114237Snjl
6553114237Snjl  Previous Release (02_07_01)
6554126372Snjl    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
6555126372Snjl    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
6556102550Siwasaki  Current Release:
6557102550Siwasaki    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
6558104470Siwasaki    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
6559114237Snjl
6560114237Snjl
6561102550Siwasaki2) Linux
6562114237Snjl
6563114237SnjlUpdated Linux-specific code for core macro and OSL interface
6564114237Snjlchanges described above.
6565114237Snjl
6566126372SnjlImproved /proc/acpi/event. It now can be opened only once and has
6567126372Snjlproper poll functionality.
6568114237Snjl
6569114237SnjlFixed and restructured power management (acpi_bus).
6570114237Snjl
6571114237SnjlOnly create /proc "view by type" when devices of that class
6572102550Siwasakiexist.
6573114237Snjl
6574114237SnjlFixed "charging/discharging" bug (and others) in acpi_battery.
6575104470Siwasaki
6576102550SiwasakiImproved thermal zone code.
6577102550Siwasaki
6578102550Siwasaki
6579102550Siwasaki3) ASL Compiler, version X2039:
6580102550Siwasaki
6581102550Siwasaki
6582102550SiwasakiImplemented the new compiler restriction on ASL String hex/octal
6583102550Siwasakiescapes to non-null, ASCII values.  An error results if an
6584102550Siwasakiinvalid
6585102550Siwasakivalue is used.  (This will require an ACPI 2.0 specification
6586102550Siwasakichange.)
6587126372Snjl
6588126372SnjlAML object labels that are output to the optional C and ASM
6589126372Snjlsource
6590126372Snjlare now prefixed with both the ACPI table signature and table ID
6591114237Snjlto help guarantee uniqueness within a large BIOS project.
6592102550Siwasaki
6593114237Snjl
6594114237Snjl----------------------------------------
6595114237SnjlSummary of changes for this label: 02_01_02
6596114237Snjl
6597114237Snjl1) ACPI CA Core Subsystem:
6598114237Snjl
6599102550SiwasakiACPI 2.0 support is complete in the entire Core Subsystem and the
6600102550SiwasakiASL compiler. All new ACPI 2.0 operators are implemented and all
6601102550Siwasakiother changes for ACPI 2.0 support are complete.  With
6602102550Siwasakisimultaneous code and data optimizations throughout the
6603102550Siwasakisubsystem,
6604102550SiwasakiACPI 2.0 support has been implemented with almost no additional
6605102550Siwasakicost in terms of code and data size.
6606102550Siwasaki
6607114237SnjlImplemented a new mechanism for allocation of return buffers.  If
6608114237Snjlthe buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
6609114237Snjlbe allocated on behalf of the caller.  Consolidated all return
6610114237Snjlbuffer validation and allocation to a common procedure.  Return
6611114237Snjlbuffers will be allocated via the primary OSL allocation
6612114237Snjlinterface
6613102550Siwasakisince it appears that a separate pool is not needed by most
6614104470Siwasakiusers.
6615104470SiwasakiIf a separate pool is required for these buffers, the caller can
6616114237Snjlstill use the original mechanism and pre-allocate the buffer(s).
6617114237Snjl
6618114237SnjlImplemented support for string operands within the DerefOf
6619102550Siwasakioperator.
6620102550Siwasaki
6621102550SiwasakiRestructured the Hardware and Event managers to be table driven,
6622102550Siwasakisimplifying the source code and reducing the amount of generated
6623114237Snjlcode.
6624114237Snjl
6625114237SnjlSplit the common read/write low-level ACPI register bitfield
6626114237Snjlprocedure into a separate read and write, simplifying the code
6627114237Snjlconsiderably.
6628114237Snjl
6629114237SnjlObsoleted the AcpiOsCallocate OSL interface.  This interface was
6630102550Siwasakiused only a handful of times and didn't have enough critical mass
6631102550Siwasakifor a separate interface.  Replaced with a common calloc
6632102550Siwasakiprocedure
6633114237Snjlin the core.
6634102550Siwasaki
6635102550SiwasakiFixed a reported problem with the GPE number mapping mechanism
6636126372Snjlthat allows GPE1 numbers to be non-contiguous with GPE0.
6637126372SnjlReorganized the GPE information and shrunk a large array that was
6638126372Snjloriginally large enough to hold info for all possible GPEs (256)
6639126372Snjlto simply large enough to hold all GPEs up to the largest GPE
6640126372Snjlnumber on the machine.
6641102550Siwasaki
6642104470SiwasakiFixed a reported problem with resource structure alignment on 64-
6643104470Siwasakibit platforms.
6644102550Siwasaki
6645104470SiwasakiChanged the AcpiEnableEvent and AcpiDisableEvent external
6646114237Snjlinterfaces to not require any flags for the common case of
6647114237Snjlenabling/disabling a GPE.
6648114237Snjl
6649102550SiwasakiImplemented support to allow a "Notify" on a Processor object.
6650102550Siwasaki
6651114237SnjlMost TBDs in comments within the source code have been resolved
6652114237Snjland eliminated.
6653126372Snjl
6654126372Snjl
6655102550SiwasakiFixed a problem in the interpreter where a standalone parent
6656102550Siwasakiprefix (^) was not handled correctly in the interpreter and
6657102550Siwasakidebugger.
6658102550Siwasaki
6659102550SiwasakiRemoved obsolete and unnecessary GPE save/restore code.
6660102550Siwasaki
6661114237SnjlImplemented Field support in the ASL Load operator.  This allows
6662114237Snjla
6663126372Snjltable to be loaded from a named field, in addition to loading a
6664126372Snjltable directly from an Operation Region.
6665102550Siwasaki
6666102550SiwasakiImplemented timeout and handle support in the external Global
6667114237SnjlLock
6668114237Snjlinterfaces.
6669114237Snjl
6670114237SnjlFixed a problem in the AcpiDump utility where pathnames were no
6671102550Siwasakilonger being generated correctly during the dump of named
6672102550Siwasakiobjects.
6673102550Siwasaki
6674102550SiwasakiModified the AML debugger to give a full display of if/while
6675114237Snjlpredicates instead of just one AML opcode at a time.  (The
6676114237Snjlpredicate can have several nested ASL statements.)  The old
6677114237Snjlmethod
6678114237Snjlwas confusing during single stepping.
6679114237Snjl
6680114237SnjlCode and Data Size: Current core subsystem library sizes are
6681114237Snjlshown
6682126372Snjlbelow. These are the code and data sizes for the acpica.lib
6683126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these
6684126372Snjlvalues do not include any ACPI driver or OSPM code.  The debug
6685102550Siwasakiversion of the code includes the debug output trace mechanism and
6686104470Siwasakihas a larger code and data size.  Note that these values will
6687114237Snjlvary
6688114237Snjldepending on the efficiency of the compiler and the compiler
6689102550Siwasakioptions used during generation.
6690102550Siwasaki
6691102550Siwasaki  Previous Release (12_18_01)
6692102550Siwasaki     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
6693102550Siwasaki     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
6694114237Snjl   Current Release:
6695114237Snjl     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
6696126372Snjl     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
6697126372Snjl
6698114237Snjl2) Linux
6699114237Snjl
6700126372Snjl Implemented fix for PIIX reverse throttling errata (Processor
6701126372Snjldriver)
6702126372Snjl
6703126372SnjlAdded new Limit interface (Processor and Thermal drivers)
6704126372Snjl
6705102550SiwasakiNew thermal policy (Thermal driver)
6706102550Siwasaki
6707102550SiwasakiMany updates to /proc
6708102550Siwasaki
6709102550SiwasakiBattery "low" event support (Battery driver)
6710102550Siwasaki
6711114237SnjlSupports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
6712114237Snjl
6713102550SiwasakiIA32 - IA64 initialization unification, no longer experimental
6714102550Siwasaki
6715102550SiwasakiMenuconfig options redesigned
6716
67173) ASL Compiler, version X2037:
6718
6719Implemented several new output features to simplify integration
6720of
6721AML code into  firmware: 1) Output the AML in C source code with
6722labels for each named ASL object.  The    original ASL source
6723code
6724is interleaved as C comments. 2) Output the AML in ASM source
6725code
6726with labels and interleaved ASL    source. 3) Output the AML in
6727raw hex table form, in either C or ASM.
6728
6729Implemented support for optional string parameters to the
6730LoadTable operator.
6731
6732Completed support for embedded escape sequences within string
6733literals.  The compiler now supports all single character escapes
6734as well as the Octal and Hex escapes.  Note: the insertion of a
6735null byte into a string literal (via the hex/octal escape) causes
6736the string to be immediately terminated.  A warning is issued.
6737
6738Fixed a problem where incorrect AML was generated for the case
6739where an ASL namepath consists of a single parent prefix (
6740
6741) with no trailing name segments.
6742
6743The compiler has been successfully generated with a 64-bit C
6744compiler.
6745
6746
6747
6748
6749----------------------------------------
6750Summary of changes for this label: 12_18_01
6751
67521) Linux
6753
6754Enhanced blacklist with reason and severity fields. Any table's
6755signature may now be used to identify a blacklisted system.
6756
6757Call _PIC control method to inform the firmware which interrupt
6758model the OS is using. Turn on any disabled link devices.
6759
6760Cleaned up busmgr /proc error handling (Andreas Dilger)
6761
6762 2) ACPI CA Core Subsystem:
6763
6764Implemented ACPI 2.0 semantics for the "Break" operator (Exit
6765from
6766while loop)
6767
6768Completed implementation of the ACPI 2.0 "Continue",
6769"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
6770operators.  All new ACPI 2.0 operators are now implemented in
6771both
6772the ASL compiler and the AML interpreter.  The only remaining
6773ACPI
67742.0 task is support for the String data type in the DerefOf
6775operator.  Fixed a problem with AcquireMutex where the status
6776code
6777was lost if the caller had to actually wait for the mutex.
6778
6779Increased the maximum ASL Field size from 64K bits to 4G bits.
6780
6781Completed implementation of the external Global Lock interfaces -
6782-
6783AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
6784Handler parameters were added.
6785
6786Completed another pass at removing warnings and issues when
6787compiling with 64-bit compilers.  The code now compiles cleanly
6788with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
6789add and subtract (diff) macros have changed considerably.
6790
6791
6792Created and deployed a new ACPI_SIZE type that is 64-bits wide on
679364-bit platforms, 32-bits on all others.  This type is used
6794wherever memory allocation and/or the C sizeof() operator is
6795used,
6796and affects the OSL memory allocation interfaces AcpiOsAllocate
6797and AcpiOsCallocate.
6798
6799Implemented sticky user breakpoints in the AML debugger.
6800
6801Code and Data Size: Current core subsystem library sizes are
6802shown
6803below. These are the code and data sizes for the acpica.lib
6804produced by the Microsoft Visual C++ 6.0 compiler, and these
6805values do not include any ACPI driver or OSPM code.  The debug
6806version of the code includes the debug output trace mechanism and
6807has a larger code and data size. Note that these values will vary
6808depending on the efficiency of the compiler and the compiler
6809options used during generation.
6810
6811  Previous Release (12_05_01)
6812     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
6813     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
6814   Current Release:
6815     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
6816     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
6817
6818 3) ASL Compiler, version X2034:
6819
6820Now checks for (and generates an error if detected) the use of a
6821Break or Continue statement without an enclosing While statement.
6822
6823
6824Successfully generated the compiler with the Intel 64-bit C
6825compiler.
6826
6827 ----------------------------------------
6828Summary of changes for this label: 12_05_01
6829
6830 1) ACPI CA Core Subsystem:
6831
6832The ACPI 2.0 CopyObject operator is fully implemented.  This
6833operator creates a new copy of an object (and is also used to
6834bypass the "implicit conversion" mechanism of the Store
6835operator.)
6836
6837The ACPI 2.0 semantics for the SizeOf operator are fully
6838implemented.  The change is that performing a SizeOf on a
6839reference object causes an automatic dereference of the object to
6840tha actual value before the size is evaluated. This behavior was
6841undefined in ACPI 1.0.
6842
6843The ACPI 2.0 semantics for the Extended IRQ resource descriptor
6844have been implemented.  The interrupt polarity and mode are now
6845independently set.
6846
6847Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
6848appearing in Package objects were not properly converted to
6849integers when the internal Package was converted to an external
6850object (via the AcpiEvaluateObject interface.)
6851
6852Fixed a problem with the namespace object deletion mechanism for
6853objects created by control methods.  There were two parts to this
6854problem: 1) Objects created during the initialization phase
6855method
6856parse were not being deleted, and 2) The object owner ID
6857mechanism
6858to track objects was broken.
6859
6860Fixed a problem where the use of the ASL Scope operator within a
6861control method would result in an invalid opcode exception.
6862
6863Fixed a problem introduced in the previous label where the buffer
6864length required for the _PRT structure was not being returned
6865correctly.
6866
6867Code and Data Size: Current core subsystem library sizes are
6868shown
6869below. These are the code and data sizes for the acpica.lib
6870produced by the Microsoft Visual C++ 6.0 compiler, and these
6871values do not include any ACPI driver or OSPM code.  The debug
6872version of the code includes the debug output trace mechanism and
6873has a larger code and data size.  Note that these values will
6874vary
6875depending on the efficiency of the compiler and the compiler
6876options used during generation.
6877
6878  Previous Release (11_20_01)
6879     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
6880     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
6881
6882  Current Release:
6883     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
6884     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
6885
6886 2) Linux:
6887
6888Updated all files to apply cleanly against 2.4.16.
6889
6890Added basic PCI Interrupt Routing Table (PRT) support for IA32
6891(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
6892version supports both static and dyanmic PRT entries, but dynamic
6893entries are treated as if they were static (not yet
6894reconfigurable).  Architecture- specific code to use this data is
6895absent on IA32 but should be available shortly.
6896
6897Changed the initialization sequence to start the ACPI interpreter
6898(acpi_init) prior to initialization of the PCI driver (pci_init)
6899in init/main.c.  This ordering is required to support PRT and
6900facilitate other (future) enhancement.  A side effect is that the
6901ACPI bus driver and certain device drivers can no longer be
6902loaded
6903as modules.
6904
6905Modified the 'make menuconfig' options to allow PCI Interrupt
6906Routing support to be included without the ACPI Bus and other
6907device drivers.
6908
6909 3) ASL Compiler, version X2033:
6910
6911Fixed some issues with the use of the new CopyObject and
6912DataTableRegion operators.  Both are fully functional.
6913
6914 ----------------------------------------
6915Summary of changes for this label: 11_20_01
6916
6917 20 November 2001.  Summary of changes for this release.
6918
6919 1) ACPI CA Core Subsystem:
6920
6921Updated Index support to match ACPI 2.0 semantics.  Storing a
6922Integer, String, or Buffer to an Index of a Buffer will store
6923only
6924the least-significant byte of the source to the Indexed buffer
6925byte.  Multiple writes are not performed.
6926
6927Fixed a problem where the access type used in an AccessAs ASL
6928operator was not recorded correctly into the field object.
6929
6930Fixed a problem where ASL Event objects were created in a
6931signalled state. Events are now created in an unsignalled state.
6932
6933The internal object cache is now purged after table loading and
6934initialization to reduce the use of dynamic kernel memory -- on
6935the assumption that object use is greatest during the parse phase
6936of the entire table (versus the run-time use of individual
6937control
6938methods.)
6939
6940ACPI 2.0 variable-length packages are now fully operational.
6941
6942Code and Data Size: Code and Data optimizations have permitted
6943new
6944feature development with an actual reduction in the library size.
6945Current core subsystem library sizes are shown below.  These are
6946the code and data sizes for the acpica.lib produced by the
6947Microsoft Visual C++ 6.0 compiler, and these values do not
6948include
6949any ACPI driver or OSPM code.  The debug version of the code
6950includes the debug output trace mechanism and has a larger code
6951and data size.  Note that these values will vary depending on the
6952efficiency of the compiler and the compiler options used during
6953generation.
6954
6955  Previous Release (11_09_01):
6956     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
6957     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
6958
6959  Current Release:
6960     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
6961     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
6962
6963 2) Linux:
6964
6965Enhanced the ACPI boot-time initialization code to allow the use
6966of Local APIC tables for processor enumeration on IA-32, and to
6967pave the way for a fully MPS-free boot (on SMP systems) in the
6968near future.  This functionality replaces
6969arch/i386/kernel/acpitables.c, which was introduced in an earlier
69702.4.15-preX release.  To enable this feature you must add
6971"acpi_boot=on" to the kernel command line -- see the help entry
6972for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
6973in
6974the works...
6975
6976Restructured the configuration options to allow boot-time table
6977parsing support without inclusion of the ACPI Interpreter (and
6978other) code.
6979
6980NOTE: This release does not include fixes for the reported
6981events,
6982power-down, and thermal passive cooling issues (coming soon).
6983
6984 3) ASL Compiler:
6985
6986Added additional typechecking for Fields within restricted access
6987Operation Regions.  All fields within EC and CMOS regions must be
6988declared with ByteAcc. All fields withing SMBus regions must be
6989declared with the BufferAcc access type.
6990
6991Fixed a problem where the listing file output of control methods
6992no longer interleaved the actual AML code with the ASL source
6993code.
6994
6995
6996
6997
6998----------------------------------------
6999Summary of changes for this label: 11_09_01
7000
70011) ACPI CA Core Subsystem:
7002
7003Implemented ACPI 2.0-defined support for writes to fields with a
7004Buffer, String, or Integer source operand that is smaller than
7005the
7006target field. In these cases, the source operand is zero-extended
7007to fill the target field.
7008
7009Fixed a problem where a Field starting bit offset (within the
7010parent operation region) was calculated incorrectly if the
7011
7012alignment of the field differed from the access width.  This
7013affected CreateWordField, CreateDwordField, CreateQwordField, and
7014possibly other fields that use the "AccessAny" keyword.
7015
7016Fixed a problem introduced in the 11_02_01 release where indirect
7017stores through method arguments did not operate correctly.
7018
70192) Linux:
7020
7021Implemented boot-time ACPI table parsing support
7022(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
7023facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
7024legacy BIOS interfaces (e.g. MPS) for the configuration of system
7025processors, memory, and interrupts during setup_arch().  Note
7026that
7027this patch does not include the required architecture-specific
7028changes required to apply this information -- subsequent patches
7029will be posted for both IA32 and IA64 to achieve this.
7030
7031Added low-level sleep support for IA32 platforms, courtesy of Pat
7032Mochel. This allows IA32 systems to transition to/from various
7033sleeping states (e.g. S1, S3), although the lack of a centralized
7034driver model and power-manageable drivers will prevent its
7035(successful) use on most systems.
7036
7037Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
7038submenu, unified IA32 and IA64 options, added new "Boot using
7039ACPI
7040tables" option, etc.
7041
7042Increased the default timeout for the EC driver from 1ms to 10ms
7043(1000 cycles of 10us) to try to address AE_TIME errors during EC
7044transactions.
7045
7046 ----------------------------------------
7047Summary of changes for this label: 11_02_01
7048
70491) ACPI CA Core Subsystem:
7050
7051ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
7052(QWordAcc keyword). All ACPI 2.0 64-bit support is now
7053implemented.
7054
7055OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
7056changes to support ACPI 2.0 Qword field access.  Read/Write
7057PciConfiguration(), Read/Write Memory(), and Read/Write Port()
7058now
7059accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
7060the value parameter for the address space handler interface is
7061now
7062an ACPI_INTEGER.  OSL implementations of these interfaces must
7063now
7064handle the case where the Width parameter is 64.
7065
7066Index Fields: Fixed a problem where unaligned bit assembly and
7067disassembly for IndexFields was not supported correctly.
7068
7069Index and Bank Fields:  Nested Index and Bank Fields are now
7070supported. During field access, a check is performed to ensure
7071that the value written to an Index or Bank register is not out of
7072the range of the register.  The Index (or Bank) register is
7073written before each access to the field data. Future support will
7074include allowing individual IndexFields to be wider than the
7075DataRegister width.
7076
7077Fields: Fixed a problem where the AML interpreter was incorrectly
7078attempting to write beyond the end of a Field/OpRegion.  This was
7079a boundary case that occurred when a DWORD field was written to a
7080BYTE access OpRegion, forcing multiple writes and causing the
7081interpreter to write one datum too many.
7082
7083Fields: Fixed a problem with Field/OpRegion access where the
7084starting bit address of a field was incorrectly calculated if the
7085current access type was wider than a byte (WordAcc, DwordAcc, or
7086QwordAcc).
7087
7088Fields: Fixed a problem where forward references to individual
7089FieldUnits (individual Field names within a Field definition)
7090were
7091not resolved during the AML table load.
7092
7093Fields: Fixed a problem where forward references from a Field
7094definition to the parent Operation Region definition were not
7095resolved during the AML table load.
7096
7097Fields: Duplicate FieldUnit names within a scope are now detected
7098during AML table load.
7099
7100Acpi Interfaces: Fixed a problem where the AcpiGetName()
7101interface
7102returned an incorrect name for the root node.
7103
7104Code and Data Size: Code and Data optimizations have permitted
7105new
7106feature development with an actual reduction in the library size.
7107Current core subsystem library sizes are shown below.  These are
7108the code and data sizes for the acpica.lib produced by the
7109Microsoft Visual C++ 6.0 compiler, and these values do not
7110include
7111any ACPI driver or OSPM code.  The debug version of the code
7112includes the debug output trace mechanism and has a larger code
7113and data size.  Note that these values will vary depending on the
7114efficiency of the compiler and the compiler options used during
7115generation.
7116
7117  Previous Release (10_18_01):
7118     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
7119     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
7120
7121  Current Release:
7122     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
7123     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
7124
7125 2) Linux:
7126
7127Improved /proc processor output (Pavel Machek) Re-added
7128MODULE_LICENSE("GPL") to all modules.
7129
7130 3) ASL Compiler version X2030:
7131
7132Duplicate FieldUnit names within a scope are now detected and
7133flagged as errors.
7134
7135 4) Documentation:
7136
7137Programmer Reference updated to reflect OSL and address space
7138handler interface changes described above.
7139
7140----------------------------------------
7141Summary of changes for this label: 10_18_01
7142
7143ACPI CA Core Subsystem:
7144
7145Fixed a problem with the internal object reference count
7146mechanism
7147that occasionally caused premature object deletion. This resolves
7148all of the outstanding problem reports where an object is deleted
7149in the middle of an interpreter evaluation.  Although this
7150problem
7151only showed up in rather obscure cases, the solution to the
7152problem involved an adjustment of all reference counts involving
7153objects attached to namespace nodes.
7154
7155Fixed a problem with Field support in the interpreter where
7156writing to an aligned field whose length is an exact multiple (2
7157or greater) of the field access granularity would cause an
7158attempt
7159to write beyond the end of the field.
7160
7161The top level AML opcode execution functions within the
7162interpreter have been renamed with a more meaningful and
7163consistent naming convention.  The modules exmonad.c and
7164exdyadic.c were eliminated.  New modules are exoparg1.c,
7165exoparg2.c, exoparg3.c, and exoparg6.c.
7166
7167Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
7168
7169Fixed a problem where the AML debugger was causing some internal
7170objects to not be deleted during subsystem termination.
7171
7172Fixed a problem with the external AcpiEvaluateObject interface
7173where the subsystem would fault if the named object to be
7174evaluated refered to a constant such as Zero, Ones, etc.
7175
7176Fixed a problem with IndexFields and BankFields where the
7177subsystem would fault if the index, data, or bank registers were
7178not defined in the same scope as the field itself.
7179
7180Added printf format string checking for compilers that support
7181this feature.  Corrected more than 50 instances of issues with
7182format specifiers within invocations of ACPI_DEBUG_PRINT
7183throughout the core subsystem code.
7184
7185The ASL "Revision" operator now returns the ACPI support level
7186implemented in the core - the value "2" since the ACPI 2.0
7187support
7188is more than 50% implemented.
7189
7190Enhanced the output of the AML debugger "dump namespace" command
7191to output in a more human-readable form.
7192
7193Current core subsystem library code sizes are shown below.  These
7194
7195are the code and data sizes for the acpica.lib produced by the
7196Microsoft Visual C++ 6.0 compiler, and these values do not
7197include
7198any ACPI driver or OSPM code.  The debug version of the code
7199includes the full debug trace mechanism -- leading to a much
7200
7201larger code and data size.  Note that these values will vary
7202depending on the efficiency of the compiler and the compiler
7203options used during generation.
7204
7205     Previous Label (09_20_01):
7206     Non-Debug Version:    65K Code,     5K Data,     70K Total
7207     Debug Version:       138K Code,    58K Data,    196K Total
7208
7209     This Label:
7210
7211     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
7212     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
7213
7214Linux:
7215
7216Implemented a "Bad BIOS Blacklist" to track machines that have
7217known ASL/AML problems.
7218
7219Enhanced the /proc interface for the thermal zone driver and
7220added
7221support for _HOT (the critical suspend trip point).  The 'info'
7222file now includes threshold/policy information, and allows
7223setting
7224of _SCP (cooling preference) and _TZP (polling frequency) values
7225to the 'info' file. Examples: "echo tzp=5 > info" sets the
7226polling
7227frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
7228preference to the passive/quiet mode (if supported by the ASL).
7229
7230Implemented a workaround for a gcc bug that resuted in an OOPs
7231when loading the control method battery driver.
7232
7233 ----------------------------------------
7234Summary of changes for this label: 09_20_01
7235
7236 ACPI CA Core Subsystem:
7237
7238The AcpiEnableEvent and AcpiDisableEvent interfaces have been
7239modified to allow individual GPE levels to be flagged as wake-
7240enabled (i.e., these GPEs are to remain enabled when the platform
7241sleeps.)
7242
7243The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
7244support wake-enabled GPEs.  This means that upon entering the
7245sleep state, all GPEs that are not wake-enabled are disabled.
7246When leaving the sleep state, these GPEs are reenabled.
7247
7248A local double-precision divide/modulo module has been added to
7249enhance portability to OS kernels where a 64-bit math library is
7250not available.  The new module is "utmath.c".
7251
7252Several optimizations have been made to reduce the use of CPU
7253stack.  Originally over 2K, the maximum stack usage is now below
72542K at 1860  bytes (1.82k)
7255
7256Fixed a problem with the AcpiGetFirmwareTable interface where the
7257root table pointer was not mapped into a logical address
7258properly.
7259
7260Fixed a problem where a NULL pointer was being dereferenced in
7261the
7262interpreter code for the ASL Notify operator.
7263
7264Fixed a problem where the use of the ASL Revision operator
7265returned an error. This operator now returns the current version
7266of the ACPI CA core subsystem.
7267
7268Fixed a problem where objects passed as control method parameters
7269to AcpiEvaluateObject were always deleted at method termination.
7270However, these objects may end up being stored into the namespace
7271by the called method.  The object reference count mechanism was
7272applied to these objects instead of a force delete.
7273
7274Fixed a problem where static strings or buffers (contained in the
7275AML code) that are declared as package elements within the ASL
7276code could cause a fault because the interpreter would attempt to
7277delete them.  These objects are now marked with the "static
7278object" flag to prevent any attempt to delete them.
7279
7280Implemented an interpreter optimization to use operands directly
7281from the state object instead of extracting the operands to local
7282variables.  This reduces stack use and code size, and improves
7283performance.
7284
7285The module exxface.c was eliminated as it was an unnecessary
7286extra
7287layer of code.
7288
7289Current core subsystem library code sizes are shown below.  These
7290are the code and data sizes for the acpica.lib produced by the
7291Microsoft Visual C++ 6.0 compiler, and these values do not
7292include
7293any ACPI driver or OSPM code.  The debug version of the code
7294includes the full debug trace mechanism -- leading to a much
7295larger code and data size.  Note that these values will vary
7296depending on the efficiency of the compiler and the compiler
7297options used during generation.
7298
7299  Non-Debug Version:  65K Code,   5K Data,   70K Total
7300(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
7301Total  (Previously 195K)
7302
7303Linux:
7304
7305Support for ACPI 2.0 64-bit integers has been added.   All ACPI
7306Integer objects are now 64 bits wide
7307
7308All Acpi data types and structures are now in lower case.  Only
7309Acpi macros are upper case for differentiation.
7310
7311 Documentation:
7312
7313Changes to the external interfaces as described above.
7314
7315 ----------------------------------------
7316Summary of changes for this label: 08_31_01
7317
7318 ACPI CA Core Subsystem:
7319
7320A bug with interpreter implementation of the ASL Divide operator
7321was found and fixed.  The implicit function return value (not the
7322explicit store operands) was returning the remainder instead of
7323the quotient.  This was a longstanding bug and it fixes several
7324known outstanding issues on various platforms.
7325
7326The ACPI_DEBUG_PRINT and function trace entry/exit macros have
7327been further optimized for size.  There are 700 invocations of
7328the
7329DEBUG_PRINT macro alone, so each optimization reduces the size of
7330the debug version of the subsystem significantly.
7331
7332A stack trace mechanism has been implemented.  The maximum stack
7333usage is about 2K on 32-bit platforms.  The debugger command
7334"stat
7335stack" will display the current maximum stack usage.
7336
7337All public symbols and global variables within the subsystem are
7338now prefixed with the string "Acpi".  This keeps all of the
7339symbols grouped together in a kernel map, and avoids conflicts
7340with other kernel subsystems.
7341
7342Most of the internal fixed lookup tables have been moved into the
7343code segment via the const operator.
7344
7345Several enhancements have been made to the interpreter to both
7346reduce the code size and improve performance.
7347
7348Current core subsystem library code sizes are shown below.  These
7349are the code and data sizes for the acpica.lib produced by the
7350Microsoft Visual C++ 6.0 compiler, and these values do not
7351include
7352any ACPI driver or OSPM code.  The debug version of the code
7353includes the full debug trace mechanism which contains over 700
7354invocations of the DEBUG_PRINT macro, 500 function entry macro
7355invocations, and over 900 function exit macro invocations --
7356leading to a much larger code and data size.  Note that these
7357values will vary depending on the efficiency of the compiler and
7358the compiler options used during generation.
7359
7360        Non-Debug Version:  64K Code,   5K Data,   69K Total
7361Debug Version:     137K Code,  58K Data,  195K Total
7362
7363 Linux:
7364
7365Implemented wbinvd() macro, pending a kernel-wide definition.
7366
7367Fixed /proc/acpi/event to handle poll() and short reads.
7368
7369 ASL Compiler, version X2026:
7370
7371Fixed a problem introduced in the previous label where the AML
7372
7373code emitted for package objects produced packages with zero
7374length.
7375
7376 ----------------------------------------
7377Summary of changes for this label: 08_16_01
7378
7379ACPI CA Core Subsystem:
7380
7381The following ACPI 2.0 ASL operators have been implemented in the
7382AML interpreter (These are already supported by the Intel ASL
7383compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
7384and
7385ToBuffer.  Support for 64-bit AML constants is implemented in the
7386AML parser, debugger, and disassembler.
7387
7388The internal memory tracking mechanism (leak detection code) has
7389been upgraded to reduce the memory overhead (a separate tracking
7390block is no longer allocated for each memory allocation), and now
7391supports all of the internal object caches.
7392
7393The data structures and code for the internal object caches have
7394been coelesced and optimized so that there is a single cache and
7395memory list data structure and a single group of functions that
7396implement generic cache management.  This has reduced the code
7397size in both the debug and release versions of the subsystem.
7398
7399The DEBUG_PRINT macro(s) have been optimized for size and
7400replaced
7401by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
7402different, because it generates a single call to an internal
7403function.  This results in a savings of about 90 bytes per
7404invocation, resulting in an overall code and data savings of
7405about
740616% in the debug version of the subsystem.
7407
7408 Linux:
7409
7410Fixed C3 disk corruption problems and re-enabled C3 on supporting
7411machines.
7412
7413Integrated low-level sleep code by Patrick Mochel.
7414
7415Further tweaked source code Linuxization.
7416
7417Other minor fixes.
7418
7419 ASL Compiler:
7420
7421Support for ACPI 2.0 variable length packages is fixed/completed.
7422
7423Fixed a problem where the optional length parameter for the ACPI
74242.0 ToString operator.
7425
7426Fixed multiple extraneous error messages when a syntax error is
7427detected within the declaration line of a control method.
7428
7429 ----------------------------------------
7430Summary of changes for this label: 07_17_01
7431
7432ACPI CA Core Subsystem:
7433
7434Added a new interface named AcpiGetFirmwareTable to obtain any
7435ACPI table via the ACPI signature.  The interface can be called
7436at
7437any time during kernel initialization, even before the kernel
7438virtual memory manager is initialized and paging is enabled.
7439This
7440allows kernel subsystems to obtain ACPI tables very early, even
7441before the ACPI CA subsystem is initialized.
7442
7443Fixed a problem where Fields defined with the AnyAcc attribute
7444could be resolved to the incorrect address under the following
7445conditions: 1) the field width is larger than 8 bits and 2) the
7446parent operation region is not defined on a DWORD boundary.
7447
7448Fixed a problem where the interpreter is not being locked during
7449namespace initialization (during execution of the _INI control
7450methods), causing an error when an attempt is made to release it
7451later.
7452
7453ACPI 2.0 support in the AML Interpreter has begun and will be
7454ongoing throughout the rest of this year.  In this label, The Mod
7455operator is implemented.
7456
7457Added a new data type to contain full PCI addresses named
7458ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
7459Device,
7460and Function values.
7461
7462 Linux:
7463
7464Enhanced the Linux version of the source code to change most
7465capitalized ACPI type names to lowercase. For example, all
7466instances of ACPI_STATUS are changed to acpi_status.  This will
7467result in a large diff, but the change is strictly cosmetic and
7468aligns the CA code closer to the Linux coding standard.
7469
7470OSL Interfaces:
7471
7472The interfaces to the PCI configuration space have been changed
7473to
7474add the PCI Segment number and to split the single 32-bit
7475combined
7476DeviceFunction field into two 16-bit fields.  This was
7477accomplished by moving the four values that define an address in
7478PCI configuration space (segment, bus, device, and function) to
7479the new ACPI_PCI_ID structure.
7480
7481The changes to the PCI configuration space interfaces led to a
7482reexamination of the complete set of address space access
7483interfaces for PCI, I/O, and Memory.  The previously existing 18
7484interfaces have proven difficult to maintain (any small change
7485must be propagated across at least 6 interfaces) and do not
7486easily
7487allow for future expansion to 64 bits if necessary.  Also, on
7488some
7489systems, it would not be appropriate to demultiplex the access
7490width (8, 16, 32,or 64) before calling the OSL if the
7491corresponding native OS interfaces contain a similar access width
7492parameter.  For these reasons, the 18 address space interfaces
7493have been replaced by these 6 new ones:
7494
7495AcpiOsReadPciConfiguration
7496AcpiOsWritePciConfiguration
7497AcpiOsReadMemory
7498AcpiOsWriteMemory
7499AcpiOsReadPort
7500AcpiOsWritePort
7501
7502Added a new interface named AcpiOsGetRootPointer to allow the OSL
7503to perform the platform and/or OS-specific actions necessary to
7504obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
7505interface will simply call down to the CA core to perform the low-
7506memory search for the table.  On IA-64, the RSDP is obtained from
7507EFI.  Migrating this interface to the OSL allows the CA core to
7508
7509remain OS and platform independent.
7510
7511Added a new interface named AcpiOsSignal to provide a generic
7512"function code and pointer" interface for various miscellaneous
7513signals and notifications that must be made to the host OS.   The
7514first such signals are intended to support the ASL Fatal and
7515Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
7516interface has been obsoleted.
7517
7518The definition of the AcpiFormatException interface has been
7519changed to simplify its use.  The caller no longer must supply a
7520buffer to the call; A pointer to a const string is now returned
7521directly.  This allows the call to be easily used in printf
7522statements, etc. since the caller does not have to manage a local
7523buffer.
7524
7525
7526 ASL Compiler, Version X2025:
7527
7528The ACPI 2.0 Switch/Case/Default operators have been implemented
7529and are fully functional.  They will work with all ACPI 1.0
7530interpreters, since the operators are simply translated to
7531If/Else
7532pairs.
7533
7534The ACPI 2.0 ElseIf operator is implemented and will also work
7535with 1.0 interpreters, for the same reason.
7536
7537Implemented support for ACPI 2.0 variable-length packages.  These
7538packages have a separate opcode, and their size is determined by
7539the interpreter at run-time.
7540
7541Documentation The ACPI CA Programmer Reference has been updated
7542to
7543reflect the new interfaces and changes to existing interfaces.
7544
7545 ------------------------------------------
7546Summary of changes for this label: 06_15_01
7547
7548 ACPI CA Core Subsystem:
7549
7550Fixed a problem where a DWORD-accessed field within a Buffer
7551object would get its byte address inadvertently rounded down to
7552the nearest DWORD.  Buffers are always Byte-accessible.
7553
7554 ASL Compiler, version X2024:
7555
7556Fixed a problem where the Switch() operator would either fault or
7557hang the compiler.  Note however, that the AML code for this ACPI
75582.0 operator is not yet implemented.
7559
7560Compiler uses the new AcpiOsGetTimer interface to obtain compile
7561timings.
7562
7563Implementation of the CreateField operator automatically converts
7564a reference to a named field within a resource descriptor from a
7565byte offset to a bit offset if required.
7566
7567Added some missing named fields from the resource descriptor
7568support. These are the names that are automatically created by
7569the
7570compiler to reference fields within a descriptor.  They are only
7571valid at compile time and are not passed through to the AML
7572interpreter.
7573
7574Resource descriptor named fields are now typed as Integers and
7575subject to compile-time typechecking when used in expressions.
7576
7577 ------------------------------------------
7578Summary of changes for this label: 05_18_01
7579
7580 ACPI CA Core Subsystem:
7581
7582Fixed a couple of problems in the Field support code where bits
7583from adjacent fields could be returned along with the proper
7584field
7585bits. Restructured the field support code to improve performance,
7586readability and maintainability.
7587
7588New DEBUG_PRINTP macro automatically inserts the procedure name
7589into the output, saving hundreds of copies of procedure name
7590strings within the source, shrinking the memory footprint of the
7591debug version of the core subsystem.
7592
7593 Source Code Structure:
7594
7595The source code directory tree was restructured to reflect the
7596current organization of the component architecture.  Some files
7597and directories have been moved and/or renamed.
7598
7599 Linux:
7600
7601Fixed leaking kacpidpc processes.
7602
7603Fixed queueing event data even when /proc/acpi/event is not
7604opened.
7605
7606 ASL Compiler, version X2020:
7607
7608Memory allocation performance enhancement - over 24X compile time
7609improvement on large ASL files.  Parse nodes and namestring
7610buffers are now allocated from a large internal compiler buffer.
7611
7612The temporary .SRC file is deleted unless the "-s" option is
7613specified
7614
7615The "-d" debug output option now sends all output to the .DBG
7616file
7617instead of the console.
7618
7619"External" second parameter is now optional
7620
7621"ElseIf" syntax now properly allows the predicate
7622
7623Last operand to "Load" now recognized as a Target operand
7624
7625Debug object can now be used anywhere as a normal object.
7626
7627ResourceTemplate now returns an object of type BUFFER
7628
7629EISAID now returns an object of type INTEGER
7630
7631"Index" now works with a STRING operand
7632
7633"LoadTable" now accepts optional parameters
7634
7635"ToString" length parameter is now optional
7636
7637"Interrupt (ResourceType," parse error fixed.
7638
7639"Register" with a user-defined region space parse error fixed
7640
7641Escaped backslash at the end of a string ("\\") scan/parse error
7642fixed
7643
7644"Revision" is now an object of type INTEGER.
7645
7646
7647
7648------------------------------------------
7649Summary of changes for this label: 05_02_01
7650
7651Linux:
7652
7653/proc/acpi/event now blocks properly.
7654
7655Removed /proc/sys/acpi. You can still dump your DSDT from
7656/proc/acpi/dsdt.
7657
7658 ACPI CA Core Subsystem:
7659
7660Fixed a problem introduced in the previous label where some of
7661the
7662"small" resource descriptor types were not recognized.
7663
7664Improved error messages for the case where an ASL Field is
7665outside
7666the range of the parent operation region.
7667
7668 ASL Compiler, version X2018:
7669
7670
7671Added error detection for ASL Fields that extend beyond the
7672length
7673of the parent operation region (only if the length of the region
7674is known at compile time.)  This includes fields that have a
7675minimum access width that is smaller than the parent region, and
7676individual field units that are partially or entirely beyond the
7677extent of the parent.
7678
7679
7680
7681------------------------------------------
7682Summary of changes for this label: 04_27_01
7683
7684 ACPI CA Core Subsystem:
7685
7686Fixed a problem where the namespace mutex could be released at
7687the
7688wrong time during execution of AcpiRemoveAddressSpaceHandler.
7689
7690Added optional thread ID output for debug traces, to simplify
7691debugging of multiple threads.  Added context switch notification
7692when the debug code realizes that a different thread is now
7693executing ACPI code.
7694
7695Some additional external data types have been prefixed with the
7696string "ACPI_" for consistency.  This may effect existing code.
7697The data types affected are the external callback typedefs -
7698e.g.,
7699
7700WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
7701
7702 Linux:
7703
7704Fixed an issue with the OSL semaphore implementation where a
7705thread was waking up with an error from receiving a SIGCHLD
7706signal.
7707
7708Linux version of ACPI CA now uses the system C library for string
7709manipulation routines instead of a local implementation.
7710
7711Cleaned up comments and removed TBDs.
7712
7713 ASL Compiler, version X2017:
7714
7715Enhanced error detection and reporting for all file I/O
7716operations.
7717
7718 Documentation:
7719
7720Programmer Reference updated to version 1.06.
7721
7722
7723
7724------------------------------------------
7725Summary of changes for this label: 04_13_01
7726
7727 ACPI CA Core Subsystem:
7728
7729Restructured support for BufferFields and RegionFields.
7730BankFields support is now fully operational.  All known 32-bit
7731limitations on field sizes have been removed.  Both BufferFields
7732and (Operation) RegionFields are now supported by the same field
7733management code.
7734
7735Resource support now supports QWORD address and IO resources. The
773616/32/64 bit address structures and the Extended IRQ structure
7737have been changed to properly handle Source Resource strings.
7738
7739A ThreadId of -1 is now used to indicate a "mutex not acquired"
7740condition internally and must never be returned by
7741AcpiOsThreadId.
7742This reserved value was changed from 0 since Unix systems allow a
7743thread ID of 0.
7744
7745Linux:
7746
7747Driver code reorganized to enhance portability
7748
7749Added a kernel configuration option to control ACPI_DEBUG
7750
7751Fixed the EC driver to honor _GLK.
7752
7753ASL Compiler, version X2016:
7754
7755Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
7756address space was set to 0, not 0x7f as it should be.
7757
7758 ------------------------------------------
7759Summary of changes for this label: 03_13_01
7760
7761 ACPI CA Core Subsystem:
7762
7763During ACPI initialization, the _SB_._INI method is now run if
7764present.
7765
7766Notify handler fix - notifies are deferred until the parent
7767method
7768completes execution.  This fixes the "mutex already acquired"
7769issue seen occasionally.
7770
7771Part of the "implicit conversion" rules in ACPI 2.0 have been
7772found to cause compatibility problems with existing ASL/AML.  The
7773convert "result-to-target-type" implementation has been removed
7774for stores to method Args and Locals.  Source operand conversion
7775is still fully implemented.  Possible changes to ACPI 2.0
7776specification pending.
7777
7778Fix to AcpiRsCalculatePciRoutingTableLength to return correct
7779length.
7780
7781Fix for compiler warnings for 64-bit compiles.
7782
7783 Linux:
7784
7785/proc output aligned for easier parsing.
7786
7787Release-version compile problem fixed.
7788
7789New kernel configuration options documented in Configure.help.
7790
7791IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
7792context" message.
7793
7794 OSPM:
7795
7796Power resource driver integrated with bus manager.
7797
7798Fixed kernel fault during active cooling for thermal zones.
7799
7800Source Code:
7801
7802The source code tree has been restructured.
7803
7804
7805
7806------------------------------------------
7807Summary of changes for this label: 03_02_01
7808
7809 Linux OS Services Layer (OSL):
7810
7811Major revision of all Linux-specific code.
7812
7813Modularized all ACPI-specific drivers.
7814
7815Added new thermal zone and power resource drivers.
7816
7817Revamped /proc interface (new functionality is under /proc/acpi).
7818
7819New kernel configuration options.
7820
7821 Linux known issues:
7822
7823New kernel configuration options not documented in Configure.help
7824yet.
7825
7826
7827Module dependencies not currently implemented. If used, they
7828should be loaded in this order: busmgr, power, ec, system,
7829processor, battery, ac_adapter, button, thermal.
7830
7831Modules will not load if CONFIG_MODVERSION is set.
7832
7833IBM 600E - entering S5 may reboot instead of shutting down.
7834
7835IBM 600E - Sleep button may generate "Invalid <NULL> context"
7836message.
7837
7838Some systems may fail with "execution mutex already acquired"
7839message.
7840
7841 ACPI CA Core Subsystem:
7842
7843Added a new OSL Interface, AcpiOsGetThreadId.  This was required
7844for the  deadlock detection code. Defined to return a non-zero,
784532-
7846bit thread ID for the currently executing thread.  May be a non-
7847zero constant integer on single-thread systems.
7848
7849Implemented deadlock detection for internal subsystem mutexes.
7850We
7851may add conditional compilation for this code (debug only) later.
7852
7853ASL/AML Mutex object semantics are now fully supported.  This
7854includes multiple acquires/releases by owner and support for the
7855
7856Mutex SyncLevel parameter.
7857
7858A new "Force Release" mechanism automatically frees all ASL
7859Mutexes that have been acquired but not released when a thread
7860exits the interpreter.  This forces conformance to the ACPI spec
7861("All mutexes must be released when an invocation exits") and
7862prevents deadlocked ASL threads.  This mechanism can be expanded
7863(later) to monitor other resource acquisitions if OEM ASL code
7864continues to misbehave (which it will).
7865
7866Several new ACPI exception codes have been added for the Mutex
7867support.
7868
7869Recursive method calls are now allowed and supported (the ACPI
7870spec does in fact allow recursive method calls.)  The number of
7871recursive calls is subject to the restrictions imposed by the
7872SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
7873parameter.
7874
7875Implemented support for the SyncLevel parameter for control
7876methods (ACPI 2.0 feature)
7877
7878Fixed a deadlock problem when multiple threads attempted to use
7879the interpreter.
7880
7881Fixed a problem where the string length of a String package
7882element was not always set in a package returned from
7883AcpiEvaluateObject.
7884
7885Fixed a problem where the length of a String package element was
7886not always included in the length of the overall package returned
7887from AcpiEvaluateObject.
7888
7889Added external interfaces (Acpi*) to the ACPI debug memory
7890manager.  This manager keeps a list of all outstanding
7891allocations, and can therefore detect memory leaks and attempts
7892to
7893free memory blocks more than once. Useful for code such as the
7894power manager, etc.  May not be appropriate for device drivers.
7895Performance with the debug code enabled is slow.
7896
7897The ACPI Global Lock is now an optional hardware element.
7898
7899 ASL Compiler Version X2015:
7900
7901Integrated changes to allow the compiler to be generated on
7902multiple platforms.
7903
7904Linux makefile added to generate the compiler on Linux
7905
7906 Source Code:
7907
7908All platform-specific headers have been moved to their own
7909subdirectory, Include/Platform.
7910
7911New source file added, Interpreter/ammutex.c
7912
7913New header file, Include/acstruct.h
7914
7915 Documentation:
7916
7917The programmer reference has been updated for the following new
7918interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
7919
7920 ------------------------------------------
7921Summary of changes for this label: 02_08_01
7922
7923Core ACPI CA Subsystem: Fixed a problem where an error was
7924incorrectly returned if the return resource buffer was larger
7925than
7926the actual data (in the resource interfaces).
7927
7928References to named objects within packages are resolved to the
7929
7930full pathname string before packages are returned directly (via
7931the AcpiEvaluateObject interface) or indirectly via the resource
7932interfaces.
7933
7934Linux OS Services Layer (OSL):
7935
7936Improved /proc battery interface.
7937
7938
7939Added C-state debugging output and other miscellaneous fixes.
7940
7941ASL Compiler Version X2014:
7942
7943All defined method arguments can now be used as local variables,
7944including the ones that are not actually passed in as parameters.
7945The compiler tracks initialization of the arguments and issues an
7946exception if they are used without prior assignment (just like
7947locals).
7948
7949The -o option now specifies a filename prefix that is used for
7950all
7951output files, including the AML output file.  Otherwise, the
7952default behavior is as follows:  1) the AML goes to the file
7953specified in the DSDT.  2) all other output files use the input
7954source filename as the base.
7955
7956 ------------------------------------------
7957Summary of changes for this label: 01_25_01
7958
7959Core ACPI CA Subsystem: Restructured the implementation of object
7960store support within the  interpreter.  This includes support for
7961the Store operator as well  as any ASL operators that include a
7962target operand.
7963
7964Partially implemented support for Implicit Result-to-Target
7965conversion. This is when a result object is converted on the fly
7966to the type of  an existing target object.  Completion of this
7967support is pending  further analysis of the ACPI specification
7968concerning this matter.
7969
7970CPU-specific code has been removed from the subsystem (hardware
7971directory).
7972
7973New Power Management Timer functions added
7974
7975Linux OS Services Layer (OSL): Moved system state transition code
7976to the core, fixed it, and modified  Linux OSL accordingly.
7977
7978Fixed C2 and C3 latency calculations.
7979
7980
7981We no longer use the compilation date for the version message on
7982initialization, but retrieve the version from
7983AcpiGetSystemInfo().
7984
7985Incorporated for fix Sony VAIO machines.
7986
7987Documentation:  The Programmer Reference has been updated and
7988reformatted.
7989
7990
7991ASL Compiler:  Version X2013: Fixed a problem where the line
7992numbering and error reporting could get out  of sync in the
7993presence of multiple include files.
7994
7995 ------------------------------------------
7996Summary of changes for this label: 01_15_01
7997
7998Core ACPI CA Subsystem:
7999
8000Implemented support for type conversions in the execution of the
8001ASL  Concatenate operator (The second operand is converted to
8002match the type  of the first operand before concatenation.)
8003
8004Support for implicit source operand conversion is partially
8005implemented.   The ASL source operand types Integer, Buffer, and
8006String are freely  interchangeable for most ASL operators and are
8007converted by the interpreter  on the fly as required.  Implicit
8008Target operand conversion (where the  result is converted to the
8009target type before storing) is not yet implemented.
8010
8011Support for 32-bit and 64-bit BCD integers is implemented.
8012
8013Problem fixed where a field read on an aligned field could cause
8014a
8015read  past the end of the field.
8016
8017New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
8018does not return a value, but the caller expects one.  (The ASL
8019compiler flags this as a warning.)
8020
8021ASL Compiler:
8022
8023Version X2011:
80241. Static typechecking of all operands is implemented. This
8025prevents the use of invalid objects (such as using a Package
8026where
8027an Integer is required) at compile time instead of at interpreter
8028run-time.
80292. The ASL source line is printed with ALL errors and warnings.
80303. Bug fix for source EOF without final linefeed.
80314. Debug option is split into a parse trace and a namespace
8032trace.
80335. Namespace output option (-n) includes initial values for
8034integers and strings.
80356. Parse-only option added for quick syntax checking.
80367. Compiler checks for duplicate ACPI name declarations
8037
8038Version X2012:
80391. Relaxed typechecking to allow interchangeability between
8040strings, integers, and buffers.  These types are now converted by
8041the interpreter at runtime.
80422. Compiler reports time taken by each internal subsystem in the
8043debug         output file.
8044
8045
8046 ------------------------------------------
8047Summary of changes for this label: 12_14_00
8048
8049ASL Compiler:
8050
8051This is the first official release of the compiler. Since the
8052compiler requires elements of the Core Subsystem, this label
8053synchronizes everything.
8054
8055------------------------------------------
8056Summary of changes for this label: 12_08_00
8057
8058
8059Fixed a problem where named references within the ASL definition
8060of both OperationRegions and CreateXXXFields did not work
8061properly.  The symptom was an AE_AML_OPERAND_TYPE during
8062initialization of the region/field. This is similar (but not
8063related internally) to the problem that was fixed in the last
8064label.
8065
8066Implemented both 32-bit and 64-bit support for the BCD ASL
8067functions ToBCD and FromBCD.
8068
8069Updated all legal headers to include "2000" in the copyright
8070years.
8071
8072 ------------------------------------------
8073Summary of changes for this label: 12_01_00
8074
8075Fixed a problem where method invocations within the ASL
8076definition
8077of both OperationRegions and CreateXXXFields did not work
8078properly.  The symptom was an AE_AML_OPERAND_TYPE during
8079initialization of the region/field:
8080
8081  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
8082[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
8083(0x3005)
8084
8085Fixed a problem where operators with more than one nested
8086subexpression would fail.  The symptoms were varied, by mostly
8087AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
8088problem that has gone unnoticed until now.
8089
8090  Subtract (Add (1,2), Multiply (3,4))
8091
8092Fixed a problem where AcpiGetHandle didn't quite get fixed in the
8093previous build (The prefix part of a relative path was handled
8094incorrectly).
8095
8096Fixed a problem where Operation Region initialization failed if
8097the operation region name was a "namepath" instead of a simple
8098"nameseg". Symptom was an AE_NO_OPERAND error.
8099
8100Fixed a problem where an assignment to a local variable via the
8101indirect RefOf mechanism only worked for the first such
8102assignment.  Subsequent assignments were ignored.
8103
8104 ------------------------------------------
8105Summary of changes for this label: 11_15_00
8106
8107ACPI 2.0 table support with backwards support for ACPI 1.0 and
8108the
81090.71 extensions.  Note: although we can read ACPI 2.0 BIOS
8110tables,
8111the AML  interpreter does NOT have support for the new 2.0 ASL
8112grammar terms at this time.
8113
8114All ACPI hardware access is via the GAS structures in the ACPI
81152.0
8116FADT.
8117
8118All physical memory addresses across all platforms are now 64
8119bits
8120wide. Logical address width remains dependent on the platform
8121(i.e., "void *").
8122
8123AcpiOsMapMemory interface changed to a 64-bit physical address.
8124
8125The AML interpreter integer size is now 64 bits, as per the ACPI
81262.0 specification.
8127
8128For backwards compatibility with ACPI 1.0, ACPI tables with a
8129revision number less than 2 use 32-bit integers only.
8130
8131Fixed a problem where the evaluation of OpRegion operands did not
8132always resolve them to numbers properly.
8133
8134------------------------------------------
8135Summary of changes for this label: 10_20_00
8136
8137Fix for CBN_._STA issue.  This fix will allow correct access to
8138CBN_ OpRegions when the _STA returns 0x8.
8139
8140Support to convert ACPI constants (Ones, Zeros, One) to actual
8141values before a package object is returned
8142
8143Fix for method call as predicate to if/while construct causing
8144incorrect if/while behavior
8145
8146Fix for Else block package lengths sometimes calculated wrong (if
8147block > 63 bytes)
8148
8149Fix for Processor object length field, was always zero
8150
8151Table load abort if FACP sanity check fails
8152
8153Fix for problem with Scope(name) if name already exists
8154
8155Warning emitted if a named object referenced cannot be found
8156(resolved) during method execution.
8157
8158
8159
8160
8161
8162------------------------------------------
8163Summary of changes for this label: 9_29_00
8164
8165New table initialization interfaces: AcpiInitializeSubsystem no
8166longer has any parameters AcpiFindRootPointer - Find the RSDP (if
8167necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
8168>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
8169AcpiLoadTables
8170
8171Note: These interface changes require changes to all existing
8172OSDs
8173
8174The PCI_Config default address space handler is always installed
8175at the root namespace object.
8176
8177-------------------------------------------
8178Summary of changes for this label: 09_15_00
8179
8180The new initialization architecture is implemented.  New
8181interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
8182AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
8183
8184(Namespace is automatically loaded when a table is loaded)
8185
8186The ACPI_OPERAND_OBJECT has been optimized to shrink its size
8187from
818852 bytes to 32 bytes.  There is usually one of these for every
8189namespace object, so the memory savings is significant.
8190
8191Implemented just-in-time evaluation of the CreateField operators.
8192
8193Bug fixes for IA-64 support have been integrated.
8194
8195Additional code review comments have been implemented
8196
8197The so-called "third pass parse" has been replaced by a final
8198walk
8199through the namespace to initialize all operation regions
8200(address
8201spaces) and fields that have not yet been initialized during the
8202execution of the various _INI and REG methods.
8203
8204New file - namespace/nsinit.c
8205
8206-------------------------------------------
8207Summary of changes for this label: 09_01_00
8208
8209Namespace manager data structures have been reworked to change
8210the
8211primary  object from a table to a single object.  This has
8212resulted in dynamic memory  savings of 3X within the namespace
8213and
82142X overall in the ACPI CA subsystem.
8215
8216Fixed problem where the call to AcpiEvFindPciRootBuses was
8217inadvertently left  commented out.
8218
8219Reduced the warning count when generating the source with the GCC
8220compiler.
8221
8222Revision numbers added to each module header showing the
8223SourceSafe version of the file.  Please refer to this version
8224number when giving us feedback or comments on individual modules.
8225
8226The main object types within the subsystem have been renamed to
8227clarify their  purpose:
8228
8229ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
8230ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
8231ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
8232
8233NOTE: no changes to the initialization sequence are included in
8234this label.
8235
8236-------------------------------------------
8237Summary of changes for this label: 08_23_00
8238
8239Fixed problem where TerminateControlMethod was being called
8240multiple times per  method
8241
8242Fixed debugger problem where single stepping caused a semaphore
8243to
8244be  oversignalled
8245
8246Improved performance through additional parse object caching -
8247added  ACPI_EXTENDED_OP type
8248
8249-------------------------------------------
8250Summary of changes for this label: 08_10_00
8251
8252Parser/Interpreter integration:  Eliminated the creation of
8253complete parse trees  for ACPI tables and control methods.
8254Instead, parse subtrees are created and  then deleted as soon as
8255they are processed (Either entered into the namespace or
8256executed
8257by the interpreter).  This reduces the use of dynamic kernel
8258memory  significantly. (about 10X)
8259
8260Exception codes broken into classes and renumbered.  Be sure to
8261recompile all  code that includes acexcep.h.  Hopefully we won't
8262have to renumber the codes  again now that they are split into
8263classes (environment, programmer, AML code,  ACPI table, and
8264internal).
8265
8266Fixed some additional alignment issues in the Resource Manager
8267subcomponent
8268
8269Implemented semaphore tracking in the AcpiExec utility, and fixed
8270several places  where mutexes/semaphores were being unlocked
8271without a corresponding lock  operation.  There are no known
8272semaphore or mutex "leaks" at this time.
8273
8274Fixed the case where an ASL Return operator is used to return an
8275unnamed  package.
8276
8277-------------------------------------------
8278Summary of changes for this label: 07_28_00
8279
8280Fixed a problem with the way addresses were calculated in
8281AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
8282manifested itself when a Field was  created with WordAccess or
8283DwordAccess, but the field unit defined within the  Field was
8284less
8285
8286than a Word or Dword.
8287
8288Fixed a problem in AmlDumpOperands() module's loop to pull
8289operands off of the  operand stack to display information. The
8290problem manifested itself as a TLB  error on 64-bit systems when
8291accessing an operand stack with two or more  operands.
8292
8293Fixed a problem with the PCI configuration space handlers where
8294context was  getting confused between accesses. This required a
8295change to the generic address  space handler and address space
8296setup definitions. Handlers now get both a  global handler
8297context
8298(this is the one passed in by the user when executing
8299AcpiInstallAddressSpaceHandler() and a specific region context
8300that is unique to  each region (For example, the _ADR, _SEG and
8301_BBN values associated with a  specific region). The generic
8302function definitions have changed to the  following:
8303
8304typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
8305UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
8306*HandlerContext, // This used to be void *Context void
8307*RegionContext); // This is an additional parameter
8308
8309typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
8310RegionHandle, UINT32 Function, void *HandlerContext,  void
8311**RegionContext); // This used to be **ReturnContext
8312
8313-------------------------------------------
8314Summary of changes for this label: 07_21_00
8315
8316Major file consolidation and rename.  All files within the
8317interpreter have been  renamed as well as most header files.
8318This
8319was done to prevent collisions with  existing files in the host
8320OSs -- filenames such as "config.h" and "global.h"  seem to be
8321quite common.  The VC project files have been updated.  All
8322makefiles  will require modification.
8323
8324The parser/interpreter integration continues in Phase 5 with the
8325implementation  of a complete 2-pass parse (the AML is parsed
8326twice) for each table;  This  avoids the construction of a huge
8327parse tree and therefore reduces the amount of  dynamic memory
8328required by the subsystem.  Greater use of the parse object cache
8329means that performance is unaffected.
8330
8331Many comments from the two code reviews have been rolled in.
8332
8333The 64-bit alignment support is complete.
8334
8335-------------------------------------------
8336Summary of changes for this label: 06_30_00
8337
8338With a nod and a tip of the hat to the technology of yesteryear,
8339we've added  support in the source code for 80 column output
8340devices.  The code is now mostly  constrained to 80 columns or
8341less to support environments and editors that 1)  cannot display
8342or print more than 80 characters on a single line, and 2) cannot
8343disable line wrapping.
8344
8345A major restructuring of the namespace data structure has been
8346completed.  The  result is 1) cleaner and more
8347understandable/maintainable code, and 2) a  significant reduction
8348in the dynamic memory requirement for each named ACPI  object
8349(almost half).
8350
8351-------------------------------------------
8352Summary of changes for this label: 06_23_00
8353
8354Linux support has been added.  In order to obtain approval to get
8355the ACPI CA  subsystem into the Linux kernel, we've had to make
8356quite a few changes to the  base subsystem that will affect all
8357users (all the changes are generic and OS- independent).  The
8358effects of these global changes have been somewhat far  reaching.
8359Files have been merged and/or renamed and interfaces have been
8360renamed.   The major changes are described below.
8361
8362Osd* interfaces renamed to AcpiOs* to eliminate namespace
8363pollution/confusion  within our target kernels.  All OSD
8364interfaces must be modified to match the new  naming convention.
8365
8366Files merged across the subsystem.  A number of the smaller
8367source
8368and header  files have been merged to reduce the file count and
8369increase the density of the  existing files.  There are too many
8370to list here.  In general, makefiles that  call out individual
8371files will require rebuilding.
8372
8373Interpreter files renamed.  All interpreter files now have the
8374prefix am*  instead of ie* and is*.
8375
8376Header files renamed:  The acapi.h file is now acpixf.h.  The
8377acpiosd.h file is  now acpiosxf.h.  We are removing references to
8378the acronym "API" since it is  somewhat windowsy. The new name is
8379"external interface" or xface or xf in the  filenames.j
8380
8381
8382All manifest constants have been forced to upper case (some were
8383mixed case.)   Also, the string "ACPI_" has been prepended to
8384many
8385(not all) of the constants,  typedefs, and structs.
8386
8387The globals "DebugLevel" and "DebugLayer" have been renamed
8388"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
8389
8390All other globals within the subsystem are now prefixed with
8391"AcpiGbl_" Internal procedures within the subsystem are now
8392prefixed with "Acpi" (with only  a few exceptions).  The original
8393two-letter abbreviation for the subcomponent  remains after
8394"Acpi"
8395- for example, CmCallocate became AcpiCmCallocate.
8396
8397Added a source code translation/conversion utility.  Used to
8398generate the Linux  source code, it can be modified to generate
8399other types of source as well. Can  also be used to cleanup
8400existing source by removing extraneous spaces and blank  lines.
8401Found in tools/acpisrc/*
8402
8403OsdUnMapMemory was renamed to OsdUnmapMemory and then
8404AcpiOsUnmapMemory.  (UnMap  became Unmap).
8405
8406A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
8407When set to  one, this indicates that the caller wants to use the
8408
8409semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
8410both types.  However, implementers of this  call may want to use
8411different OS primitives depending on the type of semaphore
8412requested.  For example, some operating systems provide separate
8413
8414"mutex" and  "semaphore" interfaces - where the mutex interface
8415is
8416much faster because it  doesn't have all the overhead of a full
8417semaphore implementation.
8418
8419Fixed a deadlock problem where a method that accesses the PCI
8420address space can  block forever if it is the first access to the
8421space.
8422
8423-------------------------------------------
8424Summary of changes for this label: 06_02_00
8425
8426Support for environments that cannot handle unaligned data
8427accesses (e.g.  firmware and OS environments devoid of alignment
8428handler technology namely  SAL/EFI and the IA-64 Linux kernel)
8429has
8430been added (via configurable macros) in  these three areas: -
8431Transfer of data from the raw AML byte stream is done via byte
8432moves instead of    word/dword/qword moves. - External objects
8433are
8434aligned within the user buffer, including package   elements (sub-
8435objects). - Conversion of name strings to UINT32 Acpi Names is
8436now
8437done byte-wise.
8438
8439The Store operator was modified to mimic Microsoft's
8440implementation when storing  to a Buffer Field.
8441
8442Added a check of the BM_STS bit before entering C3.
8443
8444The methods subdirectory has been obsoleted and removed.  A new
8445file, cmeval.c  subsumes the functionality.
8446
8447A 16-bit (DOS) version of AcpiExec has been developed.  The
8448makefile is under  the acpiexec directory.
8449