xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 5f39c7e7)
1----------------------------------------
227 June 2014. Summary of changes for version 20140627:
3
41) ACPICA kernel-resident subsystem:
5
6Formatted Output: Implemented local versions of standard formatted output
7utilities such as printf, etc. Over time, it has been discovered that
8there are in fact many portability issues with printf, and the addition
9of this feature will fix/prevent these issues once and for all. Some
10known issues are summarized below:
11
121) Output of 64-bit values is not portable. For example, UINT64 is %ull
13for the Linux kernel and is %uI64 for some MSVC versions.
142) Invoking printf consistently in a manner that is portable across both
1532-bit and 64-bit platforms is difficult at best in many situations.
163) The output format for pointers varies from system to system (leading
17zeros especially), and leads to inconsistent output from ACPICA across
18platforms.
194) Certain platform-specific printf formats may conflict with ACPICA use.
205) If there is no local C library available, ACPICA now has local support
21for printf.
22
23-- To address these printf issues in a complete manner, ACPICA now
24directly implements a small subset of printf format specifiers, only
25those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
26
27Implemented support for ACPICA generation within the EFI environment.
28Initially, the AcpiDump utility is supported in the UEFI shell
29environment. Lv Zheng.
30
31Added a new external interface, AcpiLogError, to improve ACPICA
32portability. This allows the host to redirect error messages from the
33ACPICA utilities. Lv Zheng.
34
35Added and deployed new OSL file I/O interfaces to improve ACPICA
36portability:
37  AcpiOsOpenFile
38  AcpiOsCloseFile
39  AcpiOsReadFile
40  AcpiOsWriteFile
41  AcpiOsGetFileOffset
42  AcpiOsSetFileOffset
43There are C library implementations of these functions in the new file
44service_layers/oslibcfs.c -- however, the functions can be implemented by
45the local host in any way necessary. Lv Zheng.
46
47Implemented a mechanism to disable/enable ACPI table checksum validation
48at runtime. This can be useful when loading tables very early during OS
49initialization when it may not be possible to map the entire table in
50order to compute the checksum. Lv Zheng.
51
52Fixed a buffer allocation issue for the Generic Serial Bus support.
53Originally, a fixed buffer length was used. This change allows for
54variable-length buffers based upon the protocol indicated by the field
55access attributes. Reported by Lan Tianyu. Lv Zheng.
56
57Fixed a problem where an object detached from a namespace node was not
58properly terminated/cleared and could cause a circular list problem if
59reattached. ACPICA BZ 1063. David Box.
60
61Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
62
63Fixed a possible memory leak in an error return path within the function
64AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
65
66Example Code and Data Size: These are the sizes for the OS-independent
67acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
68debug version of the code includes the debug output trace mechanism and
69has a much larger code and data size.
70
71  Current Release:
72    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
73    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
74  Previous Release:
75    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
76    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
77
78
792) iASL Compiler/Disassembler and Tools:
80
81Disassembler: Add dump of ASCII equivalent text within a comment at the
82end of each line of the output for the Buffer() ASL operator.
83
84AcpiDump: Miscellaneous changes:
85  Fixed repetitive table dump in -n mode.
86  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
87the ACPI 2.0 GUID fails.
88
89iASL: Fixed a problem where the compiler could fault if incorrectly given
90an acpidump output file as input. ACPICA BZ 1088. David Box.
91
92AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
93they are invoked without any arguments.
94
95Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
961086. Colin Ian King.
97
98Disassembler: Cleaned up a block of code that extracts a parent Op
99object. Added a comment that explains that the parent is guaranteed to be
100valid in this case. ACPICA BZ 1069.
101
102----------------------------------------
10324 April 2014. Summary of changes for version 20140424:
104
1051) ACPICA kernel-resident subsystem:
106
107Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
108Some of these tables are known to contain a trailing NULL entry. Lv
109Zheng.
110
111Removed an extraneous error message for the case where there are a large
112number of system GPEs (> 124). This was the "32-bit FADT register is too
113long to convert to GAS struct" message, which is irrelevant for GPEs
114since the GPEx_BLK_LEN fields of the FADT are always used instead of the
115(limited capacity) GAS bit length. Also, several changes to ensure proper
116support for GPE numbers > 255, where some "GPE number" fields were 8-bits
117internally.
118
119Implemented and deployed additional configuration support for the public
120ACPICA external interfaces. Entire classes of interfaces can now be
121easily modified or configured out, replaced by stubbed inline functions
122by default. Lv Zheng.
123
124Moved all public ACPICA runtime configuration globals to the public
125ACPICA external interface file for convenience. Also, removed some
126obsolete/unused globals. See the file acpixf.h. Lv Zheng.
127
128Documentation: Added a new section to the ACPICA reference describing the
129maximum number of GPEs that can be supported by the FADT-defined GPEs in
130block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
131reference.
132
133Example Code and Data Size: These are the sizes for the OS-independent
134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
135debug version of the code includes the debug output trace mechanism and
136has a much larger code and data size.
137
138  Current Release:
139    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
140    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
141  Previous Release:
142    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
143    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
144
145
1462) iASL Compiler/Disassembler and Tools:
147
148iASL and disassembler: Add full support for the LPIT table (Low Power
149Idle Table). Includes support in the disassembler, data table compiler,
150and template generator.
151
152AcpiDump utility:
1531) Add option to force the use of the RSDT (over the XSDT).
1542) Improve validation of the RSDP signature (use 8 chars instead of 4).
155
156iASL: Add check for predefined packages that are too large.  For
157predefined names that contain subpackages, check if each subpackage is
158too large. (Check for too small already exists.)
159
160Debugger: Updated the GPE command (which simulates a GPE by executing the
161GPE code paths in ACPICA). The GPE device is now optional, and defaults
162to the GPE 0/1 FADT-defined blocks.
163
164Unix application OSL: Update line-editing support. Add additional error
165checking and take care not to reset terminal attributes on exit if they
166were never set. This should help guarantee that the terminal is always
167left in the previous state on program exit.
168
169----------------------------------------
17025 March 2014. Summary of changes for version 20140325:
171
1721) ACPICA kernel-resident subsystem:
173
174Updated the auto-serialize feature for control methods. This feature
175automatically serializes all methods that create named objects in order
176to prevent runtime errors. The update adds support to ignore the
177currently executing AML SyncLevel when invoking such a method, in order
178to prevent disruption of any existing SyncLevel priorities that may exist
179in the AML code. Although the use of SyncLevels is relatively rare, this
180change fixes a regression where an AE_AML_MUTEX_ORDER exception can
181appear on some machines starting with the 20140214 release.
182
183Added a new external interface to allow the host to install ACPI tables
184very early, before the namespace is even created. AcpiInstallTable gives
185the host additional flexibility for ACPI table management. Tables can be
186installed directly by the host as if they had originally appeared in the
187XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
188(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
189with additional internal restructuring and cleanup. See the ACPICA
190Reference for interface details. Lv Zheng.
191
192Added validation of the checksum for all incoming dynamically loaded
193tables (via external interfaces or via AML Load/LoadTable operators). Lv
194Zheng.
195
196Updated the use of the AcpiOsWaitEventsComplete interface during Notify
197and GPE handler removal. Restructured calls to eliminate possible race
198conditions. Lv Zheng.
199
200Added a warning for the use/execution of the ASL/AML Unload (table)
201operator. This will help detect and identify machines that use this
202operator if and when it is ever used. This operator has never been seen
203in the field and the usage model and possible side-effects of the drastic
204runtime action of a full table removal are unknown.
205
206Reverted the use of #pragma push/pop which was introduced in the 20140214
207release. It appears that push and pop are not implemented by enough
208compilers to make the use of this feature feasible for ACPICA at this
209time. However, these operators may be deployed in a future ACPICA
210release.
211
212Added the missing EXPORT_SYMBOL macros for the install and remove SCI
213handler interfaces.
214
215Source code generation:
2161) Disabled the use of the "strchr" macro for the gcc-specific
217generation. For some versions of gcc, this macro can periodically expose
218a compiler bug which in turn causes compile-time error(s).
2192) Added support for PPC64 compilation. Colin Ian King.
220
221Example Code and Data Size: These are the sizes for the OS-independent
222acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
223debug version of the code includes the debug output trace mechanism and
224has a much larger code and data size.
225
226  Current Release:
227    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
228    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
229  Previous Release:
230    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
231    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
232
233
2342) iASL Compiler/Disassembler and Tools:
235
236Disassembler: Added several new features to improve the readability of
237the resulting ASL code. Extra information is emitted within comment
238fields in the ASL code:
2391) Known _HID/_CID values are decoded to descriptive text.
2402) Standard values for the Notify() operator are decoded to descriptive
241text.
2423) Target operands are expanded to full pathnames (in a comment) when
243possible.
244
245Disassembler: Miscellaneous updates for extern() handling:
2461) Abort compiler if file specified by -fe option does not exist.
2472) Silence unnecessary warnings about argument count mismatches.
2483) Update warning messages concerning unresolved method externals.
2494) Emit "UnknownObj" keyword for externals whose type cannot be
250determined.
251
252AcpiHelp utility:
2531) Added the -a option to display both the ASL syntax and the AML
254encoding for an input ASL operator. This effectively displays all known
255information about an ASL operator with one AcpiHelp invocation.
2562) Added substring match support (similar to a wildcard) for the -i
257(_HID/PNP IDs) option.
258
259iASL/Disassembler: Since this tool does not yet support execution on big-
260endian machines, added detection of endianness and an error message if
261execution is attempted on big-endian. Support for big-endian within iASL
262is a feature that is on the ACPICA to-be-done list.
263
264AcpiBin utility:
2651) Remove option to extract binary files from an acpidump; this function
266is made obsolete by the AcpiXtract utility.
2672) General cleanup of open files and allocated buffers.
268
269----------------------------------------
27014 February 2014. Summary of changes for version 20140214:
271
2721) ACPICA kernel-resident subsystem:
273
274Implemented a new mechanism to proactively prevent problems with ill-
275behaved reentrant control methods that create named ACPI objects. This
276behavior is illegal as per the ACPI specification, but is nonetheless
277frequently seen in the field. Previously, this could lead to an
278AE_ALREADY_EXISTS exception if the method was actually entered by more
279than one thread. This new mechanism detects such methods at table load
280time and marks them "serialized" to prevent reentrancy. A new global
281option, AcpiGbl_AutoSerializeMethods, has been added to disable this
282feature if desired. This mechanism and global option obsoletes and
283supersedes the previous AcpiGbl_SerializeAllMethods option.
284
285Added the "Windows 2013" string to the _OSI support. ACPICA will now
286respond TRUE to _OSI queries with this string. It is the stated policy of
287ACPICA to add new strings to the _OSI support as soon as possible after
288they are defined. See the full ACPICA _OSI policy which has been added to
289the utilities/utosi.c file.
290
291Hardened/updated the _PRT return value auto-repair code:
2921) Do not abort the repair on a single subpackage failure, continue to
293check all subpackages.
2942) Add check for the minimum subpackage length (4).
2953) Properly handle extraneous NULL package elements.
296
297Added support to avoid the possibility of infinite loops when traversing
298object linked lists. Never allow an infinite loop, even in the face of
299corrupted object lists.
300
301ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
302pack(pop) directives to ensure that the ACPICA headers are independent of
303compiler settings or other host headers.
304
305Example Code and Data Size: These are the sizes for the OS-independent
306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
307debug version of the code includes the debug output trace mechanism and
308has a much larger code and data size.
309
310  Current Release:
311    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
312    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
313  Previous Release:
314    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
315    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
316
317
3182) iASL Compiler/Disassembler and Tools:
319
320iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
321first reserved field was incorrectly forced to have a value of zero. This
322change correctly forces the field to have a value of one. ACPICA BZ 1081.
323
324Debugger: Added missing support for the "Extra" and "Data" subobjects
325when displaying object data.
326
327Debugger: Added support to display entire object linked lists when
328displaying object data.
329
330iASL: Removed the obsolete -g option to obtain ACPI tables from the
331Windows registry. This feature has been superseded by the acpidump
332utility.
333
334----------------------------------------
33514 January 2014. Summary of changes for version 20140114:
336
3371) ACPICA kernel-resident subsystem:
338
339Updated all ACPICA copyrights and signons to 2014. Added the 2014
340copyright to all module headers and signons, including the standard Linux
341header. This affects virtually every file in the ACPICA core subsystem,
342iASL compiler, all ACPICA utilities, and the test suites.
343
344Improved parameter validation for AcpiInstallGpeBlock. Added the
345following checks:
3461) The incoming device handle refers to type ACPI_TYPE_DEVICE.
3472) There is not already a GPE block attached to the device.
348Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
349device.
350
351Correctly support "references" in the ACPI_OBJECT. This change fixes the
352support to allow references (namespace nodes) to be passed as arguments
353to control methods via the evaluate object interface. This is probably
354most useful for testing purposes, however.
355
356Improved support for 32/64 bit physical addresses in printf()-like
357output. This change improves the support for physical addresses in printf
358debug statements and other output on both 32-bit and 64-bit hosts. It
359consistently outputs the appropriate number of bytes for each host. The
360%p specifier is unsatisfactory since it does not emit uniform output on
361all hosts/clib implementations (on some, leading zeros are not supported,
362leading to difficult-to-read output).
363
364Example Code and Data Size: These are the sizes for the OS-independent
365acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
366debug version of the code includes the debug output trace mechanism and
367has a much larger code and data size.
368
369  Current Release:
370    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
371    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
372  Previous Release:
373    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
374    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
375
376
3772) iASL Compiler/Disassembler and Tools:
378
379iASL: Fix a possible fault when using the Connection() operator. Fixes a
380problem if the parent Field definition for the Connection operator refers
381to an operation region that does not exist. ACPICA BZ 1064.
382
383AcpiExec: Load of local test tables is now optional. The utility has the
384capability to load some various tables to test features of ACPICA.
385However, there are enough of them that the output of the utility became
386confusing. With this change, only the required local tables are displayed
387(RSDP, XSDT, etc.) along with the actual tables loaded via the command
388line specification. This makes the default output simler and easier to
389understand. The -el command line option restores the original behavior
390for testing purposes.
391
392AcpiExec: Added support for overlapping operation regions. This change
393expands the simulation of operation regions by supporting regions that
394overlap within the given address space. Supports SystemMemory and
395SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
396
397AcpiExec: Added region handler support for PCI_Config and EC spaces. This
398allows AcpiExec to simulate these address spaces, similar to the current
399support for SystemMemory and SystemIO.
400
401Debugger: Added new command to read/write/compare all namespace objects.
402The command "test objects" will exercise the entire namespace by writing
403new values to each data object, and ensuring that the write was
404successful. The original value is then restored and verified.
405
406Debugger: Added the "test predefined" command. This change makes this
407test public and puts it under the new "test" command. The test executes
408each and every predefined name within the current namespace.
409
410----------------------------------------
41118 December 2013. Summary of changes for version 20131218:
412
413Global note: The ACPI 5.0A specification was released this month. There
414are no changes needed for ACPICA since this release of ACPI is an
415errata/clarification release. The specification is available at
416acpi.info.
417
418
4191) ACPICA kernel-resident subsystem:
420
421Added validation of the XSDT root table if it is present. Some older
422platforms contain an XSDT that is ill-formed or otherwise invalid (such
423as containing some or all entries that are NULL pointers). This change
424adds a new function to validate the XSDT before actually using it. If the
425XSDT is found to be invalid, ACPICA will now automatically fall back to
426using the RSDT instead. Original implementation by Zhao Yakui. Ported to
427ACPICA and enhanced by Lv Zheng and Bob Moore.
428
429Added a runtime option to ignore the XSDT and force the use of the RSDT.
430This change adds a runtime option that will force ACPICA to use the RSDT
431instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
432requires that an XSDT be used instead of the RSDT, the XSDT has been
433found to be corrupt or ill-formed on some machines. Lv Zheng.
434
435Added a runtime option to favor 32-bit FADT register addresses over the
43664-bit addresses. This change adds an option to favor 32-bit FADT
437addresses when there is a conflict between the 32-bit and 64-bit versions
438of the same register. The default behavior is to use the 64-bit version
439in accordance with the ACPI specification. This can now be overridden via
440the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
441
442During the change above, the internal "Convert FADT" and "Verify FADT"
443functions have been merged to simplify the code, making it easier to
444understand and maintain. ACPICA BZ 933.
445
446Improve exception reporting and handling for GPE block installation.
447Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
448status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
449
450Added helper macros to extract bus/segment numbers from the HEST table.
451This change adds two macros to extract the encoded bus and segment
452numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
453Betty Dall <betty.dall@hp.com>
454
455Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
456by ACPICA. It is not a public macro, so it should have no effect on
457existing OSV code. Lv Zheng.
458
459Example Code and Data Size: These are the sizes for the OS-independent
460acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
461debug version of the code includes the debug output trace mechanism and
462has a much larger code and data size.
463
464  Current Release:
465    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
466    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
467  Previous Release:
468    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
469    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
470
471
4722) iASL Compiler/Disassembler and Tools:
473
474Disassembler: Improved pathname support for emitted External()
475statements. This change adds full pathname support for external names
476that have been resolved internally by the inclusion of additional ACPI
477tables (via the iASL -e option). Without this change, the disassembler
478can emit multiple externals for the same object, or it become confused
479when the Scope() operator is used on an external object. Overall, greatly
480improves the ability to actually recompile the emitted ASL code when
481objects a referenced across multiple ACPI tables. Reported by Michael
482Tsirkin (mst@redhat.com).
483
484Tests/ASLTS: Updated functional control suite to execute with no errors.
485David Box. Fixed several errors related to the testing of the interpreter
486slack mode. Lv Zheng.
487
488iASL: Added support to detect names that are declared within a control
489method, but are unused (these are temporary names that are only valid
490during the time the method is executing). A remark is issued for these
491cases. ACPICA BZ 1022.
492
493iASL: Added full support for the DBG2 table. Adds full disassembler,
494table compiler, and template generator support for the DBG2 table (Debug
495Port 2 table).
496
497iASL: Added full support for the PCCT table, update the table definition.
498Updates the PCCT table definition in the actbl3.h header and adds table
499compiler and template generator support.
500
501iASL: Added an option to emit only error messages (no warnings/remarks).
502The -ve option will enable only error messages, warnings and remarks are
503suppressed. This can simplify debugging when only the errors are
504important, such as when an ACPI table is disassembled and there are many
505warnings and remarks -- but only the actual errors are of real interest.
506
507Example ACPICA code (source/tools/examples): Updated the example code so
508that it builds to an actual working program, not just example code. Added
509ACPI tables and execution of an example control method in the DSDT. Added
510makefile support for Unix generation.
511
512----------------------------------------
51315 November 2013. Summary of changes for version 20131115:
514
515This release is available at https://acpica.org/downloads
516
517
5181) ACPICA kernel-resident subsystem:
519
520Resource Manager: Fixed loop termination for the "get AML length"
521function. The loop previously had an error termination on a NULL resource
522pointer, which can never happen since the loop simply increments a valid
523resource pointer. This fix changes the loop to terminate with an error on
524an invalid end-of-buffer condition. The problem can be seen as an
525infinite loop by callers to AcpiSetCurrentResources with an invalid or
526corrupted resource descriptor, or a resource descriptor that is missing
527an END_TAG descriptor. Reported by Dan Carpenter
528<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
529
530Table unload and ACPICA termination: Delete all attached data objects
531during namespace node deletion. This fix updates namespace node deletion
532to delete the entire list of attached objects (attached via
533AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
5341024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
535
536ACPICA termination: Added support to delete all objects attached to the
537root namespace node. This fix deletes any and all objects that have been
538attached to the root node via AcpiAttachData. Previously, none of these
539objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
540
541Debug output: Do not emit the function nesting level for the in-kernel
542build. The nesting level is really only useful during a single-thread
543execution. Therefore, only enable this output for the AcpiExec utility.
544Also, only emit the thread ID when executing under AcpiExec (Context
545switches are still always detected and a message is emitted). ACPICA BZ
546972.
547
548Example Code and Data Size: These are the sizes for the OS-independent
549acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
550debug version of the code includes the debug output trace mechanism and
551has a much larger code and data size.
552
553  Current Release:
554    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
555    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
556  Previous Release:
557    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
558    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
559
560
5612) iASL Compiler/Disassembler and Tools:
562
563AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
564correct portable POSIX header for terminal control functions.
565
566Disassembler: Fixed control method invocation issues related to the use
567of the CondRefOf() operator. The problem is seen in the disassembly where
568control method invocations may not be disassembled properly if the
569control method name has been used previously as an argument to CondRefOf.
570The solution is to not attempt to emit an external declaration for the
571CondRefOf target (it is not necessary in the first place). This prevents
572disassembler object type confusion. ACPICA BZ 988.
573
574Unix Makefiles: Added an option to disable compiler optimizations and the
575_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
576with optimizations (reportedly, gcc 4.4 for example). This change adds a
577command line option for make (NOOPT) that disables all compiler
578optimizations and the _FORTIFY_SOURCE compiler flag. The default
579optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
5801034. Lv Zheng, Bob Moore.
581
582Tests/ASLTS: Added options to specify individual test cases and modes.
583This allows testers running aslts.sh to optionally specify individual
584test modes and test cases. Also added an option to disable the forced
585generation of the ACPICA tools from source if desired. Lv Zheng.
586
587----------------------------------------
58827 September 2013. Summary of changes for version 20130927:
589
590This release is available at https://acpica.org/downloads
591
592
5931) ACPICA kernel-resident subsystem:
594
595Fixed a problem with store operations to reference objects. This change
596fixes a problem where a Store operation to an ArgX object that contained
597a
598reference to a field object did not complete the automatic dereference
599and
600then write to the actual field object. Instead, the object type of the
601field object was inadvertently changed to match the type of the source
602operand. The new behavior will actually write to the field object (buffer
603field or field unit), thus matching the correct ACPI-defined behavior.
604
605Implemented support to allow the host to redefine individual OSL
606prototypes. This change enables the host to redefine OSL prototypes found
607in the acpiosxf.h file. This allows the host to implement OSL interfaces
608with a macro or inlined function. Further, it allows the host to add any
609additional required modifiers such as __iomem, __init, __exit, etc., as
610necessary on a per-interface basis. Enables maximum flexibility for the
611OSL interfaces. Lv Zheng.
612
613Hardcoded the access width for the FADT-defined reset register. The ACPI
614specification requires the reset register width to be 8 bits. ACPICA now
615hardcodes the width to 8 and ignores the FADT width value. This provides
616compatibility with other ACPI implementations that have allowed BIOS code
617with bad register width values to go unnoticed. Matthew Garett, Bob
618Moore,
619Lv Zheng.
620
621Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
622used
623in the OSL header (acpiosxf). The change modifies the position of this
624macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
625build issues if the OSL defines the implementation of the interface to be
626an inline stub function. Lv Zheng.
627
628Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
629initialization interfaces. This change adds a new macro for the main init
630and terminate external interfaces in order to support hosts that require
631additional or different processing for these functions. Changed from
632ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
633Zheng, Bob Moore.
634
635Cleaned up the memory allocation macros for configurability. In the
636common
637case, the ACPI_ALLOCATE and related macros now resolve directly to their
638respective AcpiOs* OSL interfaces. Two options:
6391) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
640default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
6412) For AcpiExec (and for debugging), the macros can optionally be
642resolved
643to the local ACPICA interfaces that track each allocation (local tracking
644is used to immediately detect memory leaks).
645Lv Zheng.
646
647Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
648to predefine this macro to either TRUE or FALSE during the system build.
649
650Replaced __FUNCTION_ with __func__ in the gcc-specific header.
651
652Example Code and Data Size: These are the sizes for the OS-independent
653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
654debug version of the code includes the debug output trace mechanism and
655has a much larger code and data size.
656
657  Current Release:
658    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
659    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
660  Previous Release:
661    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
662    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
663
664
6652) iASL Compiler/Disassembler and Tools:
666
667iASL: Implemented wildcard support for the -e option. This simplifies use
668when there are many SSDTs that must be included to resolve external
669method
670declarations. ACPICA BZ 1041. Example:
671    iasl -e ssdt*.dat -d dsdt.dat
672
673AcpiExec: Add history/line-editing for Unix/Linux systems. This change
674adds a portable module that implements full history and limited line
675editing for Unix and Linux systems. It does not use readline() due to
676portability issues. Instead it uses the POSIX termio interface to put the
677terminal in raw input mode so that the various special keys can be
678trapped
679(such as up/down-arrow for history support and left/right-arrow for line
680editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
681
682AcpiXtract: Add support to handle (ignore) "empty" lines containing only
683one or more spaces. This provides compatible with early or different
684versions of the AcpiDump utility. ACPICA BZ 1044.
685
686AcpiDump: Do not ignore tables that contain only an ACPI table header.
687Apparently, some BIOSs create SSDTs that contain an ACPI table header but
688no other data. This change adds support to dump these tables. Any tables
689shorter than the length of an ACPI table header remain in error (an error
690message is emitted). Reported by Yi Li.
691
692Debugger: Echo actual command along with the "unknown command" message.
693
694----------------------------------------
69523 August 2013. Summary of changes for version 20130823:
696
6971) ACPICA kernel-resident subsystem:
698
699Implemented support for host-installed System Control Interrupt (SCI)
700handlers. Certain ACPI functionality requires the host to handle raw
701SCIs. For example, the "SCI Doorbell" that is defined for memory power
702state support requires the host device driver to handle SCIs to examine
703if the doorbell has been activated. Multiple SCI handlers can be
704installed to allow for future expansion. New external interfaces are
705AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
706details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
707
708Operation region support: Never locally free the handler "context"
709pointer. This change removes some dangerous code that attempts to free
710the handler context pointer in some (rare) circumstances. The owner of
711the handler owns this pointer and the ACPICA code should never touch it.
712Although not seen to be an issue in any kernel, it did show up as a
713problem (fault) under AcpiExec. Also, set the internal storage field for
714the context pointer to zero when the region is deactivated, simply for
715sanity. David Box. ACPICA BZ 1039.
716
717AcpiRead: On error, do not modify the return value target location. If an
718error happens in the middle of a split 32/32 64-bit I/O operation, do not
719modify the target of the return value pointer. Makes the code consistent
720with the rest of ACPICA. Bjorn Helgaas.
721
722Example Code and Data Size: These are the sizes for the OS-independent
723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
724debug version of the code includes the debug output trace mechanism and
725has a much larger code and data size.
726
727  Current Release:
728    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
729    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
730  Previous Release:
731    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
732    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
733
734
7352) iASL Compiler/Disassembler and Tools:
736
737AcpiDump: Implemented several new features and fixed some problems:
7381) Added support to dump the RSDP, RSDT, and XSDT tables.
7392) Added support for multiple table instances (SSDT, UEFI).
7403) Added option to dump "customized" (overridden) tables (-c).
7414) Fixed a problem where some table filenames were improperly
742constructed.
7435) Improved some error messages, removed some unnecessary messages.
744
745iASL: Implemented additional support for disassembly of ACPI tables that
746contain invocations of external control methods. The -fe<file> option
747allows the import of a file that specifies the external methods along
748with the required number of arguments for each -- allowing for the
749correct disassembly of the table. This is a workaround for a limitation
750of AML code where the disassembler often cannot determine the number of
751arguments required for an external control method and generates incorrect
752ASL code. See the iASL reference for details. ACPICA BZ 1030.
753
754Debugger: Implemented a new command (paths) that displays the full
755pathnames (namepaths) and object types of all objects in the namespace.
756This is an alternative to the namespace command.
757
758Debugger: Implemented a new command (sci) that invokes the SCI dispatch
759mechanism and any installed handlers.
760
761iASL: Fixed a possible segfault for "too many parent prefixes" condition.
762This can occur if there are too many parent prefixes in a namepath (for
763example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
764
765Application OSLs: Set the return value for the PCI read functions. These
766functions simply return AE_OK, but should set the return value to zero
767also. This change implements this. ACPICA BZ 1038.
768
769Debugger: Prevent possible command line buffer overflow. Increase the
770size of a couple of the debugger line buffers, and ensure that overflow
771cannot happen. ACPICA BZ 1037.
772
773iASL: Changed to abort immediately on serious errors during the parsing
774phase. Due to the nature of ASL, there is no point in attempting to
775compile these types of errors, and they typically end up causing a
776cascade of hundreds of errors which obscure the original problem.
777
778----------------------------------------
77925 July 2013. Summary of changes for version 20130725:
780
7811) ACPICA kernel-resident subsystem:
782
783Fixed a problem with the DerefOf operator where references to FieldUnits
784and BufferFields incorrectly returned the parent object, not the actual
785value of the object. After this change, a dereference of a FieldUnit
786reference results in a read operation on the field to get the value, and
787likewise, the appropriate BufferField value is extracted from the target
788buffer.
789
790Fixed a problem where the _WAK method could cause a fault under these
791circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
792method returned no value. The problem is rarely seen because most kernels
793run ACPICA in slack mode.
794
795For the DerefOf operator, a fatal error now results if an attempt is made
796to dereference a reference (created by the Index operator) to a NULL
797package element. Provides compatibility with other ACPI implementations,
798and this behavior will be added to a future version of the ACPI
799specification.
800
801The ACPI Power Management Timer (defined in the FADT) is now optional.
802This provides compatibility with other ACPI implementations and will
803appear in the next version of the ACPI specification. If there is no PM
804Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
805zero in the FADT indicates no PM timer.
806
807Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
808allows the host to globally enable/disable all vendor strings, all
809feature strings, or both. Intended to be primarily used for debugging
810purposes only. Lv Zheng.
811
812Expose the collected _OSI data to the host via a global variable. This
813data tracks the highest level vendor ID that has been invoked by the BIOS
814so that the host (and potentially ACPICA itself) can change behaviors
815based upon the age of the BIOS.
816
817Example Code and Data Size: These are the sizes for the OS-independent
818acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
819debug version of the code includes the debug output trace mechanism and
820has a much larger code and data size.
821
822  Current Release:
823    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
824    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
825  Previous Release:
826    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
827    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
828
829
8302) iASL Compiler/Disassembler and Tools:
831
832iASL: Created the following enhancements for the -so option (create
833offset table):
8341)Add offsets for the last nameseg in each namepath for every supported
835object type
8362)Add support for Processor, Device, Thermal Zone, and Scope objects
8373)Add the actual AML opcode for the parent object of every supported
838object type
8394)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
840
841Disassembler: Emit all unresolved external symbols in a single block.
842These are external references to control methods that could not be
843resolved, and thus, the disassembler had to make a guess at the number of
844arguments to parse.
845
846iASL: The argument to the -T option (create table template) is now
847optional. If not specified, the default table is a DSDT, typically the
848most common case.
849
850----------------------------------------
85126 June 2013. Summary of changes for version 20130626:
852
8531) ACPICA kernel-resident subsystem:
854
855Fixed an issue with runtime repair of the _CST object. Null or invalid
856elements were not always removed properly. Lv Zheng.
857
858Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
859FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
860the maximum number of GPEs is 1016. Use of multiple GPE block devices
861makes the system-wide number of GPEs essentially unlimited.
862
863Example Code and Data Size: These are the sizes for the OS-independent
864acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
865debug version of the code includes the debug output trace mechanism and
866has a much larger code and data size.
867
868  Current Release:
869    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
870    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
871  Previous Release:
872    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
873    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
874
875
8762) iASL Compiler/Disassembler and Tools:
877
878Portable AcpiDump: Implemented full support for the Linux and FreeBSD
879hosts. Now supports Linux, FreeBSD, and Windows.
880
881Disassembler: Added some missing types for the HEST and EINJ tables: "Set
882Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
883
884iASL/Preprocessor: Implemented full support for nested
885#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
886
887Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
888max. The original purpose of this constraint was to limit the amount of
889debug output. However, the string function in question (UtPrintString) is
890now used for the disassembler also, where 256 bytes is insufficient.
891Reported by RehabMan@GitHub.
892
893iASL/DataTables: Fixed some problems and issues with compilation of DMAR
894tables. ACPICA BZ 999. Lv Zheng.
895
896iASL: Fixed a couple of error exit issues that could result in a "Could
897not delete <file>" message during ASL compilation.
898
899AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
900the actual signatures for these tables are "FACP" and "APIC",
901respectively.
902
903AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
904tables are allowed to have multiple instances.
905
906----------------------------------------
90717 May 2013. Summary of changes for version 20130517:
908
9091) ACPICA kernel-resident subsystem:
910
911Fixed a regression introduced in version 20130328 for _INI methods. This
912change fixes a problem introduced in 20130328 where _INI methods are no
913longer executed properly because of a memory block that was not
914initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
915<tomasz.nowicki@linaro.org>.
916
917Fixed a possible problem with the new extended sleep registers in the
918ACPI
9195.0 FADT. Do not use these registers (even if populated) unless the HW-
920reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
9211020. Lv Zheng.
922
923Implemented return value repair code for _CST predefined objects: Sort
924the
925list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
926
927Implemented a debug-only option to disable loading of SSDTs from the
928RSDT/XSDT during ACPICA initialization. This can be useful for debugging
929ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
930acglobal.h - ACPICA BZ 1005. Lv Zheng.
931
932Fixed some issues in the ACPICA initialization and termination code:
933Tomasz Nowicki <tomasz.nowicki@linaro.org>
9341) Clear events initialized flag upon event component termination. ACPICA
935BZ 1013.
9362) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
9373) Delete global lock pending lock during termination. ACPICA BZ 1012.
9384) Clear debug buffer global on termination to prevent possible multiple
939delete. ACPICA BZ 1010.
940
941Standardized all switch() blocks across the entire source base. After
942many
943years, different formatting for switch() had crept in. This change makes
944the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
945
946Split some files to enhance ACPICA modularity and configurability:
9471) Split buffer dump routines into utilities/utbuffer.c
9482) Split internal error message routines into utilities/uterror.c
9493) Split table print utilities into tables/tbprint.c
9504) Split iASL command-line option processing into asloptions.c
951
952Makefile enhancements:
9531) Support for all new files above.
9542) Abort make on errors from any subcomponent. Chao Guan.
9553) Add build support for Apple Mac OS X. Liang Qi.
956
957Example Code and Data Size: These are the sizes for the OS-independent
958acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
959debug version of the code includes the debug output trace mechanism and
960has a much larger code and data size.
961
962  Current Release:
963    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
964    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
965  Previous Release:
966    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
967    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
968
969
9702) iASL Compiler/Disassembler and Tools:
971
972New utility: Implemented an easily portable version of the acpidump
973utility to extract ACPI tables from the system (or a file) in an ASCII
974hex
975dump format. The top-level code implements the various command line
976options, file I/O, and table dump routines. To port to a new host, only
977three functions need to be implemented to get tables -- since this
978functionality is OS-dependent. See the tools/acpidump/apmain.c module and
979the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
9801) The Windows version obtains the ACPI tables from the Registry.
9812) The Linux version is under development.
9823) Other hosts - If an OS-dependent module is submitted, it will be
983distributed with ACPICA.
984
985iASL: Fixed a regression for -D preprocessor option (define symbol). A
986restructuring/change to the initialization sequence caused this option to
987no longer work properly.
988
989iASL: Implemented a mechanism to disable specific warnings and remarks.
990Adds a new command line option, "-vw <messageid> as well as "#pragma
991disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
992
993iASL: Fix for too-strict package object validation. The package object
994validation for return values from the predefined names is a bit too
995strict, it does not allow names references within the package (which will
996be resolved at runtime.) These types of references cannot be validated at
997compile time. This change ignores named references within package objects
998for names that return or define static packages.
999
1000Debugger: Fixed the 80-character command line limitation for the History
1001command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1002
1003iASL: Added control method and package support for the -so option
1004(generates AML offset table for BIOS support.)
1005
1006iASL: issue a remark if a non-serialized method creates named objects. If
1007a thread blocks within the method for any reason, and another thread
1008enters the method, the method will fail because an attempt will be made
1009to
1010create the same (named) object twice. In this case, issue a remark that
1011the method should be marked serialized. NOTE: may become a warning later.
1012ACPICA BZ 909.
1013
1014----------------------------------------
101518 April 2013. Summary of changes for version 20130418:
1016
10171) ACPICA kernel-resident subsystem:
1018
1019Fixed a possible buffer overrun during some rare but specific field unit
1020read operations. This overrun can only happen if the DSDT version is 1 --
1021meaning that all AML integers are 32 bits -- and the field length is
1022between 33 and 55 bits long. During the read, an internal buffer object
1023is
1024created for the field unit because the field is larger than an integer
1025(32
1026bits). However, in this case, the buffer will be incorrectly written
1027beyond the end because the buffer length is less than the internal
1028minimum
1029of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1030long, but a full 8 bytes will be written.
1031
1032Updated the Embedded Controller "orphan" _REG method support. This refers
1033to _REG methods under the EC device that have no corresponding operation
1034region. This is allowed by the ACPI specification. This update removes a
1035dependency on the existence an ECDT table. It will execute an orphan _REG
1036method as long as the operation region handler for the EC is installed at
1037the EC device node and not the namespace root. Rui Zhang (original
1038update), Bob Moore (update/integrate).
1039
1040Implemented run-time argument typechecking for all predefined ACPI names
1041(_STA, _BIF, etc.) This change performs object typechecking on all
1042incoming arguments for all predefined names executed via
1043AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1044passing correct object types as well as the correct number of arguments
1045(therefore identifying any issues immediately). Also, the ASL/namespace
1046definition of the predefined name is checked against the ACPI
1047specification for the proper argument count. Adds one new file,
1048nsarguments.c
1049
1050Changed an exception code for the ASL UnLoad() operator. Changed the
1051exception code for the case where the input DdbHandle is invalid, from
1052AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1053
1054Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
1055global makefile. The use of this flag causes compiler errors on earlier
1056versions of GCC, so it has been removed for compatibility.
1057
1058Miscellaneous cleanup:
10591) Removed some unused/obsolete macros
10602) Fixed a possible memory leak in the _OSI support
10613) Removed an unused variable in the predefined name support
10624) Windows OSL: remove obsolete reference to a memory list field
1063
1064Example Code and Data Size: These are the sizes for the OS-independent
1065acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1066debug version of the code includes the debug output trace mechanism and
1067has a much larger code and data size.
1068
1069  Current Release:
1070    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1071    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1072  Previous Release:
1073    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1074    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1075
1076
10772) iASL Compiler/Disassembler and Tools:
1078
1079AcpiExec: Added installation of a handler for the SystemCMOS address
1080space. This prevents control method abort if a method accesses this
1081space.
1082
1083AcpiExec: Added support for multiple EC devices, and now install EC
1084operation region handler(s) at the actual EC device instead of the
1085namespace root. This reflects the typical behavior of host operating
1086systems.
1087
1088AcpiExec: Updated to ensure that all operation region handlers are
1089installed before the _REG methods are executed. This prevents a _REG
1090method from aborting if it accesses an address space has no handler.
1091AcpiExec installs a handler for every possible address space.
1092
1093Debugger: Enhanced the "handlers" command to display non-root handlers.
1094This change enhances the handlers command to display handlers associated
1095with individual devices throughout the namespace, in addition to the
1096currently supported display of handlers associated with the root
1097namespace
1098node.
1099
1100ASL Test Suite: Several test suite errors have been identified and
1101resolved, reducing the total error count during execution. Chao Guan.
1102
1103----------------------------------------
110428 March 2013. Summary of changes for version 20130328:
1105
11061) ACPICA kernel-resident subsystem:
1107
1108Fixed several possible race conditions with the internal object reference
1109counting mechanism. Some of the external ACPICA interfaces update object
1110reference counts without holding the interpreter or namespace lock. This
1111change adds a spinlock to protect reference count updates on the internal
1112ACPICA objects. Reported by and with assistance from Andriy Gapon
1113(avg@FreeBSD.org).
1114
1115FADT support: Removed an extraneous warning for very large GPE register
1116sets. This change removes a size mismatch warning if the legacy length
1117field for a GPE register set is larger than the 64-bit GAS structure can
1118accommodate. GPE register sets can be larger than the 255-bit width
1119limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1120
1121_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1122return from this interface. Handles a possible timeout case if
1123ACPI_WAIT_FOREVER is modified by the host to be a value less than
1124"forever". Jung-uk Kim.
1125
1126Predefined name support: Add allowed/required argument type information
1127to
1128the master predefined info table. This change adds the infrastructure to
1129enable typechecking on incoming arguments for all predefined
1130methods/objects. It does not actually contain the code that will fully
1131utilize this information, this is still under development. Also condenses
1132some duplicate code for the predefined names into a new module,
1133utilities/utpredef.c
1134
1135Example Code and Data Size: These are the sizes for the OS-independent
1136acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1137debug version of the code includes the debug output trace mechanism and
1138has a much larger code and data size.
1139
1140  Previous Release:
1141    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1142    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1143  Current Release:
1144    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1145    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1146
1147
11482) iASL Compiler/Disassembler and Tools:
1149
1150iASL: Implemented a new option to simplify the development of ACPI-
1151related
1152BIOS code. Adds support for a new "offset table" output file. The -so
1153option will create a C table containing the AML table offsets of various
1154named objects in the namespace so that BIOS code can modify them easily
1155at
1156boot time. This can simplify BIOS runtime code by eliminating expensive
1157searches for "magic values", enhancing boot times and adding greater
1158reliability. With assistance from Lee Hamel.
1159
1160iASL: Allow additional predefined names to return zero-length packages.
1161Now, all predefined names that are defined by the ACPI specification to
1162return a "variable-length package of packages" are allowed to return a
1163zero length top-level package. This allows the BIOS to tell the host that
1164the requested feature is not supported, and supports existing BIOS/ASL
1165code and practices.
1166
1167iASL: Changed the "result not used" warning to an error. This is the case
1168where an ASL operator is effectively a NOOP because the result of the
1169operation is not stored anywhere. For example:
1170    Add (4, Local0)
1171There is no target (missing 3rd argument), nor is the function return
1172value used. This is potentially a very serious problem -- since the code
1173was probably intended to do something, but for whatever reason, the value
1174was not stored. Therefore, this issue has been upgraded from a warning to
1175an error.
1176
1177AcpiHelp: Added allowable/required argument types to the predefined names
1178info display. This feature utilizes the recent update to the predefined
1179names table (above).
1180
1181----------------------------------------
118214 February 2013. Summary of changes for version 20130214:
1183
11841) ACPICA Kernel-resident Subsystem:
1185
1186Fixed a possible regression on some hosts: Reinstated the safe return
1187macros (return_ACPI_STATUS, etc.) that ensure that the argument is
1188evaluated only once. Although these macros are not needed for the ACPICA
1189code itself, they are often used by ACPI-related host device drivers
1190where
1191the safe feature may be necessary.
1192
1193Fixed several issues related to the ACPI 5.0 reduced hardware support
1194(SOC): Now ensure that if the platform declares itself as hardware-
1195reduced
1196via the FADT, the following functions become NOOPs (and always return
1197AE_OK) because ACPI is always enabled by definition on these machines:
1198  AcpiEnable
1199  AcpiDisable
1200  AcpiHwGetMode
1201  AcpiHwSetMode
1202
1203Dynamic Object Repair: Implemented additional runtime repairs for
1204predefined name return values. Both of these repairs can simplify code in
1205the related device drivers that invoke these methods:
12061) For the _STR and _MLS names, automatically repair/convert an ASCII
1207string to a Unicode buffer.
12082) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
1209a
1210lone end tag descriptor in the following cases: A Return(0) was executed,
1211a null buffer was returned, or no object at all was returned (non-slack
1212mode only). Adds a new file, nsconvert.c
1213ACPICA BZ 998. Bob Moore, Lv Zheng.
1214
1215Resource Manager: Added additional code to prevent possible infinite
1216loops
1217while traversing corrupted or ill-formed resource template buffers. Check
1218for zero-length resource descriptors in all code that loops through
1219resource templates (the length field is used to index through the
1220template). This change also hardens the external AcpiWalkResources and
1221AcpiWalkResourceBuffer interfaces.
1222
1223Local Cache Manager: Enhanced the main data structure to eliminate an
1224unnecessary mechanism to access the next object in the list. Actually
1225provides a small performance enhancement for hosts that use the local
1226ACPICA cache manager. Jung-uk Kim.
1227
1228Example Code and Data Size: These are the sizes for the OS-independent
1229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1230debug version of the code includes the debug output trace mechanism and
1231has a much larger code and data size.
1232
1233  Previous Release:
1234    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1235    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1236  Current Release:
1237    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1238    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1239
1240
12412) iASL Compiler/Disassembler and Tools:
1242
1243iASL/Disassembler: Fixed several issues with the definition of the ACPI
12445.0 RASF table (RAS Feature Table). This change incorporates late changes
1245that were made to the ACPI 5.0 specification.
1246
1247iASL/Disassembler: Added full support for the following new ACPI tables:
1248  1) The MTMR table (MID Timer Table)
1249  2) The VRTC table (Virtual Real Time Clock Table).
1250Includes header file, disassembler, table compiler, and template support
1251for both tables.
1252
1253iASL: Implemented compile-time validation of package objects returned by
1254predefined names. This new feature validates static package objects
1255returned by the various predefined names defined to return packages. Both
1256object types and package lengths are validated, for both parent packages
1257and sub-packages, if any. The code is similar in structure and behavior
1258to
1259the runtime repair mechanism within the AML interpreter and uses the
1260existing predefined name information table. Adds a new file, aslprepkg.c.
1261ACPICA BZ 938.
1262
1263iASL: Implemented auto-detection of binary ACPI tables for disassembly.
1264This feature detects a binary file with a valid ACPI table header and
1265invokes the disassembler automatically. Eliminates the need to
1266specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1267
1268iASL/Disassembler: Added several warnings for the case where there are
1269unresolved control methods during the disassembly. This can potentially
1270cause errors when the output file is compiled, because the disassembler
1271assumes zero method arguments in these cases (it cannot determine the
1272actual number of arguments without resolution/definition of the method).
1273
1274Debugger: Added support to display all resources with a single command.
1275Invocation of the resources command with no arguments will now display
1276all
1277resources within the current namespace.
1278
1279AcpiHelp: Added descriptive text for each ACPICA exception code displayed
1280via the -e option.
1281
1282----------------------------------------
128317 January 2013. Summary of changes for version 20130117:
1284
12851) ACPICA Kernel-resident Subsystem:
1286
1287Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
1288return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
1289objects to return a package containing one integer, most BIOS code
1290returns
1291two integers and the previous code reflects that. However, we also need
1292to
1293support BIOS code that actually implements to the ACPI spec, and this
1294change reflects this.
1295
1296Fixed two issues with the ACPI_DEBUG_PRINT macros:
12971) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
1298C compilers that require this support.
12992) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
1300ACPI_DEBUG is already used by many of the various hosts.
1301
1302Updated all ACPICA copyrights and signons to 2013. Added the 2013
1303copyright to all module headers and signons, including the standard Linux
1304header. This affects virtually every file in the ACPICA core subsystem,
1305iASL compiler, all ACPICA utilities, and the test suites.
1306
1307Example Code and Data Size: These are the sizes for the OS-independent
1308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1309debug version of the code includes the debug output trace mechanism and
1310has a much larger code and data size.
1311
1312  Previous Release:
1313    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1314    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1315  Current Release:
1316    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1317    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1318
1319
13202) iASL Compiler/Disassembler and Tools:
1321
1322Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
1323prevent a possible fault on some hosts. Some C libraries modify the arg
1324pointer parameter to vfprintf making it difficult to call it twice in the
1325AcpiOsVprintf function. Use a local buffer to workaround this issue. This
1326does not affect the Windows OSL since the Win C library does not modify
1327the arg pointer. Chao Guan, Bob Moore.
1328
1329iASL: Fixed a possible infinite loop when the maximum error count is
1330reached. If an output file other than the .AML file is specified (such as
1331a listing file), and the maximum number of errors is reached, do not
1332attempt to flush data to the output file(s) as the compiler is aborting.
1333This can cause an infinite loop as the max error count code essentially
1334keeps calling itself.
1335
1336iASL/Disassembler: Added an option (-in) to ignore NOOP
1337opcodes/operators.
1338Implemented for both the compiler and the disassembler. Often, the NOOP
1339opcode is used as padding for packages that are changed dynamically by
1340the
1341BIOS. When disassembled and recompiled, these NOOPs will cause syntax
1342errors. This option causes the disassembler to ignore all NOOP opcodes
1343(0xA3), and it also causes the compiler to ignore all ASL source code
1344NOOP
1345statements as well.
1346
1347Debugger: Enhanced the Sleep command to execute all sleep states. This
1348change allows Sleep to be invoked with no arguments and causes the
1349debugger to execute all of the sleep states, 0-5, automatically.
1350
1351----------------------------------------
135220 December 2012. Summary of changes for version 20121220:
1353
13541) ACPICA Kernel-resident Subsystem:
1355
1356Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
1357alternate entry point for AcpiWalkResources and improves the usability of
1358the resource manager by accepting as input a buffer containing the output
1359of either a _CRS, _PRS, or _AEI method. The key functionality is that the
1360input buffer is not deleted by this interface so that it can be used by
1361the host later. See the ACPICA reference for details.
1362
1363Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
1364(DSDT version < 2). The constant will be truncated and this warning
1365reflects that behavior.
1366
1367Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
1368ExtendedInterrupt, and GpioInt descriptors. This change adds support to
1369both get and set the new wake bit in these descriptors, separately from
1370the existing share bit. Reported by Aaron Lu.
1371
1372Interpreter: Fix Store() when an implicit conversion is not possible. For
1373example, in the cases such as a store of a string to an existing package
1374object, implement the store as a CopyObject(). This is a small departure
1375from the ACPI specification which states that the control method should
1376be
1377aborted in this case. However, the ASLTS suite depends on this behavior.
1378
1379Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
1380macros: check if debug output is currently enabled as soon as possible to
1381minimize performance impact if debug is in fact not enabled.
1382
1383Source code restructuring: Cleanup to improve modularity. The following
1384new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
1385psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
1386Associated makefiles and project files have been updated.
1387
1388Changed an exception code for LoadTable operator. For the case where one
1389of the input strings is too long, change the returned exception code from
1390AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1391
1392Fixed a possible memory leak in dispatcher error path. On error, delete
1393the mutex object created during method mutex creation. Reported by
1394tim.gardner@canonical.com.
1395
1396Example Code and Data Size: These are the sizes for the OS-independent
1397acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1398debug version of the code includes the debug output trace mechanism and
1399has a much larger code and data size.
1400
1401  Previous Release:
1402    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1403    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1404  Current Release:
1405    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1406    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1407
1408
14092) iASL Compiler/Disassembler and Tools:
1410
1411iASL: Disallow a method call as argument to the ObjectType ASL operator.
1412This change tracks an errata to the ACPI 5.0 document. The AML grammar
1413will not allow the interpreter to differentiate between a method and a
1414method invocation when these are used as an argument to the ObjectType
1415operator. The ACPI specification change is to disallow a method
1416invocation
1417(UserTerm) for the ObjectType operator.
1418
1419Finish support for the TPM2 and CSRT tables in the headers, table
1420compiler, and disassembler.
1421
1422Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
1423always expires immediately if the semaphore is not available. The
1424original
1425code was using a relative-time timeout, but sem_timedwait requires the
1426use
1427of an absolute time.
1428
1429iASL: Added a remark if the Timer() operator is used within a 32-bit
1430table. This operator returns a 64-bit time value that will be truncated
1431within a 32-bit table.
1432
1433iASL Source code restructuring: Cleanup to improve modularity. The
1434following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
1435aslmethod.c, and aslfileio.c. Associated makefiles and project files have
1436been updated.
1437
1438
1439----------------------------------------
144014 November 2012. Summary of changes for version 20121114:
1441
14421) ACPICA Kernel-resident Subsystem:
1443
1444Implemented a performance enhancement for ACPI/AML Package objects. This
1445change greatly increases the performance of Package objects within the
1446interpreter. It changes the processing of reference counts for packages
1447by
1448optimizing for the most common case where the package sub-objects are
1449either Integers, Strings, or Buffers. Increases the overall performance
1450of
1451the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
14522X.)
1453Chao Guan. ACPICA BZ 943.
1454
1455Implemented and deployed common macros to extract flag bits from resource
1456descriptors. Improves readability and maintainability of the code. Fixes
1457a
1458problem with the UART serial bus descriptor for the number of data bits
1459flags (was incorrectly 2 bits, should be 3).
1460
1461Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
1462of the macros and changed the SETx macros to the style of (destination,
1463source). Also added ACPI_CASTx companion macros. Lv Zheng.
1464
1465Example Code and Data Size: These are the sizes for the OS-independent
1466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1467debug version of the code includes the debug output trace mechanism and
1468has a much larger code and data size.
1469
1470  Previous Release:
1471    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1472    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1473  Current Release:
1474    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1475    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1476
1477
14782) iASL Compiler/Disassembler and Tools:
1479
1480Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
1481adds the ShareAndWake and ExclusiveAndWake flags which were added to the
1482Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1483
1484Disassembler: Fixed a problem with external declaration generation. Fixes
1485a problem where an incorrect pathname could be generated for an external
1486declaration if the original reference to the object includes leading
1487carats (^). ACPICA BZ 984.
1488
1489Debugger: Completed a major update for the Disassemble<method> command.
1490This command was out-of-date and did not properly disassemble control
1491methods that had any reasonable complexity. This fix brings the command
1492up
1493to the same level as the rest of the disassembler. Adds one new file,
1494dmdeferred.c, which is existing code that is now common with the main
1495disassembler and the debugger disassemble command. ACPICA MZ 978.
1496
1497iASL: Moved the parser entry prototype to avoid a duplicate declaration.
1498Newer versions of Bison emit this prototype, so moved the prototype out
1499of
1500the iASL header to where it is actually used in order to avoid a
1501duplicate
1502declaration.
1503
1504iASL/Tools: Standardized use of the stream I/O functions:
1505  1) Ensure check for I/O error after every fopen/fread/fwrite
1506  2) Ensure proper order of size/count arguments for fread/fwrite
1507  3) Use test of (Actual != Requested) after all fwrite, and most fread
1508  4) Standardize I/O error messages
1509Improves reliability and maintainability of the code. Bob Moore, Lv
1510Zheng.
1511ACPICA BZ 981.
1512
1513Disassembler: Prevent duplicate External() statements. During generation
1514of external statements, detect similar pathnames that are actually
1515duplicates such as these:
1516  External (\ABCD)
1517  External (ABCD)
1518Remove all leading '\' characters from pathnames during the external
1519statement generation so that duplicates will be detected and tossed.
1520ACPICA BZ 985.
1521
1522Tools: Replace low-level I/O with stream I/O functions. Replace
1523open/read/write/close with the stream I/O equivalents
1524fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
1525Moore.
1526
1527AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
1528name header so that AcpiXtract recognizes the output file/table.
1529
1530iASL: Remove obsolete -2 option flag. Originally intended to force the
1531compiler/disassembler into an ACPI 2.0 mode, this was never implemented
1532and the entire concept is now obsolete.
1533
1534----------------------------------------
153518 October 2012. Summary of changes for version 20121018:
1536
1537
15381) ACPICA Kernel-resident Subsystem:
1539
1540Updated support for the ACPI 5.0 MPST table. Fixes some problems
1541introduced by late changes to the table as it was added to the ACPI 5.0
1542specification. Includes header, disassembler, and data table compiler
1543support as well as a new version of the MPST template.
1544
1545AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
15465.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
1547methods: _HID, _CID, and _UID.
1548
1549Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
1550ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
1551name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
1552names for their various drivers. Affects the AcpiGetObjectInfo external
1553interface, and other internal interfaces as well.
1554
1555Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
1556This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
1557on machines that support non-aligned transfers. Optimizes for this case
1558rather than using a strncpy. With assistance from Zheng Lv.
1559
1560Resource Manager: Small fix for buffer size calculation. Fixed a one byte
1561error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
1562
1563Added a new debug print message for AML mutex objects that are force-
1564released. At control method termination, any currently acquired mutex
1565objects are force-released. Adds a new debug-only message for each one
1566that is released.
1567
1568Audited/updated all ACPICA return macros and the function debug depth
1569counter: 1) Ensure that all functions that use the various TRACE macros
1570also use the appropriate ACPICA return macros. 2) Ensure that all normal
1571return statements surround the return expression (value) with parens to
1572ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
1573Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
1574
1575Global source code changes/maintenance: All extra lines at the start and
1576end of each source file have been removed for consistency. Also, within
1577comments, all new sentences start with a single space instead of a double
1578space, again for consistency across the code base.
1579
1580Example Code and Data Size: These are the sizes for the OS-independent
1581acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1582debug version of the code includes the debug output trace mechanism and
1583has a much larger code and data size.
1584
1585  Previous Release:
1586    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1587    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1588  Current Release:
1589    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1590    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1591
1592
15932) iASL Compiler/Disassembler and Tools:
1594
1595AcpiExec: Improved the algorithm used for memory leak/corruption
1596detection. Added some intelligence to the code that maintains the global
1597list of allocated memory. The list is now ordered by allocated memory
1598address, significantly improving performance. When running AcpiExec on
1599the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
1600on the platform and/or the environment. Note, this performance
1601enhancement affects the AcpiExec utility only, not the kernel-resident
1602ACPICA code.
1603
1604Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
1605the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
1606incorrect table offset reported for invalid opcodes. Report the original
160732-bit value for bad ACPI_NAMEs (as well as the repaired name.)
1608
1609Disassembler: Enhanced the -vt option to emit the binary table data in
1610hex format to assist with debugging.
1611
1612Fixed a potential filename buffer overflow in osunixdir.c. Increased the
1613size of file structure. Colin Ian King.
1614
1615----------------------------------------
161613 September 2012. Summary of changes for version 20120913:
1617
1618
16191) ACPICA Kernel-resident Subsystem:
1620
1621ACPI 5.0: Added two new notify types for the Hardware Error Notification
1622Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
1623and
1624MCE(6).
1625
1626Table Manager: Merged/removed duplicate code in the root table resize
1627functions. One function is external, the other is internal. Lv Zheng,
1628ACPICA
1629BZ 846.
1630
1631Makefiles: Completely removed the obsolete "Linux" makefiles under
1632acpica/generate/linux. These makefiles are obsolete and have been
1633replaced
1634by
1635the generic unix makefiles under acpica/generate/unix.
1636
1637Makefiles: Ensure that binary files always copied properly. Minor rule
1638change
1639to ensure that the final binary output files are always copied up to the
1640appropriate binary directory (bin32 or bin64.)
1641
1642Example Code and Data Size: These are the sizes for the OS-independent
1643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1644debug
1645version of the code includes the debug output trace mechanism and has a
1646much
1647larger code and data size.
1648
1649  Previous Release:
1650    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1651    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1652  Current Release:
1653    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1654    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1655
1656
16572) iASL Compiler/Disassembler and Tools:
1658
1659Disassembler: Fixed a possible fault during the disassembly of resource
1660descriptors when a second parse is required because of the invocation of
1661external control methods within the table. With assistance from
1662adq@lidskialf.net. ACPICA BZ 976.
1663
1664iASL: Fixed a namepath optimization problem. An error can occur if the
1665parse
1666node that contains the namepath to be optimized does not have a parent
1667node
1668that is a named object. This change fixes the problem.
1669
1670iASL: Fixed a regression where the AML file is not deleted on errors. The
1671AML
1672output file should be deleted if there are any errors during the
1673compiler.
1674The
1675only exception is if the -f (force output) option is used. ACPICA BZ 974.
1676
1677iASL: Added a feature to automatically increase internal line buffer
1678sizes.
1679Via realloc(), automatically increase the internal line buffer sizes as
1680necessary to support very long source code lines. The current version of
1681the
1682preprocessor requires a buffer long enough to contain full source code
1683lines.
1684This change increases the line buffer(s) if the input lines go beyond the
1685current buffer size. This eliminates errors that occurred when a source
1686code
1687line was longer than the buffer.
1688
1689iASL: Fixed a problem with constant folding in method declarations. The
1690SyncLevel term is a ByteConstExpr, and incorrect code would be generated
1691if a
1692Type3 opcode was used.
1693
1694Debugger: Improved command help support. For incorrect argument count,
1695display
1696full help for the command. For help command itself, allow an argument to
1697specify a command.
1698
1699Test Suites: Several bug fixes for the ASLTS suite reduces the number of
1700errors during execution of the suite. Guan Chao.
1701
1702----------------------------------------
170316 August 2012. Summary of changes for version 20120816:
1704
1705
17061) ACPICA Kernel-resident Subsystem:
1707
1708Removed all use of the deprecated _GTS and _BFS predefined methods. The
1709_GTS
1710(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
1711deprecated and will probably be removed from the ACPI specification.
1712Windows
1713does not invoke them, and reportedly never will. The final nail in the
1714coffin
1715is that the ACPI specification states that these methods must be run with
1716interrupts off, which is not going to happen in a kernel interpreter.
1717Note:
1718Linux has removed all use of the methods also. It was discovered that
1719invoking these functions caused failures on some machines, probably
1720because
1721they were never tested since Windows does not call them. Affects two
1722external
1723interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
1724ACPICA BZ 969.
1725
1726Implemented support for complex bit-packed buffers returned from the _PLD
1727(Physical Location of Device) predefined method. Adds a new external
1728interface, AcpiDecodePldBuffer that parses the buffer into a more usable
1729C
1730structure. Note: C Bitfields cannot be used for this type of predefined
1731structure since the memory layout of individual bitfields is not defined
1732by
1733the C language. In addition, there are endian concerns where a compiler
1734will
1735change the bitfield ordering based on the machine type. The new ACPICA
1736interface eliminates these issues, and should be called after _PLD is
1737executed. ACPICA BZ 954.
1738
1739Implemented a change to allow a scope change to root (via "Scope (\)")
1740during
1741execution of module-level ASL code (code that is executed at table load
1742time.) Lin Ming.
1743
1744Added the Windows8/Server2012 string for the _OSI method. This change
1745adds
1746a
1747new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
17482012.
1749
1750Added header support for the new ACPI tables DBG2 (Debug Port Table Type
17512)
1752and CSRT (Core System Resource Table).
1753
1754Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
1755names. This simplifies access to the buffers returned by these predefined
1756names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
1757
1758GPE support: Removed an extraneous parameter from the various low-level
1759internal GPE functions. Tang Feng.
1760
1761Removed the linux makefiles from the unix packages. The generate/linux
1762makefiles are obsolete and have been removed from the unix tarball
1763release
1764packages. The replacement makefiles are under generate/unix, and there is
1765a
1766top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
1767
1768Updates for Unix makefiles:
17691) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
17702) Update linker flags (move to end of command line) for AcpiExec
1771utility.
1772Guan Chao.
1773
1774Split ACPICA initialization functions to new file, utxfinit.c. Split from
1775utxface.c to improve modularity and reduce file size.
1776
1777Example Code and Data Size: These are the sizes for the OS-independent
1778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1779debug version of the code includes the debug output trace mechanism and
1780has a
1781much larger code and data size.
1782
1783  Previous Release:
1784    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1785    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1786  Current Release:
1787    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1788    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1789
1790
17912) iASL Compiler/Disassembler and Tools:
1792
1793iASL: Fixed a problem with constant folding for fixed-length constant
1794expressions. The constant-folding code was not being invoked for constant
1795expressions that allow the use of type 3/4/5 opcodes to generate
1796constants
1797for expressions such as ByteConstExpr, WordConstExpr, etc. This could
1798result
1799in the generation of invalid AML bytecode. ACPICA BZ 970.
1800
1801iASL: Fixed a generation issue on newer versions of Bison. Newer versions
1802apparently automatically emit some of the necessary externals. This
1803change
1804handles these versions in order to eliminate generation warnings.
1805
1806Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
1807
1808Disassembler: Add support to decode _PLD buffers. The decoded buffer
1809appears
1810within comments in the output file.
1811
1812Debugger: Fixed a regression with the "Threads" command where
1813AE_BAD_PARAMETER was always returned.
1814
1815----------------------------------------
181611 July 2012. Summary of changes for version 20120711:
1817
18181) ACPICA Kernel-resident Subsystem:
1819
1820Fixed a possible fault in the return package object repair code. Fixes a
1821problem that can occur when a lone package object is wrapped with an
1822outer
1823package object in order to force conformance to the ACPI specification.
1824Can
1825affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
1826_DLM,
1827_CSD, _PSD, _TSD.
1828
1829Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
1830PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
1831ARB_DIS bit must be implemented in the host-dependent C3 processor power
1832state
1833support. Note, ARB_DIS is obsolete and only applies to older chipsets,
1834both
1835Intel and other vendors. (for Intel: ICH4-M and earlier)
1836
1837This change removes the code to disable/enable bus master arbitration
1838during
1839suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
1840causes
1841resume problems on some machines. The change has been in use for over
1842seven
1843years within Linux.
1844
1845Implemented two new external interfaces to support host-directed dynamic
1846ACPI
1847table load and unload. They are intended to simplify the host
1848implementation
1849of hot-plug support:
1850  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
1851  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
1852table.
1853See the ACPICA reference for additional details. Adds one new file,
1854components/tables/tbxfload.c
1855
1856Implemented and deployed two new interfaces for errors and warnings that
1857are
1858known to be caused by BIOS/firmware issues:
1859  AcpiBiosError: Prints "ACPI Firmware Error" message.
1860  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
1861Deployed these new interfaces in the ACPICA Table Manager code for ACPI
1862table
1863and FADT errors. Additional deployment to be completed as appropriate in
1864the
1865future. The associated conditional macros are ACPI_BIOS_ERROR and
1866ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
1867ACPICA
1868BZ
1869843.
1870
1871Implicit notify support: ensure that no memory allocation occurs within a
1872critical region. This fix moves a memory allocation outside of the time
1873that a
1874spinlock is held. Fixes issues on systems that do not allow this
1875behavior.
1876Jung-uk Kim.
1877
1878Split exception code utilities and tables into a new file,
1879utilities/utexcep.c
1880
1881Example Code and Data Size: These are the sizes for the OS-independent
1882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1883debug
1884version of the code includes the debug output trace mechanism and has a
1885much
1886larger code and data size.
1887
1888  Previous Release:
1889    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
1890    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
1891  Current Release:
1892    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1893    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1894
1895
18962) iASL Compiler/Disassembler and Tools:
1897
1898iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
1899of
19000. Jung-uk Kim.
1901
1902Debugger: Enhanced the "tables" command to emit additional information
1903about
1904the current set of ACPI tables, including the owner ID and flags decode.
1905
1906Debugger: Reimplemented the "unload" command to use the new
1907AcpiUnloadParentTable external interface. This command was disable
1908previously
1909due to need for an unload interface.
1910
1911AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
1912option
1913will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
1914
1915----------------------------------------
191620 June 2012. Summary of changes for version 20120620:
1917
1918
19191) ACPICA Kernel-resident Subsystem:
1920
1921Implemented support to expand the "implicit notify" feature to allow
1922multiple
1923devices to be notified by a single GPE. This feature automatically
1924generates a
1925runtime device notification in the absence of a BIOS-provided GPE control
1926method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
1927notify is
1928provided by ACPICA for Windows compatibility, and is a workaround for
1929BIOS
1930AML
1931code errors. See the description of the AcpiSetupGpeForWake interface in
1932the
1933APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
1934
1935Changed some comments and internal function names to simplify and ensure
1936correctness of the Linux code translation. No functional changes.
1937
1938Example Code and Data Size: These are the sizes for the OS-independent
1939acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1940debug
1941version of the code includes the debug output trace mechanism and has a
1942much
1943larger code and data size.
1944
1945  Previous Release:
1946    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
1947    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
1948  Current Release:
1949    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
1950    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
1951
1952
19532) iASL Compiler/Disassembler and Tools:
1954
1955Disassembler: Added support to emit short, commented descriptions for the
1956ACPI
1957predefined names in order to improve the readability of the disassembled
1958output. ACPICA BZ 959. Changes include:
1959  1) Emit descriptions for all standard predefined names (_INI, _STA,
1960_PRW,
1961etc.)
1962  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
1963  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
1964etc.)
1965
1966AcpiSrc: Fixed several long-standing Linux code translation issues.
1967Argument
1968descriptions in function headers are now translated properly to lower
1969case
1970and
1971underscores. ACPICA BZ 961. Also fixes translation problems such as
1972these:
1973(old -> new)
1974  i_aSL -> iASL
1975  00-7_f -> 00-7F
1976  16_k -> 16K
1977  local_fADT -> local_FADT
1978  execute_oSI -> execute_OSI
1979
1980iASL: Fixed a problem where null bytes were inadvertently emitted into
1981some
1982listing files.
1983
1984iASL: Added the existing debug options to the standard help screen. There
1985are
1986no longer two different help screens. ACPICA BZ 957.
1987
1988AcpiHelp: Fixed some typos in the various predefined name descriptions.
1989Also
1990expand some of the descriptions where appropriate.
1991
1992iASL: Fixed the -ot option (display compile times/statistics). Was not
1993working
1994properly for standard output; only worked for the debug file case.
1995
1996----------------------------------------
199718 May 2012. Summary of changes for version 20120518:
1998
1999
20001) ACPICA Core Subsystem:
2001
2002Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2003defined
2004to block until asynchronous events such as notifies and GPEs have
2005completed.
2006Within ACPICA, it is only called before a notify or GPE handler is
2007removed/uninstalled. It also may be useful for the host OS within related
2008drivers such as the Embedded Controller driver. See the ACPICA reference
2009for
2010additional information. ACPICA BZ 868.
2011
2012ACPI Tables: Added a new error message for a possible overflow failure
2013during
2014the conversion of FADT 32-bit legacy register addresses to internal
2015common
201664-
2017bit GAS structure representation. The GAS has a one-byte "bit length"
2018field,
2019thus limiting the register length to 255 bits. ACPICA BZ 953.
2020
2021Example Code and Data Size: These are the sizes for the OS-independent
2022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2023debug
2024version of the code includes the debug output trace mechanism and has a
2025much
2026larger code and data size.
2027
2028  Previous Release:
2029    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2030    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2031  Current Release:
2032    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2033    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2034
2035
20362) iASL Compiler/Disassembler and Tools:
2037
2038iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2039macro.
2040This keyword was added late in the ACPI 5.0 release cycle and was not
2041implemented until now.
2042
2043Disassembler: Added support for Operation Region externals. Adds missing
2044support for operation regions that are defined in another table, and
2045referenced locally via a Field or BankField ASL operator. Now generates
2046the
2047correct External statement.
2048
2049Disassembler: Several additional fixes for the External() statement
2050generation
2051related to some ASL operators. Also, order the External() statements
2052alphabetically in the disassembler output. Fixes the External()
2053generation
2054for
2055the Create* field, Alias, and Scope operators:
2056 1) Create* buffer field operators - fix type mismatch warning on
2057disassembly
2058 2) Alias - implement missing External support
2059 3) Scope - fix to make sure all necessary externals are emitted.
2060
2061iASL: Improved pathname support. For include files, merge the prefix
2062pathname
2063with the file pathname and eliminate unnecessary components. Convert
2064backslashes in all pathnames to forward slashes, for readability. Include
2065file
2066pathname changes affect both #include and Include() type operators.
2067
2068iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
2069end
2070of a valid line by inserting a newline and then returning the EOF during
2071the
2072next call to GetNextLine. Prevents the line from being ignored due to EOF
2073condition.
2074
2075iASL: Implemented some changes to enhance the IDE support (-vi option.)
2076Error
2077and Warning messages are now correctly recognized for both the source
2078code
2079browser and the global error and warning counts.
2080
2081----------------------------------------
208220 April 2012. Summary of changes for version 20120420:
2083
2084
20851) ACPICA Core Subsystem:
2086
2087Implemented support for multiple notify handlers. This change adds
2088support
2089to
2090allow multiple system and device notify handlers on Device, Thermal Zone,
2091and
2092Processor objects. This can simplify the host OS notification
2093implementation.
2094Also re-worked and restructured the entire notify support code to
2095simplify
2096handler installation, handler removal, notify event queuing, and notify
2097dispatch to handler(s). Note: there can still only be two global notify
2098handlers - one for system notifies and one for device notifies. There are
2099no
2100changes to the existing handler install/remove interfaces. Lin Ming, Bob
2101Moore, Rafael Wysocki.
2102
2103Fixed a regression in the package repair code where the object reference
2104count was calculated incorrectly. Regression was introduced in the commit
2105"Support to add Package wrappers".
2106
2107Fixed a couple possible memory leaks in the AML parser, in the error
2108recovery
2109path. Jesper Juhl, Lin Ming.
2110
2111Example Code and Data Size: These are the sizes for the OS-independent
2112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2113debug version of the code includes the debug output trace mechanism and
2114has a
2115much larger code and data size.
2116
2117  Previous Release:
2118    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2119    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2120  Current Release:
2121    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2122    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2123
2124
21252) iASL Compiler/Disassembler and Tools:
2126
2127iASL: Fixed a problem with the resource descriptor support where the
2128length
2129of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2130included in cumulative descriptor offset, resulting in incorrect values
2131for
2132resource tags within resource descriptors appearing after a
2133StartDependent*
2134descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2135
2136iASL and Preprocessor: Implemented full support for the #line directive
2137to
2138correctly track original source file line numbers through the .i
2139preprocessor
2140output file - for error and warning messages.
2141
2142iASL: Expand the allowable byte constants for address space IDs.
2143Previously,
2144the allowable range was 0x80-0xFF (user-defined spaces), now the range is
21450x0A-0xFF to allow for custom and new IDs without changing the compiler.
2146
2147iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2148
2149iASL: Add option to completely disable the preprocessor (-Pn).
2150
2151iASL: Now emit all error/warning messages to standard error (stderr) by
2152default (instead of the previous stdout).
2153
2154ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
2155Update
2156for resource descriptor offset fix above. Update/cleanup error output
2157routines. Enable and send iASL errors/warnings to an error logfile
2158(error.txt). Send all other iASL output to a logfile (compiler.txt).
2159Fixed
2160several extraneous "unrecognized operator" messages.
2161
2162----------------------------------------
216320 March 2012. Summary of changes for version 20120320:
2164
2165
21661) ACPICA Core Subsystem:
2167
2168Enhanced the sleep/wake interfaces to optionally execute the _GTS method
2169(Going To Sleep) and the _BFS method (Back From Sleep). Windows
2170apparently
2171does not execute these methods, and therefore these methods are often
2172untested. It has been seen on some systems where the execution of these
2173methods causes errors and also prevents the machine from entering S5. It
2174is
2175therefore suggested that host operating systems do not execute these
2176methods
2177by default. In the future, perhaps these methods can be optionally
2178executed
2179based on the age of the system and/or what is the newest version of
2180Windows
2181that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
2182and
2183AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
2184Ming.
2185
2186Fixed a problem where the length of the local/common FADT was set too
2187early.
2188The local FADT table length cannot be set to the common length until the
2189original length has been examined. There is code that checks the table
2190length
2191and sets various fields appropriately. This can affect older machines
2192with
2193early FADT versions. For example, this can cause inadvertent writes to
2194the
2195CST_CNT register. Julian Anastasov.
2196
2197Fixed a mapping issue related to a physical table override. Use the
2198deferred
2199mapping mechanism for tables loaded via the physical override OSL
2200interface.
2201This allows for early mapping before the virtual memory manager is
2202available.
2203Thomas Renninger, Bob Moore.
2204
2205Enhanced the automatic return-object repair code: Repair a common problem
2206with
2207predefined methods that are defined to return a variable-length Package
2208of
2209sub-objects. If there is only one sub-object, some BIOS ASL code
2210mistakenly
2211simply returns the single object instead of a Package with one sub-
2212object.
2213This new support will repair this error by wrapping a Package object
2214around
2215the original object, creating the correct and expected Package with one
2216sub-
2217object. Names that can be repaired in this manner include: _ALR, _CSD,
2218_HPX,
2219_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
2220939.
2221
2222Changed the exception code returned for invalid ACPI paths passed as
2223parameters to external interfaces such as AcpiEvaluateObject. Was
2224AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2225
2226Example Code and Data Size: These are the sizes for the OS-independent
2227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2228debug
2229version of the code includes the debug output trace mechanism and has a
2230much
2231larger code and data size.
2232
2233  Previous Release:
2234    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2235    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2236  Current Release:
2237    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2238    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2239
2240
22412) iASL Compiler/Disassembler and Tools:
2242
2243iASL: Added the infrastructure and initial implementation of a integrated
2244C-
2245like preprocessor. This will simplify BIOS development process by
2246eliminating
2247the need for a separate preprocessing step during builds. On Windows, it
2248also
2249eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
2250features including full #define() macro support are still under
2251development.
2252These preprocessor directives are supported:
2253    #define
2254    #elif
2255    #else
2256    #endif
2257    #error
2258    #if
2259    #ifdef
2260    #ifndef
2261    #include
2262    #pragma message
2263    #undef
2264    #warning
2265In addition, these new command line options are supported:
2266    -D <symbol> Define symbol for preprocessor use
2267    -li         Create preprocessed output file (*.i)
2268    -P          Preprocess only and create preprocessor output file (*.i)
2269
2270Table Compiler: Fixed a problem where the equals operator within an
2271expression
2272did not work properly.
2273
2274Updated iASL to use the current versions of Bison/Flex. Updated the
2275Windows
2276project file to invoke these tools from the standard location. ACPICA BZ
2277904.
2278Versions supported:
2279    Flex for Windows:  V2.5.4
2280    Bison for Windows: V2.4.1
2281
2282----------------------------------------
228315 February 2012. Summary of changes for version 20120215:
2284
2285
22861) ACPICA Core Subsystem:
2287
2288There have been some major changes to the sleep/wake support code, as
2289described below (a - e).
2290
2291a) The AcpiLeaveSleepState has been split into two interfaces, similar to
2292AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
2293AcpiLeaveSleepStatePrep. This allows the host to perform actions between
2294the
2295time the _BFS method is called and the _WAK method is called. NOTE: all
2296hosts
2297must update their wake/resume code or else sleep/wake will not work
2298properly.
2299Rafael Wysocki.
2300
2301b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
2302_WAK
2303method. Some machines require that the GPEs are enabled before the _WAK
2304method
2305is executed. Thomas Renninger.
2306
2307c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
2308bit.
2309Some BIOS code assumes that WAK_STS will be cleared on resume and use it
2310to
2311determine whether the system is rebooting or resuming. Matthew Garrett.
2312
2313d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
2314Sleep) to
2315match the ACPI specification requirement. Rafael Wysocki.
2316
2317e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
2318registers within the V5 FADT. This support adds two new files:
2319hardware/hwesleep.c implements the support for the new registers. Moved
2320all
2321sleep/wake external interfaces to hardware/hwxfsleep.c.
2322
2323
2324Added a new OSL interface for ACPI table overrides,
2325AcpiOsPhysicalTableOverride. This interface allows the host to override a
2326table via a physical address, instead of the logical address required by
2327AcpiOsTableOverride. This simplifies the host implementation. Initial
2328implementation by Thomas Renninger. The ACPICA implementation creates a
2329single
2330shared function for table overrides that attempts both a logical and a
2331physical override.
2332
2333Expanded the OSL memory read/write interfaces to 64-bit data
2334(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
2335transfer support for GAS register structures passed to AcpiRead and
2336AcpiWrite.
2337
2338Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
2339custom
2340build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
2341model.
2342See the ACPICA reference for details. ACPICA BZ 942. This option removes
2343about
234410% of the code and 5% of the static data, and the following hardware
2345ACPI
2346features become unavailable:
2347    PM Event and Control registers
2348    SCI interrupt (and handler)
2349    Fixed Events
2350    General Purpose Events (GPEs)
2351    Global Lock
2352    ACPI PM timer
2353    FACS table (Waking vectors and Global Lock)
2354
2355Updated the unix tarball directory structure to match the ACPICA git
2356source
2357tree. This ensures that the generic unix makefiles work properly (in
2358generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
2359867.
2360
2361Updated the return value of the _REV predefined method to integer value 5
2362to
2363reflect ACPI 5.0 support.
2364
2365Moved the external ACPI PM timer interface prototypes to the public
2366acpixf.h
2367file where they belong.
2368
2369Example Code and Data Size: These are the sizes for the OS-independent
2370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2371debug
2372version of the code includes the debug output trace mechanism and has a
2373much
2374larger code and data size.
2375
2376  Previous Release:
2377    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2378    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2379  Current Release:
2380    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2381    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2382
2383
23842) iASL Compiler/Disassembler and Tools:
2385
2386Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
2387descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
2388incorrectly displayed.
2389
2390AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
2391specification.
2392
2393----------------------------------------
239411 January 2012. Summary of changes for version 20120111:
2395
2396
23971) ACPICA Core Subsystem:
2398
2399Implemented a new mechanism to allow host device drivers to check for
2400address
2401range conflicts with ACPI Operation Regions. Both SystemMemory and
2402SystemIO
2403address spaces are supported. A new external interface,
2404AcpiCheckAddressRange,
2405allows drivers to check an address range against the ACPI namespace. See
2406the
2407ACPICA reference for additional details. Adds one new file,
2408utilities/utaddress.c. Lin Ming, Bob Moore.
2409
2410Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
2411Control
2412and
2413Status registers, update the ACPI 5.0 flags, and update internal data
2414structures to handle an FADT larger than 256 bytes. The size of the ACPI
24155.0
2416FADT is 268 bytes.
2417
2418Updated all ACPICA copyrights and signons to 2012. Added the 2012
2419copyright to
2420all module headers and signons, including the standard Linux header. This
2421affects virtually every file in the ACPICA core subsystem, iASL compiler,
2422and
2423all ACPICA utilities.
2424
2425Example Code and Data Size: These are the sizes for the OS-independent
2426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2427debug
2428version of the code includes the debug output trace mechanism and has a
2429much
2430larger code and data size.
2431
2432  Previous Release:
2433    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2434    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2435  Current Release:
2436    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2437    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2438
2439
24402) iASL Compiler/Disassembler and Tools:
2441
2442Disassembler: fixed a problem with the automatic resource tag generation
2443support. Fixes a problem where the resource tags are inadvertently not
2444constructed if the table being disassembled contains external references
2445to
2446control methods. Moved the actual construction of the tags to after the
2447final
2448namespace is constructed (after 2nd parse is invoked due to external
2449control
2450method references.) ACPICA BZ 941.
2451
2452Table Compiler: Make all "generic" operators caseless. These are the
2453operators
2454like UINT8, String, etc. Making these caseless improves ease-of-use.
2455ACPICA BZ
2456934.
2457
2458----------------------------------------
245923 November 2011. Summary of changes for version 20111123:
2460
24610) ACPI 5.0 Support:
2462
2463This release contains full support for the ACPI 5.0 specification, as
2464summarized below.
2465
2466Reduced Hardware Support:
2467-------------------------
2468
2469This support allows for ACPI systems without the usual ACPI hardware.
2470This
2471support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
2472will
2473not attempt to initialize or use any of the usual ACPI hardware. Note,
2474when
2475this flag is set, all of the following ACPI hardware is assumed to be not
2476present and is not initialized or accessed:
2477
2478    General Purpose Events (GPEs)
2479    Fixed Events (PM1a/PM1b and PM Control)
2480    Power Management Timer and Console Buttons (power/sleep)
2481    Real-time Clock Alarm
2482    Global Lock
2483    System Control Interrupt (SCI)
2484    The FACS is assumed to be non-existent
2485
2486ACPI Tables:
2487------------
2488
2489All new tables and updates to existing tables are fully supported in the
2490ACPICA headers (for use by device drivers), the disassembler, and the
2491iASL
2492Data Table Compiler. ACPI 5.0 defines these new tables:
2493
2494    BGRT        /* Boot Graphics Resource Table */
2495    DRTM        /* Dynamic Root of Trust for Measurement table */
2496    FPDT        /* Firmware Performance Data Table */
2497    GTDT        /* Generic Timer Description Table */
2498    MPST        /* Memory Power State Table */
2499    PCCT        /* Platform Communications Channel Table */
2500    PMTT        /* Platform Memory Topology Table */
2501    RASF        /* RAS Feature table */
2502
2503Operation Regions/SpaceIDs:
2504---------------------------
2505
2506All new operation regions are fully supported by the iASL compiler, the
2507disassembler, and the ACPICA runtime code (for dispatch to region
2508handlers.)
2509The new operation region Space IDs are:
2510
2511    GeneralPurposeIo
2512    GenericSerialBus
2513
2514Resource Descriptors:
2515---------------------
2516
2517All new ASL resource descriptors are fully supported by the iASL
2518compiler,
2519the
2520ASL/AML disassembler, and the ACPICA runtime Resource Manager code
2521(including
2522all new predefined resource tags). New descriptors are:
2523
2524    FixedDma
2525    GpioIo
2526    GpioInt
2527    I2cSerialBus
2528    SpiSerialBus
2529    UartSerialBus
2530
2531ASL/AML Operators, New and Modified:
2532------------------------------------
2533
2534One new operator is added, the Connection operator, which is used to
2535associate
2536a GeneralPurposeIo or GenericSerialBus resource descriptor with
2537individual
2538field objects within an operation region. Several new protocols are
2539associated
2540with the AccessAs operator. All are fully supported by the iASL compiler,
2541disassembler, and runtime ACPICA AML interpreter:
2542
2543    Connection                      // Declare Field Connection
2544attributes
2545    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2546    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
2547Protocol
2548    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2549    RawDataBuffer                       // Data type for Vendor Data
2550fields
2551
2552Predefined ASL/AML Objects:
2553---------------------------
2554
2555All new predefined objects/control-methods are supported by the iASL
2556compiler
2557and the ACPICA runtime validation/repair (arguments and return values.)
2558New
2559predefined names include the following:
2560
2561Standard Predefined Names (Objects or Control Methods):
2562    _AEI, _CLS, _CPC, _CWS, _DEP,
2563    _DLM, _EVT, _GCP, _CRT, _GWS,
2564    _HRV, _PRE, _PSE, _SRT, _SUB.
2565
2566Resource Tags (Names used to access individual fields within resource
2567descriptors):
2568    _DBT, _DPL, _DRS, _END, _FLC,
2569    _IOR, _LIN, _MOD, _PAR, _PHA,
2570    _PIN, _PPI, _POL, _RXL, _SLV,
2571    _SPE, _STB, _TXL, _VEN.
2572
2573ACPICA External Interfaces:
2574---------------------------
2575
2576Several new interfaces have been defined for use by ACPI-related device
2577drivers and other host OS services:
2578
2579AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
2580to
2581acquire and release AML mutexes that are defined in the DSDT/SSDT tables
2582provided by the BIOS. They are intended to be used in conjunction with
2583the
2584ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
2585mutual exclusion with the AML code/interpreter.
2586
2587AcpiGetEventResources: Returns the (formatted) resource descriptors as
2588defined
2589by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
2590provides
2591resource descriptors associated with hardware-reduced platform events,
2592similar
2593to the AcpiGetCurrentResources interface.
2594
2595Operation Region Handlers: For General Purpose IO and Generic Serial Bus
2596operation regions, information about the Connection() object and any
2597optional
2598length information is passed to the region handler within the Context
2599parameter.
2600
2601AcpiBufferToResource: This interface converts a raw AML buffer containing
2602a
2603resource template or resource descriptor to the ACPI_RESOURCE internal
2604format
2605suitable for use by device drivers. Can be used by an operation region
2606handler
2607to convert the Connection() buffer object into a ACPI_RESOURCE.
2608
2609Miscellaneous/Tools/TestSuites:
2610-------------------------------
2611
2612Support for extended _HID names (Four alpha characters instead of three).
2613Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
2614Support for ACPI 5.0 features in the ASLTS test suite.
2615Fully updated documentation (ACPICA and iASL reference documents.)
2616
2617ACPI Table Definition Language:
2618-------------------------------
2619
2620Support for this language was implemented and released as a subsystem of
2621the
2622iASL compiler in 2010. (See the iASL compiler User Guide.)
2623
2624
2625Non-ACPI 5.0 changes for this release:
2626--------------------------------------
2627
26281) ACPICA Core Subsystem:
2629
2630Fix a problem with operation region declarations where a failure can
2631occur
2632if
2633the region name and an argument that evaluates to an object (such as the
2634region address) are in different namespace scopes. Lin Ming, ACPICA BZ
2635937.
2636
2637Do not abort an ACPI table load if an invalid space ID is found within.
2638This
2639will be caught later if the offending method is executed. ACPICA BZ 925.
2640
2641Fixed an issue with the FFixedHW space ID where the ID was not always
2642recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
2643
2644Fixed a problem with the 32-bit generation of the unix-specific OSL
2645(osunixxf.c). Lin Ming, ACPICA BZ 936.
2646
2647Several changes made to enable generation with the GCC 4.6 compiler.
2648ACPICA BZ
2649935.
2650
2651New error messages: Unsupported I/O requests (not 8/16/32 bit), and
2652Index/Bank
2653field registers out-of-range.
2654
26552) iASL Compiler/Disassembler and Tools:
2656
2657iASL: Implemented the __PATH__ operator, which returns the full pathname
2658of
2659the current source file.
2660
2661AcpiHelp: Automatically display expanded keyword information for all ASL
2662operators.
2663
2664Debugger: Add "Template" command to disassemble/dump resource template
2665buffers.
2666
2667Added a new master script to generate and execute the ASLTS test suite.
2668Automatically handles 32- and 64-bit generation. See tests/aslts.sh
2669
2670iASL: Fix problem with listing generation during processing of the
2671Switch()
2672operator where AML listing was disabled until the entire Switch block was
2673completed.
2674
2675iASL: Improve support for semicolon statement terminators. Fix "invalid
2676character" message for some cases when the semicolon is used. Semicolons
2677are
2678now allowed after every <Term> grammar element. ACPICA BZ 927.
2679
2680iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
2681923.
2682
2683Disassembler: Fix problem with disassembly of the DataTableRegion
2684operator
2685where an inadvertent "Unhandled deferred opcode" message could be
2686generated.
2687
26883) Example Code and Data Size
2689
2690These are the sizes for the OS-independent acpica.lib produced by the
2691Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2692includes the debug output trace mechanism and has a much larger code and
2693data
2694size.
2695
2696  Previous Release:
2697    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2698    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2699  Current Release:
2700    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2701    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2702
2703----------------------------------------
270422 September 2011. Summary of changes for version 20110922:
2705
27060) ACPI 5.0 News:
2707
2708Support for ACPI 5.0 in ACPICA has been underway for several months and
2709will
2710be released at the same time that ACPI 5.0 is officially released.
2711
2712The ACPI 5.0 specification is on track for release in the next few
2713months.
2714
27151) ACPICA Core Subsystem:
2716
2717Fixed a problem where the maximum sleep time for the Sleep() operator was
2718intended to be limited to two seconds, but was inadvertently limited to
271920
2720seconds instead.
2721
2722Linux and Unix makefiles: Added header file dependencies to ensure
2723correct
2724generation of ACPICA core code and utilities. Also simplified the
2725makefiles
2726considerably through the use of the vpath variable to specify search
2727paths.
2728ACPICA BZ 924.
2729
27302) iASL Compiler/Disassembler and Tools:
2731
2732iASL: Implemented support to check the access length for all fields
2733created to
2734access named Resource Descriptor fields. For example, if a resource field
2735is
2736defined to be two bits, a warning is issued if a CreateXxxxField() is
2737used
2738with an incorrect bit length. This is implemented for all current
2739resource
2740descriptor names. ACPICA BZ 930.
2741
2742Disassembler: Fixed a byte ordering problem with the output of 24-bit and
274356-
2744bit integers.
2745
2746iASL: Fixed a couple of issues associated with variable-length package
2747objects. 1) properly handle constants like One, Ones, Zero -- do not make
2748a
2749VAR_PACKAGE when these are used as a package length. 2) Allow the
2750VAR_PACKAGE
2751opcode (in addition to PACKAGE) when validating object types for
2752predefined
2753names.
2754
2755iASL: Emit statistics for all output files (instead of just the ASL input
2756and
2757AML output). Includes listings, hex files, etc.
2758
2759iASL: Added -G option to the table compiler to allow the compilation of
2760custom
2761ACPI tables. The only part of a table that is required is the standard
276236-
2763byte
2764ACPI header.
2765
2766AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
2767headers),
2768which also adds correct 64-bit support. Also, now all output filenames
2769are
2770completely lower case.
2771
2772AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
2773loading table files. A warning is issued for any such tables. The only
2774exception is an FADT. This also fixes a possible fault when attempting to
2775load
2776non-AML tables. ACPICA BZ 932.
2777
2778AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
2779a
2780missing table terminator could cause a fault when using the -p option.
2781
2782AcpiSrc: Fixed a possible divide-by-zero fault when generating file
2783statistics.
2784
27853) Example Code and Data Size
2786
2787These are the sizes for the OS-independent acpica.lib produced by the
2788Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2789includes the debug output trace mechanism and has a much larger code and
2790data
2791size.
2792
2793  Previous Release (VC 9.0):
2794    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2795    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2796  Current Release (VC 9.0):
2797    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2798    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2799
2800
2801----------------------------------------
280223 June 2011. Summary of changes for version 20110623:
2803
28041) ACPI CA Core Subsystem:
2805
2806Updated the predefined name repair mechanism to not attempt repair of a
2807_TSS
2808return object if a _PSS object is present. We can only sort the _TSS
2809return
2810package if there is no _PSS within the same scope. This is because if
2811_PSS
2812is
2813present, the ACPI specification dictates that the _TSS Power Dissipation
2814field
2815is to be ignored, and therefore some BIOSs leave garbage values in the
2816_TSS
2817Power field(s). In this case, it is best to just return the _TSS package
2818as-
2819is. Reported by, and fixed with assistance from Fenghua Yu.
2820
2821Added an option to globally disable the control method return value
2822validation
2823and repair. This runtime option can be used to disable return value
2824repair
2825if
2826this is causing a problem on a particular machine. Also added an option
2827to
2828AcpiExec (-dr) to set this disable flag.
2829
2830All makefiles and project files: Major changes to improve generation of
2831ACPICA
2832tools. ACPICA BZ 912:
2833    Reduce default optimization levels to improve compatibility
2834    For Linux, add strict-aliasing=0 for gcc 4
2835    Cleanup and simplify use of command line defines
2836    Cleanup multithread library support
2837    Improve usage messages
2838
2839Linux-specific header: update handling of THREAD_ID and pthread. For the
284032-
2841bit case, improve casting to eliminate possible warnings, especially with
2842the
2843acpica tools.
2844
2845Example Code and Data Size: These are the sizes for the OS-independent
2846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2847debug
2848version of the code includes the debug output trace mechanism and has a
2849much
2850larger code and data size.
2851
2852  Previous Release (VC 9.0):
2853    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
2854    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2855  Current Release (VC 9.0):
2856    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2857    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2858
28592) iASL Compiler/Disassembler and Tools:
2860
2861With this release, a new utility named "acpihelp" has been added to the
2862ACPICA
2863package. This utility summarizes the ACPI specification chapters for the
2864ASL
2865and AML languages. It generates under Linux/Unix as well as Windows, and
2866provides the following functionality:
2867    Find/display ASL operator(s) -- with description and syntax.
2868    Find/display ASL keyword(s) -- with exact spelling and descriptions.
2869    Find/display ACPI predefined name(s) -- with description, number
2870        of arguments, and the return value data type.
2871    Find/display AML opcode name(s) -- with opcode, arguments, and
2872grammar.
2873    Decode/display AML opcode -- with opcode name, arguments, and
2874grammar.
2875
2876Service Layers: Make multi-thread support configurable. Conditionally
2877compile
2878the multi-thread support so that threading libraries will not be linked
2879if
2880not
2881necessary. The only tool that requires multi-thread support is AcpiExec.
2882
2883iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
2884of
2885Bison appear to want the interface to yyerror to be a const char * (or at
2886least this is a problem when generating iASL on some systems.) ACPICA BZ
2887923
2888Pierre Lejeune.
2889
2890Tools: Fix for systems where O_BINARY is not defined. Only used for
2891Windows
2892versions of the tools.
2893
2894----------------------------------------
289527 May 2011. Summary of changes for version 20110527:
2896
28971) ACPI CA Core Subsystem:
2898
2899ASL Load() operator: Reinstate most restrictions on the incoming ACPI
2900table
2901signature. Now, only allow SSDT, OEMx, and a null signature. History:
2902    1) Originally, we checked the table signature for "SSDT" or "PSDT".
2903       (PSDT is now obsolete.)
2904    2) We added support for OEMx tables, signature "OEM" plus a fourth
2905       "don't care" character.
2906    3) Valid tables were encountered with a null signature, so we just
2907       gave up on validating the signature, (05/2008).
2908    4) We encountered non-AML tables such as the MADT, which caused
2909       interpreter errors and kernel faults. So now, we once again allow
2910       only SSDT, OEMx, and now, also a null signature. (05/2011).
2911
2912Added the missing _TDL predefined name to the global name list in order
2913to
2914enable validation. Affects both the core ACPICA code and the iASL
2915compiler.
2916
2917Example Code and Data Size: These are the sizes for the OS-independent
2918acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2919debug
2920version of the code includes the debug output trace mechanism and has a
2921much
2922larger code and data size.
2923
2924  Previous Release (VC 9.0):
2925    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
2926    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
2927  Current Release (VC 9.0):
2928    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
2929    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2930
29312) iASL Compiler/Disassembler and Tools:
2932
2933Debugger/AcpiExec: Implemented support for "complex" method arguments on
2934the
2935debugger command line. This adds support beyond simple integers --
2936including
2937Strings, Buffers, and Packages. Includes support for nested packages.
2938Increased the default command line buffer size to accommodate these
2939arguments.
2940See the ACPICA reference for details and syntax. ACPICA BZ 917.
2941
2942Debugger/AcpiExec: Implemented support for "default" method arguments for
2943the
2944Execute/Debug command. Now, the debugger will always invoke a control
2945method
2946with the required number of arguments -- even if the command line
2947specifies
2948none or insufficient arguments. It uses default integer values for any
2949missing
2950arguments. Also fixes a bug where only six method arguments maximum were
2951supported instead of the required seven.
2952
2953Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
2954and
2955also return status in order to prevent buffer overruns. See the ACPICA
2956reference for details and syntax. ACPICA BZ 921
2957
2958iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
2959makefiles to simplify support for the two different but similar parser
2960generators, bison and yacc.
2961
2962Updated the generic unix makefile for gcc 4. The default gcc version is
2963now
2964expected to be 4 or greater, since options specific to gcc 4 are used.
2965
2966----------------------------------------
296713 April 2011. Summary of changes for version 20110413:
2968
29691) ACPI CA Core Subsystem:
2970
2971Implemented support to execute a so-called "orphan" _REG method under the
2972EC
2973device. This change will force the execution of a _REG method underneath
2974the
2975EC
2976device even if there is no corresponding operation region of type
2977EmbeddedControl. Fixes a problem seen on some machines and apparently is
2978compatible with Windows behavior. ACPICA BZ 875.
2979
2980Added more predefined methods that are eligible for automatic NULL
2981package
2982element removal. This change adds another group of predefined names to
2983the
2984list
2985of names that can be repaired by having NULL package elements dynamically
2986removed. This group are those methods that return a single variable-
2987length
2988package containing simple data types such as integers, buffers, strings.
2989This
2990includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
2991_PSL,
2992_Sx,
2993and _TZD. ACPICA BZ 914.
2994
2995Split and segregated all internal global lock functions to a new file,
2996evglock.c.
2997
2998Updated internal address SpaceID for DataTable regions. Moved this
2999internal
3000space
3001id in preparation for ACPI 5.0 changes that will include some new space
3002IDs.
3003This
3004change should not affect user/host code.
3005
3006Example Code and Data Size: These are the sizes for the OS-independent
3007acpica.lib
3008produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3009version of
3010the code includes the debug output trace mechanism and has a much larger
3011code
3012and
3013data size.
3014
3015  Previous Release (VC 9.0):
3016    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3017    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3018  Current Release (VC 9.0):
3019    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3020    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3021
30222) iASL Compiler/Disassembler and Tools:
3023
3024iASL/DTC: Major update for new grammar features. Allow generic data types
3025in
3026custom ACPI tables. Field names are now optional. Any line can be split
3027to
3028multiple lines using the continuation char (\). Large buffers now use
3029line-
3030continuation character(s) and no colon on the continuation lines. See the
3031grammar
3032update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
3033Moore.
3034
3035iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
3036statements.
3037Since the parser stuffs a "zero" as the return value for these statements
3038(due
3039to
3040the underlying AML grammar), they were seen as "return with value" by the
3041iASL
3042semantic checking. They are now seen correctly as "null" return
3043statements.
3044
3045iASL: Check if a_REG declaration has a corresponding Operation Region.
3046Adds a
3047check for each _REG to ensure that there is in fact a corresponding
3048operation
3049region declaration in the same scope. If not, the _REG method is not very
3050useful
3051since it probably won't be executed. ACPICA BZ 915.
3052
3053iASL/DTC: Finish support for expression evaluation. Added a new
3054expression
3055parser
3056that implements c-style operator precedence and parenthesization. ACPICA
3057bugzilla
3058908.
3059
3060Disassembler/DTC: Remove support for () and <> style comments in data
3061tables.
3062Now
3063that DTC has full expression support, we don't want to have comment
3064strings
3065that
3066start with a parentheses or a less-than symbol. Now, only the standard /*
3067and
3068//
3069comments are supported, as well as the bracket [] comments.
3070
3071AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
3072"unusual"
3073headers in the acpidump file. Update the header validation to support
3074these
3075tables. Problem introduced in previous AcpiXtract version in the change
3076to
3077support "wrong checksum" error messages emitted by acpidump utility.
3078
3079iASL: Add a * option to generate all template files (as a synonym for
3080ALL)
3081as
3082in
3083"iasl -T *" or "iasl -T ALL".
3084
3085iASL/DTC: Do not abort compiler on fatal errors. We do not want to
3086completely
3087abort the compiler on "fatal" errors, simply should abort the current
3088compile.
3089This allows multiple compiles with a single (possibly wildcard) compiler
3090invocation.
3091
3092----------------------------------------
309316 March 2011. Summary of changes for version 20110316:
3094
30951) ACPI CA Core Subsystem:
3096
3097Fixed a problem caused by a _PRW method appearing at the namespace root
3098scope
3099during the setup of wake GPEs. A fault could occur if a _PRW directly
3100under
3101the
3102root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3103
3104Implemented support for "spurious" Global Lock interrupts. On some
3105systems, a
3106global lock interrupt can occur without the pending flag being set. Upon
3107a
3108GL
3109interrupt, we now ensure that a thread is actually waiting for the lock
3110before
3111signaling GL availability. Rafael Wysocki, Bob Moore.
3112
3113Example Code and Data Size: These are the sizes for the OS-independent
3114acpica.lib
3115produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3116version of
3117the code includes the debug output trace mechanism and has a much larger
3118code
3119and
3120data size.
3121
3122  Previous Release (VC 9.0):
3123    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3124    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3125  Current Release (VC 9.0):
3126    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3127    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3128
31292) iASL Compiler/Disassembler and Tools:
3130
3131Implemented full support for the "SLIC" ACPI table. Includes support in
3132the
3133header files, disassembler, table compiler, and template generator. Bob
3134Moore,
3135Lin Ming.
3136
3137AcpiXtract: Correctly handle embedded comments and messages from
3138AcpiDump.
3139Apparently some or all versions of acpidump will occasionally emit a
3140comment
3141like
3142"Wrong checksum", etc., into the dump file. This was causing problems for
3143AcpiXtract. ACPICA BZ 905.
3144
3145iASL: Fix the Linux makefile by removing an inadvertent double file
3146inclusion.
3147ACPICA BZ 913.
3148
3149AcpiExec: Update installation of operation region handlers. Install one
3150handler
3151for a user-defined address space. This is used by the ASL test suite
3152(ASLTS).
3153
3154----------------------------------------
315511 February 2011. Summary of changes for version 20110211:
3156
31571) ACPI CA Core Subsystem:
3158
3159Added a mechanism to defer _REG methods for some early-installed
3160handlers.
3161Most user handlers should be installed before call to
3162AcpiEnableSubsystem.
3163However, Event handlers and region handlers should be installed after
3164AcpiInitializeObjects. Override handlers for the "default" regions should
3165be
3166installed early, however. This change executes all _REG methods for the
3167default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
3168chicken/egg issues between them. ACPICA BZ 848.
3169
3170Implemented an optimization for GPE detection. This optimization will
3171simply
3172ignore GPE registers that contain no enabled GPEs -- there is no need to
3173read the register since this information is available internally. This
3174becomes more important on machines with a large GPE space. ACPICA
3175bugzilla
3176884. Lin Ming. Suggestion from Joe Liu.
3177
3178Removed all use of the highly unreliable FADT revision field. The
3179revision
3180number in the FADT has been found to be completely unreliable and cannot
3181be
3182trusted. Only the actual table length can be used to infer the version.
3183This
3184change updates the ACPICA core and the disassembler so that both no
3185longer
3186even look at the FADT version and instead depend solely upon the FADT
3187length.
3188
3189Fix an unresolved name issue for the no-debug and no-error-message source
3190generation cases. The _AcpiModuleName was left undefined in these cases,
3191but
3192it is actually needed as a parameter to some interfaces. Define
3193_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3194
3195Split several large files (makefiles and project files updated)
3196  utglobal.c   -> utdecode.c
3197  dbcomds.c    -> dbmethod.c dbnames.c
3198  dsopcode.c   -> dsargs.c dscontrol.c
3199  dsload.c     -> dsload2.c
3200  aslanalyze.c -> aslbtypes.c aslwalks.c
3201
3202Example Code and Data Size: These are the sizes for the OS-independent
3203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3204debug version of the code includes the debug output trace mechanism and
3205has
3206a much larger code and data size.
3207
3208  Previous Release (VC 9.0):
3209    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3210    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3211  Current Release (VC 9.0):
3212    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3213    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3214
32152) iASL Compiler/Disassembler and Tools:
3216
3217iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
3218These are useful C-style macros with the standard definitions. ACPICA
3219bugzilla 898.
3220
3221iASL/DTC: Added support for integer expressions and labels. Support for
3222full
3223expressions for all integer fields in all ACPI tables. Support for labels
3224in
3225"generic" portions of tables such as UEFI. See the iASL reference manual.
3226
3227Debugger: Added a command to display the status of global handlers. The
3228"handlers" command will display op region, fixed event, and miscellaneous
3229global handlers. installation status -- and for op regions, whether
3230default
3231or user-installed handler will be used.
3232
3233iASL: Warn if reserved method incorrectly returns a value. Many
3234predefined
3235names are defined such that they do not return a value. If implemented as
3236a
3237method, issue a warning if such a name explicitly returns a value. ACPICA
3238Bugzilla 855.
3239
3240iASL: Added detection of GPE method name conflicts. Detects a conflict
3241where
3242there are two GPE methods of the form _Lxy and _Exy in the same scope.
3243(For
3244example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3245
3246iASL/DTC: Fixed a couple input scanner issues with comments and line
3247numbers. Comment remover could get confused and miss a comment ending.
3248Fixed
3249a problem with line counter maintenance.
3250
3251iASL/DTC: Reduced the severity of some errors from fatal to error. There
3252is
3253no need to abort on simple errors within a field definition.
3254
3255Debugger: Simplified the output of the help command. All help output now
3256in
3257a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3258
3259----------------------------------------
326012 January 2011. Summary of changes for version 20110112:
3261
32621) ACPI CA Core Subsystem:
3263
3264Fixed a race condition between method execution and namespace walks that
3265can
3266possibly cause a fault. The problem was apparently introduced in version
326720100528 as a result of a performance optimization that reduces the
3268number
3269of
3270namespace walks upon method exit by using the delete_namespace_subtree
3271function instead of the delete_namespace_by_owner function used
3272previously.
3273Bug is a missing namespace lock in the delete_namespace_subtree function.
3274dana.myers@oracle.com
3275
3276Fixed several issues and a possible fault with the automatic "serialized"
3277method support. History: This support changes a method to "serialized" on
3278the
3279fly if the method generates an AE_ALREADY_EXISTS error, indicating the
3280possibility that it cannot handle reentrancy. This fix repairs a couple
3281of
3282issues seen in the field, especially on machines with many cores:
3283
3284    1) Delete method children only upon the exit of the last thread,
3285       so as to not delete objects out from under other running threads
3286      (and possibly causing a fault.)
3287    2) Set the "serialized" bit for the method only upon the exit of the
3288       Last thread, so as to not cause deadlock when running threads
3289       attempt to exit.
3290    3) Cleanup the use of the AML "MethodFlags" and internal method flags
3291       so that there is no longer any confusion between the two.
3292
3293    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3294
3295Debugger: Now lock the namespace for duration of a namespace dump.
3296Prevents
3297issues if the namespace is changing dynamically underneath the debugger.
3298Especially affects temporary namespace nodes, since the debugger displays
3299these also.
3300
3301Updated the ordering of include files. The ACPICA headers should appear
3302before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
3303set
3304any necessary compiler-specific defines, etc. Affects the ACPI-related
3305tools
3306and utilities.
3307
3308Updated all ACPICA copyrights and signons to 2011. Added the 2011
3309copyright
3310to all module headers and signons, including the Linux header. This
3311affects
3312virtually every file in the ACPICA core subsystem, iASL compiler, and all
3313utilities.
3314
3315Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
3316project files for VC++ 6.0 are now obsolete. New project files can be
3317found
3318under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
3319details.
3320
3321Example Code and Data Size: These are the sizes for the OS-independent
3322acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3323debug version of the code includes the debug output trace mechanism and
3324has a
3325much larger code and data size.
3326
3327  Previous Release (VC 6.0):
3328    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3329    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3330  Current Release (VC 9.0):
3331    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3332    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3333
33342) iASL Compiler/Disassembler and Tools:
3335
3336iASL: Added generic data types to the Data Table compiler. Add "generic"
3337data
3338types such as UINT32, String, Unicode, etc., to simplify the generation
3339of
3340platform-defined tables such as UEFI. Lin Ming.
3341
3342iASL: Added listing support for the Data Table Compiler. Adds listing
3343support
3344(-l) to display actual binary output for each line of input code.
3345
3346----------------------------------------
334709 December 2010. Summary of changes for version 20101209:
3348
33491) ACPI CA Core Subsystem:
3350
3351Completed the major overhaul of the GPE support code that was begun in
3352July
33532010. Major features include: removal of _PRW execution in ACPICA (host
3354executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
3355changes to existing interfaces, simplification of GPE handler operation,
3356and
3357a handful of new interfaces:
3358
3359    AcpiUpdateAllGpes
3360    AcpiFinishGpe
3361    AcpiSetupGpeForWake
3362    AcpiSetGpeWakeMask
3363    One new file, evxfgpe.c to consolidate all external GPE interfaces.
3364
3365See the ACPICA Programmer Reference for full details and programming
3366information. See the new section 4.4 "General Purpose Event (GPE)
3367Support"
3368for a full overview, and section 8.7 "ACPI General Purpose Event
3369Management"
3370for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
3371Ming,
3372Bob Moore, Rafael Wysocki.
3373
3374Implemented a new GPE feature for Windows compatibility, the "Implicit
3375Wake
3376GPE Notify". This feature will automatically issue a Notify(2) on a
3377device
3378when a Wake GPE is received if there is no corresponding GPE method or
3379handler. ACPICA BZ 870.
3380
3381Fixed a problem with the Scope() operator during table parse and load
3382phase.
3383During load phase (table load or method execution), the scope operator
3384should
3385not enter the target into the namespace. Instead, it should open a new
3386scope
3387at the target location. Linux BZ 19462, ACPICA BZ 882.
3388
3389Example Code and Data Size: These are the sizes for the OS-independent
3390acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3391debug version of the code includes the debug output trace mechanism and
3392has a
3393much larger code and data size.
3394
3395  Previous Release:
3396    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3397    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3398  Current Release:
3399    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3400    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3401
34022) iASL Compiler/Disassembler and Tools:
3403
3404iASL: Relax the alphanumeric restriction on _CID strings. These strings
3405are
3406"bus-specific" per the ACPI specification, and therefore any characters
3407are
3408acceptable. The only checks that can be performed are for a null string
3409and
3410perhaps for a leading asterisk. ACPICA BZ 886.
3411
3412iASL: Fixed a problem where a syntax error that caused a premature EOF
3413condition on the source file emitted a very confusing error message. The
3414premature EOF is now detected correctly. ACPICA BZ 891.
3415
3416Disassembler: Decode the AccessSize within a Generic Address Structure
3417(byte
3418access, word access, etc.) Note, this field does not allow arbitrary bit
3419access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3420
3421New: AcpiNames utility - Example namespace dump utility. Shows an example
3422of
3423ACPICA configuration for a minimal namespace dump utility. Uses table and
3424namespace managers, but no AML interpreter. Does not add any
3425functionality
3426over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
3427partition and configure ACPICA. ACPICA BZ 883.
3428
3429AML Debugger: Increased the debugger buffer size for method return
3430objects.
3431Was 4K, increased to 16K. Also enhanced error messages for debugger
3432method
3433execution, including the buffer overflow case.
3434
3435----------------------------------------
343613 October 2010. Summary of changes for version 20101013:
3437
34381) ACPI CA Core Subsystem:
3439
3440Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
3441now
3442clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
3443HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3444
3445Changed the type of the predefined namespace object _TZ from ThermalZone
3446to
3447Device. This was found to be confusing to the host software that
3448processes
3449the various thermal zones, since _TZ is not really a ThermalZone.
3450However,
3451a
3452Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
3453Zhang.
3454
3455Added Windows Vista SP2 to the list of supported _OSI strings. The actual
3456string is "Windows 2006 SP2".
3457
3458Eliminated duplicate code in AcpiUtExecute* functions. Now that the
3459nsrepair
3460code automatically repairs _HID-related strings, this type of code is no
3461longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
3462878.
3463
3464Example Code and Data Size: These are the sizes for the OS-independent
3465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3466debug version of the code includes the debug output trace mechanism and
3467has a
3468much larger code and data size.
3469
3470  Previous Release:
3471    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3472    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3473  Current Release:
3474    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3475    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3476
34772) iASL Compiler/Disassembler and Tools:
3478
3479iASL: Implemented additional compile-time validation for _HID strings.
3480The
3481non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
3482length
3483of
3484the string must be exactly seven or eight characters. For both _HID and
3485_CID
3486strings, all characters must be alphanumeric. ACPICA BZ 874.
3487
3488iASL: Allow certain "null" resource descriptors. Some BIOS code creates
3489descriptors that are mostly or all zeros, with the expectation that they
3490will
3491be filled in at runtime. iASL now allows this as long as there is a
3492"resource
3493tag" (name) associated with the descriptor, which gives the ASL a handle
3494needed to modify the descriptor. ACPICA BZ 873.
3495
3496Added single-thread support to the generic Unix application OSL.
3497Primarily
3498for iASL support, this change removes the use of semaphores in the
3499single-
3500threaded ACPICA tools/applications - increasing performance. The
3501_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
3502option. ACPICA BZ 879.
3503
3504AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
3505support
3506for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3507
3508iASL: Moved all compiler messages to a new file, aslmessages.h.
3509
3510----------------------------------------
351115 September 2010. Summary of changes for version 20100915:
3512
35131) ACPI CA Core Subsystem:
3514
3515Removed the AcpiOsDerivePciId OSL interface. The various host
3516implementations
3517of this function were not OS-dependent and are now obsolete and can be
3518removed from all host OSLs. This function has been replaced by
3519AcpiHwDerivePciId, which is now part of the ACPICA core code.
3520AcpiHwDerivePciId has been implemented without recursion. Adds one new
3521module, hwpci.c. ACPICA BZ 857.
3522
3523Implemented a dynamic repair for _HID and _CID strings. The following
3524problems are now repaired at runtime: 1) Remove a leading asterisk in the
3525string, and 2) the entire string is uppercased. Both repairs are in
3526accordance with the ACPI specification and will simplify host driver
3527code.
3528ACPICA BZ 871.
3529
3530The ACPI_THREAD_ID type is no longer configurable, internally it is now
3531always UINT64. This simplifies the ACPICA code, especially any printf
3532output.
3533UINT64 is the only common data type for all thread_id types across all
3534operating systems. It is now up to the host OSL to cast the native
3535thread_id
3536type to UINT64 before returning the value to ACPICA (via
3537AcpiOsGetThreadId).
3538Lin Ming, Bob Moore.
3539
3540Added the ACPI_INLINE type to enhance the ACPICA configuration. The
3541"inline"
3542keyword is not standard across compilers, and this type allows inline to
3543be
3544configured on a per-compiler basis. Lin Ming.
3545
3546Made the system global AcpiGbl_SystemAwakeAndRunning publically
3547available.
3548Added an extern for this boolean in acpixf.h. Some hosts utilize this
3549value
3550during suspend/restore operations. ACPICA BZ 869.
3551
3552All code that implements error/warning messages with the "ACPI:" prefix
3553has
3554been moved to a new module, utxferror.c.
3555
3556The UINT64_OVERLAY was moved to utmath.c, which is the only module where
3557it
3558is used. ACPICA BZ 829. Lin Ming, Bob Moore.
3559
3560Example Code and Data Size: These are the sizes for the OS-independent
3561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3562debug version of the code includes the debug output trace mechanism and
3563has a
3564much larger code and data size.
3565
3566  Previous Release:
3567    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3568    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3569  Current Release:
3570    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3571    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3572
35732) iASL Compiler/Disassembler and Tools:
3574
3575iASL/Disassembler: Write ACPI errors to stderr instead of the output
3576file.
3577This keeps the output files free of random error messages that may
3578originate
3579from within the namespace/interpreter code. Used this opportunity to
3580merge
3581all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
3582866. Lin Ming, Bob Moore.
3583
3584Tools: update some printfs for ansi warnings on size_t. Handle width
3585change
3586of size_t on 32-bit versus 64-bit generations. Lin Ming.
3587
3588----------------------------------------
358906 August 2010. Summary of changes for version 20100806:
3590
35911) ACPI CA Core Subsystem:
3592
3593Designed and implemented a new host interface to the _OSI support code.
3594This
3595will allow the host to dynamically add or remove multiple _OSI strings,
3596as
3597well as install an optional handler that is called for each _OSI
3598invocation.
3599Also added a new AML debugger command, 'osi' to display and modify the
3600global
3601_OSI string table, and test support in the AcpiExec utility. See the
3602ACPICA
3603reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
3604New Functions:
3605    AcpiInstallInterface - Add an _OSI string.
3606    AcpiRemoveInterface - Delete an _OSI string.
3607    AcpiInstallInterfaceHandler - Install optional _OSI handler.
3608Obsolete Functions:
3609    AcpiOsValidateInterface - no longer used.
3610New Files:
3611    source/components/utilities/utosi.c
3612
3613Re-introduced the support to enable multi-byte transfers for Embedded
3614Controller (EC) operation regions. A reported problem was found to be a
3615bug
3616in the host OS, not in the multi-byte support. Previously, the maximum
3617data
3618size passed to the EC operation region handler was a single byte. There
3619are
3620often EC Fields larger than one byte that need to be transferred, and it
3621is
3622useful for the EC driver to lock these as a single transaction. This
3623change
3624enables single transfers larger than 8 bits. This effectively changes the
3625access to the EC space from ByteAcc to AnyAcc, and will probably require
3626changes to the host OS Embedded Controller driver to enable 16/32/64/256-
3627bit
3628transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
3629
3630Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
3631prototype in acpiosxf.h had the output value pointer as a (void *).
3632It should be a (UINT64 *). This may affect some host OSL code.
3633
3634Fixed a couple problems with the recently modified Linux makefiles for
3635iASL
3636and AcpiExec. These new makefiles place the generated object files in the
3637local directory so that there can be no collisions between the files that
3638are
3639shared between them that are compiled with different options.
3640
3641Example Code and Data Size: These are the sizes for the OS-independent
3642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3643debug version of the code includes the debug output trace mechanism and
3644has a
3645much larger code and data size.
3646
3647  Previous Release:
3648    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3649    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3650  Current Release:
3651    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3652    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3653
36542) iASL Compiler/Disassembler and Tools:
3655
3656iASL/Disassembler: Added a new option (-da, "disassemble all") to load
3657the
3658namespace from and disassemble an entire group of AML files. Useful for
3659loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
3660and
3661disassembling with one simple command. ACPICA BZ 865. Lin Ming.
3662
3663iASL: Allow multiple invocations of -e option. This change allows
3664multiple
3665uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
3666834.
3667Lin Ming.
3668
3669----------------------------------------
367002 July 2010. Summary of changes for version 20100702:
3671
36721) ACPI CA Core Subsystem:
3673
3674Implemented several updates to the recently added GPE reference count
3675support. The model for "wake" GPEs is changing to give the host OS
3676complete
3677control of these GPEs. Eventually, the ACPICA core will not execute any
3678_PRW
3679methods, since the host already must execute them. Also, additional
3680changes
3681were made to help ensure that the reference counts are kept in proper
3682synchronization with reality. Rafael J. Wysocki.
3683
36841) Ensure that GPEs are not enabled twice during initialization.
36852) Ensure that GPE enable masks stay in sync with the reference count.
36863) Do not inadvertently enable GPEs when writing GPE registers.
36874) Remove the internal wake reference counter and add new AcpiGpeWakeup
3688interface. This interface will set or clear individual GPEs for wakeup.
36895) Remove GpeType argument from AcpiEnable and AcpiDisable. These
3690interfaces
3691are now used for "runtime" GPEs only.
3692
3693Changed the behavior of the GPE install/remove handler interfaces. The
3694GPE
3695is
3696no longer disabled during this process, as it was found to cause problems
3697on
3698some machines. Rafael J. Wysocki.
3699
3700Reverted a change introduced in version 20100528 to enable Embedded
3701Controller multi-byte transfers. This change was found to cause problems
3702with
3703Index Fields and possibly Bank Fields. It will be reintroduced when these
3704problems have been resolved.
3705
3706Fixed a problem with references to Alias objects within Package Objects.
3707A
3708reference to an Alias within the definition of a Package was not always
3709resolved properly. Aliases to objects like Processors, Thermal zones,
3710etc.
3711were resolved to the actual object instead of a reference to the object
3712as
3713it
3714should be. Package objects are only allowed to contain integer, string,
3715buffer, package, and reference objects. Redhat bugzilla 608648.
3716
3717Example Code and Data Size: These are the sizes for the OS-independent
3718acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3719debug version of the code includes the debug output trace mechanism and
3720has a
3721much larger code and data size.
3722
3723  Previous Release:
3724    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3725    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3726  Current Release:
3727    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3728    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3729
37302) iASL Compiler/Disassembler and Tools:
3731
3732iASL: Implemented a new compiler subsystem to allow definition and
3733compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
3734These
3735are called "ACPI Data Tables", and the new compiler is the "Data Table
3736Compiler". This compiler is intended to simplify the existing error-prone
3737process of creating these tables for the BIOS, as well as allowing the
3738disassembly, modification, recompilation, and override of existing ACPI
3739data
3740tables. See the iASL User Guide for detailed information.
3741
3742iASL: Implemented a new Template Generator option in support of the new
3743Data
3744Table Compiler. This option will create examples of all known ACPI tables
3745that can be used as the basis for table development. See the iASL
3746documentation and the -T option.
3747
3748Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
3749Descriptor Table).
3750
3751Updated the Linux makefiles for iASL and AcpiExec to place the generated
3752object files in the local directory so that there can be no collisions
3753between the shared files between them that are generated with different
3754options.
3755
3756Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
3757Use
3758the #define __APPLE__ to enable this support.
3759
3760----------------------------------------
376128 May 2010. Summary of changes for version 20100528:
3762
3763Note: The ACPI 4.0a specification was released on April 5, 2010 and is
3764available at www.acpi.info. This is primarily an errata release.
3765
37661) ACPI CA Core Subsystem:
3767
3768Undefined ACPI tables: We are looking for the definitions for the
3769following
3770ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
3771
3772Implemented support to enable multi-byte transfers for Embedded
3773Controller
3774(EC) operation regions. Previously, the maximum data size passed to the
3775EC
3776operation region handler was a single byte. There are often EC Fields
3777larger
3778than one byte that need to be transferred, and it is useful for the EC
3779driver
3780to lock these as a single transaction. This change enables single
3781transfers
3782larger than 8 bits. This effectively changes the access to the EC space
3783from
3784ByteAcc to AnyAcc, and will probably require changes to the host OS
3785Embedded
3786Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
3787bit
3788transfers. Alexey Starikovskiy, Lin Ming
3789
3790Implemented a performance enhancement for namespace search and access.
3791This
3792change enhances the performance of namespace searches and walks by adding
3793a
3794backpointer to the parent in each namespace node. On large namespaces,
3795this
3796change can improve overall ACPI performance by up to 9X. Adding a pointer
3797to
3798each namespace node increases the overall size of the internal namespace
3799by
3800about 5%, since each namespace entry usually consists of both a namespace
3801node and an ACPI operand object. However, this is the first growth of the
3802namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
3803
3804Implemented a performance optimization that reduces the number of
3805namespace
3806walks. On control method exit, only walk the namespace if the method is
3807known
3808to have created namespace objects outside of its local scope. Previously,
3809the
3810entire namespace was traversed on each control method exit. This change
3811can
3812improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
3813Moore.
3814
3815Added support to truncate I/O addresses to 16 bits for Windows
3816compatibility.
3817Some ASL code has been seen in the field that inadvertently has bits set
3818above bit 15. This feature is optional and is enabled if the BIOS
3819requests
3820any Windows OSI strings. It can also be enabled by the host OS. Matthew
3821Garrett, Bob Moore.
3822
3823Added support to limit the maximum time for the ASL Sleep() operator. To
3824prevent accidental deep sleeps, limit the maximum time that Sleep() will
3825actually sleep. Configurable, the default maximum is two seconds. ACPICA
3826bugzilla 854.
3827
3828Added run-time validation support for the _WDG and_WED Microsoft
3829predefined
3830methods. These objects are defined by "Windows Instrumentation", and are
3831not
3832part of the ACPI spec. ACPICA BZ 860.
3833
3834Expanded all statistic counters used during namespace and device
3835initialization from 16 to 32 bits in order to support very large
3836namespaces.
3837
3838Replaced all instances of %d in printf format specifiers with %u since
3839nearly
3840all integers in ACPICA are unsigned.
3841
3842Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
3843returned
3844as AE_NO_HANDLER.
3845
3846Example Code and Data Size: These are the sizes for the OS-independent
3847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3848debug version of the code includes the debug output trace mechanism and
3849has a
3850much larger code and data size.
3851
3852  Previous Release:
3853    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3854    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
3855  Current Release:
3856    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3857    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3858
38592) iASL Compiler/Disassembler and Tools:
3860
3861iASL: Added compiler support for the _WDG and_WED Microsoft predefined
3862methods. These objects are defined by "Windows Instrumentation", and are
3863not
3864part of the ACPI spec. ACPICA BZ 860.
3865
3866AcpiExec: added option to disable the memory tracking mechanism. The -dt
3867option will disable the tracking mechanism, which improves performance
3868considerably.
3869
3870AcpiExec: Restructured the command line options into -d (disable) and -e
3871(enable) options.
3872
3873----------------------------------------
387428 April 2010. Summary of changes for version 20100428:
3875
38761) ACPI CA Core Subsystem:
3877
3878Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
3879including FADT-based and GPE Block Devices, execute any _PRW methods in
3880the
3881new table, and process any _Lxx/_Exx GPE methods in the new table. Any
3882runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
3883immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
3884Devices. Provides compatibility with other ACPI implementations. Two new
3885files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
3886Moore.
3887
3888Fixed a regression introduced in version 20100331 within the table
3889manager
3890where initial table loading could fail. This was introduced in the fix
3891for
3892AcpiReallocateRootTable. Also, renamed some of fields in the table
3893manager
3894data structures to clarify their meaning and use.
3895
3896Fixed a possible allocation overrun during internal object copy in
3897AcpiUtCopySimpleObject. The original code did not correctly handle the
3898case
3899where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
3900847.
3901
3902Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
3903possible access beyond end-of-allocation. Also, now fully validate
3904descriptor
3905(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
3906
3907Example Code and Data Size: These are the sizes for the OS-independent
3908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3909debug version of the code includes the debug output trace mechanism and
3910has a
3911much larger code and data size.
3912
3913  Previous Release:
3914    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
3915    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
3916  Current Release:
3917    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3918    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
3919
39202) iASL Compiler/Disassembler and Tools:
3921
3922iASL: Implemented Min/Max/Len/Gran validation for address resource
3923descriptors. This change implements validation for the address fields
3924that
3925are common to all address-type resource descriptors. These checks are
3926implemented: Checks for valid Min/Max, length within the Min/Max window,
3927valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
3928per
3929table 6-40 in the ACPI 4.0a specification. Also split the large
3930aslrestype1.c
3931and aslrestype2.c files into five new files. ACPICA BZ 840.
3932
3933iASL: Added support for the _Wxx predefined names. This support was
3934missing
3935and these names were not recognized by the compiler as valid predefined
3936names. ACPICA BZ 851.
3937
3938iASL: Added an error for all predefined names that are defined to return
3939no
3940value and thus must be implemented as Control Methods. These include all
3941of
3942the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
3943names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
3944
3945iASL: Implemented the -ts option to emit hex AML data in ASL format, as
3946an
3947ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
3948be
3949dynamically loaded via the Load() operator. Also cleaned up output for
3950the
3951-
3952ta and -tc options. ACPICA BZ 853.
3953
3954Tests: Added a new file with examples of extended iASL error checking.
3955Demonstrates the advanced error checking ability of the iASL compiler.
3956Available at tests/misc/badcode.asl.
3957
3958----------------------------------------
395931 March 2010. Summary of changes for version 20100331:
3960
39611) ACPI CA Core Subsystem:
3962
3963Completed a major update for the GPE support in order to improve support
3964for
3965shared GPEs and to simplify both host OS and ACPICA code. Added a
3966reference
3967count mechanism to support shared GPEs that require multiple device
3968drivers.
3969Several external interfaces have changed. One external interface has been
3970removed. One new external interface was added. Most of the GPE external
3971interfaces now use the GPE spinlock instead of the events mutex (and the
3972Flags parameter for many GPE interfaces has been removed.) See the
3973updated
3974ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
3975Rafael
3976Wysocki. ACPICA BZ 831.
3977
3978Changed:
3979    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
3980Removed:
3981    AcpiSetGpeType
3982New:
3983    AcpiSetGpe
3984
3985Implemented write support for DataTable operation regions. These regions
3986are
3987defined via the DataTableRegion() operator. Previously, only read support
3988was
3989implemented. The ACPI specification allows DataTableRegions to be
3990read/write,
3991however.
3992
3993Implemented a new subsystem option to force a copy of the DSDT to local
3994memory. Optionally copy the entire DSDT to local memory (instead of
3995simply
3996mapping it.) There are some (albeit very rare) BIOSs that corrupt or
3997replace
3998the original DSDT, creating the need for this option. Default is FALSE,
3999do
4000not copy the DSDT.
4001
4002Implemented detection of a corrupted or replaced DSDT. This change adds
4003support to detect a DSDT that has been corrupted and/or replaced from
4004outside
4005the OS (by firmware). This is typically catastrophic for the system, but
4006has
4007been seen on some machines. Once this problem has been detected, the DSDT
4008copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4009
4010Fixed two problems with AcpiReallocateRootTable during the root table
4011copy.
4012When copying the root table to the new allocation, the length used was
4013incorrect. The new size was used instead of the current table size,
4014meaning
4015too much data was copied. Also, the count of available slots for ACPI
4016tables
4017was not set correctly. Alexey Starikovskiy, Bob Moore.
4018
4019Example Code and Data Size: These are the sizes for the OS-independent
4020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4021debug version of the code includes the debug output trace mechanism and
4022has a
4023much larger code and data size.
4024
4025  Previous Release:
4026    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4027    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4028  Current Release:
4029    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4030    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4031
40322) iASL Compiler/Disassembler and Tools:
4033
4034iASL: Implement limited typechecking for values returned from predefined
4035control methods. The type of any returned static (unnamed) object is now
4036validated. For example, Return(1). ACPICA BZ 786.
4037
4038iASL: Fixed a predefined name object verification regression. Fixes a
4039problem
4040introduced in version 20100304. An error is incorrectly generated if a
4041predefined name is declared as a static named object with a value defined
4042using the keywords "Zero", "One", or "Ones". Lin Ming.
4043
4044iASL: Added Windows 7 support for the -g option (get local ACPI tables)
4045by
4046reducing the requested registry access rights. ACPICA BZ 842.
4047
4048Disassembler: fixed a possible fault when generating External()
4049statements.
4050Introduced in commit ae7d6fd: Properly handle externals with parent-
4051prefix
4052(carat). Fixes a string length allocation calculation. Lin Ming.
4053
4054----------------------------------------
405504 March 2010. Summary of changes for version 20100304:
4056
40571) ACPI CA Core Subsystem:
4058
4059Fixed a possible problem with the AML Mutex handling function
4060AcpiExReleaseMutex where the function could fault under the very rare
4061condition when the interpreter has blocked, the interpreter lock is
4062released,
4063the interpreter is then reentered via the same thread, and attempts to
4064acquire an AML mutex that was previously acquired. FreeBSD report 140979.
4065Lin
4066Ming.
4067
4068Implemented additional configuration support for the AML "Debug Object".
4069Output from the debug object can now be enabled via a global variable,
4070AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
4071debugging.
4072This debug output is now available in the release version of ACPICA
4073instead
4074of just the debug version. Also, the entire debug output module can now
4075be
4076configured out of the ACPICA build if desired. One new file added,
4077executer/exdebug.c. Lin Ming, Bob Moore.
4078
4079Added header support for the ACPI MCHI table (Management Controller Host
4080Interface Table). This table was added in ACPI 4.0, but the defining
4081document
4082has only recently become available.
4083
4084Standardized output of integer values for ACPICA warnings/errors. Always
4085use
40860x prefix for hex output, always use %u for unsigned integer decimal
4087output.
4088Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
4089400
4090invocations.) These invocations were converted from the original
4091ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4092
4093Example Code and Data Size: These are the sizes for the OS-independent
4094acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4095debug version of the code includes the debug output trace mechanism and
4096has a
4097much larger code and data size.
4098
4099  Previous Release:
4100    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4101    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4102  Current Release:
4103    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4104    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4105
41062) iASL Compiler/Disassembler and Tools:
4107
4108iASL: Implemented typechecking support for static (non-control method)
4109predefined named objects that are declared with the Name() operator. For
4110example, the type of this object is now validated to be of type Integer:
4111Name(_BBN, 1). This change migrates the compiler to using the core
4112predefined
4113name table instead of maintaining a local version. Added a new file,
4114aslpredef.c. ACPICA BZ 832.
4115
4116Disassembler: Added support for the ACPI 4.0 MCHI table.
4117
4118----------------------------------------
411921 January 2010. Summary of changes for version 20100121:
4120
41211) ACPI CA Core Subsystem:
4122
4123Added the 2010 copyright to all module headers and signons. This affects
4124virtually every file in the ACPICA core subsystem, the iASL compiler, the
4125tools/utilities, and the test suites.
4126
4127Implemented a change to the AcpiGetDevices interface to eliminate
4128unnecessary
4129invocations of the _STA method. In the case where a specific _HID is
4130requested, do not run _STA until a _HID match is found. This eliminates
4131potentially dozens of _STA calls during a search for a particular
4132device/HID,
4133which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4134
4135Implemented an additional repair for predefined method return values.
4136Attempt
4137to repair unexpected NULL elements within returned Package objects.
4138Create
4139an
4140Integer of value zero, a NULL String, or a zero-length Buffer as
4141appropriate.
4142ACPICA BZ 818. Lin Ming, Bob Moore.
4143
4144Removed the obsolete ACPI_INTEGER data type. This type was introduced as
4145the
4146code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
4147(with
414864-bit AML integers). It is now obsolete and this change removes it from
4149the
4150ACPICA code base, replaced by UINT64. The original typedef has been
4151retained
4152for now for compatibility with existing device driver code. ACPICA BZ
4153824.
4154
4155Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
4156in
4157the parse tree object.
4158
4159Added additional warning options for the gcc-4 generation. Updated the
4160source
4161accordingly. This includes some code restructuring to eliminate
4162unreachable
4163code, elimination of some gotos, elimination of unused return values,
4164some
4165additional casting, and removal of redundant declarations.
4166
4167Example Code and Data Size: These are the sizes for the OS-independent
4168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4169debug version of the code includes the debug output trace mechanism and
4170has a
4171much larger code and data size.
4172
4173  Previous Release:
4174    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4175    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4176  Current Release:
4177    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4178    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4179
41802) iASL Compiler/Disassembler and Tools:
4181
4182No functional changes for this release.
4183
4184----------------------------------------
418514 December 2009. Summary of changes for version 20091214:
4186
41871) ACPI CA Core Subsystem:
4188
4189Enhanced automatic data type conversions for predefined name repairs.
4190This
4191change expands the automatic repairs/conversions for predefined name
4192return
4193values to make Integers, Strings, and Buffers fully interchangeable.
4194Also,
4195a
4196Buffer can be converted to a Package of Integers if necessary. The
4197nsrepair.c
4198module was completely restructured. Lin Ming, Bob Moore.
4199
4200Implemented automatic removal of null package elements during predefined
4201name
4202repairs. This change will automatically remove embedded and trailing NULL
4203package elements from returned package objects that are defined to
4204contain
4205a
4206variable number of sub-packages. The driver is then presented with a
4207package
4208with no null elements to deal with. ACPICA BZ 819.
4209
4210Implemented a repair for the predefined _FDE and _GTM names. The expected
4211return value for both names is a Buffer of 5 DWORDs. This repair fixes
4212two
4213possible problems (both seen in the field), where a package of integers
4214is
4215returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
4216Kim.
4217
4218Implemented additional module-level code support. This change will
4219properly
4220execute module-level code that is not at the root of the namespace (under
4221a
4222Device object, etc.). Now executes the code within the current scope
4223instead
4224of the root. ACPICA BZ 762. Lin Ming.
4225
4226Fixed possible mutex acquisition errors when running _REG methods. Fixes
4227a
4228problem where mutex errors can occur when running a _REG method that is
4229in
4230the same scope as a method-defined operation region or an operation
4231region
4232under a module-level IF block. This type of code is rare, so the problem
4233has
4234not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4235
4236Fixed a possible memory leak during module-level code execution. An
4237object
4238could be leaked for each block of executed module-level code if the
4239interpreter slack mode is enabled This change deletes any implicitly
4240returned
4241object from the module-level code block. Lin Ming.
4242
4243Removed messages for successful predefined repair(s). The repair
4244mechanism
4245was considered too wordy. Now, messages are only unconditionally emitted
4246if
4247the return object cannot be repaired. Existing messages for successful
4248repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
4249827.
4250
4251Example Code and Data Size: These are the sizes for the OS-independent
4252acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4253debug version of the code includes the debug output trace mechanism and
4254has a
4255much larger code and data size.
4256
4257  Previous Release:
4258    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4259    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4260  Current Release:
4261    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4262    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4263
42642) iASL Compiler/Disassembler and Tools:
4265
4266iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
4267files
4268were no longer automatically removed at the termination of the compile.
4269
4270acpiexec: Implemented the -f option to specify default region fill value.
4271This option specifies the value used to initialize buffers that simulate
4272operation regions. Default value is zero. Useful for debugging problems
4273that
4274depend on a specific initial value for a region or field.
4275
4276----------------------------------------
427712 November 2009. Summary of changes for version 20091112:
4278
42791) ACPI CA Core Subsystem:
4280
4281Implemented a post-order callback to AcpiWalkNamespace. The existing
4282interface only has a pre-order callback. This change adds an additional
4283parameter for a post-order callback which will be more useful for bus
4284scans.
4285ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4286
4287Modified the behavior of the operation region memory mapping cache for
4288SystemMemory. Ensure that the memory mappings created for operation
4289regions
4290do not cross 4K page boundaries. Crossing a page boundary while mapping
4291regions can cause kernel warnings on some hosts if the pages have
4292different
4293attributes. Such regions are probably BIOS bugs, and this is the
4294workaround.
4295Linux BZ 14445. Lin Ming.
4296
4297Implemented an automatic repair for predefined methods that must return
4298sorted lists. This change will repair (by sorting) packages returned by
4299_ALR,
4300_PSS, and _TSS. Drivers can now assume that the packages are correctly
4301sorted
4302and do not contain NULL package elements. Adds one new file,
4303namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4304
4305Fixed a possible fault during predefined name validation if a return
4306Package
4307object contains NULL elements. Also adds a warning if a NULL element is
4308followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
4309may
4310include repair or removal of all such NULL elements where possible.
4311
4312Implemented additional module-level executable AML code support. This
4313change
4314will execute module-level code that is not at the root of the namespace
4315(under a Device object, etc.) at table load time. Module-level executable
4316AML
4317code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4318
4319Implemented a new internal function to create Integer objects. This
4320function
4321simplifies miscellaneous object creation code. ACPICA BZ 823.
4322
4323Reduced the severity of predefined repair messages, Warning to Info.
4324Since
4325the object was successfully repaired, a warning is too severe. Reduced to
4326an
4327info message for now. These messages may eventually be changed to debug-
4328only.
4329ACPICA BZ 812.
4330
4331Example Code and Data Size: These are the sizes for the OS-independent
4332acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4333debug version of the code includes the debug output trace mechanism and
4334has a
4335much larger code and data size.
4336
4337  Previous Release:
4338    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4339    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4340  Current Release:
4341    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4342    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4343
43442) iASL Compiler/Disassembler and Tools:
4345
4346iASL: Implemented Switch() with While(1) so that Break works correctly.
4347This
4348change correctly implements the Switch operator with a surrounding
4349While(1)
4350so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4351
4352iASL: Added a message if a package initializer list is shorter than
4353package
4354length. Adds a new remark for a Package() declaration if an initializer
4355list
4356exists, but is shorter than the declared length of the package. Although
4357technically legal, this is probably a coding error and it is seen in the
4358field. ACPICA BZ 815. Lin Ming, Bob Moore.
4359
4360iASL: Fixed a problem where the compiler could fault after the maximum
4361number
4362of errors was reached (200).
4363
4364acpixtract: Fixed a possible warning for pointer cast if the compiler
4365warning
4366level set very high.
4367
4368----------------------------------------
436913 October 2009. Summary of changes for version 20091013:
4370
43711) ACPI CA Core Subsystem:
4372
4373Fixed a problem where an Operation Region _REG method could be executed
4374more
4375than once. If a custom address space handler is installed by the host
4376before
4377the "initialize operation regions" phase of the ACPICA initialization,
4378any
4379_REG methods for that address space could be executed twice. This change
4380fixes the problem. ACPICA BZ 427. Lin Ming.
4381
4382Fixed a possible memory leak for the Scope() ASL operator. When the exact
4383invocation of "Scope(\)" is executed (change scope to root), one internal
4384operand object was leaked. Lin Ming.
4385
4386Implemented a run-time repair for the _MAT predefined method. If the _MAT
4387return value is defined as a Field object in the AML, and the field
4388size is less than or equal to the default width of an integer (32 or
438964),_MAT
4390can incorrectly return an Integer instead of a Buffer. ACPICA now
4391automatically repairs this problem. ACPICA BZ 810.
4392
4393Implemented a run-time repair for the _BIF and _BIX predefined methods.
4394The
4395"OEM Information" field is often incorrectly returned as an Integer with
4396value zero if the field is not supported by the platform. This is due to
4397an
4398ambiguity in the ACPI specification. The field should always be a string.
4399ACPICA now automatically repairs this problem by returning a NULL string
4400within the returned Package. ACPICA BZ 807.
4401
4402Example Code and Data Size: These are the sizes for the OS-independent
4403acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4404debug version of the code includes the debug output trace mechanism and
4405has a
4406much larger code and data size.
4407
4408  Previous Release:
4409    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4410    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4411  Current Release:
4412    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4413    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4414
44152) iASL Compiler/Disassembler and Tools:
4416
4417Disassembler: Fixed a problem where references to external symbols that
4418contained one or more parent-prefixes (carats) were not handled
4419correctly,
4420possibly causing a fault. ACPICA BZ 806. Lin Ming.
4421
4422Disassembler: Restructured the code so that all functions that handle
4423external symbols are in a single module. One new file is added,
4424common/dmextern.c.
4425
4426AML Debugger: Added a max count argument for the Batch command (which
4427executes multiple predefined methods within the namespace.)
4428
4429iASL: Updated the compiler documentation (User Reference.) Available at
4430http://www.acpica.org/documentation/. ACPICA BZ 750.
4431
4432AcpiXtract: Updated for Lint and other formatting changes. Close all open
4433files.
4434
4435----------------------------------------
443603 September 2009. Summary of changes for version 20090903:
4437
44381) ACPI CA Core Subsystem:
4439
4440For Windows Vista compatibility, added the automatic execution of an _INI
4441method located at the namespace root (\_INI). This method is executed at
4442table load time. This support is in addition to the automatic execution
4443of
4444\_SB._INI. Lin Ming.
4445
4446Fixed a possible memory leak in the interpreter for AML package objects
4447if
4448the package initializer list is longer than the defined size of the
4449package.
4450This apparently can only happen if the BIOS changes the package size on
4451the
4452fly (seen in a _PSS object), as ASL compilers do not allow this. The
4453interpreter will truncate the package to the defined size (and issue an
4454error
4455message), but previously could leave the extra objects undeleted if they
4456were
4457pre-created during the argument processing (such is the case if the
4458package
4459consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
4460
4461Fixed a problem seen when a Buffer or String is stored to itself via ASL.
4462This has been reported in the field. Previously, ACPICA would zero out
4463the
4464buffer/string. Now, the operation is treated as a noop. Provides Windows
4465compatibility. ACPICA BZ 803. Lin Ming.
4466
4467Removed an extraneous error message for ASL constructs of the form
4468Store(LocalX,LocalX) when LocalX is uninitialized. These curious
4469statements
4470are seen in many BIOSs and are once again treated as NOOPs and no error
4471is
4472emitted when they are encountered. ACPICA BZ 785.
4473
4474Fixed an extraneous warning message if a _DSM reserved method returns a
4475Package object. _DSM can return any type of object, so validation on the
4476return type cannot be performed. ACPICA BZ 802.
4477
4478Example Code and Data Size: These are the sizes for the OS-independent
4479acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4480debug version of the code includes the debug output trace mechanism and
4481has a
4482much larger code and data size.
4483
4484  Previous Release:
4485    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4486    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4487  Current Release:
4488    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4489    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4490
44912) iASL Compiler/Disassembler and Tools:
4492
4493iASL: Fixed a problem with the use of the Alias operator and Resource
4494Templates. The correct alias is now constructed and no error is emitted.
4495ACPICA BZ 738.
4496
4497iASL: Implemented the -I option to specify additional search directories
4498for
4499include files. Allows multiple additional search paths for include files.
4500Directories are searched in the order specified on the command line
4501(after
4502the local directory is searched.) ACPICA BZ 800.
4503
4504iASL: Fixed a problem where the full pathname for include files was not
4505emitted for warnings/errors. This caused the IDE support to not work
4506properly. ACPICA BZ 765.
4507
4508iASL: Implemented the -@ option to specify a Windows-style response file
4509containing additional command line options. ACPICA BZ 801.
4510
4511AcpiExec: Added support to load multiple AML files simultaneously (such
4512as
4513a
4514DSDT and multiple SSDTs). Also added support for wildcards within the AML
4515pathname. These features allow all machine tables to be easily loaded and
4516debugged together. ACPICA BZ 804.
4517
4518Disassembler: Added missing support for disassembly of HEST table Error
4519Bank
4520subtables.
4521
4522----------------------------------------
452330 July 2009. Summary of changes for version 20090730:
4524
4525The ACPI 4.0 implementation for ACPICA is complete with this release.
4526
45271) ACPI CA Core Subsystem:
4528
4529ACPI 4.0: Added header file support for all new and changed ACPI tables.
4530Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
4531new
4532for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
4533BERT,
4534EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
4535There
4536have been some ACPI 4.0 changes to other existing tables. Split the large
4537actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
4538
4539ACPI 4.0: Implemented predefined name validation for all new names. There
4540are
454131 new names in ACPI 4.0. The predefined validation module was split into
4542two
4543files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
4544
4545Implemented support for so-called "module-level executable code". This is
4546executable AML code that exists outside of any control method and is
4547intended
4548to be executed at table load time. Although illegal since ACPI 2.0, this
4549type
4550of code still exists and is apparently still being created. Blocks of
4551this
4552code are now detected and executed as intended. Currently, the code
4553blocks
4554must exist under either an If, Else, or While construct; these are the
4555typical cases seen in the field. ACPICA BZ 762. Lin Ming.
4556
4557Implemented an automatic dynamic repair for predefined names that return
4558nested Package objects. This applies to predefined names that are defined
4559to
4560return a variable-length Package of sub-packages. If the number of sub-
4561packages is one, BIOS code is occasionally seen that creates a simple
4562single
4563package with no sub-packages. This code attempts to fix the problem by
4564wrapping a new package object around the existing package. These methods
4565can
4566be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
4567BZ
4568790.
4569
4570Fixed a regression introduced in 20090625 for the AcpiGetDevices
4571interface.
4572The _HID/_CID matching was broken and no longer matched IDs correctly.
4573ACPICA
4574BZ 793.
4575
4576Fixed a problem with AcpiReset where the reset would silently fail if the
4577register was one of the protected I/O ports. AcpiReset now bypasses the
4578port
4579validation mechanism. This may eventually be driven into the
4580AcpiRead/Write
4581interfaces.
4582
4583Fixed a regression related to the recent update of the AcpiRead/Write
4584interfaces. A sleep/suspend could fail if the optional PM2 Control
4585register
4586does not exist during an attempt to write the Bus Master Arbitration bit.
4587(However, some hosts already delete the code that writes this bit, and
4588the
4589code may in fact be obsolete at this date.) ACPICA BZ 799.
4590
4591Fixed a problem where AcpiTerminate could fault if inadvertently called
4592twice
4593in succession. ACPICA BZ 795.
4594
4595Example Code and Data Size: These are the sizes for the OS-independent
4596acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4597debug version of the code includes the debug output trace mechanism and
4598has a
4599much larger code and data size.
4600
4601  Previous Release:
4602    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4603    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4604  Current Release:
4605    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4606    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4607
46082) iASL Compiler/Disassembler and Tools:
4609
4610ACPI 4.0: Implemented disassembler support for all new ACPI tables and
4611changes to existing tables. ACPICA BZ 775.
4612
4613----------------------------------------
461425 June 2009. Summary of changes for version 20090625:
4615
4616The ACPI 4.0 Specification was released on June 16 and is available at
4617www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
4618continue for the next few releases.
4619
46201) ACPI CA Core Subsystem:
4621
4622ACPI 4.0: Implemented interpreter support for the IPMI operation region
4623address space. Includes support for bi-directional data buffers and an
4624IPMI
4625address space handler (to be installed by an IPMI device driver.) ACPICA
4626BZ
4627773. Lin Ming.
4628
4629ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
4630Includes
4631support in both the header files and the disassembler.
4632
4633Completed a major update for the AcpiGetObjectInfo external interface.
4634Changes include:
4635 - Support for variable, unlimited length HID, UID, and CID strings.
4636 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
4637etc.)
4638 - Call the _SxW power methods on behalf of a device object.
4639 - Determine if a device is a PCI root bridge.
4640 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
4641These changes will require an update to all callers of this interface.
4642See
4643the updated ACPICA Programmer Reference for details. One new source file
4644has
4645been added - utilities/utids.c. ACPICA BZ 368, 780.
4646
4647Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
4648transfers. The Value parameter has been extended from 32 bits to 64 bits
4649in
4650order to support new ACPI 4.0 tables. These changes will require an
4651update
4652to
4653all callers of these interfaces. See the ACPICA Programmer Reference for
4654details. ACPICA BZ 768.
4655
4656Fixed several problems with AcpiAttachData. The handler was not invoked
4657when
4658the host node was deleted. The data sub-object was not automatically
4659deleted
4660when the host node was deleted. The interface to the handler had an
4661unused
4662parameter, this was removed. ACPICA BZ 778.
4663
4664Enhanced the function that dumps ACPI table headers. All non-printable
4665characters in the string fields are now replaced with '?' (Signature,
4666OemId,
4667OemTableId, and CompilerId.) ACPI tables with non-printable characters in
4668these fields are occasionally seen in the field. ACPICA BZ 788.
4669
4670Fixed a problem with predefined method repair code where the code that
4671attempts to repair/convert an object of incorrect type is only executed
4672on
4673the first time the predefined method is called. The mechanism that
4674disables
4675warnings on subsequent calls was interfering with the repair mechanism.
4676ACPICA BZ 781.
4677
4678Fixed a possible memory leak in the predefined validation/repair code
4679when
4680a
4681buffer is automatically converted to an expected string object.
4682
4683Removed obsolete 16-bit files from the distribution and from the current
4684git
4685tree head. ACPICA BZ 776.
4686
4687Example Code and Data Size: These are the sizes for the OS-independent
4688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4689debug version of the code includes the debug output trace mechanism and
4690has a
4691much larger code and data size.
4692
4693  Previous Release:
4694    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
4695    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
4696  Current Release:
4697    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4698    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4699
47002) iASL Compiler/Disassembler and Tools:
4701
4702ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
4703operation region keyword. ACPICA BZ 771, 772. Lin Ming.
4704
4705ACPI 4.0: iASL - implemented compile-time validation support for all new
4706predefined names and control methods (31 total). ACPICA BZ 769.
4707
4708----------------------------------------
470921 May 2009. Summary of changes for version 20090521:
4710
47111) ACPI CA Core Subsystem:
4712
4713Disabled the preservation of the SCI enable bit in the PM1 control
4714register.
4715The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
4716to
4717be
4718a "preserved" bit - "OSPM always preserves this bit position", section
47194.7.3.2.1. However, some machines fail if this bit is in fact preserved
4720because the bit needs to be explicitly set by the OS as a workaround. No
4721machines fail if the bit is not preserved. Therefore, ACPICA no longer
4722attempts to preserve this bit.
4723
4724Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
4725incorrectly formed _PRT package could cause a fault. Added validation to
4726ensure that each package element is actually a sub-package.
4727
4728Implemented a new interface to install or override a single control
4729method,
4730AcpiInstallMethod. This interface is useful when debugging in order to
4731repair
4732an existing method or to install a missing method without having to
4733override
4734the entire ACPI table. See the ACPICA Programmer Reference for use and
4735examples. Lin Ming, Bob Moore.
4736
4737Fixed several reference count issues with the DdbHandle object that is
4738created from a Load or LoadTable operator. Prevent premature deletion of
4739the
4740object. Also, mark the object as invalid once the table has been
4741unloaded.
4742This is needed because the handle itself may not be deleted after the
4743table
4744unload, depending on whether it has been stored in a named object by the
4745caller. Lin Ming.
4746
4747Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
4748mutexes of the same sync level are acquired but then not released in
4749strict
4750opposite order, the internally maintained Current Sync Level becomes
4751confused
4752and can cause subsequent execution errors. ACPICA BZ 471.
4753
4754Changed the allowable release order for ASL mutex objects. The ACPI 4.0
4755specification has been changed to make the SyncLevel for mutex objects
4756more
4757useful. When releasing a mutex, the SyncLevel of the mutex must now be
4758the
4759same as the current sync level. This makes more sense than the previous
4760rule
4761(SyncLevel less than or equal). This change updates the code to match the
4762specification.
4763
4764Fixed a problem with the local version of the AcpiOsPurgeCache function.
4765The
4766(local) cache must be locked during all cache object deletions. Andrew
4767Baumann.
4768
4769Updated the Load operator to use operation region interfaces. This
4770replaces
4771direct memory mapping with region access calls. Now, all region accesses
4772go
4773through the installed region handler as they should.
4774
4775Simplified and optimized the NsGetNextNode function. Reduced parameter
4776count
4777and reduced code for this frequently used function.
4778
4779Example Code and Data Size: These are the sizes for the OS-independent
4780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4781debug version of the code includes the debug output trace mechanism and
4782has a
4783much larger code and data size.
4784
4785  Previous Release:
4786    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
4787    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
4788  Current Release:
4789    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
4790    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
4791
47922) iASL Compiler/Disassembler and Tools:
4793
4794Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
4795problems
4796with sub-table disassembly and handling invalid sub-tables. Attempt
4797recovery
4798after an invalid sub-table ID.
4799
4800----------------------------------------
480122 April 2009. Summary of changes for version 20090422:
4802
48031) ACPI CA Core Subsystem:
4804
4805Fixed a compatibility issue with the recently released I/O port
4806protection
4807mechanism. For windows compatibility, 1) On a port protection violation,
4808simply ignore the request and do not return an exception (allow the
4809control
4810method to continue execution.) 2) If only part of the request overlaps a
4811protected port, read/write the individual ports that are not protected.
4812Linux
4813BZ 13036. Lin Ming
4814
4815Enhanced the execution of the ASL/AML BreakPoint operator so that it
4816actually
4817breaks into the AML debugger if the debugger is present. This matches the
4818ACPI-defined behavior.
4819
4820Fixed several possible warnings related to the use of the configurable
4821ACPI_THREAD_ID. This type can now be configured as either an integer or a
4822pointer with no warnings. Also fixes several warnings in printf-like
4823statements for the 64-bit build when the type is configured as a pointer.
4824ACPICA BZ 766, 767.
4825
4826Fixed a number of possible warnings when compiling with gcc 4+ (depending
4827on
4828warning options.) Examples include printf formats, aliasing, unused
4829globals,
4830missing prototypes, missing switch default statements, use of non-ANSI
4831library functions, use of non-ANSI constructs. See generate/unix/Makefile
4832for
4833a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
4834
4835Example Code and Data Size: These are the sizes for the OS-independent
4836acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4837debug version of the code includes the debug output trace mechanism and
4838has a
4839much larger code and data size.
4840
4841  Previous Release:
4842    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
4843    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
4844  Current Release:
4845    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
4846    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
4847
48482) iASL Compiler/Disassembler and Tools:
4849
4850iASL: Fixed a generation warning from Bison 2.3 and fixed several
4851warnings
4852on
4853the 64-bit build.
4854
4855iASL: Fixed a problem where the Unix/Linux versions of the compiler could
4856not
4857correctly digest Windows/DOS formatted files (with CR/LF).
4858
4859iASL: Added a new option for "quiet mode" (-va) that produces only the
4860compilation summary, not individual errors and warnings. Useful for large
4861batch compilations.
4862
4863AcpiExec: Implemented a new option (-z) to enable a forced
4864semaphore/mutex
4865timeout that can be used to detect hang conditions during execution of
4866AML
4867code (includes both internal semaphores and AML-defined mutexes and
4868events.)
4869
4870Added new makefiles for the generation of acpica in a generic unix-like
4871environment. These makefiles are intended to generate the acpica tools
4872and
4873utilities from the original acpica git source tree structure.
4874
4875Test Suites: Updated and cleaned up the documentation files. Updated the
4876copyrights to 2009, affecting all source files. Use the new version of
4877iASL
4878with quiet mode. Increased the number of available semaphores in the
4879Windows
4880OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
4881added
4882an alternate implementation of the semaphore timeout to allow aslts to
4883execute fully on Cygwin.
4884
4885----------------------------------------
488620 March 2009. Summary of changes for version 20090320:
4887
48881) ACPI CA Core Subsystem:
4889
4890Fixed a possible race condition between AcpiWalkNamespace and dynamic
4891table
4892unloads. Added a reader/writer locking mechanism to allow multiple
4893concurrent
4894namespace walks (readers), but block a dynamic table unload until it can
4895gain
4896exclusive write access to the namespace. This fixes a problem where a
4897table
4898unload could (possibly catastrophically) delete the portion of the
4899namespace
4900that is currently being examined by a walk. Adds a new file, utlock.c,
4901that
4902implements the reader/writer lock mechanism. ACPICA BZ 749.
4903
4904Fixed a regression introduced in version 20090220 where a change to the
4905FADT
4906handling could cause the ACPICA subsystem to access non-existent I/O
4907ports.
4908
4909Modified the handling of FADT register and table (FACS/DSDT) addresses.
4910The
4911FADT can contain both 32-bit and 64-bit versions of these addresses.
4912Previously, the 64-bit versions were favored, meaning that if both 32 and
491364
4914versions were valid, but not equal, the 64-bit version was used. This was
4915found to cause some machines to fail. Now, in this case, the 32-bit
4916version
4917is used instead. This now matches the Windows behavior.
4918
4919Implemented a new mechanism to protect certain I/O ports. Provides
4920Microsoft
4921compatibility and protects the standard PC I/O ports from access via AML
4922code. Adds a new file, hwvalid.c
4923
4924Fixed a possible extraneous warning message from the FADT support. The
4925message warns of a 32/64 length mismatch between the legacy and GAS
4926definitions for a register.
4927
4928Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
4929is
4930made obsolete by the port protection mechanism above. It was previously
4931used
4932to validate the entire address range of an operation region, which could
4933be
4934incorrect if the range included illegal ports, but fields within the
4935operation region did not actually access those ports. Validation is now
4936performed on a per-field basis instead of the entire region.
4937
4938Modified the handling of the PM1 Status Register ignored bit (bit 11.)
4939Ignored bits must be "preserved" according to the ACPI spec. Usually,
4940this
4941means a read/modify/write when writing to the register. However, for
4942status
4943registers, writing a one means clear the event. Writing a zero means
4944preserve
4945the event (do not clear.) This behavior is clarified in the ACPI 4.0
4946spec,
4947and the ACPICA code now simply always writes a zero to the ignored bit.
4948
4949Modified the handling of ignored bits for the PM1 A/B Control Registers.
4950As
4951per the ACPI specification, for the control registers, preserve
4952(read/modify/write) all bits that are defined as either reserved or
4953ignored.
4954
4955Updated the handling of write-only bits in the PM1 A/B Control Registers.
4956When reading the register, zero the write-only bits as per the ACPI spec.
4957ACPICA BZ 443. Lin Ming.
4958
4959Removed "Linux" from the list of supported _OSI strings. Linux no longer
4960wants to reply true to this request. The Windows strings are the only
4961paths
4962through the AML that are tested and known to work properly.
4963
4964  Previous Release:
4965    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
4966    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
4967  Current Release:
4968    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
4969    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
4970
49712) iASL Compiler/Disassembler and Tools:
4972
4973Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
4974and
4975aetables.c
4976
4977----------------------------------------
497820 February 2009. Summary of changes for version 20090220:
4979
49801) ACPI CA Core Subsystem:
4981
4982Optimized the ACPI register locking. Removed locking for reads from the
4983ACPI
4984bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
4985is
4986not required when reading the single-bit registers. The
4987AcpiGetRegisterUnlocked function is no longer needed and has been
4988removed.
4989This will improve performance for reads on these registers. ACPICA BZ
4990760.
4991
4992Fixed the parameter validation for AcpiRead/Write. Now return
4993AE_BAD_PARAMETER if the input register pointer is null, and
4994AE_BAD_ADDRESS
4995if
4996the register has an address of zero. Previously, these cases simply
4997returned
4998AE_OK. For optional registers such as PM1B status/enable/control, the
4999caller
5000should check for a valid register address before calling. ACPICA BZ 748.
5001
5002Renamed the external ACPI bit register access functions. Renamed
5003AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
5004functions. The new names are AcpiReadBitRegister and
5005AcpiWriteBitRegister.
5006Also, restructured the code for these functions by simplifying the code
5007path
5008and condensing duplicate code to reduce code size.
5009
5010Added new functions to transparently handle the possibly split PM1 A/B
5011registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
5012functions
5013now handle the split registers for PM1 Status, Enable, and Control.
5014ACPICA
5015BZ
5016746.
5017
5018Added a function to handle the PM1 control registers,
5019AcpiHwWritePm1Control.
5020This function writes both of the PM1 control registers (A/B). These
5021registers
5022are different than the PM1 A/B status and enable registers in that
5023different
5024values can be written to the A/B registers. Most notably, the SLP_TYP
5025bits
5026can be different, as per the values returned from the _Sx predefined
5027methods.
5028
5029Removed an extra register write within AcpiHwClearAcpiStatus. This
5030function
5031was writing an optional PM1B status register twice. The existing call to
5032the
5033low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
5034A/B
5035register. ACPICA BZ 751.
5036
5037Split out the PM1 Status registers from the FADT. Added new globals for
5038these
5039registers (A/B), similar to the way the PM1 Enable registers are handled.
5040Instead of overloading the FADT Event Register blocks. This makes the
5041code
5042clearer and less prone to error.
5043
5044Fixed the warning message for when the platform contains too many ACPI
5045tables
5046for the default size of the global root table data structure. The
5047calculation
5048for the truncation value was incorrect.
5049
5050Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
5051obsolete macro, since it is now a simple reference to ->common.type.
5052There
5053were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5054
5055Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
5056TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
5057simply SLEEP_TYPE. ACPICA BZ 754.
5058
5059Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
5060function is only needed on 64-bit host operating systems and is thus not
5061included for 32-bit hosts.
5062
5063Debug output: print the input and result for invocations of the _OSI
5064reserved
5065control method via the ACPI_LV_INFO debug level. Also, reduced some of
5066the
5067verbosity of this debug level. Len Brown.
5068
5069Example Code and Data Size: These are the sizes for the OS-independent
5070acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5071debug version of the code includes the debug output trace mechanism and
5072has a
5073much larger code and data size.
5074
5075  Previous Release:
5076    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5077    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5078  Current Release:
5079    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5080    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5081
50822) iASL Compiler/Disassembler and Tools:
5083
5084Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
5085various legal performance profiles.
5086
5087----------------------------------------
508823 January 2009. Summary of changes for version 20090123:
5089
50901) ACPI CA Core Subsystem:
5091
5092Added the 2009 copyright to all module headers and signons. This affects
5093virtually every file in the ACPICA core subsystem, the iASL compiler, and
5094the tools/utilities.
5095
5096Implemented a change to allow the host to override any ACPI table,
5097including
5098dynamically loaded tables. Previously, only the DSDT could be replaced by
5099the
5100host. With this change, the AcpiOsTableOverride interface is called for
5101each
5102table found in the RSDT/XSDT during ACPICA initialization, and also
5103whenever
5104a table is dynamically loaded via the AML Load operator.
5105
5106Updated FADT flag definitions, especially the Boot Architecture flags.
5107
5108Debugger: For the Find command, automatically pad the input ACPI name
5109with
5110underscores if the name is shorter than 4 characters. This enables a
5111match
5112with the actual namespace entry which is itself padded with underscores.
5113
5114Example Code and Data Size: These are the sizes for the OS-independent
5115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5116debug version of the code includes the debug output trace mechanism and
5117has a
5118much larger code and data size.
5119
5120  Previous Release:
5121    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5122    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5123  Current Release:
5124    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5125    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5126
51272) iASL Compiler/Disassembler and Tools:
5128
5129Fix build error under Bison-2.4.
5130
5131Dissasembler: Enhanced FADT support. Added decoding of the Boot
5132Architecture
5133flags. Now decode all flags, regardless of the FADT version. Flag output
5134includes the FADT version which first defined each flag.
5135
5136The iASL -g option now dumps the RSDT to a file (in addition to the FADT
5137and
5138DSDT). Windows only.
5139
5140----------------------------------------
514104 December 2008. Summary of changes for version 20081204:
5142
51431) ACPI CA Core Subsystem:
5144
5145The ACPICA Programmer Reference has been completely updated and revamped
5146for
5147this release. This includes updates to the external interfaces, OSL
5148interfaces, the overview sections, and the debugger reference.
5149
5150Several new ACPICA interfaces have been implemented and documented in the
5151programmer reference:
5152AcpiReset - Writes the reset value to the FADT-defined reset register.
5153AcpiDisableAllGpes - Disable all available GPEs.
5154AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
5155AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
5156AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
5157AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
5158AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
5159
5160Most of the public ACPI hardware-related interfaces have been moved to a
5161new
5162file, components/hardware/hwxface.c
5163
5164Enhanced the FADT parsing and low-level ACPI register access: The ACPI
5165register lengths within the FADT are now used, and the low level ACPI
5166register access no longer hardcodes the ACPI register lengths. Given that
5167there may be some risk in actually trusting the FADT register lengths, a
5168run-
5169time option was added to fall back to the default hardcoded lengths if
5170the
5171FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
5172option is set to true for now, and a warning is issued if a suspicious
5173FADT
5174register length is overridden with the default value.
5175
5176Fixed a reference count issue in NsRepairObject. This problem was
5177introduced
5178in version 20081031 as part of a fix to repair Buffer objects within
5179Packages. Lin Ming.
5180
5181Added semaphore support to the Linux/Unix application OS-services layer
5182(OSL). ACPICA BZ 448. Lin Ming.
5183
5184Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
5185will
5186be implemented in the OSL, or will binary semaphores be used instead.
5187
5188Example Code and Data Size: These are the sizes for the OS-independent
5189acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5190debug version of the code includes the debug output trace mechanism and
5191has a
5192much larger code and data size.
5193
5194  Previous Release:
5195    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5196    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5197  Current Release:
5198    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5199    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5200
52012) iASL Compiler/Disassembler and Tools:
5202
5203iASL: Completed the '-e' option to include additional ACPI tables in
5204order
5205to
5206aid with disassembly and External statement generation. ACPICA BZ 742.
5207Lin
5208Ming.
5209
5210iASL: Removed the "named object in while loop" error. The compiler cannot
5211determine how many times a loop will execute. ACPICA BZ 730.
5212
5213Disassembler: Implemented support for FADT revision 2 (MS extension).
5214ACPICA
5215BZ 743.
5216
5217Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
5218MCFG).
5219
5220----------------------------------------
522131 October 2008. Summary of changes for version 20081031:
5222
52231) ACPI CA Core Subsystem:
5224
5225Restructured the ACPICA header files into public/private. acpi.h now
5226includes
5227only the "public" acpica headers. All other acpica headers are "private"
5228and
5229should not be included by acpica users. One new file, accommon.h is used
5230to
5231include the commonly used private headers for acpica code generation.
5232Future
5233plans include moving all private headers to a new subdirectory.
5234
5235Implemented an automatic Buffer->String return value conversion for
5236predefined ACPI methods. For these methods (such as _BIF), added
5237automatic
5238conversion for return objects that are required to be a String, but a
5239Buffer
5240was found instead. This can happen when reading string battery data from
5241an
5242operation region, because it used to be difficult to convert the data
5243from
5244buffer to string from within the ASL. Ensures that the host OS is
5245provided
5246with a valid null-terminated string. Linux BZ 11822.
5247
5248Updated the FACS waking vector interfaces. Split
5249AcpiSetFirmwareWakingVector
5250into two: one for the 32-bit vector, another for the 64-bit vector. This
5251is
5252required because the host OS must setup the wake much differently for
5253each
5254vector (real vs. protected mode, etc.) and the interface itself should
5255not
5256be
5257deciding which vector to use. Also, eliminated the
5258GetFirmwareWakingVector
5259interface, as it served no purpose (only the firmware reads the vector,
5260OS
5261only writes the vector.) ACPICA BZ 731.
5262
5263Implemented a mechanism to escape infinite AML While() loops. Added a
5264loop
5265counter to force exit from AML While loops if the count becomes too
5266large.
5267This can occur in poorly written AML when the hardware does not respond
5268within a while loop and the loop does not implement a timeout. The
5269maximum
5270loop count is configurable. A new exception code is returned when a loop
5271is
5272broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
5273
5274Optimized the execution of AML While loops. Previously, a control state
5275object was allocated and freed for each execution of the loop. The
5276optimization is to simply reuse the control state for each iteration.
5277This
5278speeds up the raw loop execution time by about 5%.
5279
5280Enhanced the implicit return mechanism. For Windows compatibility, return
5281an
5282implicit integer of value zero for methods that contain no executable
5283code.
5284Such methods are seen in the field as stubs (presumably), and can cause
5285drivers to fail if they expect a return value. Lin Ming.
5286
5287Allow multiple backslashes as root prefixes in namepaths. In a fully
5288qualified namepath, allow multiple backslash prefixes. This can happen
5289(and
5290is seen in the field) because of the use of a double-backslash in strings
5291(since backslash is the escape character) causing confusion. ACPICA BZ
5292739
5293Lin Ming.
5294
5295Emit a warning if two different FACS or DSDT tables are discovered in the
5296FADT. Checks if there are two valid but different addresses for the FACS
5297and
5298DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
5299
5300Consolidated the method argument count validation code. Merged the code
5301that
5302validates control method argument counts into the predefined validation
5303module. Eliminates possible multiple warnings for incorrect argument
5304counts.
5305
5306Implemented ACPICA example code. Includes code for ACPICA initialization,
5307handler installation, and calling a control method. Available at
5308source/tools/examples.
5309
5310Added a global pointer for FACS table to simplify internal FACS access.
5311Use
5312the global pointer instead of using AcpiGetTableByIndex for each FACS
5313access.
5314This simplifies the code for the Global Lock and the Firmware Waking
5315Vector(s).
5316
5317Example Code and Data Size: These are the sizes for the OS-independent
5318acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5319debug version of the code includes the debug output trace mechanism and
5320has a
5321much larger code and data size.
5322
5323  Previous Release:
5324    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5325    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5326  Current Release:
5327    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5328    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5329
53302) iASL Compiler/Disassembler and Tools:
5331
5332iASL: Improved disassembly of external method calls. Added the -e option
5333to
5334allow the inclusion of additional ACPI tables to help with the
5335disassembly
5336of
5337method invocations and the generation of external declarations during the
5338disassembly. Certain external method invocations cannot be disassembled
5339properly without the actual declaration of the method. Use the -e option
5340to
5341include the table where the external method(s) are actually declared.
5342Most
5343useful for disassembling SSDTs that make method calls back to the master
5344DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
5345-d
5346-e dsdt.aml ssdt1.aml
5347
5348iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
5349problem where the use of an alias within a namepath would result in a not
5350found error or cause the compiler to fault. Also now allows forward
5351references from the Alias operator itself. ACPICA BZ 738.
5352
5353----------------------------------------
535426 September 2008. Summary of changes for version 20080926:
5355
53561) ACPI CA Core Subsystem:
5357
5358Designed and implemented a mechanism to validate predefined ACPI methods
5359and
5360objects. This code validates the predefined ACPI objects (objects whose
5361names
5362start with underscore) that appear in the namespace, at the time they are
5363evaluated. The argument count and the type of the returned object are
5364validated against the ACPI specification. The purpose of this validation
5365is
5366to detect problems with the BIOS-implemented predefined ACPI objects
5367before
5368the results are returned to the ACPI-related drivers. Future enhancements
5369may
5370include actual repair of incorrect return objects where possible. Two new
5371files are nspredef.c and acpredef.h.
5372
5373Fixed a fault in the AML parser if a memory allocation fails during the
5374Op
5375completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
5376
5377Fixed an issue with implicit return compatibility. This change improves
5378the
5379implicit return mechanism to be more compatible with the MS interpreter.
5380Lin
5381Ming, ACPICA BZ 349.
5382
5383Implemented support for zero-length buffer-to-string conversions. Allow
5384zero
5385length strings during interpreter buffer-to-string conversions. For
5386example,
5387during the ToDecimalString and ToHexString operators, as well as implicit
5388conversions. Fiodor Suietov, ACPICA BZ 585.
5389
5390Fixed two possible memory leaks in the error exit paths of
5391AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
5392are
5393similar in that they use a stack of state objects in order to eliminate
5394recursion. The stack must be fully unwound and deallocated if an error
5395occurs. Lin Ming. ACPICA BZ 383.
5396
5397Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
5398global
5399ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
5400Moore ACPICA BZ 442.
5401
5402Removed the obsolete version number in module headers. Removed the
5403"$Revision" number that appeared in each module header. This version
5404number
5405was useful under SourceSafe and CVS, but has no meaning under git. It is
5406not
5407only incorrect, it could also be misleading.
5408
5409Example Code and Data Size: These are the sizes for the OS-independent
5410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5411debug version of the code includes the debug output trace mechanism and
5412has a
5413much larger code and data size.
5414
5415  Previous Release:
5416    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5417    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5418  Current Release:
5419    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5420    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5421
5422----------------------------------------
542329 August 2008. Summary of changes for version 20080829:
5424
54251) ACPI CA Core Subsystem:
5426
5427Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
5428Reference. Changes include the elimination of cheating on the Object
5429field
5430for the DdbHandle subtype, addition of a reference class field to
5431differentiate the various reference types (instead of an AML opcode), and
5432the
5433cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
5434
5435Reduce an error to a warning for an incorrect method argument count.
5436Previously aborted with an error if too few arguments were passed to a
5437control method via the external ACPICA interface. Now issue a warning
5438instead
5439and continue. Handles the case where the method inadvertently declares
5440too
5441many arguments, but does not actually use the extra ones. Applies mainly
5442to
5443the predefined methods. Lin Ming. Linux BZ 11032.
5444
5445Disallow the evaluation of named object types with no intrinsic value.
5446Return
5447AE_TYPE for objects that have no value and therefore evaluation is
5448undefined:
5449Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
5450of
5451these types were allowed, but an exception would be generated at some
5452point
5453during the evaluation. Now, the error is generated up front.
5454
5455Fixed a possible memory leak in the AcpiNsGetExternalPathname function
5456(nsnames.c). Fixes a leak in the error exit path.
5457
5458Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
5459debug
5460levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
5461ACPI_EXCEPTION
5462interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
5463ACPI_LV_EVENTS.
5464
5465Removed obsolete and/or unused exception codes from the acexcep.h header.
5466There is the possibility that certain device drivers may be affected if
5467they
5468use any of these exceptions.
5469
5470The ACPICA documentation has been added to the public git source tree,
5471under
5472acpica/documents. Included are the ACPICA programmer reference, the iASL
5473compiler reference, and the changes.txt release logfile.
5474
5475Example Code and Data Size: These are the sizes for the OS-independent
5476acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5477debug version of the code includes the debug output trace mechanism and
5478has a
5479much larger code and data size.
5480
5481  Previous Release:
5482    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5483    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5484  Current Release:
5485    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5486    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5487
54882) iASL Compiler/Disassembler and Tools:
5489
5490Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
5491defines _SCP with 3 arguments. Previous versions defined it with only 1
5492argument. iASL now allows both definitions.
5493
5494iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
5495zero-
5496length subtables when disassembling ACPI tables. Also fixed a couple of
5497errors where a full 16-bit table type field was not extracted from the
5498input
5499properly.
5500
5501acpisrc: Improve comment counting mechanism for generating source code
5502statistics. Count first and last lines of multi-line comments as
5503whitespace,
5504not comment lines. Handle Linux legal header in addition to standard
5505acpica
5506header.
5507
5508----------------------------------------
5509
551029 July 2008. Summary of changes for version 20080729:
5511
55121) ACPI CA Core Subsystem:
5513
5514Fix a possible deadlock in the GPE dispatch. Remove call to
5515AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
5516attempt
5517to acquire the GPE lock but can deadlock since the GPE lock is already
5518held
5519at dispatch time. This code was introduced in version 20060831 as a
5520response
5521to Linux BZ 6881 and has since been removed from Linux.
5522
5523Add a function to dereference returned reference objects. Examines the
5524return
5525object from a call to AcpiEvaluateObject. Any Index or RefOf references
5526are
5527automatically dereferenced in an attempt to return something useful
5528(these
5529reference types cannot be converted into an external ACPI_OBJECT.)
5530Provides
5531MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
5532
5533x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
5534subtables for the MADT and one new subtable for the SRAT. Includes
5535disassembler and AcpiSrc support. Data from the Intel 64 Architecture
5536x2APIC
5537Specification, June 2008.
5538
5539Additional error checking for pathname utilities. Add error check after
5540all
5541calls to AcpiNsGetPathnameLength. Add status return from
5542AcpiNsBuildExternalPath and check after all calls. Add parameter
5543validation
5544to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
5545
5546Return status from the global init function AcpiUtGlobalInitialize. This
5547is
5548used by both the kernel subsystem and the utilities such as iASL
5549compiler.
5550The function could possibly fail when the caches are initialized. Yang
5551Yi.
5552
5553Add a function to decode reference object types to strings. Created for
5554improved error messages.
5555
5556Improve object conversion error messages. Better error messages during
5557object
5558conversion from internal to the external ACPI_OBJECT. Used for external
5559calls
5560to AcpiEvaluateObject.
5561
5562Example Code and Data Size: These are the sizes for the OS-independent
5563acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5564debug version of the code includes the debug output trace mechanism and
5565has a
5566much larger code and data size.
5567
5568  Previous Release:
5569    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5570    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5571  Current Release:
5572    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5573    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5574
55752) iASL Compiler/Disassembler and Tools:
5576
5577Debugger: fix a possible hang when evaluating non-methods. Fixes a
5578problem
5579introduced in version 20080701. If the object being evaluated (via
5580execute
5581command) is not a method, the debugger can hang while trying to obtain
5582non-
5583existent parameters.
5584
5585iASL: relax error for using reserved "_T_x" identifiers. These names can
5586appear in a disassembled ASL file if they were emitted by the original
5587compiler. Instead of issuing an error or warning and forcing the user to
5588manually change these names, issue a remark instead.
5589
5590iASL: error if named object created in while loop. Emit an error if any
5591named
5592object is created within a While loop. If allowed, this code will
5593generate
5594a
5595run-time error on the second iteration of the loop when an attempt is
5596made
5597to
5598create the same named object twice. ACPICA bugzilla 730.
5599
5600iASL: Support absolute pathnames for include files. Add support for
5601absolute
5602pathnames within the Include operator. previously, only relative
5603pathnames
5604were supported.
5605
5606iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
5607Descriptor.
5608The ACPI spec requires one interrupt minimum. BZ 423
5609
5610iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
5611Handles the case for the Interrupt Resource Descriptor where
5612the ResourceSource argument is omitted but ResourceSourceIndex
5613is present. Now leave room for the Index. BZ 426
5614
5615iASL: Prevent error message if CondRefOf target does not exist. Fixes
5616cases
5617where an error message is emitted if the target does not exist. BZ 516
5618
5619iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
5620(get ACPI tables on Windows). This was apparently broken in version
562120070919.
5622
5623AcpiXtract: Handle EOF while extracting data. Correctly handle the case
5624where
5625the EOF happens immediately after the last table in the input file. Print
5626completion message. Previously, no message was displayed in this case.
5627
5628----------------------------------------
562901 July 2008. Summary of changes for version 20080701:
5630
56310) Git source tree / acpica.org
5632
5633Fixed a problem where a git-clone from http would not transfer the entire
5634source tree.
5635
56361) ACPI CA Core Subsystem:
5637
5638Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
5639enable bit. Now performs a read-change-write of the enable register
5640instead
5641of simply writing out the cached enable mask. This will prevent
5642inadvertent
5643enabling of GPEs if a rogue GPE is received during initialization (before
5644GPE
5645handlers are installed.)
5646
5647Implemented a copy for dynamically loaded tables. Previously, dynamically
5648loaded tables were simply mapped - but on some machines this memory is
5649corrupted after suspend. Now copy the table to a local buffer. For the
5650OpRegion case, added checksum verify. Use the table length from the table
5651header, not the region length. For the Buffer case, use the table length
5652also. Dennis Noordsij, Bob Moore. BZ 10734
5653
5654Fixed a problem where the same ACPI table could not be dynamically loaded
5655and
5656unloaded more than once. Without this change, a table cannot be loaded
5657again
5658once it has been loaded/unloaded one time. The current mechanism does not
5659unregister a table upon an unload. During a load, if the same table is
5660found,
5661this no longer returns an exception. BZ 722
5662
5663Fixed a problem where the wrong descriptor length was calculated for the
5664EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
5665EndTag
5666are calculated as 12 bytes long, but the actual length in the internal
5667descriptor is 16 because of the round-up to 8 on the 64-bit build.
5668Reported
5669by Linn Crosetto. BZ 728
5670
5671Fixed a possible memory leak in the Unload operator. The DdbHandle
5672returned
5673by Load() did not have its reference count decremented during unload,
5674leading
5675to a memory leak. Lin Ming. BZ 727
5676
5677Fixed a possible memory leak when deleting thermal/processor objects. Any
5678associated notify handlers (and objects) were not being deleted. Fiodor
5679Suietov. BZ 506
5680
5681Fixed the ordering of the ASCII names in the global mutex table to match
5682the
5683actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
5684only.
5685Vegard Nossum. BZ 726
5686
5687Enhanced the AcpiGetObjectInfo interface to return the number of required
5688arguments if the object is a control method. Added this call to the
5689debugger
5690so the proper number of default arguments are passed to a method. This
5691prevents a warning when executing methods from AcpiExec.
5692
5693Added a check for an invalid handle in AcpiGetObjectInfo. Return
5694AE_BAD_PARAMETER if input handle is invalid. BZ 474
5695
5696Fixed an extraneous warning from exconfig.c on the 64-bit build.
5697
5698Example Code and Data Size: These are the sizes for the OS-independent
5699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5700debug version of the code includes the debug output trace mechanism and
5701has a
5702much larger code and data size.
5703
5704  Previous Release:
5705    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
5706    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
5707  Current Release:
5708    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5709    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5710
57112) iASL Compiler/Disassembler and Tools:
5712
5713iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
5714resource descriptor names.
5715
5716iASL: Detect invalid ASCII characters in input (windows version). Removed
5717the
5718"-CF" flag from the flex compile, enables correct detection of non-ASCII
5719characters in the input. BZ 441
5720
5721iASL: Eliminate warning when result of LoadTable is not used. Eliminate
5722the
5723"result of operation not used" warning when the DDB handle returned from
5724LoadTable is not used. The warning is not needed. BZ 590
5725
5726AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
5727method
5728to
5729pass address of table to the AML. Added option to disable OpRegion
5730simulation
5731to allow creation of an OpRegion with a real address that was passed to
5732_CFG.
5733All of this allows testing of the Load and Unload operators from
5734AcpiExec.
5735
5736Debugger: update tables command for unloaded tables. Handle unloaded
5737tables
5738and use the standard table header output routine.
5739
5740----------------------------------------
574109 June 2008. Summary of changes for version 20080609:
5742
57431) ACPI CA Core Subsystem:
5744
5745Implemented a workaround for reversed _PRT entries. A significant number
5746of
5747BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
5748change dynamically detects and repairs this problem. Provides
5749compatibility
5750with MS ACPI. BZ 6859
5751
5752Simplified the internal ACPI hardware interfaces to eliminate the locking
5753flag parameter from Register Read/Write. Added a new external interface,
5754AcpiGetRegisterUnlocked.
5755
5756Fixed a problem where the invocation of a GPE control method could hang.
5757This
5758was a regression introduced in 20080514. The new method argument count
5759validation mechanism can enter an infinite loop when a GPE method is
5760dispatched. Problem fixed by removing the obsolete code that passed GPE
5761block
5762information to the notify handler via the control method parameter
5763pointer.
5764
5765Fixed a problem where the _SST execution status was incorrectly returned
5766to
5767the caller of AcpiEnterSleepStatePrep. This was a regression introduced
5768in
576920080514. _SST is optional and a NOT_FOUND exception should never be
5770returned. BZ 716
5771
5772Fixed a problem where a deleted object could be accessed from within the
5773AML
5774parser. This was a regression introduced in version 20080123 as a fix for
5775the
5776Unload operator. Lin Ming. BZ 10669
5777
5778Cleaned up the debug operand dump mechanism. Eliminated unnecessary
5779operands
5780and eliminated the use of a negative index in a loop. Operands are now
5781displayed in the correct order, not backwards. This also fixes a
5782regression
5783introduced in 20080514 on 64-bit systems where the elimination of
5784ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
5785715
5786
5787Fixed a possible memory leak in EvPciConfigRegionSetup where the error
5788exit
5789path did not delete a locally allocated structure.
5790
5791Updated definitions for the DMAR and SRAT tables to synchronize with the
5792current specifications. Includes disassembler support.
5793
5794Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
5795loop termination value was used. Loop terminated on iteration early,
5796missing
5797one mutex. Linn Crosetto
5798
5799Example Code and Data Size: These are the sizes for the OS-independent
5800acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5801debug version of the code includes the debug output trace mechanism and
5802has a
5803much larger code and data size.
5804
5805  Previous Release:
5806    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
5807    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
5808  Current Release:
5809    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
5810    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
5811
58122) iASL Compiler/Disassembler and Tools:
5813
5814Disassembler: Implemented support for EisaId() within _CID objects. Now
5815disassemble integer _CID objects back to EisaId invocations, including
5816multiple integers within _CID packages. Includes single-step support for
5817debugger also.
5818
5819Disassembler: Added support for DMAR and SRAT table definition changes.
5820
5821----------------------------------------
582214 May 2008. Summary of changes for version 20080514:
5823
58241) ACPI CA Core Subsystem:
5825
5826Fixed a problem where GPEs were enabled too early during the ACPICA
5827initialization. This could lead to "handler not installed" errors on some
5828machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
5829This
5830ensures that all operation regions and devices throughout the namespace
5831have
5832been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
5833
5834Implemented a change to the enter sleep code. Moved execution of the _GTS
5835method to just before setting sleep enable bit. The execution was moved
5836from
5837AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
5838immediately before the SLP_EN bit is set, as per the ACPI specification.
5839Luming Yu, BZ 1653.
5840
5841Implemented a fix to disable unknown GPEs (2nd version). Now always
5842disable
5843the GPE, even if ACPICA thinks that that it is already disabled. It is
5844possible that the AML or some other code has enabled the GPE unbeknownst
5845to
5846the ACPICA code.
5847
5848Fixed a problem with the Field operator where zero-length fields would
5849return
5850an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
5851ASL
5852field declarations in Field(), BankField(), and IndexField(). BZ 10606.
5853
5854Implemented a fix for the Load operator, now load the table at the
5855namespace
5856root. This reverts a change introduced in version 20071019. The table is
5857now
5858loaded at the namespace root even though this goes against the ACPI
5859specification. This provides compatibility with other ACPI
5860implementations.
5861The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
5862Ming.
5863
5864Fixed a problem where ACPICA would not Load() tables with unusual
5865signatures.
5866Now ignore ACPI table signature for Load() operator. Only "SSDT" is
5867acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
5868Therefore, signature validation is worthless. Apparently MS ACPI accepts
5869such
5870signatures, ACPICA must be compatible. BZ 10454.
5871
5872Fixed a possible negative array index in AcpiUtValidateException. Added
5873NULL
5874fields to the exception string arrays to eliminate a -1 subtraction on
5875the
5876SubStatus field.
5877
5878Updated the debug tracking macros to reduce overall code and data size.
5879Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
5880instead of pointers to static strings. Jan Beulich and Bob Moore.
5881
5882Implemented argument count checking in control method invocation via
5883AcpiEvaluateObject. Now emit an error if too few arguments, warning if
5884too
5885many. This applies only to extern programmatic control method execution,
5886not
5887method-to-method calls within the AML. Lin Ming.
5888
5889Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
5890no
5891longer needed, especially with the removal of 16-bit support. It was
5892replaced
5893mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
5894bit
5895on
589632/64-bit platforms is required.
5897
5898Added the C const qualifier for appropriate string constants -- mostly
5899MODULE_NAME and printf format strings. Jan Beulich.
5900
5901Example Code and Data Size: These are the sizes for the OS-independent
5902acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5903debug version of the code includes the debug output trace mechanism and
5904has a
5905much larger code and data size.
5906
5907  Previous Release:
5908    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
5909    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
5910  Current Release:
5911    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
5912    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
5913
59142) iASL Compiler/Disassembler and Tools:
5915
5916Implemented ACPI table revision ID validation in the disassembler. Zero
5917is
5918always invalid. For DSDTs, the ID controls the interpreter integer width.
59191
5920means 32-bit and this is unusual. 2 or greater is 64-bit.
5921
5922----------------------------------------
592321 March 2008. Summary of changes for version 20080321:
5924
59251) ACPI CA Core Subsystem:
5926
5927Implemented an additional change to the GPE support in order to suppress
5928spurious or stray GPEs. The AcpiEvDisableGpe function will now
5929permanently
5930disable incoming GPEs that are neither enabled nor disabled -- meaning
5931that
5932the GPE is unknown to the system. This should prevent future interrupt
5933floods
5934from that GPE. BZ 6217 (Zhang Rui)
5935
5936Fixed a problem where NULL package elements were not returned to the
5937AcpiEvaluateObject interface correctly. The element was simply ignored
5938instead of returning a NULL ACPI_OBJECT package element, potentially
5939causing
5940a buffer overflow and/or confusing the caller who expected a fixed number
5941of
5942elements. BZ 10132 (Lin Ming, Bob Moore)
5943
5944Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
5945Dword,
5946Qword), Field, BankField, and IndexField operators when invoked from
5947inside
5948an executing control method. In this case, these operators created
5949namespace
5950nodes that were incorrectly left marked as permanent nodes instead of
5951temporary nodes. This could cause a problem if there is race condition
5952between an exiting control method and a running namespace walk. (Reported
5953by
5954Linn Crosetto)
5955
5956Fixed a problem where the CreateField and CreateXXXField operators would
5957incorrectly allow duplicate names (the name of the field) with no
5958exception
5959generated.
5960
5961Implemented several changes for Notify handling. Added support for new
5962Notify
5963values (ACPI 2.0+) and improved the Notify debug output. Notify on
5964PowerResource objects is no longer allowed, as per the ACPI
5965specification.
5966(Bob Moore, Zhang Rui)
5967
5968All Reference Objects returned via the AcpiEvaluateObject interface are
5969now
5970marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
5971for
5972NULL objects - either NULL package elements or unresolved named
5973references.
5974
5975Fixed a problem where an extraneous debug message was produced for
5976package
5977objects (when debugging enabled). The message "Package List length larger
5978than NumElements count" is now produced in the correct case, and is now
5979an
5980error message rather than a debug message. Added a debug message for the
5981opposite case, where NumElements is larger than the Package List (the
5982package
5983will be padded out with NULL elements as per the ACPI spec.)
5984
5985Implemented several improvements for the output of the ASL "Debug" object
5986to
5987clarify and keep all data for a given object on one output line.
5988
5989Fixed two size calculation issues with the variable-length Start
5990Dependent
5991resource descriptor.
5992
5993Example Code and Data Size: These are the sizes for the OS-independent
5994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5995debug version of the code includes the debug output trace mechanism and
5996has
5997a much larger code and data size.
5998
5999  Previous Release:
6000    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6001    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6002  Current Release:
6003    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6004    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6005
60062) iASL Compiler/Disassembler and Tools:
6007
6008Fixed a problem with the use of the Switch operator where execution of
6009the
6010containing method by multiple concurrent threads could cause an
6011AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
6012actual Switch opcode, it must be simulated with local named temporary
6013variables and if/else pairs. The solution chosen was to mark any method
6014that
6015uses Switch as Serialized, thus preventing multiple thread entries. BZ
6016469.
6017
6018----------------------------------------
601913 February 2008. Summary of changes for version 20080213:
6020
60211) ACPI CA Core Subsystem:
6022
6023Implemented another MS compatibility design change for GPE/Notify
6024handling.
6025GPEs are now cleared/enabled asynchronously to allow all pending notifies
6026to
6027complete first. It is expected that the OSL will queue the enable request
6028behind all pending notify requests (may require changes to the local host
6029OSL
6030in AcpiOsExecute). Alexey Starikovskiy.
6031
6032Fixed a problem where buffer and package objects passed as arguments to a
6033control method via the external AcpiEvaluateObject interface could cause
6034an
6035AE_AML_INTERNAL exception depending on the order and type of operators
6036executed by the target control method.
6037
6038Fixed a problem where resource descriptor size optimization could cause a
6039problem when a _CRS resource template is passed to a _SRS method. The
6040_SRS
6041resource template must use the same descriptors (with the same size) as
6042returned from _CRS. This change affects the following resource
6043descriptors:
6044IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
60459487)
6046
6047Fixed a problem where a CopyObject to RegionField, BankField, and
6048IndexField
6049objects did not perform an implicit conversion as it should. These types
6050must
6051retain their initial type permanently as per the ACPI specification.
6052However,
6053a CopyObject to all other object types should not perform an implicit
6054conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6055
6056Fixed a problem with the AcpiGetDevices interface where the mechanism to
6057match device CIDs did not examine the entire list of available CIDs, but
6058instead aborted on the first non-matching CID. Andrew Patterson.
6059
6060Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
6061was
6062inadvertently changed to return a 16-bit value instead of a 32-bit value,
6063truncating the upper dword of a 64-bit value. This macro is only used to
6064display debug output, so no incorrect calculations were made. Also,
6065reimplemented the macro so that a 64-bit shift is not performed by
6066inefficient compilers.
6067
6068Added missing va_end statements that should correspond with each va_start
6069statement.
6070
6071Example Code and Data Size: These are the sizes for the OS-independent
6072acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6073debug version of the code includes the debug output trace mechanism and
6074has
6075a much larger code and data size.
6076
6077  Previous Release:
6078    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6079    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6080  Current Release:
6081    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6082    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6083
60842) iASL Compiler/Disassembler and Tools:
6085
6086Implemented full disassembler support for the following new ACPI tables:
6087BERT, EINJ, and ERST. Implemented partial disassembler support for the
6088complicated HEST table. These tables support the Windows Hardware Error
6089Architecture (WHEA).
6090
6091----------------------------------------
609223 January 2008. Summary of changes for version 20080123:
6093
60941) ACPI CA Core Subsystem:
6095
6096Added the 2008 copyright to all module headers and signons. This affects
6097virtually every file in the ACPICA core subsystem, the iASL compiler, and
6098the tools/utilities.
6099
6100Fixed a problem with the SizeOf operator when used with Package and
6101Buffer
6102objects. These objects have deferred execution for some arguments, and
6103the
6104execution is now completed before the SizeOf is executed. This problem
6105caused
6106unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
6107BZ
61089558
6109
6110Implemented an enhancement to the interpreter "slack mode". In the
6111absence
6112of
6113an explicit return or an implicitly returned object from the last
6114executed
6115opcode, a control method will now implicitly return an integer of value 0
6116for
6117Microsoft compatibility. (Lin Ming) BZ 392
6118
6119Fixed a problem with the Load operator where an exception was not
6120returned
6121in
6122the case where the table is already loaded. (Lin Ming) BZ 463
6123
6124Implemented support for the use of DDBHandles as an Indexed Reference, as
6125per
6126the ACPI spec. (Lin Ming) BZ 486
6127
6128Implemented support for UserTerm (Method invocation) for the Unload
6129operator
6130as per the ACPI spec. (Lin Ming) BZ 580
6131
6132Fixed a problem with the LoadTable operator where the OemId and
6133OemTableId
6134input strings could cause unexpected failures if they were shorter than
6135the
6136maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
6137
6138Implemented support for UserTerm (Method invocation) for the Unload
6139operator
6140as per the ACPI spec. (Lin Ming) BZ 580
6141
6142Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
6143HEST,
6144IBFT, UEFI, WDAT. Disassembler support is forthcoming.
6145
6146Example Code and Data Size: These are the sizes for the OS-independent
6147acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6148debug version of the code includes the debug output trace mechanism and
6149has
6150a much larger code and data size.
6151
6152  Previous Release:
6153    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6154    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6155  Current Release:
6156    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6157    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6158
61592) iASL Compiler/Disassembler and Tools:
6160
6161Implemented support in the disassembler for checksum validation on
6162incoming
6163binary DSDTs and SSDTs. If incorrect, a message is displayed within the
6164table
6165header dump at the start of the disassembly.
6166
6167Implemented additional debugging information in the namespace listing
6168file
6169created during compilation. In addition to the namespace hierarchy, the
6170full
6171pathname to each namespace object is displayed.
6172
6173Fixed a problem with the disassembler where invalid ACPI tables could
6174cause
6175faults or infinite loops.
6176
6177Fixed an unexpected parse error when using the optional "parameter types"
6178list in a control method declaration. (Lin Ming) BZ 397
6179
6180Fixed a problem where two External declarations with the same name did
6181not
6182cause an error (Lin Ming) BZ 509
6183
6184Implemented support for full TermArgs (adding Argx, Localx and method
6185invocation) for the ParameterData parameter to the LoadTable operator.
6186(Lin
6187Ming) BZ 583,587
6188
6189----------------------------------------
619019 December 2007. Summary of changes for version 20071219:
6191
61921) ACPI CA Core Subsystem:
6193
6194Implemented full support for deferred execution for the TermArg string
6195arguments for DataTableRegion. This enables forward references and full
6196operand resolution for the three string arguments. Similar to
6197OperationRegion
6198deferred argument execution.) Lin Ming. BZ 430
6199
6200Implemented full argument resolution support for the BankValue argument
6201to
6202BankField. Previously, only constants were supported, now any TermArg may
6203be
6204used. Lin Ming BZ 387, 393
6205
6206Fixed a problem with AcpiGetDevices where the search of a branch of the
6207device tree could be terminated prematurely. In accordance with the ACPI
6208specification, the search down the current branch is terminated if a
6209device
6210is both not present and not functional (instead of just not present.)
6211Yakui
6212Zhao.
6213
6214Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
6215if
6216the underlying AML code changed the GPE enable registers. Now, any
6217unknown
6218incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
6219disabled
6220instead of simply ignored. Rui Zhang.
6221
6222Fixed a problem with Index Fields where the Index register was
6223incorrectly
6224limited to a maximum of 32 bits. Now any size may be used.
6225
6226Fixed a couple memory leaks associated with "implicit return" objects
6227when
6228the AML Interpreter slack mode is enabled. Lin Ming BZ 349
6229
6230Example Code and Data Size: These are the sizes for the OS-independent
6231acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6232debug version of the code includes the debug output trace mechanism and
6233has
6234a much larger code and data size.
6235
6236  Previous Release:
6237    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6238    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6239  Current Release:
6240    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6241    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6242
6243----------------------------------------
624414 November 2007. Summary of changes for version 20071114:
6245
62461) ACPI CA Core Subsystem:
6247
6248Implemented event counters for each of the Fixed Events, the ACPI SCI
6249(interrupt) itself, and control methods executed. Named
6250AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
6251These
6252should be useful for debugging and statistics.
6253
6254Implemented a new external interface, AcpiGetStatistics, to retrieve the
6255contents of the various event counters. Returns the current values for
6256AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
6257AcpiMethodCount. The interface can be expanded in the future if new
6258counters
6259are added. Device drivers should use this interface rather than access
6260the
6261counters directly.
6262
6263Fixed a problem with the FromBCD and ToBCD operators. With some
6264compilers,
6265the ShortDivide function worked incorrectly, causing problems with the
6266BCD
6267functions with large input values. A truncation from 64-bit to 32-bit
6268inadvertently occurred. Internal BZ 435. Lin Ming
6269
6270Fixed a problem with Index references passed as method arguments.
6271References
6272passed as arguments to control methods were dereferenced immediately
6273(before
6274control was passed to the called method). The references are now
6275correctly
6276passed directly to the called method. BZ 5389. Lin Ming
6277
6278Fixed a problem with CopyObject used in conjunction with the Index
6279operator.
6280The reference was incorrectly dereferenced before the copy. The reference
6281is
6282now correctly copied. BZ 5391. Lin Ming
6283
6284Fixed a problem with Control Method references within Package objects.
6285These
6286references are now correctly generated. This completes the package
6287construction overhaul that began in version 20071019.
6288
6289Example Code and Data Size: These are the sizes for the OS-independent
6290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6291debug version of the code includes the debug output trace mechanism and
6292has
6293a much larger code and data size.
6294
6295  Previous Release:
6296    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6297    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6298  Current Release:
6299    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6300    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6301
6302
63032) iASL Compiler/Disassembler and Tools:
6304
6305The AcpiExec utility now installs handlers for all of the predefined
6306Operation Region types. New types supported are: PCI_Config, CMOS, and
6307PCIBARTarget.
6308
6309Fixed a problem with the 64-bit version of AcpiExec where the extended
6310(64-
6311bit) address fields for the DSDT and FACS within the FADT were not being
6312used, causing truncation of the upper 32-bits of these addresses. Lin
6313Ming
6314and Bob Moore
6315
6316----------------------------------------
631719 October 2007. Summary of changes for version 20071019:
6318
63191) ACPI CA Core Subsystem:
6320
6321Fixed a problem with the Alias operator when the target of the alias is a
6322named ASL operator that opens a new scope -- Scope, Device,
6323PowerResource,
6324Processor, and ThermalZone. In these cases, any children of the original
6325operator could not be accessed via the alias, potentially causing
6326unexpected
6327AE_NOT_FOUND exceptions. (BZ 9067)
6328
6329Fixed a problem with the Package operator where all named references were
6330created as object references and left otherwise unresolved. According to
6331the
6332ACPI specification, a Package can only contain Data Objects or references
6333to
6334control methods. The implication is that named references to Data Objects
6335(Integer, Buffer, String, Package, BufferField, Field) should be resolved
6336immediately upon package creation. This is the approach taken with this
6337change. References to all other named objects (Methods, Devices, Scopes,
6338etc.) are all now properly created as reference objects. (BZ 5328)
6339
6340Reverted a change to Notify handling that was introduced in version
634120070508. This version changed the Notify handling from asynchronous to
6342fully synchronous (Device driver Notify handling with respect to the
6343Notify
6344ASL operator). It was found that this change caused more problems than it
6345solved and was removed by most users.
6346
6347Fixed a problem with the Increment and Decrement operators where the type
6348of
6349the target object could be unexpectedly and incorrectly changed. (BZ 353)
6350Lin Ming.
6351
6352Fixed a problem with the Load and LoadTable operators where the table
6353location within the namespace was ignored. Instead, the table was always
6354loaded into the root or current scope. Lin Ming.
6355
6356Fixed a problem with the Load operator when loading a table from a buffer
6357object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
6358
6359Fixed a problem with the Debug object where a store of a DdbHandle
6360reference
6361object to the Debug object could cause a fault.
6362
6363Added a table checksum verification for the Load operator, in the case
6364where
6365the load is from a buffer. (BZ 578).
6366
6367Implemented additional parameter validation for the LoadTable operator.
6368The
6369length of the input strings SignatureString, OemIdString, and OemTableId
6370are
6371now checked for maximum lengths. (BZ 582) Lin Ming.
6372
6373Example Code and Data Size: These are the sizes for the OS-independent
6374acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6375debug version of the code includes the debug output trace mechanism and
6376has
6377a much larger code and data size.
6378
6379  Previous Release:
6380    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6381    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6382  Current Release:
6383    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6384    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6385
6386
63872) iASL Compiler/Disassembler:
6388
6389Fixed a problem where if a single file was specified and the file did not
6390exist, no error message was emitted. (Introduced with wildcard support in
6391version 20070917.)
6392
6393----------------------------------------
639419 September 2007. Summary of changes for version 20070919:
6395
63961) ACPI CA Core Subsystem:
6397
6398Designed and implemented new external interfaces to install and remove
6399handlers for ACPI table-related events. Current events that are defined
6400are
6401LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
6402they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
6403AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
6404
6405Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
6406(acpi_serialized option on Linux) could cause some systems to hang during
6407initialization. (Bob Moore) BZ 8171
6408
6409Fixed a problem where objects of certain types (Device, ThermalZone,
6410Processor, PowerResource) can be not found if they are declared and
6411referenced from within the same control method (Lin Ming) BZ 341
6412
6413Example Code and Data Size: These are the sizes for the OS-independent
6414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6415debug version of the code includes the debug output trace mechanism and
6416has
6417a much larger code and data size.
6418
6419  Previous Release:
6420    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6421    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6422  Current Release:
6423    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6424    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6425
6426
64272) iASL Compiler/Disassembler:
6428
6429Implemented support to allow multiple files to be compiled/disassembled
6430in
6431a
6432single invocation. This includes command line wildcard support for both
6433the
6434Windows and Unix versions of the compiler. This feature simplifies the
6435disassembly and compilation of multiple ACPI tables in a single
6436directory.
6437
6438----------------------------------------
643908 May 2007. Summary of changes for version 20070508:
6440
64411) ACPI CA Core Subsystem:
6442
6443Implemented a Microsoft compatibility design change for the handling of
6444the
6445Notify AML operator. Previously, notify handlers were dispatched and
6446executed completely asynchronously in a deferred thread. The new design
6447still executes the notify handlers in a different thread, but the
6448original
6449thread that executed the Notify() now waits at a synchronization point
6450for
6451the notify handler to complete. Some machines depend on a synchronous
6452Notify
6453operator in order to operate correctly.
6454
6455Implemented support to allow Package objects to be passed as method
6456arguments to the external AcpiEvaluateObject interface. Previously, this
6457would return the AE_NOT_IMPLEMENTED exception. This feature had not been
6458implemented since there were no reserved control methods that required it
6459until recently.
6460
6461Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
6462that
6463contained invalid non-zero values in reserved fields could cause later
6464failures because these fields have meaning in later revisions of the
6465FADT.
6466For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
6467fields
6468are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
6469
6470Fixed a problem where the Global Lock handle was not properly updated if
6471a
6472thread that acquired the Global Lock via executing AML code then
6473attempted
6474to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
6475Joe
6476Liu.
6477
6478Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
6479could be corrupted if the interrupt being removed was at the head of the
6480list. Reported by Linn Crosetto.
6481
6482Example Code and Data Size: These are the sizes for the OS-independent
6483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6484debug version of the code includes the debug output trace mechanism and
6485has
6486a much larger code and data size.
6487
6488  Previous Release:
6489    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6490    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6491  Current Release:
6492    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6493    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6494
6495----------------------------------------
649620 March 2007. Summary of changes for version 20070320:
6497
64981) ACPI CA Core Subsystem:
6499
6500Implemented a change to the order of interpretation and evaluation of AML
6501operand objects within the AML interpreter. The interpreter now evaluates
6502operands in the order that they appear in the AML stream (and the
6503corresponding ASL code), instead of in the reverse order (after the
6504entire
6505operand list has been parsed). The previous behavior caused several
6506subtle
6507incompatibilities with the Microsoft AML interpreter as well as being
6508somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
6509
6510Implemented a change to the ACPI Global Lock support. All interfaces to
6511the
6512global lock now allow the same thread to acquire the lock multiple times.
6513This affects the AcpiAcquireGlobalLock external interface to the global
6514lock
6515as well as the internal use of the global lock to support AML fields -- a
6516control method that is holding the global lock can now simultaneously
6517access
6518AML fields that require global lock protection. Previously, in both
6519cases,
6520this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
6521to
6522AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
6523Controller. There is no change to the behavior of the AML Acquire
6524operator,
6525as this can already be used to acquire a mutex multiple times by the same
6526thread. BZ 8066. With assistance from Alexey Starikovskiy.
6527
6528Fixed a problem where invalid objects could be referenced in the AML
6529Interpreter after error conditions. During operand evaluation, ensure
6530that
6531the internal "Return Object" field is cleared on error and only valid
6532pointers are stored there. Caused occasional access to deleted objects
6533that
6534resulted in "large reference count" warning messages. Valery Podrezov.
6535
6536Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
6537on
6538deeply nested control method invocations. BZ 7873, local BZ 487. Valery
6539Podrezov.
6540
6541Fixed an internal problem with the handling of result objects on the
6542interpreter result stack. BZ 7872. Valery Podrezov.
6543
6544Removed obsolete code that handled the case where AML_NAME_OP is the
6545target
6546of a reference (Reference.Opcode). This code was no longer necessary. BZ
65477874. Valery Podrezov.
6548
6549Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
6550was
6551a
6552remnant from the previously discontinued 16-bit support.
6553
6554Example Code and Data Size: These are the sizes for the OS-independent
6555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6556debug version of the code includes the debug output trace mechanism and
6557has
6558a much larger code and data size.
6559
6560  Previous Release:
6561    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6562    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6563  Current Release:
6564    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6565    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6566
6567----------------------------------------
656826 January 2007. Summary of changes for version 20070126:
6569
65701) ACPI CA Core Subsystem:
6571
6572Added the 2007 copyright to all module headers and signons. This affects
6573virtually every file in the ACPICA core subsystem, the iASL compiler, and
6574the utilities.
6575
6576Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
6577during a table load. A bad pointer was passed in the case where the DSDT
6578is
6579overridden, causing a fault in this case.
6580
6581Example Code and Data Size: These are the sizes for the OS-independent
6582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6583debug version of the code includes the debug output trace mechanism and
6584has
6585a much larger code and data size.
6586
6587  Previous Release:
6588    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6589    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6590  Current Release:
6591    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6592    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6593
6594----------------------------------------
659515 December 2006. Summary of changes for version 20061215:
6596
65971) ACPI CA Core Subsystem:
6598
6599Support for 16-bit ACPICA has been completely removed since it is no
6600longer
6601necessary and it clutters the code. All 16-bit macros, types, and
6602conditional compiles have been removed, cleaning up and simplifying the
6603code
6604across the entire subsystem. DOS support is no longer needed since the
6605bootable Linux firmware kit is now available.
6606
6607The handler for the Global Lock is now removed during AcpiTerminate to
6608enable a clean subsystem restart, via the implementation of the
6609AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
6610HP)
6611
6612Implemented enhancements to the multithreading support within the
6613debugger
6614to enable improved multithreading debugging and evaluation of the
6615subsystem.
6616(Valery Podrezov)
6617
6618Debugger: Enhanced the Statistics/Memory command to emit the total
6619(maximum)
6620memory used during the execution, as well as the maximum memory consumed
6621by
6622each of the various object types. (Valery Podrezov)
6623
6624Example Code and Data Size: These are the sizes for the OS-independent
6625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6626debug version of the code includes the debug output trace mechanism and
6627has
6628a much larger code and data size.
6629
6630  Previous Release:
6631    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6632    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6633  Current Release:
6634    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6635    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6636
6637
66382) iASL Compiler/Disassembler and Tools:
6639
6640AcpiExec: Implemented a new option (-m) to display full memory use
6641statistics upon subsystem/program termination. (Valery Podrezov)
6642
6643----------------------------------------
664409 November 2006. Summary of changes for version 20061109:
6645
66461) ACPI CA Core Subsystem:
6647
6648Optimized the Load ASL operator in the case where the source operand is
6649an
6650operation region. Simply map the operation region memory, instead of
6651performing a bytewise read. (Region must be of type SystemMemory, see
6652below.)
6653
6654Fixed the Load ASL operator for the case where the source operand is a
6655region field. A buffer object is also allowed as the source operand. BZ
6656480
6657
6658Fixed a problem where the Load ASL operator allowed the source operand to
6659be
6660an operation region of any type. It is now restricted to regions of type
6661SystemMemory, as per the ACPI specification. BZ 481
6662
6663Additional cleanup and optimizations for the new Table Manager code.
6664
6665AcpiEnable will now fail if all of the required ACPI tables are not
6666loaded
6667(FADT, FACS, DSDT). BZ 477
6668
6669Added #pragma pack(8/4) to acobject.h to ensure that the structures in
6670this
6671header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
6672manually optimized to be aligned and will not work if it is byte-packed.
6673
6674Example Code and Data Size: These are the sizes for the OS-independent
6675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6676debug version of the code includes the debug output trace mechanism and
6677has
6678a much larger code and data size.
6679
6680  Previous Release:
6681    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6682    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6683  Current Release:
6684    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6685    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6686
6687
66882) iASL Compiler/Disassembler and Tools:
6689
6690Fixed a problem where the presence of the _OSI predefined control method
6691within complex expressions could cause an internal compiler error.
6692
6693AcpiExec: Implemented full region support for multiple address spaces.
6694SpaceId is now part of the REGION object. BZ 429
6695
6696----------------------------------------
669711 October 2006. Summary of changes for version 20061011:
6698
66991) ACPI CA Core Subsystem:
6700
6701Completed an AML interpreter performance enhancement for control method
6702execution. Previously a 2-pass parse/execution, control methods are now
6703completely parsed and executed in a single pass. This improves overall
6704interpreter performance by ~25%, reduces code size, and reduces CPU stack
6705use. (Valery Podrezov + interpreter changes in version 20051202 that
6706eliminated namespace loading during the pass one parse.)
6707
6708Implemented _CID support for PCI Root Bridge detection. If the _HID does
6709not
6710match the predefined PCI Root Bridge IDs, the _CID list (if present) is
6711now
6712obtained and also checked for an ID match.
6713
6714Implemented additional support for the PCI _ADR execution: upsearch until
6715a
6716device scope is found before executing _ADR. This allows PCI_Config
6717operation regions to be declared locally within control methods
6718underneath
6719PCI device objects.
6720
6721Fixed a problem with a possible race condition between threads executing
6722AcpiWalkNamespace and the AML interpreter. This condition was removed by
6723modifying AcpiWalkNamespace to (by default) ignore all temporary
6724namespace
6725entries created during any concurrent control method execution. An
6726additional namespace race condition is known to exist between
6727AcpiWalkNamespace and the Load/Unload ASL operators and is still under
6728investigation.
6729
6730Restructured the AML ParseLoop function, breaking it into several
6731subfunctions in order to reduce CPU stack use and improve
6732maintainability.
6733(Mikhail Kouzmich)
6734
6735AcpiGetHandle: Fix for parameter validation to detect invalid
6736combinations
6737of prefix handle and pathname. BZ 478
6738
6739Example Code and Data Size: These are the sizes for the OS-independent
6740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6741debug version of the code includes the debug output trace mechanism and
6742has
6743a much larger code and data size.
6744
6745  Previous Release:
6746    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6747    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
6748  Current Release:
6749    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6750    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6751
67522) iASL Compiler/Disassembler and Tools:
6753
6754Ported the -g option (get local ACPI tables) to the new ACPICA Table
6755Manager
6756to restore original behavior.
6757
6758----------------------------------------
675927 September 2006. Summary of changes for version 20060927:
6760
67611) ACPI CA Core Subsystem:
6762
6763Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
6764These functions now use a spinlock for mutual exclusion and the interrupt
6765level indication flag is not needed.
6766
6767Fixed a problem with the Global Lock where the lock could appear to be
6768obtained before it is actually obtained. The global lock semaphore was
6769inadvertently created with one unit instead of zero units. (BZ 464)
6770Fiodor
6771Suietov.
6772
6773Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
6774during
6775a read from a buffer or region field. (BZ 458) Fiodor Suietov.
6776
6777Example Code and Data Size: These are the sizes for the OS-independent
6778acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6779debug version of the code includes the debug output trace mechanism and
6780has
6781a much larger code and data size.
6782
6783  Previous Release:
6784    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6785    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
6786  Current Release:
6787    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6788    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
6789
6790
67912) iASL Compiler/Disassembler and Tools:
6792
6793Fixed a compilation problem with the pre-defined Resource Descriptor
6794field
6795names where an "object does not exist" error could be incorrectly
6796generated
6797if the parent ResourceTemplate pathname places the template within a
6798different namespace scope than the current scope. (BZ 7212)
6799
6800Fixed a problem where the compiler could hang after syntax errors
6801detected
6802in an ElseIf construct. (BZ 453)
6803
6804Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
6805operator. An incorrect output filename was produced when this parameter
6806was
6807a null string (""). Now, the original input filename is used as the AML
6808output filename, with an ".aml" extension.
6809
6810Implemented a generic batch command mode for the AcpiExec utility
6811(execute
6812any AML debugger command) (Valery Podrezov).
6813
6814----------------------------------------
681512 September 2006. Summary of changes for version 20060912:
6816
68171) ACPI CA Core Subsystem:
6818
6819Enhanced the implementation of the "serialized mode" of the interpreter
6820(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
6821specified, instead of creating a serialization semaphore per control
6822method,
6823the interpreter lock is simply no longer released before a blocking
6824operation during control method execution. This effectively makes the AML
6825Interpreter single-threaded. The overhead of a semaphore per-method is
6826eliminated.
6827
6828Fixed a regression where an error was no longer emitted if a control
6829method
6830attempts to create 2 objects of the same name. This once again returns
6831AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
6832that
6833will dynamically serialize the control method to possible prevent future
6834errors. (BZ 440)
6835
6836Integrated a fix for a problem with PCI Express HID detection in the PCI
6837Config Space setup procedure. (BZ 7145)
6838
6839Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
6840AcpiHwInitialize function - the FADT registers are now validated when the
6841table is loaded.
6842
6843Added two new warnings during FADT verification - 1) if the FADT is
6844larger
6845than the largest known FADT version, and 2) if there is a mismatch
6846between
6847a
684832-bit block address and the 64-bit X counterpart (when both are non-
6849zero.)
6850
6851Example Code and Data Size: These are the sizes for the OS-independent
6852acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6853debug version of the code includes the debug output trace mechanism and
6854has
6855a much larger code and data size.
6856
6857  Previous Release:
6858    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
6859    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
6860  Current Release:
6861    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6862    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
6863
6864
68652) iASL Compiler/Disassembler and Tools:
6866
6867Fixed a problem with the implementation of the Switch() operator where
6868the
6869temporary variable was declared too close to the actual Switch, instead
6870of
6871at method level. This could cause a problem if the Switch() operator is
6872within a while loop, causing an error on the second iteration. (BZ 460)
6873
6874Disassembler - fix for error emitted for unknown type for target of scope
6875operator. Now, ignore it and continue.
6876
6877Disassembly of an FADT now verifies the input FADT and reports any errors
6878found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
6879
6880Disassembly of raw data buffers with byte initialization data now
6881prefixes
6882each output line with the current buffer offset.
6883
6884Disassembly of ASF! table now includes all variable-length data fields at
6885the end of some of the subtables.
6886
6887The disassembler now emits a comment if a buffer appears to be a
6888ResourceTemplate, but cannot be disassembled as such because the EndTag
6889does
6890not appear at the very end of the buffer.
6891
6892AcpiExec - Added the "-t" command line option to enable the serialized
6893mode
6894of the AML interpreter.
6895
6896----------------------------------------
689731 August 2006. Summary of changes for version 20060831:
6898
68991) ACPI CA Core Subsystem:
6900
6901Miscellaneous fixes for the Table Manager:
6902- Correctly initialize internal common FADT for all 64-bit "X" fields
6903- Fixed a couple table mapping issues during table load
6904- Fixed a couple alignment issues for IA64
6905- Initialize input array to zero in AcpiInitializeTables
6906- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
6907AcpiGetTableByIndex
6908
6909Change for GPE support: when a "wake" GPE is received, all wake GPEs are
6910now
6911immediately disabled to prevent the waking GPE from firing again and to
6912prevent other wake GPEs from interrupting the wake process.
6913
6914Added the AcpiGpeCount global that tracks the number of processed GPEs,
6915to
6916be used for debugging systems with a large number of ACPI interrupts.
6917
6918Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
6919both the ACPICA headers and the disassembler.
6920
6921Example Code and Data Size: These are the sizes for the OS-independent
6922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6923debug version of the code includes the debug output trace mechanism and
6924has
6925a much larger code and data size.
6926
6927  Previous Release:
6928    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
6929    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
6930  Current Release:
6931    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
6932    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
6933
6934
69352) iASL Compiler/Disassembler and Tools:
6936
6937Disassembler support for the DMAR ACPI table.
6938
6939----------------------------------------
694023 August 2006. Summary of changes for version 20060823:
6941
69421) ACPI CA Core Subsystem:
6943
6944The Table Manager component has been completely redesigned and
6945reimplemented. The new design is much simpler, and reduces the overall
6946code
6947and data size of the kernel-resident ACPICA by approximately 5%. Also, it
6948is
6949now possible to obtain the ACPI tables very early during kernel
6950initialization, even before dynamic memory management is initialized.
6951(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
6952
6953Obsolete ACPICA interfaces:
6954
6955- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
6956init
6957time).
6958- AcpiLoadTable: Not needed.
6959- AcpiUnloadTable: Not needed.
6960
6961New ACPICA interfaces:
6962
6963- AcpiInitializeTables: Must be called before the table manager can be
6964used.
6965- AcpiReallocateRootTable: Used to transfer the root table to dynamically
6966allocated memory after it becomes available.
6967- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
6968tables
6969in the RSDT/XSDT.
6970
6971Other ACPICA changes:
6972
6973- AcpiGetTableHeader returns the actual mapped table header, not a copy.
6974Use
6975AcpiOsUnmapMemory to free this mapping.
6976- AcpiGetTable returns the actual mapped table. The mapping is managed
6977internally and must not be deleted by the caller. Use of this interface
6978causes no additional dynamic memory allocation.
6979- AcpiFindRootPointer: Support for physical addressing has been
6980eliminated,
6981it appeared to be unused.
6982- The interface to AcpiOsMapMemory has changed to be consistent with the
6983other allocation interfaces.
6984- The interface to AcpiOsGetRootPointer has changed to eliminate
6985unnecessary
6986parameters.
6987- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
698864-
6989bit platforms. Was previously 64 bits on all platforms.
6990- The interface to the ACPI Global Lock acquire/release macros have
6991changed
6992slightly since ACPICA no longer keeps a local copy of the FACS with a
6993constructed pointer to the actual global lock.
6994
6995Porting to the new table manager:
6996
6997- AcpiInitializeTables: Must be called once, and can be called anytime
6998during the OS initialization process. It allows the host to specify an
6999area
7000of memory to be used to store the internal version of the RSDT/XSDT (root
7001table). This allows the host to access ACPI tables before memory
7002management
7003is initialized and running.
7004- AcpiReallocateRootTable: Can be called after memory management is
7005running
7006to copy the root table to a dynamically allocated array, freeing up the
7007scratch memory specified in the call to AcpiInitializeTables.
7008- AcpiSubsystemInitialize: This existing interface is independent of the
7009Table Manager, and does not have to be called before the Table Manager
7010can
7011be used, it only must be called before the rest of ACPICA can be used.
7012- ACPI Tables: Some changes have been made to the names and structure of
7013the
7014actbl.h and actbl1.h header files and may require changes to existing
7015code.
7016For example, bitfields have been completely removed because of their lack
7017of
7018portability across C compilers.
7019- Update interfaces to the Global Lock acquire/release macros if local
7020versions are used. (see acwin.h)
7021
7022Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7023
7024New files: tbfind.c
7025
7026Example Code and Data Size: These are the sizes for the OS-independent
7027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7028debug version of the code includes the debug output trace mechanism and
7029has
7030a much larger code and data size.
7031
7032  Previous Release:
7033    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7034    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7035  Current Release:
7036    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7037    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7038
7039
70402) iASL Compiler/Disassembler and Tools:
7041
7042No changes for this release.
7043
7044----------------------------------------
704521 July 2006. Summary of changes for version 20060721:
7046
70471) ACPI CA Core Subsystem:
7048
7049The full source code for the ASL test suite used to validate the iASL
7050compiler and the ACPICA core subsystem is being released with the ACPICA
7051source for the first time. The source is contained in a separate package
7052and
7053consists of over 1100 files that exercise all ASL/AML operators. The
7054package
7055should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
7056Fiodor
7057Suietov)
7058
7059Completed a new design and implementation for support of the ACPI Global
7060Lock. On the OS side, the global lock is now treated as a standard AML
7061mutex. Previously, multiple OS threads could "acquire" the global lock
7062simultaneously. However, this could cause the BIOS to be starved out of
7063the
7064lock - especially in cases such as the Embedded Controller driver where
7065there is a tight coupling between the OS and the BIOS.
7066
7067Implemented an optimization for the ACPI Global Lock interrupt mechanism.
7068The Global Lock interrupt handler no longer queues the execution of a
7069separate thread to signal the global lock semaphore. Instead, the
7070semaphore
7071is signaled directly from the interrupt handler.
7072
7073Implemented support within the AML interpreter for package objects that
7074contain a larger AML length (package list length) than the package
7075element
7076count. In this case, the length of the package is truncated to match the
7077package element count. Some BIOS code apparently modifies the package
7078length
7079on the fly, and this change supports this behavior. Provides
7080compatibility
7081with the MS AML interpreter. (With assistance from Fiodor Suietov)
7082
7083Implemented a temporary fix for the BankValue parameter of a Bank Field
7084to
7085support all constant values, now including the Zero and One opcodes.
7086Evaluation of this parameter must eventually be converted to a full
7087TermArg
7088evaluation. A not-implemented error is now returned (temporarily) for
7089non-
7090constant values for this parameter.
7091
7092Fixed problem reports (Fiodor Suietov) integrated:
7093- Fix for premature object deletion after CopyObject on Operation Region
7094(BZ
7095350)
7096
7097Example Code and Data Size: These are the sizes for the OS-independent
7098acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7099debug version of the code includes the debug output trace mechanism and
7100has
7101a much larger code and data size.
7102
7103  Previous Release:
7104    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7105    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7106  Current Release:
7107    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7108    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7109
7110
71112) iASL Compiler/Disassembler and Tools:
7112
7113No changes for this release.
7114
7115----------------------------------------
711607 July 2006. Summary of changes for version 20060707:
7117
71181) ACPI CA Core Subsystem:
7119
7120Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
7121that do not allow the initialization of address pointers within packed
7122structures - even though the hardware itself may support misaligned
7123transfers. Some of the debug data structures are packed by default to
7124minimize size.
7125
7126Added an error message for the case where AcpiOsGetThreadId() returns
7127zero.
7128A non-zero value is required by the core ACPICA code to ensure the proper
7129operation of AML mutexes and recursive control methods.
7130
7131The DSDT is now the only ACPI table that determines whether the AML
7132interpreter is in 32-bit or 64-bit mode. Not really a functional change,
7133but
7134the hooks for per-table 32/64 switching have been removed from the code.
7135A
7136clarification to the ACPI specification is forthcoming in ACPI 3.0B.
7137
7138Fixed a possible leak of an OwnerID in the error path of
7139AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
7140deletion to a single place in AcpiTbUninstallTable to correct possible
7141leaks
7142when using the AcpiTbDeleteTablesByType interface (with assistance from
7143Lance Ortiz.)
7144
7145Fixed a problem with Serialized control methods where the semaphore
7146associated with the method could be over-signaled after multiple method
7147invocations.
7148
7149Fixed two issues with the locking of the internal namespace data
7150structure.
7151Both the Unload() operator and AcpiUnloadTable interface now lock the
7152namespace during the namespace deletion associated with the table unload
7153(with assistance from Linn Crosetto.)
7154
7155Fixed problem reports (Valery Podrezov) integrated:
7156- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
7157
7158Fixed problem reports (Fiodor Suietov) integrated:
7159- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
7160- On Address Space handler deletion, needless deactivation call (BZ 374)
7161- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
7162375)
7163- Possible memory leak, Notify sub-objects of Processor, Power,
7164ThermalZone
7165(BZ 376)
7166- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
7167- Minimum Length of RSDT should be validated (BZ 379)
7168- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
7169Handler (BZ (380)
7170- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
7171loaded
7172(BZ 381)
7173
7174Example Code and Data Size: These are the sizes for the OS-independent
7175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7176debug version of the code includes the debug output trace mechanism and
7177has
7178a much larger code and data size.
7179
7180  Previous Release:
7181    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7182    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7183  Current Release:
7184    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7185    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7186
7187
71882) iASL Compiler/Disassembler and Tools:
7189
7190Fixed problem reports:
7191Compiler segfault when ASL contains a long (>1024) String declaration (BZ
7192436)
7193
7194----------------------------------------
719523 June 2006. Summary of changes for version 20060623:
7196
71971) ACPI CA Core Subsystem:
7198
7199Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
7200allows the type to be customized to the host OS for improved efficiency
7201(since a spinlock is usually a very small object.)
7202
7203Implemented support for "ignored" bits in the ACPI registers. According
7204to
7205the ACPI specification, these bits should be preserved when writing the
7206registers via a read/modify/write cycle. There are 3 bits preserved in
7207this
7208manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
7209
7210Implemented the initial deployment of new OSL mutex interfaces. Since
7211some
7212host operating systems have separate mutex and semaphore objects, this
7213feature was requested. The base code now uses mutexes (and the new mutex
7214interfaces) wherever a binary semaphore was used previously. However, for
7215the current release, the mutex interfaces are defined as macros to map
7216them
7217to the existing semaphore interfaces. Therefore, no OSL changes are
7218required
7219at this time. (See acpiosxf.h)
7220
7221Fixed several problems with the support for the control method SyncLevel
7222parameter. The SyncLevel now works according to the ACPI specification
7223and
7224in concert with the Mutex SyncLevel parameter, since the current
7225SyncLevel
7226is a property of the executing thread. Mutual exclusion for control
7227methods
7228is now implemented with a mutex instead of a semaphore.
7229
7230Fixed three instances of the use of the C shift operator in the bitfield
7231support code (exfldio.c) to avoid the use of a shift value larger than
7232the
7233target data width. The behavior of C compilers is undefined in this case
7234and
7235can cause unpredictable results, and therefore the case must be detected
7236and
7237avoided. (Fiodor Suietov)
7238
7239Added an info message whenever an SSDT or OEM table is loaded dynamically
7240via the Load() or LoadTable() ASL operators. This should improve
7241debugging
7242capability since it will show exactly what tables have been loaded
7243(beyond
7244the tables present in the RSDT/XSDT.)
7245
7246Example Code and Data Size: These are the sizes for the OS-independent
7247acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7248debug version of the code includes the debug output trace mechanism and
7249has
7250a much larger code and data size.
7251
7252  Previous Release:
7253    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7254    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7255  Current Release:
7256    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7257    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7258
7259
72602) iASL Compiler/Disassembler and Tools:
7261
7262No changes for this release.
7263
7264----------------------------------------
726508 June 2006. Summary of changes for version 20060608:
7266
72671) ACPI CA Core Subsystem:
7268
7269Converted the locking mutex used for the ACPI hardware to a spinlock.
7270This
7271change should eliminate all problems caused by attempting to acquire a
7272semaphore at interrupt level, and it means that all ACPICA external
7273interfaces that directly access the ACPI hardware can be safely called
7274from
7275interrupt level. OSL code that implements the semaphore interfaces should
7276be
7277able to eliminate any workarounds for being called at interrupt level.
7278
7279Fixed a regression introduced in 20060526 where the ACPI device
7280initialization could be prematurely aborted with an AE_NOT_FOUND if a
7281device
7282did not have an optional _INI method.
7283
7284Fixed an IndexField issue where a write to the Data Register should be
7285limited in size to the AccessSize (width) of the IndexField itself. (BZ
7286433,
7287Fiodor Suietov)
7288
7289Fixed problem reports (Valery Podrezov) integrated:
7290- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
7291
7292Fixed problem reports (Fiodor Suietov) integrated:
7293- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
7294
7295Removed four global mutexes that were obsolete and were no longer being
7296used.
7297
7298Example Code and Data Size: These are the sizes for the OS-independent
7299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7300debug version of the code includes the debug output trace mechanism and
7301has
7302a much larger code and data size.
7303
7304  Previous Release:
7305    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7306    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7307  Current Release:
7308    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7309    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7310
7311
73122) iASL Compiler/Disassembler and Tools:
7313
7314Fixed a fault when using -g option (get tables from registry) on Windows
7315machines.
7316
7317Fixed problem reports integrated:
7318- Generate error if CreateField NumBits parameter is zero. (BZ 405)
7319- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
7320Suietov)
7321- Global table revision override (-r) is ignored (BZ 413)
7322
7323----------------------------------------
732426 May 2006. Summary of changes for version 20060526:
7325
73261) ACPI CA Core Subsystem:
7327
7328Restructured, flattened, and simplified the internal interfaces for
7329namespace object evaluation - resulting in smaller code, less CPU stack
7330use,
7331and fewer interfaces. (With assistance from Mikhail Kouzmich)
7332
7333Fixed a problem with the CopyObject operator where the first parameter
7334was
7335not typed correctly for the parser, interpreter, compiler, and
7336disassembler.
7337Caused various errors and unexpected behavior.
7338
7339Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
7340produced incorrect results with some C compilers. Since the behavior of C
7341compilers when the shift value is larger than the datatype width is
7342apparently not well defined, the interpreter now detects this condition
7343and
7344simply returns zero as expected in all such cases. (BZ 395)
7345
7346Fixed problem reports (Valery Podrezov) integrated:
7347- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
7348- Allow interpreter to handle nested method declarations (BZ 5361)
7349
7350Fixed problem reports (Fiodor Suietov) integrated:
7351- AcpiTerminate doesn't free debug memory allocation list objects (BZ
7352355)
7353- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
7354356)
7355- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
7356- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
7357- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
7358- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
7359- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
7360- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
7361- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
7362365)
7363- Status of the Global Initialization Handler call not used (BZ 366)
7364- Incorrect object parameter to Global Initialization Handler (BZ 367)
7365
7366Example Code and Data Size: These are the sizes for the OS-independent
7367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7368debug version of the code includes the debug output trace mechanism and
7369has
7370a much larger code and data size.
7371
7372  Previous Release:
7373    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7374    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7375  Current Release:
7376    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7377    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7378
7379
73802) iASL Compiler/Disassembler and Tools:
7381
7382Modified the parser to allow the names IO, DMA, and IRQ to be used as
7383namespace identifiers with no collision with existing resource descriptor
7384macro names. This provides compatibility with other ASL compilers and is
7385most useful for disassembly/recompilation of existing tables without
7386parse
7387errors. (With assistance from Thomas Renninger)
7388
7389Disassembler: fixed an incorrect disassembly problem with the
7390DataTableRegion and CopyObject operators. Fixed a possible fault during
7391disassembly of some Alias operators.
7392
7393----------------------------------------
739412 May 2006. Summary of changes for version 20060512:
7395
73961) ACPI CA Core Subsystem:
7397
7398Replaced the AcpiOsQueueForExecution interface with a new interface named
7399AcpiOsExecute. The major difference is that the new interface does not
7400have
7401a Priority parameter, this appeared to be useless and has been replaced
7402by
7403a
7404Type parameter. The Type tells the host what type of execution is being
7405requested, such as global lock handler, notify handler, GPE handler, etc.
7406This allows the host to queue and execute the request as appropriate for
7407the
7408request type, possibly using different work queues and different
7409priorities
7410for the various request types. This enables fixes for multithreading
7411deadlock problems such as BZ #5534, and will require changes to all
7412existing
7413OS interface layers. (Alexey Starikovskiy and Bob Moore)
7414
7415Fixed a possible memory leak associated with the support for the so-
7416called
7417"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
7418Suietov)
7419
7420Fixed a problem with the Load() operator where a table load from an
7421operation region could overwrite an internal table buffer by up to 7
7422bytes
7423and cause alignment faults on IPF systems. (With assistance from Luming
7424Yu)
7425
7426Example Code and Data Size: These are the sizes for the OS-independent
7427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7428debug version of the code includes the debug output trace mechanism and
7429has
7430a much larger code and data size.
7431
7432  Previous Release:
7433    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7434    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7435  Current Release:
7436    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7437    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7438
7439
7440
74412) iASL Compiler/Disassembler and Tools:
7442
7443Disassembler: Implemented support to cross reference the internal
7444namespace
7445and automatically generate ASL External() statements for symbols not
7446defined
7447within the current table being disassembled. This will simplify the
7448disassembly and recompilation of interdependent tables such as SSDTs
7449since
7450these statements will no longer have to be added manually.
7451
7452Disassembler: Implemented experimental support to automatically detect
7453invocations of external control methods and generate appropriate
7454External()
7455statements. This is problematic because the AML cannot be correctly
7456parsed
7457until the number of arguments for each control method is known.
7458Currently,
7459standalone method invocations and invocations as the source operand of a
7460Store() statement are supported.
7461
7462Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
7463LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
7464LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
7465more readable and likely closer to the original ASL source.
7466
7467----------------------------------------
746821 April 2006. Summary of changes for version 20060421:
7469
74701) ACPI CA Core Subsystem:
7471
7472Removed a device initialization optimization introduced in 20051216 where
7473the _STA method was not run unless an _INI was also present for the same
7474device. This optimization could cause problems because it could allow
7475_INI
7476methods to be run within a not-present device subtree. (If a not-present
7477device had no _INI, _STA would not be run, the not-present status would
7478not
7479be discovered, and the children of the device would be incorrectly
7480traversed.)
7481
7482Implemented a new _STA optimization where namespace subtrees that do not
7483contain _INI are identified and ignored during device initialization.
7484Selectively running _STA can significantly improve boot time on large
7485machines (with assistance from Len Brown.)
7486
7487Implemented support for the device initialization case where the returned
7488_STA flags indicate a device not-present but functioning. In this case,
7489_INI
7490is not run, but the device children are examined for presence, as per the
7491ACPI specification.
7492
7493Implemented an additional change to the IndexField support in order to
7494conform to MS behavior. The value written to the Index Register is not
7495simply a byte offset, it is a byte offset in units of the access width of
7496the parent Index Field. (Fiodor Suietov)
7497
7498Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
7499interface is called during the creation of all AML operation regions, and
7500allows the host OS to exert control over what addresses it will allow the
7501AML code to access. Operation Regions whose addresses are disallowed will
7502cause a runtime exception when they are actually accessed (will not
7503affect
7504or abort table loading.) See oswinxf or osunixxf for an example
7505implementation.
7506
7507Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
7508interface allows the host OS to match the various "optional"
7509interface/behavior strings for the _OSI predefined control method as
7510appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
7511for an example implementation.
7512
7513Restructured and corrected various problems in the exception handling
7514code
7515paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
7516(with assistance from Takayoshi Kochi.)
7517
7518Modified the Linux source converter to ignore quoted string literals
7519while
7520converting identifiers from mixed to lower case. This will correct
7521problems
7522with the disassembler and other areas where such strings must not be
7523modified.
7524
7525The ACPI_FUNCTION_* macros no longer require quotes around the function
7526name. This allows the Linux source converter to convert the names, now
7527that
7528the converter ignores quoted strings.
7529
7530Example Code and Data Size: These are the sizes for the OS-independent
7531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7532debug version of the code includes the debug output trace mechanism and
7533has
7534a much larger code and data size.
7535
7536  Previous Release:
7537
7538    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7539    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7540  Current Release:
7541    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7542    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7543
7544
75452) iASL Compiler/Disassembler and Tools:
7546
7547Implemented 3 new warnings for iASL, and implemented multiple warning
7548levels
7549(w2 flag).
7550
75511) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
7552not
7553WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
7554check for the possible timeout, a warning is issued.
7555
75562) Useless operators: If an ASL operator does not specify an optional
7557target
7558operand and it also does not use the function return value from the
7559operator, a warning is issued since the operator effectively does
7560nothing.
7561
75623) Unreferenced objects: If a namespace object is created, but never
7563referenced, a warning is issued. This is a warning level 2 since there
7564are
7565cases where this is ok, such as when a secondary table is loaded that
7566uses
7567the unreferenced objects. Even so, care is taken to only flag objects
7568that
7569don't look like they will ever be used. For example, the reserved methods
7570(starting with an underscore) are usually not referenced because it is
7571expected that the OS will invoke them.
7572
7573----------------------------------------
757431 March 2006. Summary of changes for version 20060331:
7575
75761) ACPI CA Core Subsystem:
7577
7578Implemented header file support for the following additional ACPI tables:
7579ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
7580support,
7581all current and known ACPI tables are now defined in the ACPICA headers
7582and
7583are available for use by device drivers and other software.
7584
7585Implemented support to allow tables that contain ACPI names with invalid
7586characters to be loaded. Previously, this would cause the table load to
7587fail, but since there are several known cases of such tables on existing
7588machines, this change was made to enable ACPI support for them. Also,
7589this
7590matches the behavior of the Microsoft ACPI implementation.
7591
7592Fixed a couple regressions introduced during the memory optimization in
7593the
759420060317 release. The namespace node definition required additional
7595reorganization and an internal datatype that had been changed to 8-bit
7596was
7597restored to 32-bit. (Valery Podrezov)
7598
7599Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
7600could be passed through to AcpiOsReleaseObject which is unexpected. Such
7601null pointers are now trapped and ignored, matching the behavior of the
7602previous implementation before the deployment of AcpiOsReleaseObject.
7603(Valery Podrezov, Fiodor Suietov)
7604
7605Fixed a memory mapping leak during the deletion of a SystemMemory
7606operation
7607region where a cached memory mapping was not deleted. This became a
7608noticeable problem for operation regions that are defined within
7609frequently
7610used control methods. (Dana Meyers)
7611
7612Reorganized the ACPI table header files into two main files: one for the
7613ACPI tables consumed by the ACPICA core, and another for the
7614miscellaneous
7615ACPI tables that are consumed by the drivers and other software. The
7616various
7617FADT definitions were merged into one common section and three different
7618tables (ACPI 1.0, 1.0+, and 2.0)
7619
7620Example Code and Data Size: These are the sizes for the OS-independent
7621acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7622debug version of the code includes the debug output trace mechanism and
7623has
7624a much larger code and data size.
7625
7626  Previous Release:
7627    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
7628    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
7629  Current Release:
7630    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7631    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7632
7633
76342) iASL Compiler/Disassembler and Tools:
7635
7636Disassembler: Implemented support to decode and format all non-AML ACPI
7637tables (tables other than DSDTs and SSDTs.) This includes the new tables
7638added to the ACPICA headers, therefore all current and known ACPI tables
7639are
7640supported.
7641
7642Disassembler: The change to allow ACPI names with invalid characters also
7643enables the disassembly of such tables. Invalid characters within names
7644are
7645changed to '*' to make the name printable; the iASL compiler will still
7646generate an error for such names, however, since this is an invalid ACPI
7647character.
7648
7649Implemented an option for AcpiXtract (-a) to extract all tables found in
7650the
7651input file. The default invocation extracts only the DSDTs and SSDTs.
7652
7653Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
7654makefile for the AcpiXtract utility.
7655
7656----------------------------------------
765717 March 2006. Summary of changes for version 20060317:
7658
76591) ACPI CA Core Subsystem:
7660
7661Implemented the use of a cache object for all internal namespace nodes.
7662Since there are about 1000 static nodes in a typical system, this will
7663decrease memory use for cache implementations that minimize per-
7664allocation
7665overhead (such as a slab allocator.)
7666
7667Removed the reference count mechanism for internal namespace nodes, since
7668it
7669was deemed unnecessary. This reduces the size of each namespace node by
7670about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
7671case,
7672and 32 bytes for the 64-bit case.
7673
7674Optimized several internal data structures to reduce object size on 64-
7675bit
7676platforms by packing data within the 64-bit alignment. This includes the
7677frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
7678instances corresponding to the namespace objects.
7679
7680Added two new strings for the predefined _OSI method: "Windows 2001.1
7681SP1"
7682and "Windows 2006".
7683
7684Split the allocation tracking mechanism out to a separate file, from
7685utalloc.c to uttrack.c. This mechanism appears to be only useful for
7686application-level code. Kernels may wish to not include uttrack.c in
7687distributions.
7688
7689Removed all remnants of the obsolete ACPI_REPORT_* macros and the
7690associated
7691code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
7692macros.)
7693
7694Code and Data Size: These are the sizes for the acpica.lib produced by
7695the
7696Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7697ACPI
7698driver or OSPM code. The debug version of the code includes the debug
7699output
7700trace mechanism and has a much larger code and data size. Note that these
7701values will vary depending on the efficiency of the compiler and the
7702compiler options used during generation.
7703
7704  Previous Release:
7705    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7706    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7707  Current Release:
7708    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
7709    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
7710
7711
77122) iASL Compiler/Disassembler and Tools:
7713
7714Implemented an ANSI C version of the acpixtract utility. This version
7715will
7716automatically extract the DSDT and all SSDTs from the input acpidump text
7717file and dump the binary output to separate files. It can also display a
7718summary of the input file including the headers for each table found and
7719will extract any single ACPI table, with any signature. (See
7720source/tools/acpixtract)
7721
7722----------------------------------------
772310 March 2006. Summary of changes for version 20060310:
7724
77251) ACPI CA Core Subsystem:
7726
7727Tagged all external interfaces to the subsystem with the new
7728ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
7729assist
7730kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
7731macro. The default definition is NULL.
7732
7733Added the ACPI_THREAD_ID type for the return value from
7734AcpiOsGetThreadId.
7735This allows the host to define this as necessary to simplify kernel
7736integration. The default definition is ACPI_NATIVE_UINT.
7737
7738Fixed two interpreter problems related to error processing, the deletion
7739of
7740objects, and placing invalid pointers onto the internal operator result
7741stack. BZ 6028, 6151 (Valery Podrezov)
7742
7743Increased the reference count threshold where a warning is emitted for
7744large
7745reference counts in order to eliminate unnecessary warnings on systems
7746with
7747large namespaces (especially 64-bit.) Increased the value from 0x400 to
77480x800.
7749
7750Due to universal disagreement as to the meaning of the 'c' in the
7751calloc()
7752function, the ACPI_MEM_CALLOCATE macro has been renamed to
7753ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
7754ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
7755ACPI_FREE.
7756
7757Code and Data Size: These are the sizes for the acpica.lib produced by
7758the
7759Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7760ACPI
7761driver or OSPM code. The debug version of the code includes the debug
7762output
7763trace mechanism and has a much larger code and data size. Note that these
7764values will vary depending on the efficiency of the compiler and the
7765compiler options used during generation.
7766
7767  Previous Release:
7768    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
7769    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
7770  Current Release:
7771    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7772    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7773
7774
77752) iASL Compiler/Disassembler:
7776
7777Disassembler: implemented support for symbolic resource descriptor
7778references. If a CreateXxxxField operator references a fixed offset
7779within
7780a
7781resource descriptor, a name is assigned to the descriptor and the offset
7782is
7783translated to the appropriate resource tag and pathname. The addition of
7784this support brings the disassembled code very close to the original ASL
7785source code and helps eliminate run-time errors when the disassembled
7786code
7787is modified (and recompiled) in such a way as to invalidate the original
7788fixed offsets.
7789
7790Implemented support for a Descriptor Name as the last parameter to the
7791ASL
7792Register() macro. This parameter was inadvertently left out of the ACPI
7793specification, and will be added for ACPI 3.0b.
7794
7795Fixed a problem where the use of the "_OSI" string (versus the full path
7796"\_OSI") caused an internal compiler error. ("No back ptr to op")
7797
7798Fixed a problem with the error message that occurs when an invalid string
7799is
7800used for a _HID object (such as one with an embedded asterisk:
7801"*PNP010A".)
7802The correct message is now displayed.
7803
7804----------------------------------------
780517 February 2006. Summary of changes for version 20060217:
7806
78071) ACPI CA Core Subsystem:
7808
7809Implemented a change to the IndexField support to match the behavior of
7810the
7811Microsoft AML interpreter. The value written to the Index register is now
7812a
7813byte offset, no longer an index based upon the width of the Data
7814register.
7815This should fix IndexField problems seen on some machines where the Data
7816register is not exactly one byte wide. The ACPI specification will be
7817clarified on this point.
7818
7819Fixed a problem where several resource descriptor types could overrun the
7820internal descriptor buffer due to size miscalculation: VendorShort,
7821VendorLong, and Interrupt. This was noticed on IA64 machines, but could
7822affect all platforms.
7823
7824Fixed a problem where individual resource descriptors were misaligned
7825within
7826the internal buffer, causing alignment faults on IA64 platforms.
7827
7828Code and Data Size: These are the sizes for the acpica.lib produced by
7829the
7830Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7831ACPI
7832driver or OSPM code. The debug version of the code includes the debug
7833output
7834trace mechanism and has a much larger code and data size. Note that these
7835values will vary depending on the efficiency of the compiler and the
7836compiler options used during generation.
7837
7838  Previous Release:
7839    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7840    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
7841  Current Release:
7842    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
7843    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
7844
7845
78462) iASL Compiler/Disassembler:
7847
7848Implemented support for new reserved names: _WDG and _WED are Microsoft
7849extensions for Windows Instrumentation Management, _TDL is a new ACPI-
7850defined method (Throttling Depth Limit.)
7851
7852Fixed a problem where a zero-length VendorShort or VendorLong resource
7853descriptor was incorrectly emitted as a descriptor of length one.
7854
7855----------------------------------------
785610 February 2006. Summary of changes for version 20060210:
7857
78581) ACPI CA Core Subsystem:
7859
7860Removed a couple of extraneous ACPI_ERROR messages that appeared during
7861normal execution. These became apparent after the conversion from
7862ACPI_DEBUG_PRINT.
7863
7864Fixed a problem where the CreateField operator could hang if the BitIndex
7865or
7866NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
7867
7868Fixed a problem where a DeRefOf operation on a buffer object incorrectly
7869failed with an exception. This also fixes a couple of related RefOf and
7870DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
7871
7872Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
7873of
7874AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
7875BZ
78765480)
7877
7878Implemented a memory cleanup at the end of the execution of each
7879iteration
7880of an AML While() loop, preventing the accumulation of outstanding
7881objects.
7882(Valery Podrezov, BZ 5427)
7883
7884Eliminated a chunk of duplicate code in the object resolution code.
7885(Valery
7886Podrezov, BZ 5336)
7887
7888Fixed several warnings during the 64-bit code generation.
7889
7890The AcpiSrc source code conversion tool now inserts one line of
7891whitespace
7892after an if() statement that is followed immediately by a comment,
7893improving
7894readability of the Linux code.
7895
7896Code and Data Size: The current and previous library sizes for the core
7897subsystem are shown below. These are the code and data sizes for the
7898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
7899These
7900values do not include any ACPI driver or OSPM code. The debug version of
7901the
7902code includes the debug output trace mechanism and has a much larger code
7903and data size. Note that these values will vary depending on the
7904efficiency
7905of the compiler and the compiler options used during generation.
7906
7907  Previous Release:
7908    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
7909    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
7910  Current Release:
7911    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7912    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
7913
7914
79152) iASL Compiler/Disassembler:
7916
7917Fixed a problem with the disassembly of a BankField operator with a
7918complex
7919expression for the BankValue parameter.
7920
7921----------------------------------------
792227 January 2006. Summary of changes for version 20060127:
7923
79241) ACPI CA Core Subsystem:
7925
7926Implemented support in the Resource Manager to allow unresolved
7927namestring
7928references within resource package objects for the _PRT method. This
7929support
7930is in addition to the previously implemented unresolved reference support
7931within the AML parser. If the interpreter slack mode is enabled, these
7932unresolved references will be passed through to the caller as a NULL
7933package
7934entry.
7935
7936Implemented and deployed new macros and functions for error and warning
7937messages across the subsystem. These macros are simpler and generate less
7938code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
7939ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
7940macros remain defined to allow ACPI drivers time to migrate to the new
7941macros.
7942
7943Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
7944the
7945Acquire/Release Lock OSL interfaces.
7946
7947Fixed a problem where Alias ASL operators are sometimes not correctly
7948resolved, in both the interpreter and the iASL compiler.
7949
7950Fixed several problems with the implementation of the
7951ConcatenateResTemplate
7952ASL operator. As per the ACPI specification, zero length buffers are now
7953treated as a single EndTag. One-length buffers always cause a fatal
7954exception. Non-zero length buffers that do not end with a full 2-byte
7955EndTag
7956cause a fatal exception.
7957
7958Fixed a possible structure overwrite in the AcpiGetObjectInfo external
7959interface. (With assistance from Thomas Renninger)
7960
7961Code and Data Size: The current and previous library sizes for the core
7962subsystem are shown below. These are the code and data sizes for the
7963acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
7964These
7965values do not include any ACPI driver or OSPM code. The debug version of
7966the
7967code includes the debug output trace mechanism and has a much larger code
7968and data size. Note that these values will vary depending on the
7969efficiency
7970of the compiler and the compiler options used during generation.
7971
7972  Previous Release:
7973    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
7974    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
7975  Current Release:
7976    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
7977    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
7978
7979
79802) iASL Compiler/Disassembler:
7981
7982Fixed an internal error that was generated for any forward references to
7983ASL
7984Alias objects.
7985
7986----------------------------------------
798713 January 2006. Summary of changes for version 20060113:
7988
79891) ACPI CA Core Subsystem:
7990
7991Added 2006 copyright to all module headers and signons. This affects
7992virtually every file in the ACPICA core subsystem, iASL compiler, and the
7993utilities.
7994
7995Enhanced the ACPICA error reporting in order to simplify user migration
7996to
7997the non-debug version of ACPICA. Replaced all instances of the
7998ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
7999debug
8000levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
8001respectively. This preserves all error and warning messages in the non-
8002debug
8003version of the ACPICA code (this has been referred to as the "debug lite"
8004option.) Over 200 cases were converted to create a total of over 380
8005error/warning messages across the ACPICA code. This increases the code
8006and
8007data size of the default non-debug version of the code somewhat (about
800813K),
8009but all error/warning reporting may be disabled if desired (and code
8010eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
8011configuration option. The size of the debug version of ACPICA remains
8012about
8013the same.
8014
8015Fixed a memory leak within the AML Debugger "Set" command. One object was
8016not properly deleted for every successful invocation of the command.
8017
8018Code and Data Size: The current and previous library sizes for the core
8019subsystem are shown below. These are the code and data sizes for the
8020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8021These
8022values do not include any ACPI driver or OSPM code. The debug version of
8023the
8024code includes the debug output trace mechanism and has a much larger code
8025and data size. Note that these values will vary depending on the
8026efficiency
8027of the compiler and the compiler options used during generation.
8028
8029  Previous Release:
8030    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8031    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8032  Current Release:
8033    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8034    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8035
8036
80372) iASL Compiler/Disassembler:
8038
8039The compiler now officially supports the ACPI 3.0a specification that was
8040released on December 30, 2005. (Specification is available at
8041www.acpi.info)
8042
8043----------------------------------------
804416 December 2005. Summary of changes for version 20051216:
8045
80461) ACPI CA Core Subsystem:
8047
8048Implemented optional support to allow unresolved names within ASL Package
8049objects. A null object is inserted in the package when a named reference
8050cannot be located in the current namespace. Enabled via the interpreter
8051slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
8052machines
8053that contain such code.
8054
8055Implemented an optimization to the initialization sequence that can
8056improve
8057boot time. During ACPI device initialization, the _STA method is now run
8058if
8059and only if the _INI method exists. The _STA method is used to determine
8060if
8061the device is present; An _INI can only be run if _STA returns present,
8062but
8063it is a waste of time to run the _STA method if the _INI does not exist.
8064(Prototype and assistance from Dong Wei)
8065
8066Implemented use of the C99 uintptr_t for the pointer casting macros if it
8067is
8068available in the current compiler. Otherwise, the default (void *) cast
8069is
8070used as before.
8071
8072Fixed some possible memory leaks found within the execution path of the
8073Break, Continue, If, and CreateField operators. (Valery Podrezov)
8074
8075Fixed a problem introduced in the 20051202 release where an exception is
8076generated during method execution if a control method attempts to declare
8077another method.
8078
8079Moved resource descriptor string constants that are used by both the AML
8080disassembler and AML debugger to the common utilities directory so that
8081these components are independent.
8082
8083Implemented support in the AcpiExec utility (-e switch) to globally
8084ignore
8085exceptions during control method execution (method is not aborted.)
8086
8087Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
8088generation.
8089
8090Code and Data Size: The current and previous library sizes for the core
8091subsystem are shown below. These are the code and data sizes for the
8092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8093These
8094values do not include any ACPI driver or OSPM code. The debug version of
8095the
8096code includes the debug output trace mechanism and has a much larger code
8097and data size. Note that these values will vary depending on the
8098efficiency
8099of the compiler and the compiler options used during generation.
8100
8101  Previous Release:
8102    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8103    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8104  Current Release:
8105    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8106    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8107
8108
81092) iASL Compiler/Disassembler:
8110
8111Fixed a problem where a CPU stack overflow fault could occur if a
8112recursive
8113method call was made from within a Return statement.
8114
8115----------------------------------------
811602 December 2005. Summary of changes for version 20051202:
8117
81181) ACPI CA Core Subsystem:
8119
8120Modified the parsing of control methods to no longer create namespace
8121objects during the first pass of the parse. Objects are now created only
8122during the execute phase, at the moment the namespace creation operator
8123is
8124encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
8125This
8126should eliminate ALREADY_EXISTS exceptions seen on some machines where
8127reentrant control methods are protected by an AML mutex. The mutex will
8128now
8129correctly block multiple threads from attempting to create the same
8130object
8131more than once.
8132
8133Increased the number of available Owner Ids for namespace object tracking
8134from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
8135on
8136some machines with a large number of ACPI tables (either static or
8137dynamic).
8138
8139Fixed a problem with the AcpiExec utility where a fault could occur when
8140the
8141-b switch (batch mode) is used.
8142
8143Enhanced the namespace dump routine to output the owner ID for each
8144namespace object.
8145
8146Code and Data Size: The current and previous library sizes for the core
8147subsystem are shown below. These are the code and data sizes for the
8148acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8149These
8150values do not include any ACPI driver or OSPM code. The debug version of
8151the
8152code includes the debug output trace mechanism and has a much larger code
8153and data size. Note that these values will vary depending on the
8154efficiency
8155of the compiler and the compiler options used during generation.
8156
8157  Previous Release:
8158    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8159    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8160  Current Release:
8161    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8162    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8163
8164
81652) iASL Compiler/Disassembler:
8166
8167Fixed a parse error during compilation of certain Switch/Case constructs.
8168To
8169simplify the parse, the grammar now allows for multiple Default
8170statements
8171and this error is now detected and flagged during the analysis phase.
8172
8173Disassembler: The disassembly now includes the contents of the original
8174table header within a comment at the start of the file. This includes the
8175name and version of the original ASL compiler.
8176
8177----------------------------------------
817817 November 2005. Summary of changes for version 20051117:
8179
81801) ACPI CA Core Subsystem:
8181
8182Fixed a problem in the AML parser where the method thread count could be
8183decremented below zero if any errors occurred during the method parse
8184phase.
8185This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
8186machines.
8187This also fixed a related regression with the mechanism that detects and
8188corrects methods that cannot properly handle reentrancy (related to the
8189deployment of the new OwnerId mechanism.)
8190
8191Eliminated the pre-parsing of control methods (to detect errors) during
8192table load. Related to the problem above, this was causing unwind issues
8193if
8194any errors occurred during the parse, and it seemed to be overkill. A
8195table
8196load should not be aborted if there are problems with any single control
8197method, thus rendering this feature rather pointless.
8198
8199Fixed a problem with the new table-driven resource manager where an
8200internal
8201buffer overflow could occur for small resource templates.
8202
8203Implemented a new external interface, AcpiGetVendorResource. This
8204interface
8205will find and return a vendor-defined resource descriptor within a _CRS
8206or
8207_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
8208Helgaas.
8209
8210Removed the length limit (200) on string objects as per the upcoming ACPI
82113.0A specification. This affects the following areas of the interpreter:
82121)
8213any implicit conversion of a Buffer to a String, 2) a String object
8214result
8215of the ASL Concatentate operator, 3) the String object result of the ASL
8216ToString operator.
8217
8218Fixed a problem in the Windows OS interface layer (OSL) where a
8219WAIT_FOREVER
8220on a semaphore object would incorrectly timeout. This allows the
8221multithreading features of the AcpiExec utility to work properly under
8222Windows.
8223
8224Updated the Linux makefiles for the iASL compiler and AcpiExec to include
8225the recently added file named "utresrc.c".
8226
8227Code and Data Size: The current and previous library sizes for the core
8228subsystem are shown below. These are the code and data sizes for the
8229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8230These
8231values do not include any ACPI driver or OSPM code. The debug version of
8232the
8233code includes the debug output trace mechanism and has a much larger code
8234and data size. Note that these values will vary depending on the
8235efficiency
8236of the compiler and the compiler options used during generation.
8237
8238  Previous Release:
8239    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8240    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8241  Current Release:
8242    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8243    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8244
8245
82462) iASL Compiler/Disassembler:
8247
8248Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
8249specification. For the iASL compiler, this means that string literals
8250within
8251the source ASL can be of any length.
8252
8253Enhanced the listing output to dump the AML code for resource descriptors
8254immediately after the ASL code for each descriptor, instead of in a block
8255at
8256the end of the entire resource template.
8257
8258Enhanced the compiler debug output to dump the entire original parse tree
8259constructed during the parse phase, before any transforms are applied to
8260the
8261tree. The transformed tree is dumped also.
8262
8263----------------------------------------
826402 November 2005. Summary of changes for version 20051102:
8265
82661) ACPI CA Core Subsystem:
8267
8268Modified the subsystem initialization sequence to improve GPE support.
8269The
8270GPE initialization has been split into two parts in order to defer
8271execution
8272of the _PRW methods (Power Resources for Wake) until after the hardware
8273is
8274fully initialized and the SCI handler is installed. This allows the _PRW
8275methods to access fields protected by the Global Lock. This will fix
8276systems
8277where a NO_GLOBAL_LOCK exception has been seen during initialization.
8278
8279Converted the ACPI internal object disassemble and display code within
8280the
8281AML debugger to fully table-driven operation, reducing code size and
8282increasing maintainability.
8283
8284Fixed a regression with the ConcatenateResTemplate() ASL operator
8285introduced
8286in the 20051021 release.
8287
8288Implemented support for "local" internal ACPI object types within the
8289debugger "Object" command and the AcpiWalkNamespace external interfaces.
8290These local types include RegionFields, BankFields, IndexFields, Alias,
8291and
8292reference objects.
8293
8294Moved common AML resource handling code into a new file, "utresrc.c".
8295This
8296code is shared by both the Resource Manager and the AML Debugger.
8297
8298Code and Data Size: The current and previous library sizes for the core
8299subsystem are shown below. These are the code and data sizes for the
8300acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8301These
8302values do not include any ACPI driver or OSPM code. The debug version of
8303the
8304code includes the debug output trace mechanism and has a much larger code
8305and data size. Note that these values will vary depending on the
8306efficiency
8307of the compiler and the compiler options used during generation.
8308
8309  Previous Release:
8310    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8311    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8312  Current Release:
8313    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8314    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8315
8316
83172) iASL Compiler/Disassembler:
8318
8319Fixed a problem with very large initializer lists (more than 4000
8320elements)
8321for both Buffer and Package objects where the parse stack could overflow.
8322
8323Enhanced the pre-compile source code scan for non-ASCII characters to
8324ignore
8325characters within comment fields. The scan is now always performed and is
8326no
8327longer optional, detecting invalid characters within a source file
8328immediately rather than during the parse phase or later.
8329
8330Enhanced the ASL grammar definition to force early reductions on all
8331list-
8332style grammar elements so that the overall parse stack usage is greatly
8333reduced. This should improve performance and reduce the possibility of
8334parse
8335stack overflow.
8336
8337Eliminated all reduce/reduce conflicts in the iASL parser generation.
8338Also,
8339with the addition of a %expected statement, the compiler generates from
8340source with no warnings.
8341
8342Fixed a possible segment fault in the disassembler if the input filename
8343does not contain a "dot" extension (Thomas Renninger).
8344
8345----------------------------------------
834621 October 2005. Summary of changes for version 20051021:
8347
83481) ACPI CA Core Subsystem:
8349
8350Implemented support for the EM64T and other x86-64 processors. This
8351essentially entails recognizing that these processors support non-aligned
8352memory transfers. Previously, all 64-bit processors were assumed to lack
8353hardware support for non-aligned transfers.
8354
8355Completed conversion of the Resource Manager to nearly full table-driven
8356operation. Specifically, the resource conversion code (convert AML to
8357internal format and the reverse) and the debug code to dump internal
8358resource descriptors are fully table-driven, reducing code and data size
8359and
8360improving maintainability.
8361
8362The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
8363word
8364on 64-bit processors instead of a fixed 32-bit word. (With assistance
8365from
8366Alexey Starikovskiy)
8367
8368Implemented support within the resource conversion code for the Type-
8369Specific byte within the various ACPI 3.0 *WordSpace macros.
8370
8371Fixed some issues within the resource conversion code for the type-
8372specific
8373flags for both Memory and I/O address resource descriptors. For Memory,
8374implemented support for the MTP and TTP flags. For I/O, split the TRS and
8375TTP flags into two separate fields.
8376
8377Code and Data Size: The current and previous library sizes for the core
8378subsystem are shown below. These are the code and data sizes for the
8379acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8380These
8381values do not include any ACPI driver or OSPM code. The debug version of
8382the
8383code includes the debug output trace mechanism and has a much larger code
8384and data size. Note that these values will vary depending on the
8385efficiency
8386of the compiler and the compiler options used during generation.
8387
8388  Previous Release:
8389    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8390    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8391  Current Release:
8392    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8393    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8394
8395
8396
83972) iASL Compiler/Disassembler:
8398
8399Relaxed a compiler restriction that disallowed a ResourceIndex byte if
8400the
8401corresponding ResourceSource string was not also present in a resource
8402descriptor declaration. This restriction caused problems with existing
8403AML/ASL code that includes the Index byte without the string. When such
8404AML
8405was disassembled, it could not be compiled without modification. Further,
8406the modified code created a resource template with a different size than
8407the
8408original, breaking code that used fixed offsets into the resource
8409template
8410buffer.
8411
8412Removed a recent feature of the disassembler to ignore a lone
8413ResourceIndex
8414byte. This byte is now emitted if present so that the exact AML can be
8415reproduced when the disassembled code is recompiled.
8416
8417Improved comments and text alignment for the resource descriptor code
8418emitted by the disassembler.
8419
8420Implemented disassembler support for the ACPI 3.0 AccessSize field within
8421a
8422Register() resource descriptor.
8423
8424----------------------------------------
842530 September 2005. Summary of changes for version 20050930:
8426
84271) ACPI CA Core Subsystem:
8428
8429Completed a major overhaul of the Resource Manager code - specifically,
8430optimizations in the area of the AML/internal resource conversion code.
8431The
8432code has been optimized to simplify and eliminate duplicated code, CPU
8433stack
8434use has been decreased by optimizing function parameters and local
8435variables, and naming conventions across the manager have been
8436standardized
8437for clarity and ease of maintenance (this includes function, parameter,
8438variable, and struct/typedef names.) The update may force changes in some
8439driver code, depending on how resources are handled by the host OS.
8440
8441All Resource Manager dispatch and information tables have been moved to a
8442single location for clarity and ease of maintenance. One new file was
8443created, named "rsinfo.c".
8444
8445The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
8446guarantee that the argument is not evaluated twice, making them less
8447prone
8448to macro side-effects. However, since there exists the possibility of
8449additional stack use if a particular compiler cannot optimize them (such
8450as
8451in the debug generation case), the original macros are optionally
8452available.
8453Note that some invocations of the return_VALUE macro may now cause size
8454mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
8455to
8456eliminate these. (From Randy Dunlap)
8457
8458Implemented a new mechanism to enable debug tracing for individual
8459control
8460methods. A new external interface, AcpiDebugTrace, is provided to enable
8461this mechanism. The intent is to allow the host OS to easily enable and
8462disable tracing for problematic control methods. This interface can be
8463easily exposed to a user or debugger interface if desired. See the file
8464psxface.c for details.
8465
8466AcpiUtCallocate will now return a valid pointer if a length of zero is
8467specified - a length of one is used and a warning is issued. This matches
8468the behavior of AcpiUtAllocate.
8469
8470Code and Data Size: The current and previous library sizes for the core
8471subsystem are shown below. These are the code and data sizes for the
8472acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8473These
8474values do not include any ACPI driver or OSPM code. The debug version of
8475the
8476code includes the debug output trace mechanism and has a much larger code
8477and data size. Note that these values will vary depending on the
8478efficiency
8479of the compiler and the compiler options used during generation.
8480
8481  Previous Release:
8482    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8483    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8484  Current Release:
8485    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8486    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8487
8488
84892) iASL Compiler/Disassembler:
8490
8491A remark is issued if the effective compile-time length of a package or
8492buffer is zero. Previously, this was a warning.
8493
8494----------------------------------------
849516 September 2005. Summary of changes for version 20050916:
8496
84971) ACPI CA Core Subsystem:
8498
8499Fixed a problem within the Resource Manager where support for the Generic
8500Register descriptor was not fully implemented. This descriptor is now
8501fully
8502recognized, parsed, disassembled, and displayed.
8503
8504Completely restructured the Resource Manager code to utilize table-driven
8505dispatch and lookup, eliminating many of the large switch() statements.
8506This
8507reduces overall subsystem code size and code complexity. Affects the
8508resource parsing and construction, disassembly, and debug dump output.
8509
8510Cleaned up and restructured the debug dump output for all resource
8511descriptors. Improved readability of the output and reduced code size.
8512
8513Fixed a problem where changes to internal data structures caused the
8514optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
8515
8516Code and Data Size: The current and previous library sizes for the core
8517subsystem are shown below. These are the code and data sizes for the
8518acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8519These
8520values do not include any ACPI driver or OSPM code. The debug version of
8521the
8522code includes the debug output trace mechanism and has a much larger code
8523and data size. Note that these values will vary depending on the
8524efficiency
8525of the compiler and the compiler options used during generation.
8526
8527  Previous Release:
8528    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8529    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8530  Current Release:
8531    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8532    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8533
8534
85352) iASL Compiler/Disassembler:
8536
8537Updated the disassembler to automatically insert an EndDependentFn()
8538macro
8539into the ASL stream if this macro is missing in the original AML code,
8540simplifying compilation of the resulting ASL module.
8541
8542Fixed a problem in the disassembler where a disassembled ResourceSource
8543string (within a large resource descriptor) was not surrounded by quotes
8544and
8545not followed by a comma, causing errors when the resulting ASL module was
8546compiled. Also, escape sequences within a ResourceSource string are now
8547handled correctly (especially "\\")
8548
8549----------------------------------------
855002 September 2005. Summary of changes for version 20050902:
8551
85521) ACPI CA Core Subsystem:
8553
8554Fixed a problem with the internal Owner ID allocation and deallocation
8555mechanisms for control method execution and recursive method invocation.
8556This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
8557messages seen on some systems. Recursive method invocation depth is
8558currently limited to 255. (Alexey Starikovskiy)
8559
8560Completely eliminated all vestiges of support for the "module-level
8561executable code" until this support is fully implemented and debugged.
8562This
8563should eliminate the NO_RETURN_VALUE exceptions seen during table load on
8564some systems that invoke this support.
8565
8566Fixed a problem within the resource manager code where the transaction
8567flags
8568for a 64-bit address descriptor were handled incorrectly in the type-
8569specific flag byte.
8570
8571Consolidated duplicate code within the address descriptor resource
8572manager
8573code, reducing overall subsystem code size.
8574
8575Fixed a fault when using the AML debugger "disassemble" command to
8576disassemble individual control methods.
8577
8578Removed references to the "release_current" directory within the Unix
8579release package.
8580
8581Code and Data Size: The current and previous core subsystem library sizes
8582are shown below. These are the code and data sizes for the acpica.lib
8583produced by the Microsoft Visual C++ 6.0 compiler. These values do not
8584include any ACPI driver or OSPM code. The debug version of the code
8585includes
8586the debug output trace mechanism and has a much larger code and data
8587size.
8588Note that these values will vary depending on the efficiency of the
8589compiler
8590and the compiler options used during generation.
8591
8592  Previous Release:
8593    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8594    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8595  Current Release:
8596    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8597    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8598
8599
86002) iASL Compiler/Disassembler:
8601
8602Implemented an error check for illegal duplicate values in the interrupt
8603and
8604dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
8605Interrupt().
8606
8607Implemented error checking for the Irq() and IrqNoFlags() macros to
8608detect
8609too many values in the interrupt list (16 max) and invalid values in the
8610list (range 0 - 15)
8611
8612The maximum length string literal within an ASL file is now restricted to
8613200 characters as per the ACPI specification.
8614
8615Fixed a fault when using the -ln option (generate namespace listing).
8616
8617Implemented an error check to determine if a DescriptorName within a
8618resource descriptor has already been used within the current scope.
8619
8620----------------------------------------
862115 August 2005.  Summary of changes for version 20050815:
8622
86231) ACPI CA Core Subsystem:
8624
8625Implemented a full bytewise compare to determine if a table load request
8626is
8627attempting to load a duplicate table. The compare is performed if the
8628table
8629signatures and table lengths match. This will allow different tables with
8630the same OEM Table ID and revision to be loaded - probably against the
8631ACPI
8632specification, but discovered in the field nonetheless.
8633
8634Added the changes.txt logfile to each of the zipped release packages.
8635
8636Code and Data Size: Current and previous core subsystem library sizes are
8637shown below. These are the code and data sizes for the acpica.lib
8638produced
8639by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8640any ACPI driver or OSPM code. The debug version of the code includes the
8641debug output trace mechanism and has a much larger code and data size.
8642Note
8643that these values will vary depending on the efficiency of the compiler
8644and
8645the compiler options used during generation.
8646
8647  Previous Release:
8648    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8649    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8650  Current Release:
8651    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8652    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8653
8654
86552) iASL Compiler/Disassembler:
8656
8657Fixed a problem where incorrect AML code could be generated for Package
8658objects if optimization is disabled (via the -oa switch).
8659
8660Fixed a problem with where incorrect AML code is generated for variable-
8661length packages when the package length is not specified and the number
8662of
8663initializer values is greater than 255.
8664
8665
8666----------------------------------------
866729 July 2005.  Summary of changes for version 20050729:
8668
86691) ACPI CA Core Subsystem:
8670
8671Implemented support to ignore an attempt to install/load a particular
8672ACPI
8673table more than once. Apparently there exists BIOS code that repeatedly
8674attempts to load the same SSDT upon certain events. With assistance from
8675Venkatesh Pallipadi.
8676
8677Restructured the main interface to the AML parser in order to correctly
8678handle all exceptional conditions. This will prevent leakage of the
8679OwnerId
8680resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
8681some
8682machines. With assistance from Alexey Starikovskiy.
8683
8684Support for "module level code" has been disabled in this version due to
8685a
8686number of issues that have appeared on various machines. The support can
8687be
8688enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
8689compilation. When the issues are fully resolved, the code will be enabled
8690by
8691default again.
8692
8693Modified the internal functions for debug print support to define the
8694FunctionName parameter as a (const char *) for compatibility with
8695compiler
8696built-in macros such as __FUNCTION__, etc.
8697
8698Linted the entire ACPICA source tree for both 32-bit and 64-bit.
8699
8700Implemented support to display an object count summary for the AML
8701Debugger
8702commands Object and Methods.
8703
8704Code and Data Size: Current and previous core subsystem library sizes are
8705shown below. These are the code and data sizes for the acpica.lib
8706produced
8707by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8708any ACPI driver or OSPM code. The debug version of the code includes the
8709debug output trace mechanism and has a much larger code and data size.
8710Note
8711that these values will vary depending on the efficiency of the compiler
8712and
8713the compiler options used during generation.
8714
8715  Previous Release:
8716    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
8717    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
8718  Current Release:
8719    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8720    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8721
8722
87232) iASL Compiler/Disassembler:
8724
8725Fixed a regression that appeared in the 20050708 version of the compiler
8726where an error message was inadvertently emitted for invocations of the
8727_OSI
8728reserved control method.
8729
8730----------------------------------------
873108 July 2005.  Summary of changes for version 20050708:
8732
87331) ACPI CA Core Subsystem:
8734
8735The use of the CPU stack in the debug version of the subsystem has been
8736considerably reduced. Previously, a debug structure was declared in every
8737function that used the debug macros. This structure has been removed in
8738favor of declaring the individual elements as parameters to the debug
8739functions. This reduces the cumulative stack use during nested execution
8740of
8741ACPI function calls at the cost of a small increase in the code size of
8742the
8743debug version of the subsystem. With assistance from Alexey Starikovskiy
8744and
8745Len Brown.
8746
8747Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
8748headers to define a macro that will return the current function name at
8749runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
8750by
8751the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
8752compiler-dependent header, the function name is saved on the CPU stack
8753(one
8754pointer per function.) This mechanism is used because apparently there
8755exists no standard ANSI-C defined macro that that returns the function
8756name.
8757
8758Redesigned and reimplemented the "Owner ID" mechanism used to track
8759namespace objects created/deleted by ACPI tables and control method
8760execution. A bitmap is now used to allocate and free the IDs, thus
8761solving
8762the wraparound problem present in the previous implementation. The size
8763of
8764the namespace node descriptor was reduced by 2 bytes as a result (Alexey
8765Starikovskiy).
8766
8767Removed the UINT32_BIT and UINT16_BIT types that were used for the
8768bitfield
8769flag definitions within the headers for the predefined ACPI tables. These
8770have been replaced by UINT8_BIT in order to increase the code portability
8771of
8772the subsystem. If the use of UINT8 remains a problem, we may be forced to
8773eliminate bitfields entirely because of a lack of portability.
8774
8775Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
8776This
8777is a frequently used function and this improvement increases the
8778performance
8779of the entire subsystem (Alexey Starikovskiy).
8780
8781Fixed several possible memory leaks and the inverse - premature object
8782deletion (Alexey Starikovskiy).
8783
8784Code and Data Size: Current and previous core subsystem library sizes are
8785shown below. These are the code and data sizes for the acpica.lib
8786produced
8787by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8788any ACPI driver or OSPM code. The debug version of the code includes the
8789debug output trace mechanism and has a much larger code and data size.
8790Note
8791that these values will vary depending on the efficiency of the compiler
8792and
8793the compiler options used during generation.
8794
8795  Previous Release:
8796    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
8797    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
8798  Current Release:
8799    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
8800    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
8801
8802----------------------------------------
880324 June 2005.  Summary of changes for version 20050624:
8804
88051) ACPI CA Core Subsystem:
8806
8807Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
8808the host-defined cache object. This allows the OSL implementation to
8809define
8810and type this object in any manner desired, simplifying the OSL
8811implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
8812Linux, and should be defined in the OS-specific header file for other
8813operating systems as required.
8814
8815Changed the interface to AcpiOsAcquireObject to directly return the
8816requested object as the function return (instead of ACPI_STATUS.) This
8817change was made for performance reasons, since this is the purpose of the
8818interface in the first place. AcpiOsAcquireObject is now similar to the
8819AcpiOsAllocate interface.
8820
8821Implemented a new AML debugger command named Businfo. This command
8822displays
8823information about all devices that have an associate _PRT object. The
8824_ADR,
8825_HID, _UID, and _CID are displayed for these devices.
8826
8827Modified the initialization sequence in AcpiInitializeSubsystem to call
8828the
8829OSL interface AcpiOslInitialize first, before any local initialization.
8830This
8831change was required because the global initialization now calls OSL
8832interfaces.
8833
8834Enhanced the Dump command to display the entire contents of Package
8835objects
8836(including all sub-objects and their values.)
8837
8838Restructured the code base to split some files because of size and/or
8839because the code logically belonged in a separate file. New files are
8840listed
8841below. All makefiles and project files included in the ACPI CA release
8842have
8843been updated.
8844    utilities/utcache.c           /* Local cache interfaces */
8845    utilities/utmutex.c           /* Local mutex support */
8846    utilities/utstate.c           /* State object support */
8847    interpreter/parser/psloop.c   /* Main AML parse loop */
8848
8849Code and Data Size: Current and previous core subsystem library sizes are
8850shown below. These are the code and data sizes for the acpica.lib
8851produced
8852by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8853any ACPI driver or OSPM code. The debug version of the code includes the
8854debug output trace mechanism and has a much larger code and data size.
8855Note
8856that these values will vary depending on the efficiency of the compiler
8857and
8858the compiler options used during generation.
8859
8860  Previous Release:
8861    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
8862    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
8863  Current Release:
8864    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
8865    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
8866
8867
88682) iASL Compiler/Disassembler:
8869
8870Fixed a regression introduced in version 20050513 where the use of a
8871Package
8872object within a Case() statement caused a compile time exception. The
8873original behavior has been restored (a Match() operator is emitted.)
8874
8875----------------------------------------
887617 June 2005.  Summary of changes for version 20050617:
8877
88781) ACPI CA Core Subsystem:
8879
8880Moved the object cache operations into the OS interface layer (OSL) to
8881allow
8882the host OS to handle these operations if desired (for example, the Linux
8883OSL will invoke the slab allocator). This support is optional; the
8884compile
8885time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
8886cache
8887code in the ACPI CA core. The new OSL interfaces are shown below. See
8888utalloc.c for an example implementation, and acpiosxf.h for the exact
8889interface definitions. With assistance from Alexey Starikovskiy.
8890    AcpiOsCreateCache
8891    AcpiOsDeleteCache
8892    AcpiOsPurgeCache
8893    AcpiOsAcquireObject
8894    AcpiOsReleaseObject
8895
8896Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
8897return
8898and restore a flags parameter. This fits better with many OS lock models.
8899Note: the current execution state (interrupt handler or not) is no longer
8900passed to these interfaces. If necessary, the OSL must determine this
8901state
8902by itself, a simple and fast operation. With assistance from Alexey
8903Starikovskiy.
8904
8905Fixed a problem in the ACPI table handling where a valid XSDT was assumed
8906present if the revision of the RSDP was 2 or greater. According to the
8907ACPI
8908specification, the XSDT is optional in all cases, and the table manager
8909therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
8910Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
8911contain
8912only the RSDT.
8913
8914Fixed an interpreter problem with the Mid() operator in the case of an
8915input
8916string where the resulting output string is of zero length. It now
8917correctly
8918returns a valid, null terminated string object instead of a string object
8919with a null pointer.
8920
8921Fixed a problem with the control method argument handling to allow a
8922store
8923to an Arg object that already contains an object of type Device. The
8924Device
8925object is now correctly overwritten. Previously, an error was returned.
8926
8927
8928Enhanced the debugger Find command to emit object values in addition to
8929the
8930found object pathnames. The output format is the same as the dump
8931namespace
8932command.
8933
8934Enhanced the debugger Set command. It now has the ability to set the
8935value
8936of any Named integer object in the namespace (Previously, only method
8937locals
8938and args could be set.)
8939
8940Code and Data Size: Current and previous core subsystem library sizes are
8941shown below. These are the code and data sizes for the acpica.lib
8942produced
8943by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8944any ACPI driver or OSPM code. The debug version of the code includes the
8945debug output trace mechanism and has a much larger code and data size.
8946Note
8947that these values will vary depending on the efficiency of the compiler
8948and
8949the compiler options used during generation.
8950
8951  Previous Release:
8952    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
8953    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
8954  Current Release:
8955    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
8956    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
8957
8958
89592) iASL Compiler/Disassembler:
8960
8961Fixed a regression in the disassembler where if/else/while constructs
8962were
8963output incorrectly. This problem was introduced in the previous release
8964(20050526). This problem also affected the single-step disassembly in the
8965debugger.
8966
8967Fixed a problem where compiling the reserved _OSI method would randomly
8968(but
8969rarely) produce compile errors.
8970
8971Enhanced the disassembler to emit compilable code in the face of
8972incorrect
8973AML resource descriptors. If the optional ResourceSourceIndex is present,
8974but the ResourceSource is not, do not emit the ResourceSourceIndex in the
8975disassembly. Otherwise, the resulting code cannot be compiled without
8976errors.
8977
8978----------------------------------------
897926 May 2005.  Summary of changes for version 20050526:
8980
89811) ACPI CA Core Subsystem:
8982
8983Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
8984the module level (not within a control method.) These opcodes are
8985executed
8986exactly once at the time the table is loaded. This type of code was legal
8987up
8988until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
8989in
8990order to provide backwards compatibility with earlier BIOS
8991implementations.
8992This eliminates the "Encountered executable code at module level" warning
8993that was previously generated upon detection of such code.
8994
8995Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
8996inadvertently be generated during the lookup of namespace objects in the
8997second pass parse of ACPI tables and control methods. It appears that
8998this
8999problem could occur during the resolution of forward references to
9000namespace
9001objects.
9002
9003Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
9004corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
9005allows the deadlock detection debug code to be compiled out in the normal
9006case, improving mutex performance (and overall subsystem performance)
9007considerably.
9008
9009Implemented a handful of miscellaneous fixes for possible memory leaks on
9010error conditions and error handling control paths. These fixes were
9011suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9012
9013Added a check for a null RSDT pointer in AcpiGetFirmwareTable
9014(tbxfroot.c)
9015to prevent a fault in this error case.
9016
9017Code and Data Size: Current and previous core subsystem library sizes are
9018shown below. These are the code and data sizes for the acpica.lib
9019produced
9020by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9021any ACPI driver or OSPM code. The debug version of the code includes the
9022debug output trace mechanism and has a much larger code and data size.
9023Note
9024that these values will vary depending on the efficiency of the compiler
9025and
9026the compiler options used during generation.
9027
9028  Previous Release:
9029    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9030    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9031  Current Release:
9032    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9033    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9034
9035
90362) iASL Compiler/Disassembler:
9037
9038Implemented support to allow Type 1 and Type 2 ASL operators to appear at
9039the module level (not within a control method.) These operators will be
9040executed once at the time the table is loaded. This type of code was
9041legal
9042up until the release of ACPI 2.0B (2002) and is now supported by the iASL
9043compiler in order to provide backwards compatibility with earlier BIOS
9044ASL
9045code.
9046
9047The ACPI integer width (specified via the table revision ID or the -r
9048override, 32 or 64 bits) is now used internally during compile-time
9049constant
9050folding to ensure that constants are truncated to 32 bits if necessary.
9051Previously, the revision ID value was only emitted in the AML table
9052header.
9053
9054An error message is now generated for the Mutex and Method operators if
9055the
9056SyncLevel parameter is outside the legal range of 0 through 15.
9057
9058Fixed a problem with the Method operator ParameterTypes list handling
9059(ACPI
90603.0). Previously, more than 2 types or 2 arguments generated a syntax
9061error.
9062The actual underlying implementation of method argument typechecking is
9063still under development, however.
9064
9065----------------------------------------
906613 May 2005.  Summary of changes for version 20050513:
9067
90681) ACPI CA Core Subsystem:
9069
9070Implemented support for PCI Express root bridges -- added support for
9071device
9072PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9073
9074The interpreter now automatically truncates incoming 64-bit constants to
907532
9076bits if currently executing out of a 32-bit ACPI table (Revision < 2).
9077This
9078also affects the iASL compiler constant folding. (Note: as per below, the
9079iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9080
9081Fixed a problem where string and buffer objects with "static" pointers
9082(pointers to initialization data within an ACPI table) were not handled
9083consistently. The internal object copy operation now always copies the
9084data
9085to a newly allocated buffer, regardless of whether the source object is
9086static or not.
9087
9088Fixed a problem with the FromBCD operator where an implicit result
9089conversion was improperly performed while storing the result to the
9090target
9091operand. Since this is an "explicit conversion" operator, the implicit
9092conversion should never be performed on the output.
9093
9094Fixed a problem with the CopyObject operator where a copy to an existing
9095named object did not always completely overwrite the existing object
9096stored
9097at name. Specifically, a buffer-to-buffer copy did not delete the
9098existing
9099buffer.
9100
9101Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
9102and
9103structs for consistency.
9104
9105Code and Data Size: Current and previous core subsystem library sizes are
9106shown below. These are the code and data sizes for the acpica.lib
9107produced
9108by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9109any ACPI driver or OSPM code. The debug version of the code includes the
9110debug output trace mechanism and has a much larger code and data size.
9111Note
9112that these values will vary depending on the efficiency of the compiler
9113and
9114the compiler options used during generation.
9115
9116  Previous Release:
9117    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9118    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9119  Current Release: (Same sizes)
9120    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9121    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9122
9123
91242) iASL Compiler/Disassembler:
9125
9126The compiler now emits a warning if an attempt is made to generate a 64-
9127bit
9128integer constant from within a 32-bit ACPI table (Revision < 2). The
9129integer
9130is truncated to 32 bits.
9131
9132Fixed a problem with large package objects: if the static length of the
9133package is greater than 255, the "variable length package" opcode is
9134emitted. Previously, this caused an error. This requires an update to the
9135ACPI spec, since it currently (incorrectly) states that packages larger
9136than
9137255 elements are not allowed.
9138
9139The disassembler now correctly handles variable length packages and
9140packages
9141larger than 255 elements.
9142
9143----------------------------------------
914408 April 2005.  Summary of changes for version 20050408:
9145
91461) ACPI CA Core Subsystem:
9147
9148Fixed three cases in the interpreter where an "index" argument to an ASL
9149function was still (internally) 32 bits instead of the required 64 bits.
9150This was the Index argument to the Index, Mid, and Match operators.
9151
9152The "strupr" function is now permanently local (AcpiUtStrupr), since this
9153is
9154not a POSIX-defined function and not present in most kernel-level C
9155libraries. All references to the C library strupr function have been
9156removed
9157from the headers.
9158
9159Completed the deployment of static functions/prototypes. All prototypes
9160with
9161the static attribute have been moved from the headers to the owning C
9162file.
9163
9164Implemented an extract option (-e) for the AcpiBin utility (AML binary
9165utility). This option allows the utility to extract individual ACPI
9166tables
9167from the output of AcpiDmp. It provides the same functionality of the
9168acpixtract.pl perl script without the worry of setting the correct perl
9169options. AcpiBin runs on Windows and has not yet been generated/validated
9170in
9171the Linux/Unix environment (but should be soon).
9172
9173Updated and fixed the table dump option for AcpiBin (-d). This option
9174converts a single ACPI table to a hex/ascii file, similar to the output
9175of
9176AcpiDmp.
9177
9178Code and Data Size: Current and previous core subsystem library sizes are
9179shown below. These are the code and data sizes for the acpica.lib
9180produced
9181by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9182any ACPI driver or OSPM code. The debug version of the code includes the
9183debug output trace mechanism and has a much larger code and data size.
9184Note
9185that these values will vary depending on the efficiency of the compiler
9186and
9187the compiler options used during generation.
9188
9189  Previous Release:
9190    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9191    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9192  Current Release:
9193    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9194    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9195
9196
91972) iASL Compiler/Disassembler:
9198
9199Disassembler fix: Added a check to ensure that the table length found in
9200the
9201ACPI table header within the input file is not longer than the actual
9202input
9203file size. This indicates some kind of file or table corruption.
9204
9205----------------------------------------
920629 March 2005.  Summary of changes for version 20050329:
9207
92081) ACPI CA Core Subsystem:
9209
9210An error is now generated if an attempt is made to create a Buffer Field
9211of
9212length zero (A CreateField with a length operand of zero.)
9213
9214The interpreter now issues a warning whenever executable code at the
9215module
9216level is detected during ACPI table load. This will give some idea of the
9217prevalence of this type of code.
9218
9219Implemented support for references to named objects (other than control
9220methods) within package objects.
9221
9222Enhanced package object output for the debug object. Package objects are
9223now
9224completely dumped, showing all elements.
9225
9226Enhanced miscellaneous object output for the debug object. Any object can
9227now be written to the debug object (for example, a device object can be
9228written, and the type of the object will be displayed.)
9229
9230The "static" qualifier has been added to all local functions across both
9231the
9232core subsystem and the iASL compiler.
9233
9234The number of "long" lines (> 80 chars) within the source has been
9235significantly reduced, by about 1/3.
9236
9237Cleaned up all header files to ensure that all CA/iASL functions are
9238prototyped (even static functions) and the formatting is consistent.
9239
9240Two new header files have been added, acopcode.h and acnames.h.
9241
9242Removed several obsolete functions that were no longer used.
9243
9244Code and Data Size: Current and previous core subsystem library sizes are
9245shown below. These are the code and data sizes for the acpica.lib
9246produced
9247by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9248any ACPI driver or OSPM code. The debug version of the code includes the
9249debug output trace mechanism and has a much larger code and data size.
9250Note
9251that these values will vary depending on the efficiency of the compiler
9252and
9253the compiler options used during generation.
9254
9255  Previous Release:
9256    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9257    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9258  Current Release:
9259    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9260    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9261
9262
9263
92642) iASL Compiler/Disassembler:
9265
9266Fixed a problem with the resource descriptor generation/support. For the
9267ResourceSourceIndex and the ResourceSource fields, both must be present,
9268or
9269both must be not present - can't have one without the other.
9270
9271The compiler now returns non-zero from the main procedure if any errors
9272have
9273occurred during the compilation.
9274
9275
9276----------------------------------------
927709 March 2005.  Summary of changes for version 20050309:
9278
92791) ACPI CA Core Subsystem:
9280
9281The string-to-buffer implicit conversion code has been modified again
9282after
9283a change to the ACPI specification.  In order to match the behavior of
9284the
9285other major ACPI implementation, the target buffer is no longer truncated
9286if
9287the source string is smaller than an existing target buffer. This change
9288requires an update to the ACPI spec, and should eliminate the recent
9289AE_AML_BUFFER_LIMIT issues.
9290
9291The "implicit return" support was rewritten to a new algorithm that
9292solves
9293the general case. Rather than attempt to determine when a method is about
9294to
9295exit, the result of every ASL operator is saved momentarily until the
9296very
9297next ASL operator is executed. Therefore, no matter how the method exits,
9298there will always be a saved implicit return value. This feature is only
9299enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
9300eliminate
9301AE_AML_NO_RETURN_VALUE errors when enabled.
9302
9303Implemented implicit conversion support for the predicate (operand) of
9304the
9305If, Else, and While operators. String and Buffer arguments are
9306automatically
9307converted to Integers.
9308
9309Changed the string-to-integer conversion behavior to match the new ACPI
9310errata: "If no integer object exists, a new integer is created. The ASCII
9311string is interpreted as a hexadecimal constant. Each string character is
9312interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
9313with the first character as the most significant digit, and ending with
9314the
9315first non-hexadecimal character or end-of-string." This means that the
9316first
9317non-hex character terminates the conversion and this is the code that was
9318changed.
9319
9320Fixed a problem where the ObjectType operator would fail (fault) when
9321used
9322on an Index of a Package which pointed to a null package element. The
9323operator now properly returns zero (Uninitialized) in this case.
9324
9325Fixed a problem where the While operator used excessive memory by not
9326properly popping the result stack during execution. There was no memory
9327leak
9328after execution, however. (Code provided by Valery Podrezov.)
9329
9330Fixed a problem where references to control methods within Package
9331objects
9332caused the method to be invoked, instead of producing a reference object
9333pointing to the method.
9334
9335Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
9336to
9337improve performance and reduce code size. (Code provided by Alexey
9338Starikovskiy.)
9339
9340Code and Data Size: Current and previous core subsystem library sizes are
9341shown below. These are the code and data sizes for the acpica.lib
9342produced
9343by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9344any ACPI driver or OSPM code. The debug version of the code includes the
9345debug output trace mechanism and has a much larger code and data size.
9346Note
9347that these values will vary depending on the efficiency of the compiler
9348and
9349the compiler options used during generation.
9350
9351  Previous Release:
9352    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9353    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9354  Current Release:
9355    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9356    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9357
9358
93592) iASL Compiler/Disassembler:
9360
9361Fixed a problem with the Return operator with no arguments. Since the AML
9362grammar for the byte encoding requires an operand for the Return opcode,
9363the
9364compiler now emits a Return(Zero) for this case.  An ACPI specification
9365update has been written for this case.
9366
9367For tables other than the DSDT, namepath optimization is automatically
9368disabled. This is because SSDTs can be loaded anywhere in the namespace,
9369the
9370compiler has no knowledge of where, and thus cannot optimize namepaths.
9371
9372Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
9373inadvertently omitted from the ACPI specification, and will require an
9374update to the spec.
9375
9376The source file scan for ASCII characters is now optional (-a). This
9377change
9378was made because some vendors place non-ascii characters within comments.
9379However, the scan is simply a brute-force byte compare to ensure all
9380characters in the file are in the range 0x00 to 0x7F.
9381
9382Fixed a problem with the CondRefOf operator where the compiler was
9383inappropriately checking for the existence of the target. Since the point
9384of
9385the operator is to check for the existence of the target at run-time, the
9386compiler no longer checks for the target existence.
9387
9388Fixed a problem where errors generated from the internal AML interpreter
9389during constant folding were not handled properly, causing a fault.
9390
9391Fixed a problem with overly aggressive range checking for the Stall
9392operator. The valid range (max 255) is now only checked if the operand is
9393of
9394type Integer. All other operand types cannot be statically checked.
9395
9396Fixed a problem where control method references within the RefOf,
9397DeRefOf,
9398and ObjectType operators were not treated properly. They are now treated
9399as
9400actual references, not method invocations.
9401
9402Fixed and enhanced the "list namespace" option (-ln). This option was
9403broken
9404a number of releases ago.
9405
9406Improved error handling for the Field, IndexField, and BankField
9407operators.
9408The compiler now cleanly reports and recovers from errors in the field
9409component (FieldUnit) list.
9410
9411Fixed a disassembler problem where the optional ResourceDescriptor fields
9412TRS and TTP were not always handled correctly.
9413
9414Disassembler - Comments in output now use "//" instead of "/*"
9415
9416----------------------------------------
941728 February 2005.  Summary of changes for version 20050228:
9418
94191) ACPI CA Core Subsystem:
9420
9421Fixed a problem where the result of an Index() operator (an object
9422reference) must increment the reference count on the target object for
9423the
9424life of the object reference.
9425
9426Implemented AML Interpreter and Debugger support for the new ACPI 3.0
9427Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
9428WordSpace
9429resource descriptors.
9430
9431Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
9432Space Descriptor" string, indicating interpreter support for the
9433descriptors
9434above.
9435
9436Implemented header support for the new ACPI 3.0 FADT flag bits.
9437
9438Implemented header support for the new ACPI 3.0 PCI Express bits for the
9439PM1
9440status/enable registers.
9441
9442Updated header support for the MADT processor local Apic struct and MADT
9443platform interrupt source struct for new ACPI 3.0 fields.
9444
9445Implemented header support for the SRAT and SLIT ACPI tables.
9446
9447Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
9448flag
9449at runtime.
9450
9451Code and Data Size: Current and previous core subsystem library sizes are
9452shown below. These are the code and data sizes for the acpica.lib
9453produced
9454by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9455any ACPI driver or OSPM code. The debug version of the code includes the
9456debug output trace mechanism and has a much larger code and data size.
9457Note
9458that these values will vary depending on the efficiency of the compiler
9459and
9460the compiler options used during generation.
9461
9462  Previous Release:
9463    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9464    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9465  Current Release:
9466    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9467    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9468
9469
94702) iASL Compiler/Disassembler:
9471
9472Fixed a problem with the internal 64-bit String-to-integer conversion
9473with
9474strings less than two characters long.
9475
9476Fixed a problem with constant folding where the result of the Index()
9477operator can not be considered a constant. This means that Index() cannot
9478be
9479a type3 opcode and this will require an update to the ACPI specification.
9480
9481Disassembler: Implemented support for the TTP, MTP, and TRS resource
9482descriptor fields. These fields were inadvertently ignored and not output
9483in
9484the disassembly of the resource descriptor.
9485
9486
9487 ----------------------------------------
948811 February 2005.  Summary of changes for version 20050211:
9489
94901) ACPI CA Core Subsystem:
9491
9492Implemented ACPI 3.0 support for implicit conversion within the Match()
9493operator. MatchObjects can now be of type integer, buffer, or string
9494instead
9495of just type integer.  Package elements are implicitly converted to the
9496type
9497of the MatchObject. This change aligns the behavior of Match() with the
9498behavior of the other logical operators (LLess(), etc.) It also requires
9499an
9500errata change to the ACPI specification as this support was intended for
9501ACPI 3.0, but was inadvertently omitted.
9502
9503Fixed a problem with the internal implicit "to buffer" conversion.
9504Strings
9505that are converted to buffers will cause buffer truncation if the string
9506is
9507smaller than the target buffer. Integers that are converted to buffers
9508will
9509not cause buffer truncation, only zero extension (both as per the ACPI
9510spec.) The problem was introduced when code was added to truncate the
9511buffer, but this should not be performed in all cases, only the string
9512case.
9513
9514Fixed a problem with the Buffer and Package operators where the
9515interpreter
9516would get confused if two such operators were used as operands to an ASL
9517operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
9518stack was not being popped after the execution of these operators,
9519resulting
9520in an AE_NO_RETURN_VALUE exception.
9521
9522Fixed a problem with constructs of the form Store(Index(...),...). The
9523reference object returned from Index was inadvertently resolved to an
9524actual
9525value. This problem was introduced in version 20050114 when the behavior
9526of
9527Store() was modified to restrict the object types that can be used as the
9528source operand (to match the ACPI specification.)
9529
9530Reduced excessive stack use within the AcpiGetObjectInfo procedure.
9531
9532Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
9533
9534Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
9535
9536Code and Data Size: Current and previous core subsystem library sizes are
9537shown below. These are the code and data sizes for the acpica.lib
9538produced
9539by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9540any ACPI driver or OSPM code. The debug version of the code includes the
9541debug output trace mechanism and has a much larger code and data size.
9542Note
9543that these values will vary depending on the efficiency of the compiler
9544and
9545the compiler options used during generation.
9546
9547  Previous Release:
9548    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
9549    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
9550  Current Release:
9551    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9552    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9553
9554
95552) iASL Compiler/Disassembler:
9556
9557Fixed a code generation problem in the constant folding optimization code
9558where incorrect code was generated if a constant was reduced to a buffer
9559object (i.e., a reduced type 5 opcode.)
9560
9561Fixed a typechecking problem for the ToBuffer operator. Caused by an
9562incorrect return type in the internal opcode information table.
9563
9564----------------------------------------
956525 January 2005.  Summary of changes for version 20050125:
9566
95671) ACPI CA Core Subsystem:
9568
9569Fixed a recently introduced problem with the Global Lock where the
9570underlying semaphore was not created.  This problem was introduced in
9571version 20050114, and caused an AE_AML_NO_OPERAND exception during an
9572Acquire() operation on _GL.
9573
9574The local object cache is now optional, and is disabled by default. Both
9575AcpiExec and the iASL compiler enable the cache because they run in user
9576mode and this enhances their performance. #define
9577ACPI_ENABLE_OBJECT_CACHE
9578to enable the local cache.
9579
9580Fixed an issue in the internal function AcpiUtEvaluateObject concerning
9581the
9582optional "implicit return" support where an error was returned if no
9583return
9584object was expected, but one was implicitly returned. AE_OK is now
9585returned
9586in this case and the implicitly returned object is deleted.
9587AcpiUtEvaluateObject is only occasionally used, and only to execute
9588reserved
9589methods such as _STA and _INI where the return type is known up front.
9590
9591Fixed a few issues with the internal convert-to-integer code. It now
9592returns
9593an error if an attempt is made to convert a null string, a string of only
9594blanks/tabs, or a zero-length buffer. This affects both implicit
9595conversion
9596and explicit conversion via the ToInteger() operator.
9597
9598The internal debug code in AcpiUtAcquireMutex has been commented out. It
9599is
9600not needed for normal operation and should increase the performance of
9601the
9602entire subsystem. The code remains in case it is needed for debug
9603purposes
9604again.
9605
9606The AcpiExec source and makefile are included in the Unix/Linux package
9607for
9608the first time.
9609
9610Code and Data Size: Current and previous core subsystem library sizes are
9611shown below. These are the code and data sizes for the acpica.lib
9612produced
9613by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9614any ACPI driver or OSPM code. The debug version of the code includes the
9615debug output trace mechanism and has a much larger code and data size.
9616Note
9617that these values will vary depending on the efficiency of the compiler
9618and
9619the compiler options used during generation.
9620
9621  Previous Release:
9622    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9623    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9624  Current Release:
9625    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
9626    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
9627
96282) iASL Compiler/Disassembler:
9629
9630Switch/Case support: A warning is now issued if the type of the Switch
9631value
9632cannot be determined at compile time. For example, Switch(Arg0) will
9633generate the warning, and the type is assumed to be an integer. As per
9634the
9635ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
9636the
9637warning.
9638
9639Switch/Case support: Implemented support for buffer and string objects as
9640the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
9641buffers and strings.
9642
9643Switch/Case support: The emitted code for the LEqual() comparisons now
9644uses
9645the switch value as the first operand, not the second. The case value is
9646now
9647the second operand, and this allows the case value to be implicitly
9648converted to the type of the switch value, not the other way around.
9649
9650Switch/Case support: Temporary variables are now emitted immediately
9651within
9652the control method, not at the global level. This means that there are
9653now
965436 temps available per-method, not 36 temps per-module as was the case
9655with
9656the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
9657
9658----------------------------------------
965914 January 2005.  Summary of changes for version 20050114:
9660
9661Added 2005 copyright to all module headers.  This affects every module in
9662the core subsystem, iASL compiler, and the utilities.
9663
96641) ACPI CA Core Subsystem:
9665
9666Fixed an issue with the String-to-Buffer conversion code where the string
9667null terminator was not included in the buffer after conversion, but
9668there
9669is existing ASL that assumes the string null terminator is included. This
9670is
9671the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
9672introduced in the previous version when the code was updated to correctly
9673set the converted buffer size as per the ACPI specification. The ACPI
9674spec
9675is ambiguous and will be updated to specify that the null terminator must
9676be
9677included in the converted buffer. This also affects the ToBuffer() ASL
9678operator.
9679
9680Fixed a problem with the Mid() ASL/AML operator where it did not work
9681correctly on Buffer objects. Newly created sub-buffers were not being
9682marked
9683as initialized.
9684
9685
9686Fixed a problem in AcpiTbFindTable where incorrect string compares were
9687performed on the OemId and OemTableId table header fields.  These fields
9688are
9689not null terminated, so strncmp is now used instead of strcmp.
9690
9691Implemented a restriction on the Store() ASL/AML operator to align the
9692behavior with the ACPI specification.  Previously, any object could be
9693used
9694as the source operand.  Now, the only objects that may be used are
9695Integers,
9696Buffers, Strings, Packages, Object References, and DDB Handles.  If
9697necessary, the original behavior can be restored by enabling the
9698EnableInterpreterSlack flag.
9699
9700Enhanced the optional "implicit return" support to allow an implicit
9701return
9702value from methods that are invoked externally via the AcpiEvaluateObject
9703interface.  This enables implicit returns from the _STA and _INI methods,
9704for example.
9705
9706Changed the Revision() ASL/AML operator to return the current version of
9707the
9708AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
9709returned
9710the supported ACPI version (This is the function of the _REV method).
9711
9712Updated the _REV predefined method to return the currently supported
9713version
9714of ACPI, now 3.
9715
9716Implemented batch mode option for the AcpiExec utility (-b).
9717
9718Code and Data Size: Current and previous core subsystem library sizes are
9719shown below. These are the code and data sizes for the acpica.lib
9720produced
9721by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9722any ACPI driver or OSPM code. The debug version of the code includes the
9723debug output trace mechanism and has a much larger code and data size.
9724Note
9725that these values will vary depending on the efficiency of the compiler
9726and
9727the compiler options used during generation.
9728
9729  Previous Release:
9730    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9731    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9732  Current Release:
9733    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9734    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9735
9736----------------------------------------
973710 December 2004.  Summary of changes for version 20041210:
9738
9739ACPI 3.0 support is nearing completion in both the iASL compiler and the
9740ACPI CA core subsystem.
9741
97421) ACPI CA Core Subsystem:
9743
9744Fixed a problem in the ToDecimalString operator where the resulting
9745string
9746length was incorrectly calculated. The length is now calculated exactly,
9747eliminating incorrect AE_STRING_LIMIT exceptions.
9748
9749Fixed a problem in the ToHexString operator to allow a maximum 200
9750character
9751string to be produced.
9752
9753Fixed a problem in the internal string-to-buffer and buffer-to-buffer
9754copy
9755routine where the length of the resulting buffer was not truncated to the
9756new size (if the target buffer already existed).
9757
9758Code and Data Size: Current and previous core subsystem library sizes are
9759shown below. These are the code and data sizes for the acpica.lib
9760produced
9761by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9762any ACPI driver or OSPM code. The debug version of the code includes the
9763debug output trace mechanism and has a much larger code and data size.
9764Note
9765that these values will vary depending on the efficiency of the compiler
9766and
9767the compiler options used during generation.
9768
9769  Previous Release:
9770    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9771    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
9772  Current Release:
9773    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9774    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9775
9776
97772) iASL Compiler/Disassembler:
9778
9779Implemented the new ACPI 3.0 resource template macros - DWordSpace,
9780ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
9781Includes support in the disassembler.
9782
9783Implemented support for the new (ACPI 3.0) parameter to the Register
9784macro,
9785AccessSize.
9786
9787Fixed a problem where the _HE resource name for the Interrupt macro was
9788referencing bit 0 instead of bit 1.
9789
9790Implemented check for maximum 255 interrupts in the Interrupt macro.
9791
9792Fixed a problem with the predefined resource descriptor names where
9793incorrect AML code was generated if the offset within the resource buffer
9794was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
9795but did not update the surrounding package lengths.
9796
9797Changes to the Dma macro:  All channels within the channel list must be
9798in
9799the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
9800optional (default is BusMaster).
9801
9802Implemented check for maximum 7 data bytes for the VendorShort macro.
9803
9804The ReadWrite parameter is now optional for the Memory32 and similar
9805macros.
9806
9807----------------------------------------
980803 December 2004.  Summary of changes for version 20041203:
9809
98101) ACPI CA Core Subsystem:
9811
9812The low-level field insertion/extraction code (exfldio) has been
9813completely
9814rewritten to eliminate unnecessary complexity, bugs, and boundary
9815conditions.
9816
9817Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
9818ToDecimalString
9819operators where the input operand could be inadvertently deleted if no
9820conversion was necessary (e.g., if the input to ToInteger was an Integer
9821object.)
9822
9823Fixed a problem with the ToDecimalString and ToHexString where an
9824incorrect
9825exception code was returned if the resulting string would be > 200 chars.
9826AE_STRING_LIMIT is now returned.
9827
9828Fixed a problem with the Concatenate operator where AE_OK was always
9829returned, even if the operation failed.
9830
9831Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
9832semaphores to be allocated.
9833
9834Code and Data Size: Current and previous core subsystem library sizes are
9835shown below. These are the code and data sizes for the acpica.lib
9836produced
9837by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9838any ACPI driver or OSPM code. The debug version of the code includes the
9839debug output trace mechanism and has a much larger code and data size.
9840Note
9841that these values will vary depending on the efficiency of the compiler
9842and
9843the compiler options used during generation.
9844
9845  Previous Release:
9846    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9847    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9848  Current Release:
9849    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9850    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
9851
9852
98532) iASL Compiler/Disassembler:
9854
9855Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
9856recently introduced in 20041119.
9857
9858Fixed a problem with the ToUUID macro where the upper nybble of each
9859buffer
9860byte was inadvertently set to zero.
9861
9862----------------------------------------
986319 November 2004.  Summary of changes for version 20041119:
9864
98651) ACPI CA Core Subsystem:
9866
9867Fixed a problem in the internal ConvertToInteger routine where new
9868integers
9869were not truncated to 32 bits for 32-bit ACPI tables. This routine
9870converts
9871buffers and strings to integers.
9872
9873Implemented support to store a value to an Index() on a String object.
9874This
9875is an ACPI 2.0 feature that had not yet been implemented.
9876
9877Implemented new behavior for storing objects to individual package
9878elements
9879(via the Index() operator). The previous behavior was to invoke the
9880implicit
9881conversion rules if an object was already present at the index.  The new
9882behavior is to simply delete any existing object and directly store the
9883new
9884object. Although the ACPI specification seems unclear on this subject,
9885other
9886ACPI implementations behave in this manner.  (This is the root of the
9887AE_BAD_HEX_CONSTANT issue.)
9888
9889Modified the RSDP memory scan mechanism to support the extended checksum
9890for
9891ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
9892RSDP signature is found with a valid checksum.
9893
9894Code and Data Size: Current and previous core subsystem library sizes are
9895shown below. These are the code and data sizes for the acpica.lib
9896produced
9897by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9898any ACPI driver or OSPM code. The debug version of the code includes the
9899debug output trace mechanism and has a much larger code and data size.
9900Note
9901that these values will vary depending on the efficiency of the compiler
9902and
9903the compiler options used during generation.
9904
9905  Previous Release:
9906    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9907    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9908  Current Release:
9909    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9910    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9911
9912
99132) iASL Compiler/Disassembler:
9914
9915Fixed a missing semicolon in the aslcompiler.y file.
9916
9917----------------------------------------
991805 November 2004.  Summary of changes for version 20041105:
9919
99201) ACPI CA Core Subsystem:
9921
9922Implemented support for FADT revision 2.  This was an interim table
9923(between
9924ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
9925
9926Implemented optional support to allow uninitialized LocalX and ArgX
9927variables in a control method.  The variables are initialized to an
9928Integer
9929object with a value of zero.  This support is enabled by setting the
9930AcpiGbl_EnableInterpreterSlack flag to TRUE.
9931
9932Implemented support for Integer objects for the SizeOf operator.  Either
99334
9934or 8 is returned, depending on the current integer size (32-bit or 64-
9935bit,
9936depending on the parent table revision).
9937
9938Fixed a problem in the implementation of the SizeOf and ObjectType
9939operators
9940where the operand was resolved to a value too early, causing incorrect
9941return values for some objects.
9942
9943Fixed some possible memory leaks during exceptional conditions.
9944
9945Code and Data Size: Current and previous core subsystem library sizes are
9946shown below. These are the code and data sizes for the acpica.lib
9947produced
9948by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9949any ACPI driver or OSPM code. The debug version of the code includes the
9950debug output trace mechanism and has a much larger code and data size.
9951Note
9952that these values will vary depending on the efficiency of the compiler
9953and
9954the compiler options used during generation.
9955
9956  Previous Release:
9957    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
9958    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
9959  Current Release:
9960    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9961    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9962
9963
99642) iASL Compiler/Disassembler:
9965
9966Implemented support for all ACPI 3.0 reserved names and methods.
9967
9968Implemented all ACPI 3.0 grammar elements in the front-end, including
9969support for semicolons.
9970
9971Implemented the ACPI 3.0 Function() and ToUUID() macros
9972
9973Fixed a problem in the disassembler where a Scope() operator would not be
9974emitted properly if the target of the scope was in another table.
9975
9976----------------------------------------
997715 October 2004.  Summary of changes for version 20041015:
9978
9979Note:  ACPI CA is currently undergoing an in-depth and complete formal
9980evaluation to test/verify the following areas. Other suggestions are
9981welcome. This will result in an increase in the frequency of releases and
9982the number of bug fixes in the next few months.
9983  - Functional tests for all ASL/AML operators
9984  - All implicit/explicit type conversions
9985  - Bit fields and operation regions
9986  - 64-bit math support and 32-bit-only "truncated" math support
9987  - Exceptional conditions, both compiler and interpreter
9988  - Dynamic object deletion and memory leaks
9989  - ACPI 3.0 support when implemented
9990  - External interfaces to the ACPI subsystem
9991
9992
99931) ACPI CA Core Subsystem:
9994
9995Fixed two alignment issues on 64-bit platforms - within debug statements
9996in
9997AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
9998Address
9999field within the non-aligned ACPI generic address structure.
10000
10001Fixed a problem in the Increment and Decrement operators where incorrect
10002operand resolution could result in the inadvertent modification of the
10003original integer when the integer is passed into another method as an
10004argument and the arg is then incremented/decremented.
10005
10006Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10007bit
10008BCD number were truncated during conversion.
10009
10010Fixed a problem in the ToDecimal operator where the length of the
10011resulting
10012string could be set incorrectly too long if the input operand was a
10013Buffer
10014object.
10015
10016Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
10017(0)
10018within a buffer would prematurely terminate a compare between buffer
10019objects.
10020
10021Added a check for string overflow (>200 characters as per the ACPI
10022specification) during the Concatenate operator with two string operands.
10023
10024Code and Data Size: Current and previous core subsystem library sizes are
10025shown below. These are the code and data sizes for the acpica.lib
10026produced
10027by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10028any ACPI driver or OSPM code. The debug version of the code includes the
10029debug output trace mechanism and has a much larger code and data size.
10030Note
10031that these values will vary depending on the efficiency of the compiler
10032and
10033the compiler options used during generation.
10034
10035  Previous Release:
10036    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10037    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10038  Current Release:
10039    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10040    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10041
10042
10043
100442) iASL Compiler/Disassembler:
10045
10046Allow the use of the ObjectType operator on uninitialized Locals and Args
10047(returns 0 as per the ACPI specification).
10048
10049Fixed a problem where the compiler would fault if there was a syntax
10050error
10051in the FieldName of all of the various CreateXXXField operators.
10052
10053Disallow the use of lower case letters within the EISAID macro, as per
10054the
10055ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
10056Where
10057U is an uppercase letter and N is a hex digit.
10058
10059
10060----------------------------------------
1006106 October 2004.  Summary of changes for version 20041006:
10062
100631) ACPI CA Core Subsystem:
10064
10065Implemented support for the ACPI 3.0 Timer operator. This ASL function
10066implements a 64-bit timer with 100 nanosecond granularity.
10067
10068Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
10069implement the ACPI 3.0 Timer operator.  This allows the host OS to
10070implement
10071the timer with the best clock available. Also, it keeps the core
10072subsystem
10073out of the clock handling business, since the host OS (usually) performs
10074this function.
10075
10076Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
10077functions use a 64-bit address which is part of the packed ACPI Generic
10078Address Structure. Since the structure is non-aligned, the alignment
10079macros
10080are now used to extract the address to a local variable before use.
10081
10082Fixed a problem where the ToInteger operator assumed all input strings
10083were
10084hexadecimal. The operator now handles both decimal strings and hex
10085strings
10086(prefixed with "0x").
10087
10088Fixed a problem where the string length in the string object created as a
10089result of the internal ConvertToString procedure could be incorrect. This
10090potentially affected all implicit conversions and also the
10091ToDecimalString
10092and ToHexString operators.
10093
10094Fixed two problems in the ToString operator. If the length parameter was
10095zero, an incorrect string object was created and the value of the input
10096length parameter was inadvertently changed from zero to Ones.
10097
10098Fixed a problem where the optional ResourceSource string in the
10099ExtendedIRQ
10100resource macro was ignored.
10101
10102Simplified the interfaces to the internal division functions, reducing
10103code
10104size and complexity.
10105
10106Code and Data Size: Current and previous core subsystem library sizes are
10107shown below. These are the code and data sizes for the acpica.lib
10108produced
10109by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10110any ACPI driver or OSPM code. The debug version of the code includes the
10111debug output trace mechanism and has a much larger code and data size.
10112Note
10113that these values will vary depending on the efficiency of the compiler
10114and
10115the compiler options used during generation.
10116
10117  Previous Release:
10118    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10119    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10120  Current Release:
10121    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10122    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10123
10124
101252) iASL Compiler/Disassembler:
10126
10127Implemented support for the ACPI 3.0 Timer operator.
10128
10129Fixed a problem where the Default() operator was inadvertently ignored in
10130a
10131Switch/Case block.  This was a problem in the translation of the Switch
10132statement to If...Else pairs.
10133
10134Added support to allow a standalone Return operator, with no parentheses
10135(or
10136operands).
10137
10138Fixed a problem with code generation for the ElseIf operator where the
10139translated Else...If parse tree was improperly constructed leading to the
10140loss of some code.
10141
10142----------------------------------------
1014322 September 2004.  Summary of changes for version 20040922:
10144
101451) ACPI CA Core Subsystem:
10146
10147Fixed a problem with the implementation of the LNot() operator where
10148"Ones"
10149was not returned for the TRUE case. Changed the code to return Ones
10150instead
10151of (!Arg) which was usually 1. This change affects iASL constant folding
10152for
10153this operator also.
10154
10155Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
10156not
10157initialized properly -- Now zero the entire buffer in this case where the
10158buffer already exists.
10159
10160Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
10161Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
10162related code considerably. This will require changes/updates to all OS
10163interface layers (OSLs.)
10164
10165Implemented a new external interface, AcpiInstallExceptionHandler, to
10166allow
10167a system exception handler to be installed. This handler is invoked upon
10168any
10169run-time exception that occurs during control method execution.
10170
10171Added support for the DSDT in AcpiTbFindTable. This allows the
10172DataTableRegion() operator to access the local copy of the DSDT.
10173
10174Code and Data Size: Current and previous core subsystem library sizes are
10175shown below. These are the code and data sizes for the acpica.lib
10176produced
10177by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10178any ACPI driver or OSPM code. The debug version of the code includes the
10179debug output trace mechanism and has a much larger code and data size.
10180Note
10181that these values will vary depending on the efficiency of the compiler
10182and
10183the compiler options used during generation.
10184
10185  Previous Release:
10186    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10187    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10188  Current Release:
10189    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10190    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10191
10192
101932) iASL Compiler/Disassembler:
10194
10195Fixed a problem with constant folding and the LNot operator. LNot was
10196returning 1 in the TRUE case, not Ones as per the ACPI specification.
10197This
10198could result in the generation of an incorrect folded/reduced constant.
10199
10200End-Of-File is now allowed within a "//"-style comment.  A parse error no
10201longer occurs if such a comment is at the very end of the input ASL
10202source
10203file.
10204
10205Implemented the "-r" option to override the Revision in the table header.
10206The initial use of this option will be to simplify the evaluation of the
10207AML
10208interpreter by allowing a single ASL source module to be compiled for
10209either
1021032-bit or 64-bit integers.
10211
10212
10213----------------------------------------
1021427 August 2004.  Summary of changes for version 20040827:
10215
102161) ACPI CA Core Subsystem:
10217
10218- Implemented support for implicit object conversion in the non-numeric
10219logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
10220and
10221LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
10222the second operand is implicitly converted on the fly to match the type
10223of
10224the first operand.  For example:
10225
10226    LEqual (Source1, Source2)
10227
10228Source1 and Source2 must each evaluate to an integer, a string, or a
10229buffer.
10230The data type of Source1 dictates the required type of Source2. Source2
10231is
10232implicitly converted if necessary to match the type of Source1.
10233
10234- Updated and corrected the behavior of the string conversion support.
10235The
10236rules concerning conversion of buffers to strings (according to the ACPI
10237specification) are as follows:
10238
10239ToDecimalString - explicit byte-wise conversion of buffer to string of
10240decimal values (0-255) separated by commas. ToHexString - explicit byte-
10241wise
10242conversion of buffer to string of hex values (0-FF) separated by commas.
10243ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
10244byte
10245copy with no transform except NULL terminated. Any other implicit buffer-
10246to-
10247string conversion - byte-wise conversion of buffer to string of hex
10248values
10249(0-FF) separated by spaces.
10250
10251- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
10252
10253- Fixed a problem in AcpiNsGetPathnameLength where the returned length
10254was
10255one byte too short in the case of a node in the root scope.  This could
10256cause a fault during debug output.
10257
10258- Code and Data Size: Current and previous core subsystem library sizes
10259are
10260shown below.  These are the code and data sizes for the acpica.lib
10261produced
10262by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10263any ACPI driver or OSPM code.  The debug version of the code includes the
10264debug output trace mechanism and has a much larger code and data size.
10265Note
10266that these values will vary depending on the efficiency of the compiler
10267and
10268the compiler options used during generation.
10269
10270  Previous Release:
10271    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10272    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10273  Current Release:
10274    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10275    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10276
10277
102782) iASL Compiler/Disassembler:
10279
10280- Fixed a Linux generation error.
10281
10282
10283----------------------------------------
1028416 August 2004.  Summary of changes for version 20040816:
10285
102861) ACPI CA Core Subsystem:
10287
10288Designed and implemented support within the AML interpreter for the so-
10289called "implicit return".  This support returns the result of the last
10290ASL
10291operation within a control method, in the absence of an explicit Return()
10292operator.  A few machines depend on this behavior, even though it is not
10293explicitly supported by the ASL language.  It is optional support that
10294can
10295be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
10296
10297Removed support for the PCI_Config address space from the internal low
10298level
10299hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
10300support was not used internally, and would not work correctly anyway
10301because
10302the PCI bus number and segment number were not supported.  There are
10303separate interfaces for PCI configuration space access because of the
10304unique
10305interface.
10306
10307Code and Data Size: Current and previous core subsystem library sizes are
10308shown below.  These are the code and data sizes for the acpica.lib
10309produced
10310by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10311any ACPI driver or OSPM code.  The debug version of the code includes the
10312debug output trace mechanism and has a much larger code and data size.
10313Note
10314that these values will vary depending on the efficiency of the compiler
10315and
10316the compiler options used during generation.
10317
10318  Previous Release:
10319    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10320    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10321  Current Release:
10322    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10323    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10324
10325
103262) iASL Compiler/Disassembler:
10327
10328Fixed a problem where constants in ASL expressions at the root level (not
10329within a control method) could be inadvertently truncated during code
10330generation.  This problem was introduced in the 20040715 release.
10331
10332
10333----------------------------------------
1033415 July 2004.  Summary of changes for version 20040715:
10335
103361) ACPI CA Core Subsystem:
10337
10338Restructured the internal HW GPE interfaces to pass/track the current
10339state
10340of interrupts (enabled/disabled) in order to avoid possible deadlock and
10341increase flexibility of the interfaces.
10342
10343Implemented a "lexicographical compare" for String and Buffer objects
10344within
10345the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
10346-
10347as per further clarification to the ACPI specification.  Behavior is
10348similar
10349to C library "strcmp".
10350
10351Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
10352external function.  In the 32-bit non-debug case, the stack use has been
10353reduced from 168 bytes to 32 bytes.
10354
10355Deployed a new run-time configuration flag,
10356AcpiGbl_EnableInterpreterSlack,
10357whose purpose is to allow the AML interpreter to forgive certain bad AML
10358constructs.  Default setting is FALSE.
10359
10360Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
10361IO
10362support code.  If enabled, it allows field access to go beyond the end of
10363a
10364region definition if the field is within the region length rounded up to
10365the
10366next access width boundary (a common coding error.)
10367
10368Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
10369ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
10370these
10371symbols are lowercased by the latest version of the AcpiSrc tool.
10372
10373The prototypes for the PCI interfaces in acpiosxf.h have been updated to
10374rename "Register" to simply "Reg" to prevent certain compilers from
10375complaining.
10376
10377Code and Data Size: Current and previous core subsystem library sizes are
10378shown below.  These are the code and data sizes for the acpica.lib
10379produced
10380by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10381any ACPI driver or OSPM code.  The debug version of the code includes the
10382debug output trace mechanism and has a much larger code and data size.
10383Note
10384that these values will vary depending on the efficiency of the compiler
10385and
10386the compiler options used during generation.
10387
10388  Previous Release:
10389    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10390    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10391  Current Release:
10392    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10393    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10394
10395
103962) iASL Compiler/Disassembler:
10397
10398Implemented full support for Package objects within the Case() operator.
10399Note: The Break() operator is currently not supported within Case blocks
10400(TermLists) as there is some question about backward compatibility with
10401ACPI
104021.0 interpreters.
10403
10404
10405Fixed a problem where complex terms were not supported properly within
10406the
10407Switch() operator.
10408
10409Eliminated extraneous warning for compiler-emitted reserved names of the
10410form "_T_x".  (Used in Switch/Case operators.)
10411
10412Eliminated optimization messages for "_T_x" objects and small constants
10413within the DefinitionBlock operator.
10414
10415
10416----------------------------------------
1041715 June 2004.  Summary of changes for version 20040615:
10418
104191) ACPI CA Core Subsystem:
10420
10421Implemented support for Buffer and String objects (as per ACPI 2.0) for
10422the
10423following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10424LLessEqual.
10425
10426All directory names in the entire source package are lower case, as they
10427were in earlier releases.
10428
10429Implemented "Disassemble" command in the AML debugger that will
10430disassemble
10431a single control method.
10432
10433Code and Data Size: Current and previous core subsystem library sizes are
10434shown below.  These are the code and data sizes for the acpica.lib
10435produced
10436by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10437any ACPI driver or OSPM code.  The debug version of the code includes the
10438debug output trace mechanism and has a much larger code and data size.
10439Note
10440that these values will vary depending on the efficiency of the compiler
10441and
10442the compiler options used during generation.
10443
10444  Previous Release:
10445    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10446    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10447
10448  Current Release:
10449    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10450    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10451
10452
104532) iASL Compiler/Disassembler:
10454
10455Implemented support for Buffer and String objects (as per ACPI 2.0) for
10456the
10457following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10458LLessEqual.
10459
10460All directory names in the entire source package are lower case, as they
10461were in earlier releases.
10462
10463Fixed a fault when using the -g or -d<nofilename> options if the FADT was
10464not found.
10465
10466Fixed an issue with the Windows version of the compiler where later
10467versions
10468of Windows place the FADT in the registry under the name "FADT" and not
10469"FACP" as earlier versions did.  This applies when using the -g or -
10470d<nofilename> options.  The compiler now looks for both strings as
10471necessary.
10472
10473Fixed a problem with compiler namepath optimization where a namepath
10474within
10475the Scope() operator could not be optimized if the namepath was a subpath
10476of
10477the current scope path.
10478
10479----------------------------------------
1048027 May 2004.  Summary of changes for version 20040527:
10481
104821) ACPI CA Core Subsystem:
10483
10484Completed a new design and implementation for EBDA (Extended BIOS Data
10485Area)
10486support in the RSDP scan code.  The original code improperly scanned for
10487the
10488EBDA by simply scanning from memory location 0 to 0x400.  The correct
10489method
10490is to first obtain the EBDA pointer from within the BIOS data area, then
10491scan 1K of memory starting at the EBDA pointer.  There appear to be few
10492if
10493any machines that place the RSDP in the EBDA, however.
10494
10495Integrated a fix for a possible fault during evaluation of BufferField
10496arguments.  Obsolete code that was causing the problem was removed.
10497
10498Found and fixed a problem in the Field Support Code where data could be
10499corrupted on a bit field read that starts on an aligned boundary but does
10500not end on an aligned boundary.  Merged the read/write "datum length"
10501calculation code into a common procedure.
10502
10503Rolled in a couple of changes to the FreeBSD-specific header.
10504
10505
10506Code and Data Size: Current and previous core subsystem library sizes are
10507shown below.  These are the code and data sizes for the acpica.lib
10508produced
10509by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10510any ACPI driver or OSPM code.  The debug version of the code includes the
10511debug output trace mechanism and has a much larger code and data size.
10512Note
10513that these values will vary depending on the efficiency of the compiler
10514and
10515the compiler options used during generation.
10516
10517  Previous Release:
10518    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10519    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10520  Current Release:
10521    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10522    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10523
10524
105252) iASL Compiler/Disassembler:
10526
10527Fixed a generation warning produced by some overly-verbose compilers for
10528a
1052964-bit constant.
10530
10531----------------------------------------
1053214 May 2004.  Summary of changes for version 20040514:
10533
105341) ACPI CA Core Subsystem:
10535
10536Fixed a problem where hardware GPE enable bits sometimes not set properly
10537during and after GPE method execution.  Result of 04/27 changes.
10538
10539Removed extra "clear all GPEs" when sleeping/waking.
10540
10541Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
10542AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
10543to
10544the new AcpiEv* calls as appropriate.
10545
10546ACPI_OS_NAME was removed from the OS-specific headers.  The default name
10547is
10548now "Microsoft Windows NT" for maximum compatibility.  However this can
10549be
10550changed by modifying the acconfig.h file.
10551
10552Allow a single invocation of AcpiInstallNotifyHandler for a handler that
10553traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
10554
10555Run _INI methods on ThermalZone objects.  This is against the ACPI
10556specification, but there is apparently ASL code in the field that has
10557these
10558_INI methods, and apparently "other" AML interpreters execute them.
10559
10560Performed a full 16/32/64 bit lint that resulted in some small changes.
10561
10562Added a sleep simulation command to the AML debugger to test sleep code.
10563
10564Code and Data Size: Current and previous core subsystem library sizes are
10565shown below.  These are the code and data sizes for the acpica.lib
10566produced
10567by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10568any ACPI driver or OSPM code.  The debug version of the code includes the
10569debug output trace mechanism and has a much larger code and data size.
10570Note
10571that these values will vary depending on the efficiency of the compiler
10572and
10573the compiler options used during generation.
10574
10575  Previous Release:
10576    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10577    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10578  Current Release:
10579    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10580    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10581
10582----------------------------------------
1058327 April 2004.  Summary of changes for version 20040427:
10584
105851) ACPI CA Core Subsystem:
10586
10587Completed a major overhaul of the GPE handling within ACPI CA.  There are
10588now three types of GPEs:  wake-only, runtime-only, and combination
10589wake/run.
10590The only GPEs allowed to be combination wake/run are for button-style
10591devices such as a control-method power button, control-method sleep
10592button,
10593or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
10594not
10595referenced by any _PRW methods are marked for "runtime" and hardware
10596enabled.  Any GPE that is referenced by a _PRW method is marked for
10597"wake"
10598(and disabled at runtime).  However, at sleep time, only those GPEs that
10599have been specifically enabled for wake via the AcpiEnableGpe interface
10600will
10601actually be hardware enabled.
10602
10603A new external interface has been added, AcpiSetGpeType(), that is meant
10604to
10605be used by device drivers to force a GPE to a particular type.  It will
10606be
10607especially useful for the drivers for the button devices mentioned above.
10608
10609Completed restructuring of the ACPI CA initialization sequence so that
10610default operation region handlers are installed before GPEs are
10611initialized
10612and the _PRW methods are executed.  This will prevent errors when the
10613_PRW
10614methods attempt to access system memory or I/O space.
10615
10616GPE enable/disable no longer reads the GPE enable register.  We now keep
10617the
10618enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
10619thus no longer depend on the hardware to maintain these bits.
10620
10621Always clear the wake status and fixed/GPE status bits before sleep, even
10622for state S5.
10623
10624Improved the AML debugger output for displaying the GPE blocks and their
10625current status.
10626
10627Added new strings for the _OSI method, of the form "Windows 2001 SPx"
10628where
10629x = 0,1,2,3,4.
10630
10631Fixed a problem where the physical address was incorrectly calculated
10632when
10633the Load() operator was used to directly load from an Operation Region
10634(vs.
10635loading from a Field object.)  Also added check for minimum table length
10636for
10637this case.
10638
10639Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
10640mutex release.
10641
10642Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
10643consistency with the other fields returned.
10644
10645Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
10646structure for each GPE in the system, so the size of this structure is
10647important.
10648
10649CPU stack requirement reduction:  Cleaned up the method execution and
10650object
10651evaluation paths so that now a parameter structure is passed, instead of
10652copying the various method parameters over and over again.
10653
10654In evregion.c:  Correctly exit and reenter the interpreter region if and
10655only if dispatching an operation region request to a user-installed
10656handler.
10657Do not exit/reenter when dispatching to a default handler (e.g., default
10658system memory or I/O handlers)
10659
10660
10661Notes for updating drivers for the new GPE support.  The following
10662changes
10663must be made to ACPI-related device drivers that are attached to one or
10664more
10665GPEs: (This information will be added to the ACPI CA Programmer
10666Reference.)
10667
106681) AcpiInstallGpeHandler no longer automatically enables the GPE, you
10669must
10670explicitly call AcpiEnableGpe.
106712) There is a new interface called AcpiSetGpeType. This should be called
10672before enabling the GPE.  Also, this interface will automatically disable
10673the GPE if it is currently enabled.
106743) AcpiEnableGpe no longer supports a GPE type flag.
10675
10676Specific drivers that must be changed:
106771) EC driver:
10678    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
10679AeGpeHandler, NULL);
10680    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
10681    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
10682
106832) Button Drivers (Power, Lid, Sleep):
10684Run _PRW method under parent device
10685If _PRW exists: /* This is a control-method button */
10686    Extract GPE number and possibly GpeDevice
10687    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
10688    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
10689
10690For all other devices that have _PRWs, we automatically set the GPE type
10691to
10692ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
10693This
10694must be done on a selective basis, usually requiring some kind of user
10695app
10696to allow the user to pick the wake devices.
10697
10698
10699Code and Data Size: Current and previous core subsystem library sizes are
10700shown below.  These are the code and data sizes for the acpica.lib
10701produced
10702by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10703any ACPI driver or OSPM code.  The debug version of the code includes the
10704debug output trace mechanism and has a much larger code and data size.
10705Note
10706that these values will vary depending on the efficiency of the compiler
10707and
10708the compiler options used during generation.
10709
10710  Previous Release:
10711    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10712    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10713  Current Release:
10714
10715    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10716    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10717
10718
10719
10720----------------------------------------
1072102 April 2004.  Summary of changes for version 20040402:
10722
107231) ACPI CA Core Subsystem:
10724
10725Fixed an interpreter problem where an indirect store through an ArgX
10726parameter was incorrectly applying the "implicit conversion rules" during
10727the store.  From the ACPI specification: "If the target is a method local
10728or
10729argument (LocalX or ArgX), no conversion is performed and the result is
10730stored directly to the target".  The new behavior is to disable implicit
10731conversion during ALL stores to an ArgX.
10732
10733Changed the behavior of the _PRW method scan to ignore any and all errors
10734returned by a given _PRW.  This prevents the scan from aborting from the
10735failure of any single _PRW.
10736
10737Moved the runtime configuration parameters from the global init procedure
10738to
10739static variables in acglobal.h.  This will allow the host to override the
10740default values easily.
10741
10742Code and Data Size: Current and previous core subsystem library sizes are
10743shown below.  These are the code and data sizes for the acpica.lib
10744produced
10745by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10746any ACPI driver or OSPM code.  The debug version of the code includes the
10747debug output trace mechanism and has a much larger code and data size.
10748Note
10749that these values will vary depending on the efficiency of the compiler
10750and
10751the compiler options used during generation.
10752
10753  Previous Release:
10754    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
10755    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
10756  Current Release:
10757    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10758    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10759
10760
107612) iASL Compiler/Disassembler:
10762
10763iASL now fully disassembles SSDTs.  However, External() statements are
10764not
10765generated automatically for unresolved symbols at this time.  This is a
10766planned feature for future implementation.
10767
10768Fixed a scoping problem in the disassembler that occurs when the type of
10769the
10770target of a Scope() operator is overridden.  This problem caused an
10771incorrectly nested internal namespace to be constructed.
10772
10773Any warnings or errors that are emitted during disassembly are now
10774commented
10775out automatically so that the resulting file can be recompiled without
10776any
10777hand editing.
10778
10779----------------------------------------
1078026 March 2004.  Summary of changes for version 20040326:
10781
107821) ACPI CA Core Subsystem:
10783
10784Implemented support for "wake" GPEs via interaction between GPEs and the
10785_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
10786identified as a WAKE GPE and by default will no longer be enabled at
10787runtime.  Previously, we were blindly enabling all GPEs with a
10788corresponding
10789_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
10790We
10791believe this has been the cause of thousands of "spurious" GPEs on some
10792systems.
10793
10794This new GPE behavior is can be reverted to the original behavior (enable
10795ALL GPEs at runtime) via a runtime flag.
10796
10797Fixed a problem where aliased control methods could not access objects
10798properly.  The proper scope within the namespace was not initialized
10799(transferred to the target of the aliased method) before executing the
10800target method.
10801
10802Fixed a potential race condition on internal object deletion on the
10803return
10804object in AcpiEvaluateObject.
10805
10806Integrated a fix for resource descriptors where both _MEM and _MTP were
10807being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
10808wide, 0x0F instead of 0x03.)
10809
10810Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
10811preventing
10812a
10813fault in some cases.
10814
10815Updated Notify() values for debug statements in evmisc.c
10816
10817Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
10818
10819Code and Data Size: Current and previous core subsystem library sizes are
10820shown below.  These are the code and data sizes for the acpica.lib
10821produced
10822by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10823any ACPI driver or OSPM code.  The debug version of the code includes the
10824debug output trace mechanism and has a much larger code and data size.
10825Note
10826that these values will vary depending on the efficiency of the compiler
10827and
10828the compiler options used during generation.
10829
10830  Previous Release:
10831
10832    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
10833    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
10834  Current Release:
10835    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
10836    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
10837
10838----------------------------------------
1083911 March 2004.  Summary of changes for version 20040311:
10840
108411) ACPI CA Core Subsystem:
10842
10843Fixed a problem where errors occurring during the parse phase of control
10844method execution did not abort cleanly.  For example, objects created and
10845installed in the namespace were not deleted.  This caused all subsequent
10846invocations of the method to return the AE_ALREADY_EXISTS exception.
10847
10848Implemented a mechanism to force a control method to "Serialized"
10849execution
10850if the method attempts to create namespace objects. (The root of the
10851AE_ALREADY_EXISTS problem.)
10852
10853Implemented support for the predefined _OSI "internal" control method.
10854Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
10855and
10856"Windows 2001.1", and can be easily upgraded for new strings as
10857necessary.
10858This feature will allow "other" operating systems to execute the fully
10859tested, "Windows" code path through the ASL code
10860
10861Global Lock Support:  Now allows multiple acquires and releases with any
10862internal thread.  Removed concept of "owning thread" for this special
10863mutex.
10864
10865Fixed two functions that were inappropriately declaring large objects on
10866the
10867CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
10868during
10869method execution considerably.
10870
10871Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
10872S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
10873
10874Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
10875defined on the machine.
10876
10877Implemented two runtime options:  One to force all control method
10878execution
10879to "Serialized" to mimic Windows behavior, another to disable _OSI
10880support
10881if it causes problems on a given machine.
10882
10883Code and Data Size: Current and previous core subsystem library sizes are
10884shown below.  These are the code and data sizes for the acpica.lib
10885produced
10886by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10887any ACPI driver or OSPM code.  The debug version of the code includes the
10888debug output trace mechanism and has a much larger code and data size.
10889Note
10890that these values will vary depending on the efficiency of the compiler
10891and
10892the compiler options used during generation.
10893
10894  Previous Release:
10895    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
10896    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
10897  Current Release:
10898    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
10899    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
10900
109012) iASL Compiler/Disassembler:
10902
10903Fixed an array size problem for FreeBSD that would cause the compiler to
10904fault.
10905
10906----------------------------------------
1090720 February 2004.  Summary of changes for version 20040220:
10908
10909
109101) ACPI CA Core Subsystem:
10911
10912Implemented execution of _SxD methods for Device objects in the
10913GetObjectInfo interface.
10914
10915Fixed calls to _SST method to pass the correct arguments.
10916
10917Added a call to _SST on wake to restore to "working" state.
10918
10919Check for End-Of-Buffer failure case in the WalkResources interface.
10920
10921Integrated fix for 64-bit alignment issue in acglobal.h by moving two
10922structures to the beginning of the file.
10923
10924After wake, clear GPE status register(s) before enabling GPEs.
10925
10926After wake, clear/enable power button.  (Perhaps we should clear/enable
10927all
10928fixed events upon wake.)
10929
10930Fixed a couple of possible memory leaks in the Namespace manager.
10931
10932Integrated latest acnetbsd.h file.
10933
10934----------------------------------------
1093511 February 2004.  Summary of changes for version 20040211:
10936
10937
109381) ACPI CA Core Subsystem:
10939
10940Completed investigation and implementation of the call-by-reference
10941mechanism for control method arguments.
10942
10943Fixed a problem where a store of an object into an indexed package could
10944fail if the store occurs within a different method than the method that
10945created the package.
10946
10947Fixed a problem where the ToDecimal operator could return incorrect
10948results.
10949
10950Fixed a problem where the CopyObject operator could fail on some of the
10951more
10952obscure objects (e.g., Reference objects.)
10953
10954Improved the output of the Debug object to display buffer, package, and
10955index objects.
10956
10957Fixed a problem where constructs of the form "RefOf (ArgX)" did not
10958return
10959the expected result.
10960
10961Added permanent ACPI_REPORT_ERROR macros for all instances of the
10962ACPI_AML_INTERNAL exception.
10963
10964Integrated latest version of acfreebsd.h
10965
10966----------------------------------------
1096716 January 2004.  Summary of changes for version 20040116:
10968
10969The purpose of this release is primarily to update the copyright years in
10970each module, thus causing a huge number of diffs.  There are a few small
10971functional changes, however.
10972
109731) ACPI CA Core Subsystem:
10974
10975Improved error messages when there is a problem finding one or more of
10976the
10977required base ACPI tables
10978
10979Reintroduced the definition of APIC_HEADER in actbl.h
10980
10981Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
10982
10983Removed extraneous reference to NewObj in dsmthdat.c
10984
109852) iASL compiler
10986
10987Fixed a problem introduced in December that disabled the correct
10988disassembly
10989of Resource Templates
10990
10991
10992----------------------------------------
1099303 December 2003.  Summary of changes for version 20031203:
10994
109951) ACPI CA Core Subsystem:
10996
10997Changed the initialization of Operation Regions during subsystem
10998init to perform two entire walks of the ACPI namespace; The first
10999to initialize the regions themselves, the second to execute the
11000_REG methods.  This fixed some interdependencies across _REG
11001methods found on some machines.
11002
11003Fixed a problem where a Store(Local0, Local1) could simply update
11004the object reference count, and not create a new copy of the
11005object if the Local1 is uninitialized.
11006
11007Implemented support for the _SST reserved method during sleep
11008transitions.
11009
11010Implemented support to clear the SLP_TYP and SLP_EN bits when
11011waking up, this is apparently required by some machines.
11012
11013When sleeping, clear the wake status only if SleepState is not S5.
11014
11015Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11016pointer arithmetic advanced a string pointer too far.
11017
11018Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11019could be returned if the requested table has not been loaded.
11020
11021Within the support for IRQ resources, restructured the handling of
11022the active and edge/level bits.
11023
11024Fixed a few problems in AcpiPsxExecute() where memory could be
11025leaked under certain error conditions.
11026
11027Improved error messages for the cases where the ACPI mode could
11028not be entered.
11029
11030Code and Data Size: Current and previous core subsystem library
11031sizes are shown below.  These are the code and data sizes for the
11032acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11033these values do not include any ACPI driver or OSPM code.  The
11034debug version of the code includes the debug output trace
11035mechanism and has a much larger code and data size.  Note that
11036these values will vary depending on the efficiency of the compiler
11037and the compiler options used during generation.
11038
11039  Previous Release (20031029):
11040    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11041    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11042  Current Release:
11043    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11044    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11045
110462) iASL Compiler/Disassembler:
11047
11048Implemented a fix for the iASL disassembler where a bad index was
11049generated.  This was most noticeable on 64-bit platforms
11050
11051
11052----------------------------------------
1105329 October 2003.  Summary of changes for version 20031029:
11054
110551) ACPI CA Core Subsystem:
11056
11057
11058Fixed a problem where a level-triggered GPE with an associated
11059_Lxx control method was incorrectly cleared twice.
11060
11061Fixed a problem with the Field support code where an access can
11062occur beyond the end-of-region if the field is non-aligned but
11063extends to the very end of the parent region (resulted in an
11064AE_AML_REGION_LIMIT exception.)
11065
11066Fixed a problem with ACPI Fixed Events where an RT Clock handler
11067would not get invoked on an RTC event.  The RTC event bitmasks for
11068the PM1 registers were not being initialized properly.
11069
11070Implemented support for executing _STA and _INI methods for
11071Processor objects.  Although this is currently not part of the
11072ACPI specification, there is existing ASL code that depends on the
11073init-time execution of these methods.
11074
11075Implemented and deployed a GetDescriptorName function to decode
11076the various types of internal descriptors.  Guards against null
11077descriptors during debug output also.
11078
11079Implemented and deployed a GetNodeName function to extract the 4-
11080character namespace node name.  This function simplifies the debug
11081and error output, as well as guarding against null pointers during
11082output.
11083
11084Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11085simplify the debug and error output of 64-bit integers.  This
11086macro replaces the HIDWORD and LODWORD macros for dumping these
11087integers.
11088
11089Updated the implementation of the Stall() operator to only call
11090AcpiOsStall(), and also return an error if the operand is larger
11091than 255.  This preserves the required behavior of not
11092relinquishing the processor, as would happen if AcpiOsSleep() was
11093called for "long stalls".
11094
11095Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11096initialized are now treated as NOOPs.
11097
11098Cleaned up a handful of warnings during 64-bit generation.
11099
11100Fixed a reported error where and incorrect GPE number was passed
11101to the GPE dispatch handler.  This value is only used for error
11102output, however.  Used this opportunity to clean up and streamline
11103the GPE dispatch code.
11104
11105Code and Data Size: Current and previous core subsystem library
11106sizes are shown below.  These are the code and data sizes for the
11107acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11108these values do not include any ACPI driver or OSPM code.  The
11109
11110debug version of the code includes the debug output trace
11111mechanism and has a much larger code and data size.  Note that
11112these values will vary depending on the efficiency of the compiler
11113and the compiler options used during generation.
11114
11115  Previous Release (20031002):
11116    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11117    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11118  Current Release:
11119    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11120    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11121
11122
111232) iASL Compiler/Disassembler:
11124
11125Updated the iASL compiler to return an error if the operand to the
11126Stall() operator is larger than 255.
11127
11128
11129----------------------------------------
1113002 October 2003.  Summary of changes for version 20031002:
11131
11132
111331) ACPI CA Core Subsystem:
11134
11135Fixed a problem with Index Fields where the index was not
11136incremented for fields that require multiple writes to the
11137index/data registers (Fields that are wider than the data
11138register.)
11139
11140Fixed a problem with all Field objects where a write could go
11141beyond the end-of-field if the field was larger than the access
11142granularity and therefore required multiple writes to complete the
11143request.  An extra write beyond the end of the field could happen
11144inadvertently.
11145
11146Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
11147would incorrectly be returned if the width of the Data Register
11148was larger than the specified field access width.
11149
11150Completed fixes for LoadTable() and Unload() and verified their
11151operation.  Implemented full support for the "DdbHandle" object
11152throughout the ACPI CA subsystem.
11153
11154Implemented full support for the MADT and ECDT tables in the ACPI
11155CA header files.  Even though these tables are not directly
11156consumed by ACPI CA, the header definitions are useful for ACPI
11157device drivers.
11158
11159Integrated resource descriptor fixes posted to the Linux ACPI
11160list.  This included checks for minimum descriptor length, and
11161support for trailing NULL strings within descriptors that have
11162optional string elements.
11163
11164Code and Data Size: Current and previous core subsystem library
11165sizes are shown below.  These are the code and data sizes for the
11166acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11167these values do not include any ACPI driver or OSPM code.  The
11168debug version of the code includes the debug output trace
11169mechanism and has a much larger code and data size.  Note that
11170these values will vary depending on the efficiency of the compiler
11171and the compiler options used during generation.
11172
11173  Previous Release (20030918):
11174    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11175    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11176  Current Release:
11177    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11178    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11179
11180
111812) iASL Compiler:
11182
11183Implemented detection of non-ASCII characters within the input
11184source ASL file.  This catches attempts to compile binary (AML)
11185files early in the compile, with an informative error message.
11186
11187Fixed a problem where the disassembler would fault if the output
11188filename could not be generated or if the output file could not be
11189opened.
11190
11191----------------------------------------
1119218 September 2003.  Summary of changes for version 20030918:
11193
11194
111951) ACPI CA Core Subsystem:
11196
11197Found and fixed a longstanding problem with the late execution of
11198the various deferred AML opcodes (such as Operation Regions,
11199Buffer Fields, Buffers, and Packages).  If the name string
11200specified for the name of the new object placed the object in a
11201scope other than the current scope, the initialization/execution
11202of the opcode failed.  The solution to this problem was to
11203implement a mechanism where the late execution of such opcodes
11204does not attempt to lookup/create the name a second time in an
11205incorrect scope.  This fixes the "region size computed
11206incorrectly" problem.
11207
11208Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
11209Global Lock AE_BAD_PARAMETER error.
11210
11211Fixed several 64-bit issues with prototypes, casting and data
11212types.
11213
11214Removed duplicate prototype from acdisasm.h
11215
11216Fixed an issue involving EC Operation Region Detach (Shaohua Li)
11217
11218Code and Data Size: Current and previous core subsystem library
11219sizes are shown below.  These are the code and data sizes for the
11220acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11221these values do not include any ACPI driver or OSPM code.  The
11222debug version of the code includes the debug output trace
11223mechanism and has a much larger code and data size.  Note that
11224these values will vary depending on the efficiency of the compiler
11225and the compiler options used during generation.
11226
11227  Previous Release:
11228
11229    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11230    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11231  Current Release:
11232    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11233    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11234
11235
112362) Linux:
11237
11238Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
11239correct sleep time in seconds.
11240
11241----------------------------------------
1124214 July 2003.  Summary of changes for version 20030619:
11243
112441) ACPI CA Core Subsystem:
11245
11246Parse SSDTs in order discovered, as opposed to reverse order
11247(Hrvoje Habjanic)
11248
11249Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
11250Klausner,
11251   Nate Lawson)
11252
11253
112542) Linux:
11255
11256Dynamically allocate SDT list (suggested by Andi Kleen)
11257
11258proc function return value cleanups (Andi Kleen)
11259
11260Correctly handle NMI watchdog during long stalls (Andrew Morton)
11261
11262Make it so acpismp=force works (reported by Andrew Morton)
11263
11264
11265----------------------------------------
1126619 June 2003.  Summary of changes for version 20030619:
11267
112681) ACPI CA Core Subsystem:
11269
11270Fix To/FromBCD, eliminating the need for an arch-specific #define.
11271
11272Do not acquire a semaphore in the S5 shutdown path.
11273
11274Fix ex_digits_needed for 0. (Takayoshi Kochi)
11275
11276Fix sleep/stall code reversal. (Andi Kleen)
11277
11278Revert a change having to do with control method calling
11279semantics.
11280
112812) Linux:
11282
11283acpiphp update (Takayoshi Kochi)
11284
11285Export acpi_disabled for sonypi (Stelian Pop)
11286
11287Mention acpismp=force in config help
11288
11289Re-add acpitable.c and acpismp=force. This improves backwards
11290
11291compatibility and also cleans up the code to a significant degree.
11292
11293Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
11294
11295----------------------------------------
1129622 May 2003.  Summary of changes for version 20030522:
11297
112981) ACPI CA Core Subsystem:
11299
11300Found and fixed a reported problem where an AE_NOT_FOUND error
11301occurred occasionally during _BST evaluation.  This turned out to
11302be an Owner ID allocation issue where a called method did not get
11303a new ID assigned to it.  Eventually, (after 64k calls), the Owner
11304ID UINT16 would wraparound so that the ID would be the same as the
11305caller's and the called method would delete the caller's
11306namespace.
11307
11308Implemented extended error reporting for control methods that are
11309aborted due to a run-time exception.  Output includes the exact
11310AML instruction that caused the method abort, a dump of the method
11311locals and arguments at the time of the abort, and a trace of all
11312nested control method calls.
11313
11314Modified the interpreter to allow the creation of buffers of zero
11315length from the AML code. Implemented new code to ensure that no
11316attempt is made to actually allocate a memory buffer (of length
11317zero) - instead, a simple buffer object with a NULL buffer pointer
11318and length zero is created.  A warning is no longer issued when
11319the AML attempts to create a zero-length buffer.
11320
11321Implemented a workaround for the "leading asterisk issue" in
11322_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
11323asterisk is automatically removed if present in any HID, UID, or
11324CID strings.  The iASL compiler will still flag this asterisk as
11325an error, however.
11326
11327Implemented full support for _CID methods that return a package of
11328multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
11329now additionally returns a device _CID list if present.  This
11330required a change to the external interface in order to pass an
11331ACPI_BUFFER object as a parameter since the _CID list is of
11332variable length.
11333
11334Fixed a problem with the new AE_SAME_HANDLER exception where
11335handler initialization code did not know about this exception.
11336
11337Code and Data Size: Current and previous core subsystem library
11338sizes are shown below.  These are the code and data sizes for the
11339acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11340these values do not include any ACPI driver or OSPM code.  The
11341debug version of the code includes the debug output trace
11342mechanism and has a much larger code and data size.  Note that
11343these values will vary depending on the efficiency of the compiler
11344and the compiler options used during generation.
11345
11346  Previous Release (20030509):
11347    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11348    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11349  Current Release:
11350    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11351    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11352
11353
113542) Linux:
11355
11356Fixed a bug in which we would reinitialize the ACPI interrupt
11357after it was already working, thus disabling all ACPI and the IRQs
11358for any other device sharing the interrupt. (Thanks to Stian
11359Jordet)
11360
11361Toshiba driver update (John Belmonte)
11362
11363Return only 0 or 1 for our interrupt handler status (Andrew
11364Morton)
11365
11366
113673) iASL Compiler:
11368
11369Fixed a reported problem where multiple (nested) ElseIf()
11370statements were not handled correctly by the compiler, resulting
11371in incorrect warnings and incorrect AML code.  This was a problem
11372in both the ASL parser and the code generator.
11373
11374
113754) Documentation:
11376
11377Added changes to existing interfaces, new exception codes, and new
11378text concerning reference count object management versus garbage
11379collection.
11380
11381----------------------------------------
1138209 May 2003.  Summary of changes for version 20030509.
11383
11384
113851) ACPI CA Core Subsystem:
11386
11387Changed the subsystem initialization sequence to hold off
11388installation of address space handlers until the hardware has been
11389initialized and the system has entered ACPI mode.  This is because
11390the installation of space handlers can cause _REG methods to be
11391run.  Previously, the _REG methods could potentially be run before
11392ACPI mode was enabled.
11393
11394Fixed some memory leak issues related to address space handler and
11395notify handler installation.  There were some problems with the
11396reference count mechanism caused by the fact that the handler
11397objects are shared across several namespace objects.
11398
11399Fixed a reported problem where reference counts within the
11400namespace were not properly updated when named objects created by
11401method execution were deleted.
11402
11403Fixed a reported problem where multiple SSDTs caused a deletion
11404issue during subsystem termination.  Restructured the table data
11405structures to simplify the linked lists and the related code.
11406
11407Fixed a problem where the table ID associated with secondary
11408tables (SSDTs) was not being propagated into the namespace objects
11409created by those tables.  This would only present a problem for
11410tables that are unloaded at run-time, however.
11411
11412Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
11413type as the length parameter (instead of UINT32).
11414
11415Solved a long-standing problem where an ALREADY_EXISTS error
11416appears on various systems.  This problem could happen when there
11417are multiple PCI_Config operation regions under a single PCI root
11418bus.  This doesn't happen very frequently, but there are some
11419systems that do this in the ASL.
11420
11421Fixed a reported problem where the internal DeleteNode function
11422was incorrectly handling the case where a namespace node was the
11423first in the parent's child list, and had additional peers (not
11424the only child, but first in the list of children.)
11425
11426Code and Data Size: Current core subsystem library sizes are shown
11427below.  These are the code and data sizes for the acpica.lib
11428produced by the Microsoft Visual C++ 6.0 compiler, and these
11429values do not include any ACPI driver or OSPM code.  The debug
11430version of the code includes the debug output trace mechanism and
11431has a much larger code and data size.  Note that these values will
11432vary depending on the efficiency of the compiler and the compiler
11433options used during generation.
11434
11435  Previous Release
11436    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11437    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11438  Current Release:
11439    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11440    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11441
11442
114432) Linux:
11444
11445Allow ":" in OS override string (Ducrot Bruno)
11446
11447Kobject fix (Greg KH)
11448
11449
114503 iASL Compiler/Disassembler:
11451
11452Fixed a problem in the generation of the C source code files (AML
11453is emitted in C source statements for BIOS inclusion) where the
11454Ascii dump that appears within a C comment at the end of each line
11455could cause a compile time error if the AML sequence happens to
11456have an open comment or close comment sequence embedded.
11457
11458
11459----------------------------------------
1146024 April 2003.  Summary of changes for version 20030424.
11461
11462
114631) ACPI CA Core Subsystem:
11464
11465Support for big-endian systems has been implemented.  Most of the
11466support has been invisibly added behind big-endian versions of the
11467ACPI_MOVE_* macros.
11468
11469Fixed a problem in AcpiHwDisableGpeBlock() and
11470AcpiHwClearGpeBlock() where an incorrect offset was passed to the
11471low level hardware write routine.  The offset parameter was
11472actually eliminated from the low level read/write routines because
11473they had become obsolete.
11474
11475Fixed a problem where a handler object was deleted twice during
11476the removal of a fixed event handler.
11477
11478
114792) Linux:
11480
11481A fix for SMP systems with link devices was contributed by
11482
11483Compaq's Dan Zink.
11484
11485(2.5) Return whether we handled the interrupt in our IRQ handler.
11486(Linux ISRs no longer return void, so we can propagate the handler
11487return value from the ACPI CA core back to the OS.)
11488
11489
11490
114913) Documentation:
11492
11493The ACPI CA Programmer Reference has been updated to reflect new
11494interfaces and changes to existing interfaces.
11495
11496----------------------------------------
1149728 March 2003.  Summary of changes for version 20030328.
11498
114991) ACPI CA Core Subsystem:
11500
11501The GPE Block Device support has been completed.  New interfaces
11502are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
11503interfaces (enable, disable, clear, getstatus) have been split
11504into separate interfaces for Fixed Events and General Purpose
11505Events (GPEs) in order to support GPE Block Devices properly.
11506
11507Fixed a problem where the error message "Failed to acquire
11508semaphore" would appear during operations on the embedded
11509controller (EC).
11510
11511Code and Data Size: Current core subsystem library sizes are shown
11512below.  These are the code and data sizes for the acpica.lib
11513produced by the Microsoft Visual C++ 6.0 compiler, and these
11514values do not include any ACPI driver or OSPM code.  The debug
11515version of the code includes the debug output trace mechanism and
11516has a much larger code and data size.  Note that these values will
11517vary depending on the efficiency of the compiler and the compiler
11518options used during generation.
11519
11520  Previous Release
11521    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11522    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11523  Current Release:
11524    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11525    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11526
11527
11528----------------------------------------
1152928 February 2003.  Summary of changes for version 20030228.
11530
11531
115321) ACPI CA Core Subsystem:
11533
11534The GPE handling and dispatch code has been completely overhauled
11535in preparation for support of GPE Block Devices (ID ACPI0006).
11536This affects internal data structures and code only; there should
11537be no differences visible externally.  One new file has been
11538added, evgpeblk.c
11539
11540The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
11541fields that are used to determine the GPE block lengths.  The
11542REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
11543structures are ignored.  This is per the ACPI specification but it
11544isn't very clear.  The full 256 Block 0/1 GPEs are now supported
11545(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
11546
11547In the SCI interrupt handler, removed the read of the PM1_CONTROL
11548register to look at the SCI_EN bit.  On some machines, this read
11549causes an SMI event and greatly slows down SCI events.  (This may
11550in fact be the cause of slow battery status response on some
11551systems.)
11552
11553Fixed a problem where a store of a NULL string to a package object
11554could cause the premature deletion of the object.  This was seen
11555during execution of the battery _BIF method on some systems,
11556resulting in no battery data being returned.
11557
11558Added AcpiWalkResources interface to simplify parsing of resource
11559lists.
11560
11561Code and Data Size: Current core subsystem library sizes are shown
11562below.  These are the code and data sizes for the acpica.lib
11563produced by the Microsoft Visual C++ 6.0 compiler, and these
11564values do not include any ACPI driver or OSPM code.  The debug
11565version of the code includes the debug output trace mechanism and
11566has a much larger code and data size.  Note that these values will
11567vary depending on the efficiency of the compiler and the compiler
11568options used during generation.
11569
11570  Previous Release
11571    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11572    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11573  Current Release:
11574    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11575    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11576
11577
115782) Linux
11579
11580S3 fixes (Ole Rohne)
11581
11582Update ACPI PHP driver with to use new acpi_walk_resource API
11583(Bjorn Helgaas)
11584
11585Add S4BIOS support (Pavel Machek)
11586
11587Map in entire table before performing checksum (John Stultz)
11588
11589Expand the mem= cmdline to allow the specification of reserved and
11590ACPI DATA blocks (Pavel Machek)
11591
11592Never use ACPI on VISWS
11593
11594Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
11595
11596Revert a change that allowed P_BLK lengths to be 4 or 5. This is
11597causing us to think that some systems support C2 when they really
11598don't.
11599
11600Do not count processor objects for non-present CPUs (Thanks to
11601Dominik Brodowski)
11602
11603
116043) iASL Compiler:
11605
11606Fixed a problem where ASL include files could not be found and
11607opened.
11608
11609Added support for the _PDC reserved name.
11610
11611
11612----------------------------------------
1161322 January 2003.  Summary of changes for version 20030122.
11614
11615
116161) ACPI CA Core Subsystem:
11617
11618Added a check for constructs of the form:  Store (Local0, Local0)
11619where Local0 is not initialized.  Apparently, some BIOS
11620programmers believe that this is a NOOP.  Since this store doesn't
11621do anything anyway, the new prototype behavior will ignore this
11622error.  This is a case where we can relax the strict checking in
11623the interpreter in the name of compatibility.
11624
11625
116262) Linux
11627
11628The AcpiSrc Source Conversion Utility has been released with the
11629Linux package for the first time.  This is the utility that is
11630used to convert the ACPI CA base source code to the Linux version.
11631
11632(Both) Handle P_BLK lengths shorter than 6 more gracefully
11633
11634(Both) Move more headers to include/acpi, and delete an unused
11635header.
11636
11637(Both) Move drivers/acpi/include directory to include/acpi
11638
11639(Both) Boot functions don't use cmdline, so don't pass it around
11640
11641(Both) Remove include of unused header (Adrian Bunk)
11642
11643(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
11644the
11645former now also includes the latter, acpiphp.h only needs the one,
11646now.
11647
11648(2.5) Make it possible to select method of bios restoring after S3
11649resume. [=> no more ugly ifdefs] (Pavel Machek)
11650
11651(2.5) Make proc write interfaces work (Pavel Machek)
11652
11653(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
11654
11655(2.5) Break out ACPI Perf code into its own module, under cpufreq
11656(Dominik Brodowski)
11657
11658(2.4) S4BIOS support (Ducrot Bruno)
11659
11660(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
11661Visinoni)
11662
11663
116643) iASL Compiler:
11665
11666Added support to disassemble SSDT and PSDTs.
11667
11668Implemented support to obtain SSDTs from the Windows registry if
11669available.
11670
11671
11672----------------------------------------
1167309 January 2003.  Summary of changes for version 20030109.
11674
116751) ACPI CA Core Subsystem:
11676
11677Changed the behavior of the internal Buffer-to-String conversion
11678function.  The current ACPI specification states that the contents
11679of the buffer are "converted to a string of two-character
11680hexadecimal numbers, each separated by a space".  Unfortunately,
11681this definition is not backwards compatible with existing ACPI 1.0
11682implementations (although the behavior was not defined in the ACPI
116831.0 specification).  The new behavior simply copies data from the
11684buffer to the string until a null character is found or the end of
11685the buffer is reached.  The new String object is always null
11686terminated.  This problem was seen during the generation of _BIF
11687battery data where incorrect strings were returned for battery
11688type, etc.  This will also require an errata to the ACPI
11689specification.
11690
11691Renamed all instances of NATIVE_UINT and NATIVE_INT to
11692ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
11693
11694Copyright in all module headers (both Linux and non-Linux) has be
11695updated to 2003.
11696
11697Code and Data Size: Current core subsystem library sizes are shown
11698below.  These are the code and data sizes for the acpica.lib
11699produced by the Microsoft Visual C++ 6.0 compiler, and these
11700values do not include any ACPI driver or OSPM code.  The debug
11701version of the code includes the debug output trace mechanism and
11702has a much larger code and data size.  Note that these values will
11703vary depending on the efficiency of the compiler and the compiler
11704options used during generation.
11705
11706  Previous Release
11707    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11708    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11709  Current Release:
11710    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11711    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11712
11713
117142) Linux
11715
11716Fixed an oops on module insertion/removal (Matthew Tippett)
11717
11718(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
11719
11720(2.5) Replace pr_debug (Randy Dunlap)
11721
11722(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
11723
11724(Both) Eliminate spawning of thread from timer callback, in favor
11725of schedule_work()
11726
11727(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
11728
11729(Both) Added define for Fixed Function HW region (Matthew Wilcox)
11730
11731(Both) Add missing statics to button.c (Pavel Machek)
11732
11733Several changes have been made to the source code translation
11734utility that generates the Linux Code in order to make the code
11735more "Linux-like":
11736
11737All typedefs on structs and unions have been removed in keeping
11738with the Linux coding style.
11739
11740Removed the non-Linux SourceSafe module revision number from each
11741module header.
11742
11743Completed major overhaul of symbols to be lowercased for linux.
11744Doubled the number of symbols that are lowercased.
11745
11746Fixed a problem where identifiers within procedure headers and
11747within quotes were not fully lower cased (they were left with a
11748starting capital.)
11749
11750Some C macros whose only purpose is to allow the generation of 16-
11751bit code are now completely removed in the Linux code, increasing
11752readability and maintainability.
11753
11754----------------------------------------
11755
1175612 December 2002.  Summary of changes for version 20021212.
11757
11758
117591) ACPI CA Core Subsystem:
11760
11761Fixed a problem where the creation of a zero-length AML Buffer
11762would cause a fault.
11763
11764Fixed a problem where a Buffer object that pointed to a static AML
11765buffer (in an ACPI table) could inadvertently be deleted, causing
11766memory corruption.
11767
11768Fixed a problem where a user buffer (passed in to the external
11769ACPI CA interfaces) could be overwritten if the buffer was too
11770small to complete the operation, causing memory corruption.
11771
11772Fixed a problem in the Buffer-to-String conversion code where a
11773string of length one was always returned, regardless of the size
11774of the input Buffer object.
11775
11776Removed the NATIVE_CHAR data type across the entire source due to
11777lack of need and lack of consistent use.
11778
11779Code and Data Size: Current core subsystem library sizes are shown
11780below.  These are the code and data sizes for the acpica.lib
11781produced by the Microsoft Visual C++ 6.0 compiler, and these
11782values do not include any ACPI driver or OSPM code.  The debug
11783version of the code includes the debug output trace mechanism and
11784has a much larger code and data size.  Note that these values will
11785vary depending on the efficiency of the compiler and the compiler
11786options used during generation.
11787
11788  Previous Release
11789    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
11790    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
11791  Current Release:
11792    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11793    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11794
11795
11796----------------------------------------
1179705 December 2002.  Summary of changes for version 20021205.
11798
117991) ACPI CA Core Subsystem:
11800
11801Fixed a problem where a store to a String or Buffer object could
11802cause corruption of the DSDT if the object type being stored was
11803the same as the target object type and the length of the object
11804being stored was equal to or smaller than the original (existing)
11805target object.  This was seen to cause corruption of battery _BIF
11806buffers if the _BIF method modified the buffer on the fly.
11807
11808Fixed a problem where an internal error was generated if a control
11809method invocation was used in an OperationRegion, Buffer, or
11810Package declaration.  This was caused by the deferred parsing of
11811the control method and thus the deferred creation of the internal
11812method object.  The solution to this problem was to create the
11813internal method object at the moment the method is encountered in
11814the first pass - so that subsequent references to the method will
11815able to obtain the required parameter count and thus properly
11816parse the method invocation.  This problem presented itself as an
11817AE_AML_INTERNAL during the pass 1 parse phase during table load.
11818
11819Fixed a problem where the internal String object copy routine did
11820not always allocate sufficient memory for the target String object
11821and caused memory corruption.  This problem was seen to cause
11822"Allocation already present in list!" errors as memory allocation
11823became corrupted.
11824
11825Implemented a new function for the evaluation of namespace objects
11826that allows the specification of the allowable return object
11827types.  This simplifies a lot of code that checks for a return
11828object of one or more specific objects returned from the
11829evaluation (such as _STA, etc.)  This may become and external
11830function if it would be useful to ACPI-related drivers.
11831
11832Completed another round of prefixing #defines with "ACPI_" for
11833clarity.
11834
11835Completed additional code restructuring to allow more modular
11836linking for iASL compiler and AcpiExec.  Several files were split
11837creating new files.  New files:  nsparse.c dsinit.c evgpe.c
11838
11839Implemented an abort mechanism to terminate an executing control
11840method via the AML debugger.  This feature is useful for debugging
11841control methods that depend (wait) for specific hardware
11842responses.
11843
11844Code and Data Size: Current core subsystem library sizes are shown
11845below.  These are the code and data sizes for the acpica.lib
11846produced by the Microsoft Visual C++ 6.0 compiler, and these
11847values do not include any ACPI driver or OSPM code.  The debug
11848version of the code includes the debug output trace mechanism and
11849has a much larger code and data size.  Note that these values will
11850vary depending on the efficiency of the compiler and the compiler
11851options used during generation.
11852
11853  Previous Release
11854    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
11855    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
11856  Current Release:
11857    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
11858    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
11859
11860
118612) iASL Compiler/Disassembler
11862
11863Fixed a compiler code generation problem for "Interrupt" Resource
11864Descriptors.  If specified in the ASL, the optional "Resource
11865Source Index" and "Resource Source" fields were not inserted into
11866the correct location within the AML resource descriptor, creating
11867an invalid descriptor.
11868
11869Fixed a disassembler problem for "Interrupt" resource descriptors.
11870The optional "Resource Source Index" and "Resource Source" fields
11871were ignored.
11872
11873
11874----------------------------------------
1187522 November 2002.  Summary of changes for version 20021122.
11876
11877
118781) ACPI CA Core Subsystem:
11879
11880Fixed a reported problem where an object stored to a Method Local
11881or Arg was not copied to a new object during the store - the
11882object pointer was simply copied to the Local/Arg.  This caused
11883all subsequent operations on the Local/Arg to also affect the
11884original source of the store operation.
11885
11886Fixed a problem where a store operation to a Method Local or Arg
11887was not completed properly if the Local/Arg contained a reference
11888(from RefOf) to a named field.  The general-purpose store-to-
11889namespace-node code is now used so that this case is handled
11890automatically.
11891
11892Fixed a problem where the internal object copy routine would cause
11893a protection fault if the object being copied was a Package and
11894contained either 1) a NULL package element or 2) a nested sub-
11895package.
11896
11897Fixed a problem with the GPE initialization that resulted from an
11898ambiguity in the ACPI specification.  One section of the
11899specification states that both the address and length of the GPE
11900block must be zero if the block is not supported.  Another section
11901implies that only the address need be zero if the block is not
11902supported.  The code has been changed so that both the address and
11903the length must be non-zero to indicate a valid GPE block (i.e.,
11904if either the address or the length is zero, the GPE block is
11905invalid.)
11906
11907Code and Data Size: Current core subsystem library sizes are shown
11908below.  These are the code and data sizes for the acpica.lib
11909produced by the Microsoft Visual C++ 6.0 compiler, and these
11910values do not include any ACPI driver or OSPM code.  The debug
11911version of the code includes the debug output trace mechanism and
11912has a much larger code and data size.  Note that these values will
11913vary depending on the efficiency of the compiler and the compiler
11914options used during generation.
11915
11916  Previous Release
11917    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
11918    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
11919  Current Release:
11920    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
11921    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
11922
11923
119242) Linux
11925
11926Cleaned up EC driver. Exported an external EC read/write
11927interface. By going through this, other drivers (most notably
11928sonypi) will be able to serialize access to the EC.
11929
11930
119313) iASL Compiler/Disassembler
11932
11933Implemented support to optionally generate include files for both
11934ASM and C (the -i switch).  This simplifies BIOS development by
11935automatically creating include files that contain external
11936declarations for the symbols that are created within the
11937
11938(optionally generated) ASM and C AML source files.
11939
11940
11941----------------------------------------
1194215 November 2002.  Summary of changes for version 20021115.
11943
119441) ACPI CA Core Subsystem:
11945
11946Fixed a memory leak problem where an error during resolution of
11947
11948method arguments during a method invocation from another method
11949failed to cleanup properly by deleting all successfully resolved
11950argument objects.
11951
11952Fixed a problem where the target of the Index() operator was not
11953correctly constructed if the source object was a package.  This
11954problem has not been detected because the use of a target operand
11955with Index() is very rare.
11956
11957Fixed a problem with the Index() operator where an attempt was
11958made to delete the operand objects twice.
11959
11960Fixed a problem where an attempt was made to delete an operand
11961twice during execution of the CondRefOf() operator if the target
11962did not exist.
11963
11964Implemented the first of perhaps several internal create object
11965functions that create and initialize a specific object type.  This
11966consolidates duplicated code wherever the object is created, thus
11967shrinking the size of the subsystem.
11968
11969Implemented improved debug/error messages for errors that occur
11970during nested method invocations.  All executing method pathnames
11971are displayed (with the error) as the call stack is unwound - thus
11972simplifying debug.
11973
11974Fixed a problem introduced in the 10/02 release that caused
11975premature deletion of a buffer object if a buffer was used as an
11976ASL operand where an integer operand is required (Thus causing an
11977implicit object conversion from Buffer to Integer.)  The change in
11978the 10/02 release was attempting to fix a memory leak (albeit
11979incorrectly.)
11980
11981Code and Data Size: Current core subsystem library sizes are shown
11982below.  These are the code and data sizes for the acpica.lib
11983produced by the Microsoft Visual C++ 6.0 compiler, and these
11984values do not include any ACPI driver or OSPM code.  The debug
11985version of the code includes the debug output trace mechanism and
11986has a much larger code and data size.  Note that these values will
11987vary depending on the efficiency of the compiler and the compiler
11988options used during generation.
11989
11990  Previous Release
11991    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
11992    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
11993  Current Release:
11994    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
11995    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
11996
11997
119982) Linux
11999
12000Changed the implementation of the ACPI semaphores to use down()
12001instead of down_interruptable().  It is important that the
12002execution of ACPI control methods not be interrupted by signals.
12003Methods must run to completion, or the system may be left in an
12004unknown/unstable state.
12005
12006Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12007(Shawn Starr)
12008
12009
120103) iASL Compiler/Disassembler
12011
12012
12013Changed the default location of output files.  All output files
12014are now placed in the current directory by default instead of in
12015the directory of the source file.  This change may affect some
12016existing makefiles, but it brings the behavior of the compiler in
12017line with other similar tools.  The location of the output files
12018can be overridden with the -p command line switch.
12019
12020
12021----------------------------------------
1202211 November 2002.  Summary of changes for version 20021111.
12023
12024
120250) ACPI Specification 2.0B is released and is now available at:
12026http://www.acpi.info/index.html
12027
12028
120291) ACPI CA Core Subsystem:
12030
12031Implemented support for the ACPI 2.0 SMBus Operation Regions.
12032This includes the early detection and handoff of the request to
12033the SMBus region handler (avoiding all of the complex field
12034support code), and support for the bidirectional return packet
12035from an SMBus write operation.  This paves the way for the
12036development of SMBus drivers in each host operating system.
12037
12038Fixed a problem where the semaphore WAIT_FOREVER constant was
12039defined as 32 bits, but must be 16 bits according to the ACPI
12040specification.  This had the side effect of causing ASL
12041Mutex/Event timeouts even though the ASL code requested a wait
12042forever.  Changed all internal references to the ACPI timeout
12043parameter to 16 bits to prevent future problems.  Changed the name
12044of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12045
12046Code and Data Size: Current core subsystem library sizes are shown
12047below.  These are the code and data sizes for the acpica.lib
12048produced by the Microsoft Visual C++ 6.0 compiler, and these
12049values do not include any ACPI driver or OSPM code.  The debug
12050version of the code includes the debug output trace mechanism and
12051has a much larger code and data size.  Note that these values will
12052vary depending on the efficiency of the compiler and the compiler
12053options used during generation.
12054
12055  Previous Release
12056    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12057    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12058  Current Release:
12059    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12060    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12061
12062
120632) Linux
12064
12065Module loading/unloading fixes (John Cagle)
12066
12067
120683) iASL Compiler/Disassembler
12069
12070Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12071
12072Implemented support for the disassembly of all SMBus protocol
12073keywords (SMBQuick, SMBWord, etc.)
12074
12075----------------------------------------
1207601 November 2002.  Summary of changes for version 20021101.
12077
12078
120791) ACPI CA Core Subsystem:
12080
12081Fixed a problem where platforms that have a GPE1 block but no GPE0
12082block were not handled correctly.  This resulted in a "GPE
12083overlap" error message.  GPE0 is no longer required.
12084
12085Removed code added in the previous release that inserted nodes
12086into the namespace in alphabetical order.  This caused some side-
12087effects on various machines.  The root cause of the problem is
12088still under investigation since in theory, the internal ordering
12089of the namespace nodes should not matter.
12090
12091
12092Enhanced error reporting for the case where a named object is not
12093found during control method execution.  The full ACPI namepath
12094(name reference) of the object that was not found is displayed in
12095this case.
12096
12097Note: as a result of the overhaul of the namespace object types in
12098the previous release, the namespace nodes for the predefined
12099scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12100instead of ACPI_TYPE_ANY.  This simplifies the namespace
12101management code but may affect code that walks the namespace tree
12102looking for specific object types.
12103
12104Code and Data Size: Current core subsystem library sizes are shown
12105below.  These are the code and data sizes for the acpica.lib
12106produced by the Microsoft Visual C++ 6.0 compiler, and these
12107values do not include any ACPI driver or OSPM code.  The debug
12108version of the code includes the debug output trace mechanism and
12109has a much larger code and data size.  Note that these values will
12110vary depending on the efficiency of the compiler and the compiler
12111options used during generation.
12112
12113  Previous Release
12114    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12115    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12116  Current Release:
12117    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12118    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12119
12120
121212) Linux
12122
12123Fixed a problem introduced in the previous release where the
12124Processor and Thermal objects were not recognized and installed in
12125/proc.  This was related to the scope type change described above.
12126
12127
121283) iASL Compiler/Disassembler
12129
12130Implemented the -g option to get all of the required ACPI tables
12131from the registry and save them to files (Windows version of the
12132compiler only.)  The required tables are the FADT, FACS, and DSDT.
12133
12134Added ACPI table checksum validation during table disassembly in
12135order to catch corrupted tables.
12136
12137
12138----------------------------------------
1213922 October 2002.  Summary of changes for version 20021022.
12140
121411) ACPI CA Core Subsystem:
12142
12143Implemented a restriction on the Scope operator that the target
12144must already exist in the namespace at the time the operator is
12145encountered (during table load or method execution).  In other
12146words, forward references are not allowed and Scope() cannot
12147create a new object. This changes the previous behavior where the
12148interpreter would create the name if not found.  This new behavior
12149correctly enables the search-to-root algorithm during namespace
12150lookup of the target name.  Because of this upsearch, this fixes
12151the known Compaq _SB_.OKEC problem and makes both the AML
12152interpreter and iASL compiler compatible with other ACPI
12153implementations.
12154
12155Completed a major overhaul of the internal ACPI object types for
12156the ACPI Namespace and the associated operand objects.  Many of
12157these types had become obsolete with the introduction of the two-
12158pass namespace load.  This cleanup simplifies the code and makes
12159the entire namespace load mechanism much clearer and easier to
12160understand.
12161
12162Improved debug output for tracking scope opening/closing to help
12163diagnose scoping issues.  The old scope name as well as the new
12164scope name are displayed.  Also improved error messages for
12165problems with ASL Mutex objects and error messages for GPE
12166problems.
12167
12168Cleaned up the namespace dump code, removed obsolete code.
12169
12170All string output (for all namespace/object dumps) now uses the
12171common ACPI string output procedure which handles escapes properly
12172and does not emit non-printable characters.
12173
12174Fixed some issues with constants in the 64-bit version of the
12175local C library (utclib.c)
12176
12177
121782) Linux
12179
12180EC Driver:  No longer attempts to acquire the Global Lock at
12181interrupt level.
12182
12183
121843) iASL Compiler/Disassembler
12185
12186Implemented ACPI 2.0B grammar change that disallows all Type 1 and
121872 opcodes outside of a control method.  This means that the
12188"executable" operators (versus the "namespace" operators) cannot
12189be used at the table level; they can only be used within a control
12190method.
12191
12192Implemented the restriction on the Scope() operator where the
12193target must already exist in the namespace at the time the
12194operator is encountered (during ASL compilation). In other words,
12195forward references are not allowed and Scope() cannot create a new
12196object.  This makes the iASL compiler compatible with other ACPI
12197implementations and makes the Scope() implementation adhere to the
12198ACPI specification.
12199
12200Fixed a problem where namepath optimization for the Alias operator
12201was optimizing the wrong path (of the two namepaths.)  This caused
12202a "Missing alias link" error message.
12203
12204Fixed a problem where an "unknown reserved name" warning could be
12205incorrectly generated for names like "_SB" when the trailing
12206underscore is not used in the original ASL.
12207
12208Fixed a problem where the reserved name check did not handle
12209NamePaths with multiple NameSegs correctly.  The first nameseg of
12210the NamePath was examined instead of the last NameSeg.
12211
12212
12213----------------------------------------
12214
1221502 October 2002.  Summary of changes for this release.
12216
12217
122181) ACPI CA Core Subsystem version 20021002:
12219
12220Fixed a problem where a store/copy of a string to an existing
12221string did not always set the string length properly in the String
12222object.
12223
12224Fixed a reported problem with the ToString operator where the
12225behavior was identical to the ToHexString operator instead of just
12226simply converting a raw buffer to a string data type.
12227
12228Fixed a problem where CopyObject and the other "explicit"
12229conversion operators were not updating the internal namespace node
12230type as part of the store operation.
12231
12232Fixed a memory leak during implicit source operand conversion
12233where the original object was not deleted if it was converted to a
12234new object of a different type.
12235
12236Enhanced error messages for all problems associated with namespace
12237lookups.  Common procedure generates and prints the lookup name as
12238well as the formatted status.
12239
12240Completed implementation of a new design for the Alias support
12241within the namespace.  The existing design did not handle the case
12242where a new object was assigned to one of the two names due to the
12243use of an explicit conversion operator, resulting in the two names
12244pointing to two different objects.  The new design simply points
12245the Alias name to the original name node - not to the object.
12246This results in a level of indirection that must be handled in the
12247name resolution mechanism.
12248
12249Code and Data Size: Current core subsystem library sizes are shown
12250below.  These are the code and data sizes for the acpica.lib
12251produced by the Microsoft Visual C++ 6.0 compiler, and these
12252values do not include any ACPI driver or OSPM code.  The debug
12253version of the code includes the debug output trace mechanism and
12254has a larger code and data size.  Note that these values will vary
12255depending on the efficiency of the compiler and the compiler
12256options used during generation.
12257
12258  Previous Release
12259    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12260    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12261  Current Release:
12262    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12263    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12264
12265
122662) Linux
12267
12268Initialize thermal driver's timer before it is used. (Knut
12269Neumann)
12270
12271Allow handling negative celsius values. (Kochi Takayoshi)
12272
12273Fix thermal management and make trip points. R/W (Pavel Machek)
12274
12275Fix /proc/acpi/sleep. (P. Christeas)
12276
12277IA64 fixes. (David Mosberger)
12278
12279Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
12280
12281Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
12282Brodowski)
12283
12284
122853) iASL Compiler/Disassembler
12286
12287Clarified some warning/error messages.
12288
12289
12290----------------------------------------
1229118 September 2002.  Summary of changes for this release.
12292
12293
122941) ACPI CA Core Subsystem version 20020918:
12295
12296Fixed a reported problem with reference chaining (via the Index()
12297and RefOf() operators) in the ObjectType() and SizeOf() operators.
12298The definition of these operators includes the dereferencing of
12299all chained references to return information on the base object.
12300
12301Fixed a problem with stores to indexed package elements - the
12302existing code would not complete the store if an "implicit
12303conversion" was not performed.  In other words, if the existing
12304object (package element) was to be replaced completely, the code
12305didn't handle this case.
12306
12307Relaxed typechecking on the ASL "Scope" operator to allow the
12308target name to refer to an object of type Integer, String, or
12309Buffer, in addition to the scoping object types (Device,
12310predefined Scopes, Processor, PowerResource, and ThermalZone.)
12311This allows existing AML code that has workarounds for a bug in
12312Windows to function properly.  A warning is issued, however.  This
12313affects both the AML interpreter and the iASL compiler. Below is
12314an example of this type of ASL code:
12315
12316      Name(DEB,0x00)
12317      Scope(DEB)
12318      {
12319
12320Fixed some reported problems with 64-bit integer support in the
12321local implementation of C library functions (clib.c)
12322
12323
123242) Linux
12325
12326Use ACPI fix map region instead of IOAPIC region, since it is
12327undefined in non-SMP.
12328
12329Ensure that the SCI has the proper polarity and trigger, even on
12330systems that do not have an interrupt override entry in the MADT.
12331
123322.5 big driver reorganization (Pat Mochel)
12333
12334Use early table mapping code from acpitable.c (Andi Kleen)
12335
12336New blacklist entries (Andi Kleen)
12337
12338Blacklist improvements. Split blacklist code out into a separate
12339file. Move checking the blacklist to very early. Previously, we
12340would use ACPI tables, and then halfway through init, check the
12341blacklist -- too late. Now, it's early enough to completely fall-
12342back to non-ACPI.
12343
12344
123453) iASL Compiler/Disassembler version 20020918:
12346
12347Fixed a problem where the typechecking code didn't know that an
12348alias could point to a method.  In other words, aliases were not
12349being dereferenced during typechecking.
12350
12351
12352----------------------------------------
1235329 August 2002.  Summary of changes for this release.
12354
123551) ACPI CA Core Subsystem Version 20020829:
12356
12357If the target of a Scope() operator already exists, it must be an
12358object type that actually opens a scope -- such as a Device,
12359Method, Scope, etc.  This is a fatal runtime error.  Similar error
12360check has been added to the iASL compiler also.
12361
12362Tightened up the namespace load to disallow multiple names in the
12363same scope.  This previously was allowed if both objects were of
12364the same type.  (i.e., a lookup was the same as entering a new
12365name).
12366
12367
123682) Linux
12369
12370Ensure that the ACPI interrupt has the proper trigger and
12371polarity.
12372
12373local_irq_disable is extraneous. (Matthew Wilcox)
12374
12375Make "acpi=off" actually do what it says, and not use the ACPI
12376interpreter *or* the tables.
12377
12378Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
12379Takayoshi)
12380
12381
123823) iASL Compiler/Disassembler  Version 20020829:
12383
12384Implemented namepath optimization for name declarations.  For
12385example, a declaration like "Method (\_SB_.ABCD)" would get
12386optimized to "Method (ABCD)" if the declaration is within the
12387\_SB_ scope.  This optimization is in addition to the named
12388reference path optimization first released in the previous
12389version. This would seem to complete all possible optimizations
12390for namepaths within the ASL/AML.
12391
12392If the target of a Scope() operator already exists, it must be an
12393object type that actually opens a scope -- such as a Device,
12394Method, Scope, etc.
12395
12396Implemented a check and warning for unreachable code in the same
12397block below a Return() statement.
12398
12399Fixed a problem where the listing file was not generated if the
12400compiler aborted if the maximum error count was exceeded (200).
12401
12402Fixed a problem where the typechecking of method return values was
12403broken.  This includes the check for a return value when the
12404method is invoked as a TermArg (a return value is expected.)
12405
12406Fixed a reported problem where EOF conditions during a quoted
12407string or comment caused a fault.
12408
12409
12410----------------------------------------
1241115 August 2002.  Summary of changes for this release.
12412
124131) ACPI CA Core Subsystem Version 20020815:
12414
12415Fixed a reported problem where a Store to a method argument that
12416contains a reference did not perform the indirect store correctly.
12417This problem was created during the conversion to the new
12418reference object model - the indirect store to a method argument
12419code was not updated to reflect the new model.
12420
12421Reworked the ACPI mode change code to better conform to ACPI 2.0,
12422handle corner cases, and improve code legibility (Kochi Takayoshi)
12423
12424Fixed a problem with the pathname parsing for the carat (^)
12425prefix.  The heavy use of the carat operator by the new namepath
12426optimization in the iASL compiler uncovered a problem with the AML
12427interpreter handling of this prefix.  In the case where one or
12428more carats precede a single nameseg, the nameseg was treated as
12429standalone and the search rule (to root) was inadvertently
12430applied.  This could cause both the iASL compiler and the
12431interpreter to find the wrong object or to miss the error that
12432should occur if the object does not exist at that exact pathname.
12433
12434Found and fixed the problem where the HP Pavilion DSDT would not
12435load.  This was a relatively minor tweak to the table loading code
12436(a problem caused by the unexpected encounter with a method
12437invocation not within a control method), but it does not solve the
12438overall issue of the execution of AML code at the table level.
12439This investigation is still ongoing.
12440
12441Code and Data Size: Current core subsystem library sizes are shown
12442below.  These are the code and data sizes for the acpica.lib
12443produced by the Microsoft Visual C++ 6.0 compiler, and these
12444values do not include any ACPI driver or OSPM code.  The debug
12445version of the code includes the debug output trace mechanism and
12446has a larger code and data size.  Note that these values will vary
12447depending on the efficiency of the compiler and the compiler
12448options used during generation.
12449
12450  Previous Release
12451    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12452    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12453  Current Release:
12454    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12455    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12456
12457
124582) Linux
12459
12460Remove redundant slab.h include (Brad Hards)
12461
12462Fix several bugs in thermal.c (Herbert Nachtnebel)
12463
12464Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
12465
12466Change acpi_system_suspend to use updated irq functions (Pavel
12467Machek)
12468
12469Export acpi_get_firmware_table (Matthew Wilcox)
12470
12471Use proper root proc entry for ACPI (Kochi Takayoshi)
12472
12473Fix early-boot table parsing (Bjorn Helgaas)
12474
12475
124763) iASL Compiler/Disassembler
12477
12478Reworked the compiler options to make them more consistent and to
12479use two-letter options where appropriate.  We were running out of
12480sensible letters.   This may break some makefiles, so check the
12481current options list by invoking the compiler with no parameters.
12482
12483Completed the design and implementation of the ASL namepath
12484optimization option for the compiler.  This option optimizes all
12485references to named objects to the shortest possible path.  The
12486first attempt tries to utilize a single nameseg (4 characters) and
12487the "search-to-root" algorithm used by the interpreter.  If that
12488cannot be used (because either the name is not in the search path
12489or there is a conflict with another object with the same name),
12490the pathname is optimized using the carat prefix (usually a
12491shorter string than specifying the entire path from the root.)
12492
12493Implemented support to obtain the DSDT from the Windows registry
12494(when the disassembly option is specified with no input file).
12495Added this code as the implementation for AcpiOsTableOverride in
12496the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
12497utility) to scan memory for the DSDT to the AcpiOsTableOverride
12498function in the DOS OSL to make the disassembler truly OS
12499independent.
12500
12501Implemented a new option to disassemble and compile in one step.
12502When used without an input filename, this option will grab the
12503DSDT from the local machine, disassemble it, and compile it in one
12504step.
12505
12506Added a warning message for invalid escapes (a backslash followed
12507by any character other than the allowable escapes).  This catches
12508the quoted string error "\_SB_" (which should be "\\_SB_" ).
12509
12510Also, there are numerous instances in the ACPI specification where
12511this error occurs.
12512
12513Added a compiler option to disable all optimizations.  This is
12514basically the "compatibility mode" because by using this option,
12515the AML code will come out exactly the same as other ASL
12516compilers.
12517
12518Added error messages for incorrectly ordered dependent resource
12519functions.  This includes: missing EndDependentFn macro at end of
12520dependent resource list, nested dependent function macros (both
12521start and end), and missing StartDependentFn macro.  These are
12522common errors that should be caught at compile time.
12523
12524Implemented _OSI support for the disassembler and compiler.  _OSI
12525must be included in the namespace for proper disassembly (because
12526the disassembler must know the number of arguments.)
12527
12528Added an "optimization" message type that is optional (off by
12529default).  This message is used for all optimizations - including
12530constant folding, integer optimization, and namepath optimization.
12531
12532----------------------------------------
1253325 July 2002.  Summary of changes for this release.
12534
12535
125361) ACPI CA Core Subsystem Version 20020725:
12537
12538The AML Disassembler has been enhanced to produce compilable ASL
12539code and has been integrated into the iASL compiler (see below) as
12540well as the single-step disassembly for the AML debugger and the
12541disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
12542resource templates and macros are fully supported.  The
12543disassembler has been tested on over 30 different AML files,
12544producing identical AML when the resulting disassembled ASL file
12545is recompiled with the same ASL compiler.
12546
12547Modified the Resource Manager to allow zero interrupts and zero
12548dma channels during the GetCurrentResources call.  This was
12549causing problems on some platforms.
12550
12551Added the AcpiOsRedirectOutput interface to the OSL to simplify
12552output redirection for the AcpiOsPrintf and AcpiOsVprintf
12553interfaces.
12554
12555Code and Data Size: Current core subsystem library sizes are shown
12556below.  These are the code and data sizes for the acpica.lib
12557produced by the Microsoft Visual C++ 6.0 compiler, and these
12558values do not include any ACPI driver or OSPM code.  The debug
12559version of the code includes the debug output trace mechanism and
12560has a larger code and data size.  Note that these values will vary
12561depending on the efficiency of the compiler and the compiler
12562options used during generation.
12563
12564  Previous Release
12565    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12566    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12567  Current Release:
12568    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12569    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12570
12571
125722) Linux
12573
12574Fixed a panic in the EC driver (Dominik Brodowski)
12575
12576Implemented checksum of the R/XSDT itself during Linux table scan
12577(Richard Schaal)
12578
12579
125803) iASL compiler
12581
12582The AML disassembler is integrated into the compiler.  The "-d"
12583option invokes the disassembler  to completely disassemble an
12584input AML file, producing as output a text ASL file with the
12585extension ".dsl" (to avoid name collisions with existing .asl
12586source files.)  A future enhancement will allow the disassembler
12587to obtain the BIOS DSDT from the registry under Windows.
12588
12589Fixed a problem with the VendorShort and VendorLong resource
12590descriptors where an invalid AML sequence was created.
12591
12592Implemented a fix for BufferData term in the ASL parser.  It was
12593inadvertently defined twice, allowing invalid syntax to pass and
12594causing reduction conflicts.
12595
12596Fixed a problem where the Ones opcode could get converted to a
12597value of zero if "Ones" was used where a byte, word or dword value
12598was expected.  The 64-bit value is now truncated to the correct
12599size with the correct value.
12600
12601
12602
12603----------------------------------------
1260402 July 2002.  Summary of changes for this release.
12605
12606
126071) ACPI CA Core Subsystem Version 20020702:
12608
12609The Table Manager code has been restructured to add several new
12610features.  Tables that are not required by the core subsystem
12611(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
12612validated in any way and are returned from AcpiGetFirmwareTable if
12613requested.  The AcpiOsTableOverride interface is now called for
12614each table that is loaded by the subsystem in order to allow the
12615host to override any table it chooses.  Previously, only the DSDT
12616could be overridden.  Added one new files, tbrsdt.c and
12617tbgetall.c.
12618
12619Fixed a problem with the conversion of internal package objects to
12620external objects (when a package is returned from a control
12621method.)  The return buffer length was set to zero instead of the
12622proper length of the package object.
12623
12624Fixed a reported problem with the use of the RefOf and DeRefOf
12625operators when passing reference arguments to control methods.  A
12626new type of Reference object is used internally for references
12627produced by the RefOf operator.
12628
12629Added additional error messages in the Resource Manager to explain
12630AE_BAD_DATA errors when they occur during resource parsing.
12631
12632Split the AcpiEnableSubsystem into two primitives to enable a
12633finer granularity initialization sequence.  These two calls should
12634be called in this order: AcpiEnableSubsystem (flags),
12635AcpiInitializeObjects (flags).  The flags parameter remains the
12636same.
12637
12638
126392) Linux
12640
12641Updated the ACPI utilities module to understand the new style of
12642fully resolved package objects that are now returned from the core
12643subsystem.  This eliminates errors of the form:
12644
12645    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
12646    acpi_utils-0430 [145] acpi_evaluate_reference:
12647        Invalid element in package (not a device reference)
12648
12649The method evaluation utility uses the new buffer allocation
12650scheme instead of calling AcpiEvaluate Object twice.
12651
12652Added support for ECDT. This allows the use of the Embedded
12653
12654Controller before the namespace has been fully initialized, which
12655is necessary for ACPI 2.0 support, and for some laptops to
12656initialize properly. (Laptops using ECDT are still rare, so only
12657limited testing was performed of the added functionality.)
12658
12659Fixed memory leaks in the EC driver.
12660
12661Eliminated a brittle code structure in acpi_bus_init().
12662
12663Eliminated the acpi_evaluate() helper function in utils.c. It is
12664no longer needed since acpi_evaluate_object can optionally
12665allocate memory for the return object.
12666
12667Implemented fix for keyboard hang when getting battery readings on
12668some systems (Stephen White)
12669
12670PCI IRQ routing update (Dominik Brodowski)
12671
12672Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
12673support
12674
12675----------------------------------------
1267611 June 2002.  Summary of changes for this release.
12677
12678
126791) ACPI CA Core Subsystem Version 20020611:
12680
12681Fixed a reported problem where constants such as Zero and One
12682appearing within _PRT packages were not handled correctly within
12683the resource manager code.  Originally reported against the ASL
12684compiler because the code generator now optimizes integers to
12685their minimal AML representation (i.e. AML constants if possible.)
12686The _PRT code now handles all AML constant opcodes correctly
12687(Zero, One, Ones, Revision).
12688
12689Fixed a problem with the Concatenate operator in the AML
12690interpreter where a buffer result object was incorrectly marked as
12691not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
12692
12693All package sub-objects are now fully resolved before they are
12694returned from the external ACPI interfaces.  This means that name
12695strings are resolved to object handles, and constant operators
12696(Zero, One, Ones, Revision) are resolved to Integers.
12697
12698Implemented immediate resolution of the AML Constant opcodes
12699(Zero, One, Ones, Revision) to Integer objects upon detection
12700within the AML stream. This has simplified and reduced the
12701generated code size of the subsystem by eliminating about 10
12702switch statements for these constants (which previously were
12703contained in Reference objects.)  The complicating issues are that
12704the Zero opcode is used as a "placeholder" for unspecified
12705optional target operands and stores to constants are defined to be
12706no-ops.
12707
12708Code and Data Size: Current core subsystem library sizes are shown
12709below. These are the code and data sizes for the acpica.lib
12710produced by the Microsoft Visual C++ 6.0 compiler, and these
12711values do not include any ACPI driver or OSPM code.  The debug
12712version of the code includes the debug output trace mechanism and
12713has a larger code and data size.  Note that these values will vary
12714depending on the efficiency of the compiler and the compiler
12715options used during generation.
12716
12717  Previous Release
12718    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
12719    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
12720  Current Release:
12721    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12722    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12723
12724
127252) Linux
12726
12727
12728Added preliminary support for obtaining _TRA data for PCI root
12729bridges (Bjorn Helgaas).
12730
12731
127323) iASL Compiler Version X2046:
12733
12734Fixed a problem where the "_DDN" reserved name was defined to be a
12735control method with one argument.  There are no arguments, and
12736_DDN does not have to be a control method.
12737
12738Fixed a problem with the Linux version of the compiler where the
12739source lines printed with error messages were the wrong lines.
12740This turned out to be the "LF versus CR/LF" difference between
12741Windows and Unix.  This appears to be the longstanding issue
12742concerning listing output and error messages.
12743
12744Fixed a problem with the Linux version of compiler where opcode
12745names within error messages were wrong.  This was caused by a
12746slight difference in the output of the Flex tool on Linux versus
12747Windows.
12748
12749Fixed a problem with the Linux compiler where the hex output files
12750contained some garbage data caused by an internal buffer overrun.
12751
12752
12753----------------------------------------
1275417 May 2002.  Summary of changes for this release.
12755
12756
127571) ACPI CA Core Subsystem Version 20020517:
12758
12759Implemented a workaround to an BIOS bug discovered on the HP
12760OmniBook where the FADT revision number and the table size are
12761inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
12762behavior is to fallback to using only the ACPI 1.0 fields of the
12763FADT if the table is too small to be a ACPI 2.0 table as claimed
12764by the revision number.  Although this is a BIOS bug, this is a
12765case where the workaround is simple enough and with no side
12766effects, so it seemed prudent to add it.  A warning message is
12767issued, however.
12768
12769Implemented minimum size checks for the fixed-length ACPI tables -
12770- the FADT and FACS, as well as consistency checks between the
12771revision number and the table size.
12772
12773Fixed a reported problem in the table override support where the
12774new table pointer was incorrectly treated as a physical address
12775instead of a logical address.
12776
12777Eliminated the use of the AE_AML_ERROR exception and replaced it
12778with more descriptive codes.
12779
12780Fixed a problem where an exception would occur if an ASL Field was
12781defined with no named Field Units underneath it (used by some
12782index fields).
12783
12784Code and Data Size: Current core subsystem library sizes are shown
12785below.  These are the code and data sizes for the acpica.lib
12786produced by the Microsoft Visual C++ 6.0 compiler, and these
12787values do not include any ACPI driver or OSPM code.  The debug
12788version of the code includes the debug output trace mechanism and
12789has a larger code and data size.  Note that these values will vary
12790depending on the efficiency of the compiler and the compiler
12791options used during generation.
12792
12793  Previous Release
12794    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
12795    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
12796  Current Release:
12797    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
12798    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
12799
12800
12801
128022) Linux
12803
12804Much work done on ACPI init (MADT and PCI IRQ routing support).
12805(Paul D. and Dominik Brodowski)
12806
12807Fix PCI IRQ-related panic on boot (Sam Revitch)
12808
12809Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
12810
12811Fix "MHz" typo (Dominik Brodowski)
12812
12813Fix RTC year 2000 issue (Dominik Brodowski)
12814
12815Preclude multiple button proc entries (Eric Brunet)
12816
12817Moved arch-specific code out of include/platform/aclinux.h
12818
128193) iASL Compiler Version X2044:
12820
12821Implemented error checking for the string used in the EISAID macro
12822(Usually used in the definition of the _HID object.)  The code now
12823strictly enforces the PnP format - exactly 7 characters, 3
12824uppercase letters and 4 hex digits.
12825
12826If a raw string is used in the definition of the _HID object
12827(instead of the EISAID macro), the string must contain all
12828alphanumeric characters (e.g., "*PNP0011" is not allowed because
12829of the asterisk.)
12830
12831Implemented checking for invalid use of ACPI reserved names for
12832most of the name creation operators (Name, Device, Event, Mutex,
12833OperationRegion, PowerResource, Processor, and ThermalZone.)
12834Previously, this check was only performed for control methods.
12835
12836Implemented an additional check on the Name operator to emit an
12837error if a reserved name that must be implemented in ASL as a
12838control method is used.  We know that a reserved name must be a
12839method if it is defined with input arguments.
12840
12841The warning emitted when a namespace object reference is not found
12842during the cross reference phase has been changed into an error.
12843The "External" directive should be used for names defined in other
12844modules.
12845
12846
128474) Tools and Utilities
12848
12849The 16-bit tools (adump16 and aexec16) have been regenerated and
12850tested.
12851
12852Fixed a problem with the output of both acpidump and adump16 where
12853the indentation of closing parentheses and brackets was not
12854
12855aligned properly with the parent block.
12856
12857
12858----------------------------------------
1285903 May 2002.  Summary of changes for this release.
12860
12861
128621) ACPI CA Core Subsystem Version 20020503:
12863
12864Added support a new OSL interface that allows the host operating
12865
12866system software to override the DSDT found in the firmware -
12867AcpiOsTableOverride.  With this interface, the OSL can examine the
12868version of the firmware DSDT and replace it with a different one
12869if desired.
12870
12871Added new external interfaces for accessing ACPI registers from
12872device drivers and other system software - AcpiGetRegister and
12873AcpiSetRegister.  This was simply an externalization of the
12874existing AcpiHwBitRegister interfaces.
12875
12876Fixed a regression introduced in the previous build where the
12877ASL/AML CreateField operator always returned an error,
12878"destination must be a NS Node".
12879
12880Extended the maximum time (before failure) to successfully enable
12881ACPI mode to 3 seconds.
12882
12883Code and Data Size: Current core subsystem library sizes are shown
12884below.  These are the code and data sizes for the acpica.lib
12885produced by the Microsoft Visual C++ 6.0 compiler, and these
12886values do not include any ACPI driver or OSPM code.  The debug
12887version of the code includes the debug output trace mechanism and
12888has a larger code and data size.  Note that these values will vary
12889depending on the efficiency of the compiler and the compiler
12890options used during generation.
12891
12892  Previous Release
12893    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
12894    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
12895  Current Release:
12896    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
12897    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
12898
12899
129002) Linux
12901
12902Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
12903free. While 3 out of 4 of our in-house systems work fine, the last
12904one still hangs when testing the LAPIC timer.
12905
12906Renamed many files in 2.5 kernel release to omit "acpi_" from the
12907name.
12908
12909Added warning on boot for Presario 711FR.
12910
12911Sleep improvements (Pavel Machek)
12912
12913ACPI can now be built without CONFIG_PCI enabled.
12914
12915IA64: Fixed memory map functions (JI Lee)
12916
12917
129183) iASL Compiler Version X2043:
12919
12920Added support to allow the compiler to be integrated into the MS
12921VC++ development environment for one-button compilation of single
12922files or entire projects -- with error-to-source-line mapping.
12923
12924Implemented support for compile-time constant folding for the
12925Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
12926specification.  This allows the ASL writer to use expressions
12927instead of Integer/Buffer/String constants in terms that must
12928evaluate to constants at compile time and will also simplify the
12929emitted AML in any such sub-expressions that can be folded
12930(evaluated at compile-time.)  This increases the size of the
12931compiler significantly because a portion of the ACPI CA AML
12932interpreter is included within the compiler in order to pre-
12933evaluate constant expressions.
12934
12935
12936Fixed a problem with the "Unicode" ASL macro that caused the
12937compiler to fault.  (This macro is used in conjunction with the
12938_STR reserved name.)
12939
12940Implemented an AML opcode optimization to use the Zero, One, and
12941Ones opcodes where possible to further reduce the size of integer
12942constants and thus reduce the overall size of the generated AML
12943code.
12944
12945Implemented error checking for new reserved terms for ACPI version
129462.0A.
12947
12948Implemented the -qr option to display the current list of ACPI
12949reserved names known to the compiler.
12950
12951Implemented the -qc option to display the current list of ASL
12952operators that are allowed within constant expressions and can
12953therefore be folded at compile time if the operands are constants.
12954
12955
129564) Documentation
12957
12958Updated the Programmer's Reference for new interfaces, data types,
12959and memory allocation model options.
12960
12961Updated the iASL Compiler User Reference to apply new format and
12962add information about new features and options.
12963
12964----------------------------------------
1296519 April 2002.  Summary of changes for this release.
12966
129671) ACPI CA Core Subsystem Version 20020419:
12968
12969The source code base for the Core Subsystem has been completely
12970cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
12971versions.  The Lint option files used are included in the
12972/acpi/generate/lint directory.
12973
12974Implemented enhanced status/error checking across the entire
12975Hardware manager subsystem.  Any hardware errors (reported from
12976the OSL) are now bubbled up and will abort a running control
12977method.
12978
12979
12980Fixed a problem where the per-ACPI-table integer width (32 or 64)
12981was stored only with control method nodes, causing a fault when
12982non-control method code was executed during table loading.  The
12983solution implemented uses a global variable to indicate table
12984width across the entire ACPI subsystem.  Therefore, ACPI CA does
12985not support mixed integer widths across different ACPI tables
12986(DSDT, SSDT).
12987
12988Fixed a problem where NULL extended fields (X fields) in an ACPI
129892.0 ACPI FADT caused the table load to fail.  Although the
12990existing ACPI specification is a bit fuzzy on this topic, the new
12991behavior is to fall back on a ACPI 1.0 field if the corresponding
12992ACPI 2.0 X field is zero (even though the table revision indicates
12993a full ACPI 2.0 table.)  The ACPI specification will be updated to
12994clarify this issue.
12995
12996Fixed a problem with the SystemMemory operation region handler
12997where memory was always accessed byte-wise even if the AML-
12998specified access width was larger than a byte.  This caused
12999problems on systems with memory-mapped I/O.  Memory is now
13000accessed with the width specified.  On systems that do not support
13001non-aligned transfers, a check is made to guarantee proper address
13002alignment before proceeding in order to avoid an AML-caused
13003alignment fault within the kernel.
13004
13005
13006Fixed a problem with the ExtendedIrq resource where only one byte
13007of the 4-byte Irq field was extracted.
13008
13009Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13010function was out of date and required a rewrite.
13011
13012Code and Data Size: Current core subsystem library sizes are shown
13013below.  These are the code and data sizes for the acpica.lib
13014produced by the Microsoft Visual C++ 6.0 compiler, and these
13015values do not include any ACPI driver or OSPM code.  The debug
13016version of the code includes the debug output trace mechanism and
13017has a larger code and data size.  Note that these values will vary
13018depending on the efficiency of the compiler and the compiler
13019options used during generation.
13020
13021  Previous Release
13022    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13023    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13024  Current Release:
13025    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13026    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13027
13028
130292) Linux
13030
13031PCI IRQ routing fixes (Dominik Brodowski)
13032
13033
130343) iASL Compiler Version X2042:
13035
13036Implemented an additional compile-time error check for a field
13037unit whose size + minimum access width would cause a run-time
13038access beyond the end-of-region.  Previously, only the field size
13039itself was checked.
13040
13041The Core subsystem and iASL compiler now share a common parse
13042object in preparation for compile-time evaluation of the type
130433/4/5 ASL operators.
13044
13045
13046----------------------------------------
13047Summary of changes for this release: 03_29_02
13048
130491) ACPI CA Core Subsystem Version 20020329:
13050
13051Implemented support for late evaluation of TermArg operands to
13052Buffer and Package objects.  This allows complex expressions to be
13053used in the declarations of these object types.
13054
13055Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
130561.0, if the field was larger than 32 bits, it was returned as a
13057buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13058the field is returned as a buffer only if the field is larger than
1305964 bits.  The TableRevision is now considered when making this
13060conversion to avoid incompatibility with existing ASL code.
13061
13062Implemented logical addressing for AcpiOsGetRootPointer.  This
13063allows an RSDP with either a logical or physical address.  With
13064this support, the host OS can now override all ACPI tables with
13065one logical RSDP.  Includes implementation of  "typed" pointer
13066support to allow a common data type for both physical and logical
13067pointers internally.  This required a change to the
13068AcpiOsGetRootPointer interface.
13069
13070Implemented the use of ACPI 2.0 Generic Address Structures for all
13071GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13072mapped I/O for these ACPI features.
13073
13074Initialization now ignores not only non-required tables (All
13075tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13076not validate the table headers of unrecognized tables.
13077
13078Fixed a problem where a notify handler could only be
13079installed/removed on an object of type Device.  All "notify"
13080
13081objects are now supported -- Devices, Processor, Power, and
13082Thermal.
13083
13084Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13085critical information is returned when this debug level is enabled.
13086
13087Code and Data Size: Current core subsystem library sizes are shown
13088below.  These are the code and data sizes for the acpica.lib
13089produced by the Microsoft Visual C++ 6.0 compiler, and these
13090values do not include any ACPI driver or OSPM code.  The debug
13091version of the code includes the debug output trace mechanism and
13092has a larger code and data size.  Note that these values will vary
13093depending on the efficiency of the compiler and the compiler
13094options used during generation.
13095
13096  Previous Release
13097    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13098    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13099  Current Release:
13100    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13101    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13102
13103
131042) Linux:
13105
13106The processor driver (acpi_processor.c) now fully supports ACPI
131072.0-based processor performance control (e.g. Intel(R)
13108SpeedStep(TM) technology) Note that older laptops that only have
13109the Intel "applet" interface are not supported through this.  The
13110'limit' and 'performance' interface (/proc) are fully functional.
13111[Note that basic policy for controlling performance state
13112transitions will be included in the next version of ospmd.]  The
13113idle handler was modified to more aggressively use C2, and PIIX4
13114errata handling underwent a complete overhaul (big thanks to
13115Dominik Brodowski).
13116
13117Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13118based devices in the ACPI namespace are now dynamically bound
13119(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13120This allows, among other things, ACPI to resolve bus numbers for
13121subordinate PCI bridges.
13122
13123Enhanced PCI IRQ routing to get the proper bus number for _PRT
13124entries defined underneath PCI bridges.
13125
13126Added IBM 600E to bad bios list due to invalid _ADR value for
13127PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13128
13129In the process of adding full MADT support (e.g. IOAPIC) for IA32
13130(acpi.c, mpparse.c) -- stay tuned.
13131
13132Added back visual differentiation between fixed-feature and
13133control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13134button/power/PWRF) to simplify button identification.
13135
13136We no longer use -Wno-unused when compiling debug. Please ignore
13137any "_THIS_MODULE defined but not used" messages.
13138
13139Can now shut down the system using "magic sysrq" key.
13140
13141
131423) iASL Compiler version 2041:
13143
13144Fixed a problem where conversion errors for hex/octal/decimal
13145constants were not reported.
13146
13147Implemented a fix for the General Register template Address field.
13148This field was 8 bits when it should be 64.
13149
13150Fixed a problem where errors/warnings were no longer being emitted
13151within the listing output file.
13152
13153Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
13154exactly 4 characters, alphanumeric only.
13155
13156
13157
13158
13159----------------------------------------
13160Summary of changes for this release: 03_08_02
13161
13162
131631) ACPI CA Core Subsystem Version 20020308:
13164
13165Fixed a problem with AML Fields where the use of the "AccessAny"
13166keyword could cause an interpreter error due to attempting to read
13167or write beyond the end of the parent Operation Region.
13168
13169Fixed a problem in the SystemMemory Operation Region handler where
13170an attempt was made to map memory beyond the end of the region.
13171This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
13172errors on some Linux systems.
13173
13174Fixed a problem where the interpreter/namespace "search to root"
13175algorithm was not functioning for some object types.  Relaxed the
13176internal restriction on the search to allow upsearches for all
13177external object types as well as most internal types.
13178
13179
131802) Linux:
13181
13182We now use safe_halt() macro versus individual calls to sti | hlt.
13183
13184Writing to the processor limit interface should now work. "echo 1"
13185will increase the limit, 2 will decrease, and 0 will reset to the
13186
13187default.
13188
13189
131903) ASL compiler:
13191
13192Fixed segfault on Linux version.
13193
13194
13195----------------------------------------
13196Summary of changes for this release: 02_25_02
13197
131981) ACPI CA Core Subsystem:
13199
13200
13201Fixed a problem where the GPE bit masks were not initialized
13202properly, causing erratic GPE behavior.
13203
13204Implemented limited support for multiple calling conventions.  The
13205code can be generated with either the VPL (variable parameter
13206list, or "C") convention, or the FPL (fixed parameter list, or
13207"Pascal") convention.  The core subsystem is about 3.4% smaller
13208when generated with FPL.
13209
13210
132112) Linux
13212
13213Re-add some /proc/acpi/event functionality that was lost during
13214the rewrite
13215
13216Resolved issue with /proc events for fixed-feature buttons showing
13217up as the system device.
13218
13219Fixed checks on C2/C3 latencies to be inclusive of maximum values.
13220
13221Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
13222
13223Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
13224
13225Fixed limit interface & usage to fix bugs with passive cooling
13226hysterisis.
13227
13228Restructured PRT support.
13229
13230
13231----------------------------------------
13232Summary of changes for this label: 02_14_02
13233
13234
132351) ACPI CA Core Subsystem:
13236
13237Implemented support in AcpiLoadTable to allow loading of FACS and
13238FADT tables.
13239
13240Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
13241been removed.  All 64-bit platforms should be migrated to the ACPI
132422.0 tables.  The actbl71.h header has been removed from the source
13243tree.
13244
13245All C macros defined within the subsystem have been prefixed with
13246"ACPI_" to avoid collision with other system include files.
13247
13248Removed the return value for the two AcpiOsPrint interfaces, since
13249it is never used and causes lint warnings for ignoring the return
13250value.
13251
13252Added error checking to all internal mutex acquire and release
13253calls.  Although a failure from one of these interfaces is
13254probably a fatal system error, these checks will cause the
13255immediate abort of the currently executing method or interface.
13256
13257Fixed a problem where the AcpiSetCurrentResources interface could
13258fault.  This was a side effect of the deployment of the new memory
13259allocation model.
13260
13261Fixed a couple of problems with the Global Lock support introduced
13262in the last major build.  The "common" (1.0/2.0) internal FACS was
13263being overwritten with the FACS signature and clobbering the
13264Global Lock pointer.  Also, the actual firmware FACS was being
13265unmapped after construction of the "common" FACS, preventing
13266access to the actual Global Lock field within it.  The "common"
13267internal FACS is no longer installed as an actual ACPI table; it
13268is used simply as a global.
13269
13270Code and Data Size: Current core subsystem library sizes are shown
13271below.  These are the code and data sizes for the acpica.lib
13272produced by the Microsoft Visual C++ 6.0 compiler, and these
13273values do not include any ACPI driver or OSPM code.  The debug
13274version of the code includes the debug output trace mechanism and
13275has a larger code and data size.  Note that these values will vary
13276depending on the efficiency of the compiler and the compiler
13277options used during generation.
13278
13279  Previous Release (02_07_01)
13280    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13281    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13282  Current Release:
13283    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13284    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13285
13286
132872) Linux
13288
13289Updated Linux-specific code for core macro and OSL interface
13290changes described above.
13291
13292Improved /proc/acpi/event. It now can be opened only once and has
13293proper poll functionality.
13294
13295Fixed and restructured power management (acpi_bus).
13296
13297Only create /proc "view by type" when devices of that class exist.
13298
13299Fixed "charging/discharging" bug (and others) in acpi_battery.
13300
13301Improved thermal zone code.
13302
13303
133043) ASL Compiler, version X2039:
13305
13306
13307Implemented the new compiler restriction on ASL String hex/octal
13308escapes to non-null, ASCII values.  An error results if an invalid
13309value is used.  (This will require an ACPI 2.0 specification
13310change.)
13311
13312AML object labels that are output to the optional C and ASM source
13313are now prefixed with both the ACPI table signature and table ID
13314to help guarantee uniqueness within a large BIOS project.
13315
13316
13317----------------------------------------
13318Summary of changes for this label: 02_01_02
13319
133201) ACPI CA Core Subsystem:
13321
13322ACPI 2.0 support is complete in the entire Core Subsystem and the
13323ASL compiler. All new ACPI 2.0 operators are implemented and all
13324other changes for ACPI 2.0 support are complete.  With
13325simultaneous code and data optimizations throughout the subsystem,
13326ACPI 2.0 support has been implemented with almost no additional
13327cost in terms of code and data size.
13328
13329Implemented a new mechanism for allocation of return buffers.  If
13330the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
13331be allocated on behalf of the caller.  Consolidated all return
13332buffer validation and allocation to a common procedure.  Return
13333buffers will be allocated via the primary OSL allocation interface
13334since it appears that a separate pool is not needed by most users.
13335If a separate pool is required for these buffers, the caller can
13336still use the original mechanism and pre-allocate the buffer(s).
13337
13338Implemented support for string operands within the DerefOf
13339operator.
13340
13341Restructured the Hardware and Event managers to be table driven,
13342simplifying the source code and reducing the amount of generated
13343code.
13344
13345Split the common read/write low-level ACPI register bitfield
13346procedure into a separate read and write, simplifying the code
13347considerably.
13348
13349Obsoleted the AcpiOsCallocate OSL interface.  This interface was
13350used only a handful of times and didn't have enough critical mass
13351for a separate interface.  Replaced with a common calloc procedure
13352in the core.
13353
13354Fixed a reported problem with the GPE number mapping mechanism
13355that allows GPE1 numbers to be non-contiguous with GPE0.
13356Reorganized the GPE information and shrunk a large array that was
13357originally large enough to hold info for all possible GPEs (256)
13358to simply large enough to hold all GPEs up to the largest GPE
13359number on the machine.
13360
13361Fixed a reported problem with resource structure alignment on 64-
13362bit platforms.
13363
13364Changed the AcpiEnableEvent and AcpiDisableEvent external
13365interfaces to not require any flags for the common case of
13366enabling/disabling a GPE.
13367
13368Implemented support to allow a "Notify" on a Processor object.
13369
13370Most TBDs in comments within the source code have been resolved
13371and eliminated.
13372
13373
13374Fixed a problem in the interpreter where a standalone parent
13375prefix (^) was not handled correctly in the interpreter and
13376debugger.
13377
13378Removed obsolete and unnecessary GPE save/restore code.
13379
13380Implemented Field support in the ASL Load operator.  This allows a
13381table to be loaded from a named field, in addition to loading a
13382table directly from an Operation Region.
13383
13384Implemented timeout and handle support in the external Global Lock
13385interfaces.
13386
13387Fixed a problem in the AcpiDump utility where pathnames were no
13388longer being generated correctly during the dump of named objects.
13389
13390Modified the AML debugger to give a full display of if/while
13391predicates instead of just one AML opcode at a time.  (The
13392predicate can have several nested ASL statements.)  The old method
13393was confusing during single stepping.
13394
13395Code and Data Size: Current core subsystem library sizes are shown
13396below. These are the code and data sizes for the acpica.lib
13397produced by the Microsoft Visual C++ 6.0 compiler, and these
13398values do not include any ACPI driver or OSPM code.  The debug
13399version of the code includes the debug output trace mechanism and
13400has a larger code and data size.  Note that these values will vary
13401depending on the efficiency of the compiler and the compiler
13402options used during generation.
13403
13404  Previous Release (12_18_01)
13405     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13406     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13407   Current Release:
13408     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13409     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13410
134112) Linux
13412
13413 Implemented fix for PIIX reverse throttling errata (Processor
13414driver)
13415
13416Added new Limit interface (Processor and Thermal drivers)
13417
13418New thermal policy (Thermal driver)
13419
13420Many updates to /proc
13421
13422Battery "low" event support (Battery driver)
13423
13424Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
13425
13426IA32 - IA64 initialization unification, no longer experimental
13427
13428Menuconfig options redesigned
13429
134303) ASL Compiler, version X2037:
13431
13432Implemented several new output features to simplify integration of
13433AML code into  firmware: 1) Output the AML in C source code with
13434labels for each named ASL object.  The    original ASL source code
13435is interleaved as C comments. 2) Output the AML in ASM source code
13436with labels and interleaved ASL    source. 3) Output the AML in
13437raw hex table form, in either C or ASM.
13438
13439Implemented support for optional string parameters to the
13440LoadTable operator.
13441
13442Completed support for embedded escape sequences within string
13443literals.  The compiler now supports all single character escapes
13444as well as the Octal and Hex escapes.  Note: the insertion of a
13445null byte into a string literal (via the hex/octal escape) causes
13446the string to be immediately terminated.  A warning is issued.
13447
13448Fixed a problem where incorrect AML was generated for the case
13449where an ASL namepath consists of a single parent prefix (
13450
13451) with no trailing name segments.
13452
13453The compiler has been successfully generated with a 64-bit C
13454compiler.
13455
13456
13457
13458
13459----------------------------------------
13460Summary of changes for this label: 12_18_01
13461
134621) Linux
13463
13464Enhanced blacklist with reason and severity fields. Any table's
13465signature may now be used to identify a blacklisted system.
13466
13467Call _PIC control method to inform the firmware which interrupt
13468model the OS is using. Turn on any disabled link devices.
13469
13470Cleaned up busmgr /proc error handling (Andreas Dilger)
13471
13472 2) ACPI CA Core Subsystem:
13473
13474Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
13475while loop)
13476
13477Completed implementation of the ACPI 2.0 "Continue",
13478"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
13479operators.  All new ACPI 2.0 operators are now implemented in both
13480the ASL compiler and the AML interpreter.  The only remaining ACPI
134812.0 task is support for the String data type in the DerefOf
13482operator.  Fixed a problem with AcquireMutex where the status code
13483was lost if the caller had to actually wait for the mutex.
13484
13485Increased the maximum ASL Field size from 64K bits to 4G bits.
13486
13487Completed implementation of the external Global Lock interfaces --
13488AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
13489Handler parameters were added.
13490
13491Completed another pass at removing warnings and issues when
13492compiling with 64-bit compilers.  The code now compiles cleanly
13493with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
13494add and subtract (diff) macros have changed considerably.
13495
13496
13497Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1349864-bit platforms, 32-bits on all others.  This type is used
13499wherever memory allocation and/or the C sizeof() operator is used,
13500and affects the OSL memory allocation interfaces AcpiOsAllocate
13501and AcpiOsCallocate.
13502
13503Implemented sticky user breakpoints in the AML debugger.
13504
13505Code and Data Size: Current core subsystem library sizes are shown
13506below. These are the code and data sizes for the acpica.lib
13507produced by the Microsoft Visual C++ 6.0 compiler, and these
13508values do not include any ACPI driver or OSPM code.  The debug
13509version of the code includes the debug output trace mechanism and
13510has a larger code and data size. Note that these values will vary
13511depending on the efficiency of the compiler and the compiler
13512options used during generation.
13513
13514  Previous Release (12_05_01)
13515     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13516     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13517   Current Release:
13518     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13519     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13520
13521 3) ASL Compiler, version X2034:
13522
13523Now checks for (and generates an error if detected) the use of a
13524Break or Continue statement without an enclosing While statement.
13525
13526
13527Successfully generated the compiler with the Intel 64-bit C
13528compiler.
13529
13530 ----------------------------------------
13531Summary of changes for this label: 12_05_01
13532
13533 1) ACPI CA Core Subsystem:
13534
13535The ACPI 2.0 CopyObject operator is fully implemented.  This
13536operator creates a new copy of an object (and is also used to
13537bypass the "implicit conversion" mechanism of the Store operator.)
13538
13539The ACPI 2.0 semantics for the SizeOf operator are fully
13540implemented.  The change is that performing a SizeOf on a
13541reference object causes an automatic dereference of the object to
13542tha actual value before the size is evaluated. This behavior was
13543undefined in ACPI 1.0.
13544
13545The ACPI 2.0 semantics for the Extended IRQ resource descriptor
13546have been implemented.  The interrupt polarity and mode are now
13547independently set.
13548
13549Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
13550appearing in Package objects were not properly converted to
13551integers when the internal Package was converted to an external
13552object (via the AcpiEvaluateObject interface.)
13553
13554Fixed a problem with the namespace object deletion mechanism for
13555objects created by control methods.  There were two parts to this
13556problem: 1) Objects created during the initialization phase method
13557parse were not being deleted, and 2) The object owner ID mechanism
13558to track objects was broken.
13559
13560Fixed a problem where the use of the ASL Scope operator within a
13561control method would result in an invalid opcode exception.
13562
13563Fixed a problem introduced in the previous label where the buffer
13564length required for the _PRT structure was not being returned
13565correctly.
13566
13567Code and Data Size: Current core subsystem library sizes are shown
13568below. These are the code and data sizes for the acpica.lib
13569produced by the Microsoft Visual C++ 6.0 compiler, and these
13570values do not include any ACPI driver or OSPM code.  The debug
13571version of the code includes the debug output trace mechanism and
13572has a larger code and data size.  Note that these values will vary
13573depending on the efficiency of the compiler and the compiler
13574options used during generation.
13575
13576  Previous Release (11_20_01)
13577     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13578     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13579
13580  Current Release:
13581     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13582     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13583
13584 2) Linux:
13585
13586Updated all files to apply cleanly against 2.4.16.
13587
13588Added basic PCI Interrupt Routing Table (PRT) support for IA32
13589(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
13590version supports both static and dyanmic PRT entries, but dynamic
13591entries are treated as if they were static (not yet
13592reconfigurable).  Architecture- specific code to use this data is
13593absent on IA32 but should be available shortly.
13594
13595Changed the initialization sequence to start the ACPI interpreter
13596(acpi_init) prior to initialization of the PCI driver (pci_init)
13597in init/main.c.  This ordering is required to support PRT and
13598facilitate other (future) enhancement.  A side effect is that the
13599ACPI bus driver and certain device drivers can no longer be loaded
13600as modules.
13601
13602Modified the 'make menuconfig' options to allow PCI Interrupt
13603Routing support to be included without the ACPI Bus and other
13604device drivers.
13605
13606 3) ASL Compiler, version X2033:
13607
13608Fixed some issues with the use of the new CopyObject and
13609DataTableRegion operators.  Both are fully functional.
13610
13611 ----------------------------------------
13612Summary of changes for this label: 11_20_01
13613
13614 20 November 2001.  Summary of changes for this release.
13615
13616 1) ACPI CA Core Subsystem:
13617
13618Updated Index support to match ACPI 2.0 semantics.  Storing a
13619Integer, String, or Buffer to an Index of a Buffer will store only
13620the least-significant byte of the source to the Indexed buffer
13621byte.  Multiple writes are not performed.
13622
13623Fixed a problem where the access type used in an AccessAs ASL
13624operator was not recorded correctly into the field object.
13625
13626Fixed a problem where ASL Event objects were created in a
13627signalled state. Events are now created in an unsignalled state.
13628
13629The internal object cache is now purged after table loading and
13630initialization to reduce the use of dynamic kernel memory -- on
13631the assumption that object use is greatest during the parse phase
13632of the entire table (versus the run-time use of individual control
13633methods.)
13634
13635ACPI 2.0 variable-length packages are now fully operational.
13636
13637Code and Data Size: Code and Data optimizations have permitted new
13638feature development with an actual reduction in the library size.
13639Current core subsystem library sizes are shown below.  These are
13640the code and data sizes for the acpica.lib produced by the
13641Microsoft Visual C++ 6.0 compiler, and these values do not include
13642any ACPI driver or OSPM code.  The debug version of the code
13643includes the debug output trace mechanism and has a larger code
13644and data size.  Note that these values will vary depending on the
13645efficiency of the compiler and the compiler options used during
13646generation.
13647
13648  Previous Release (11_09_01):
13649     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
13650     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
13651
13652  Current Release:
13653     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13654     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13655
13656 2) Linux:
13657
13658Enhanced the ACPI boot-time initialization code to allow the use
13659of Local APIC tables for processor enumeration on IA-32, and to
13660pave the way for a fully MPS-free boot (on SMP systems) in the
13661near future.  This functionality replaces
13662arch/i386/kernel/acpitables.c, which was introduced in an earlier
136632.4.15-preX release.  To enable this feature you must add
13664"acpi_boot=on" to the kernel command line -- see the help entry
13665for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
13666the works...
13667
13668Restructured the configuration options to allow boot-time table
13669parsing support without inclusion of the ACPI Interpreter (and
13670other) code.
13671
13672NOTE: This release does not include fixes for the reported events,
13673power-down, and thermal passive cooling issues (coming soon).
13674
13675 3) ASL Compiler:
13676
13677Added additional typechecking for Fields within restricted access
13678Operation Regions.  All fields within EC and CMOS regions must be
13679declared with ByteAcc. All fields withing SMBus regions must be
13680declared with the BufferAcc access type.
13681
13682Fixed a problem where the listing file output of control methods
13683no longer interleaved the actual AML code with the ASL source
13684code.
13685
13686
13687
13688
13689----------------------------------------
13690Summary of changes for this label: 11_09_01
13691
136921) ACPI CA Core Subsystem:
13693
13694Implemented ACPI 2.0-defined support for writes to fields with a
13695Buffer, String, or Integer source operand that is smaller than the
13696target field. In these cases, the source operand is zero-extended
13697to fill the target field.
13698
13699Fixed a problem where a Field starting bit offset (within the
13700parent operation region) was calculated incorrectly if the
13701
13702alignment of the field differed from the access width.  This
13703affected CreateWordField, CreateDwordField, CreateQwordField, and
13704possibly other fields that use the "AccessAny" keyword.
13705
13706Fixed a problem introduced in the 11_02_01 release where indirect
13707stores through method arguments did not operate correctly.
13708
137092) Linux:
13710
13711Implemented boot-time ACPI table parsing support
13712(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
13713facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
13714legacy BIOS interfaces (e.g. MPS) for the configuration of system
13715processors, memory, and interrupts during setup_arch().  Note that
13716this patch does not include the required architecture-specific
13717changes required to apply this information -- subsequent patches
13718will be posted for both IA32 and IA64 to achieve this.
13719
13720Added low-level sleep support for IA32 platforms, courtesy of Pat
13721Mochel. This allows IA32 systems to transition to/from various
13722sleeping states (e.g. S1, S3), although the lack of a centralized
13723driver model and power-manageable drivers will prevent its
13724(successful) use on most systems.
13725
13726Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
13727submenu, unified IA32 and IA64 options, added new "Boot using ACPI
13728tables" option, etc.
13729
13730Increased the default timeout for the EC driver from 1ms to 10ms
13731(1000 cycles of 10us) to try to address AE_TIME errors during EC
13732transactions.
13733
13734 ----------------------------------------
13735Summary of changes for this label: 11_02_01
13736
137371) ACPI CA Core Subsystem:
13738
13739ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
13740(QWordAcc keyword). All ACPI 2.0 64-bit support is now
13741implemented.
13742
13743OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
13744changes to support ACPI 2.0 Qword field access.  Read/Write
13745PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
13746accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
13747the value parameter for the address space handler interface is now
13748an ACPI_INTEGER.  OSL implementations of these interfaces must now
13749handle the case where the Width parameter is 64.
13750
13751Index Fields: Fixed a problem where unaligned bit assembly and
13752disassembly for IndexFields was not supported correctly.
13753
13754Index and Bank Fields:  Nested Index and Bank Fields are now
13755supported. During field access, a check is performed to ensure
13756that the value written to an Index or Bank register is not out of
13757the range of the register.  The Index (or Bank) register is
13758written before each access to the field data. Future support will
13759include allowing individual IndexFields to be wider than the
13760DataRegister width.
13761
13762Fields: Fixed a problem where the AML interpreter was incorrectly
13763attempting to write beyond the end of a Field/OpRegion.  This was
13764a boundary case that occurred when a DWORD field was written to a
13765BYTE access OpRegion, forcing multiple writes and causing the
13766interpreter to write one datum too many.
13767
13768Fields: Fixed a problem with Field/OpRegion access where the
13769starting bit address of a field was incorrectly calculated if the
13770current access type was wider than a byte (WordAcc, DwordAcc, or
13771QwordAcc).
13772
13773Fields: Fixed a problem where forward references to individual
13774FieldUnits (individual Field names within a Field definition) were
13775not resolved during the AML table load.
13776
13777Fields: Fixed a problem where forward references from a Field
13778definition to the parent Operation Region definition were not
13779resolved during the AML table load.
13780
13781Fields: Duplicate FieldUnit names within a scope are now detected
13782during AML table load.
13783
13784Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
13785returned an incorrect name for the root node.
13786
13787Code and Data Size: Code and Data optimizations have permitted new
13788feature development with an actual reduction in the library size.
13789Current core subsystem library sizes are shown below.  These are
13790the code and data sizes for the acpica.lib produced by the
13791Microsoft Visual C++ 6.0 compiler, and these values do not include
13792any ACPI driver or OSPM code.  The debug version of the code
13793includes the debug output trace mechanism and has a larger code
13794and data size.  Note that these values will vary depending on the
13795efficiency of the compiler and the compiler options used during
13796generation.
13797
13798  Previous Release (10_18_01):
13799     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
13800     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
13801
13802  Current Release:
13803     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
13804     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
13805
13806 2) Linux:
13807
13808Improved /proc processor output (Pavel Machek) Re-added
13809MODULE_LICENSE("GPL") to all modules.
13810
13811 3) ASL Compiler version X2030:
13812
13813Duplicate FieldUnit names within a scope are now detected and
13814flagged as errors.
13815
13816 4) Documentation:
13817
13818Programmer Reference updated to reflect OSL and address space
13819handler interface changes described above.
13820
13821----------------------------------------
13822Summary of changes for this label: 10_18_01
13823
13824ACPI CA Core Subsystem:
13825
13826Fixed a problem with the internal object reference count mechanism
13827that occasionally caused premature object deletion. This resolves
13828all of the outstanding problem reports where an object is deleted
13829in the middle of an interpreter evaluation.  Although this problem
13830only showed up in rather obscure cases, the solution to the
13831problem involved an adjustment of all reference counts involving
13832objects attached to namespace nodes.
13833
13834Fixed a problem with Field support in the interpreter where
13835writing to an aligned field whose length is an exact multiple (2
13836or greater) of the field access granularity would cause an attempt
13837to write beyond the end of the field.
13838
13839The top level AML opcode execution functions within the
13840interpreter have been renamed with a more meaningful and
13841consistent naming convention.  The modules exmonad.c and
13842exdyadic.c were eliminated.  New modules are exoparg1.c,
13843exoparg2.c, exoparg3.c, and exoparg6.c.
13844
13845Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
13846
13847Fixed a problem where the AML debugger was causing some internal
13848objects to not be deleted during subsystem termination.
13849
13850Fixed a problem with the external AcpiEvaluateObject interface
13851where the subsystem would fault if the named object to be
13852evaluated refered to a constant such as Zero, Ones, etc.
13853
13854Fixed a problem with IndexFields and BankFields where the
13855subsystem would fault if the index, data, or bank registers were
13856not defined in the same scope as the field itself.
13857
13858Added printf format string checking for compilers that support
13859this feature.  Corrected more than 50 instances of issues with
13860format specifiers within invocations of ACPI_DEBUG_PRINT
13861throughout the core subsystem code.
13862
13863The ASL "Revision" operator now returns the ACPI support level
13864implemented in the core - the value "2" since the ACPI 2.0 support
13865is more than 50% implemented.
13866
13867Enhanced the output of the AML debugger "dump namespace" command
13868to output in a more human-readable form.
13869
13870Current core subsystem library code sizes are shown below.  These
13871
13872are the code and data sizes for the acpica.lib produced by the
13873Microsoft Visual C++ 6.0 compiler, and these values do not include
13874any ACPI driver or OSPM code.  The debug version of the code
13875includes the full debug trace mechanism -- leading to a much
13876
13877larger code and data size.  Note that these values will vary
13878depending on the efficiency of the compiler and the compiler
13879options used during generation.
13880
13881     Previous Label (09_20_01):
13882     Non-Debug Version:    65K Code,     5K Data,     70K Total
13883     Debug Version:       138K Code,    58K Data,    196K Total
13884
13885     This Label:
13886
13887     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
13888     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
13889
13890Linux:
13891
13892Implemented a "Bad BIOS Blacklist" to track machines that have
13893known ASL/AML problems.
13894
13895Enhanced the /proc interface for the thermal zone driver and added
13896support for _HOT (the critical suspend trip point).  The 'info'
13897file now includes threshold/policy information, and allows setting
13898of _SCP (cooling preference) and _TZP (polling frequency) values
13899to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
13900frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
13901preference to the passive/quiet mode (if supported by the ASL).
13902
13903Implemented a workaround for a gcc bug that resuted in an OOPs
13904when loading the control method battery driver.
13905
13906 ----------------------------------------
13907Summary of changes for this label: 09_20_01
13908
13909 ACPI CA Core Subsystem:
13910
13911The AcpiEnableEvent and AcpiDisableEvent interfaces have been
13912modified to allow individual GPE levels to be flagged as wake-
13913enabled (i.e., these GPEs are to remain enabled when the platform
13914sleeps.)
13915
13916The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
13917support wake-enabled GPEs.  This means that upon entering the
13918sleep state, all GPEs that are not wake-enabled are disabled.
13919When leaving the sleep state, these GPEs are reenabled.
13920
13921A local double-precision divide/modulo module has been added to
13922enhance portability to OS kernels where a 64-bit math library is
13923not available.  The new module is "utmath.c".
13924
13925Several optimizations have been made to reduce the use of CPU
13926stack.  Originally over 2K, the maximum stack usage is now below
139272K at 1860  bytes (1.82k)
13928
13929Fixed a problem with the AcpiGetFirmwareTable interface where the
13930root table pointer was not mapped into a logical address properly.
13931
13932Fixed a problem where a NULL pointer was being dereferenced in the
13933interpreter code for the ASL Notify operator.
13934
13935Fixed a problem where the use of the ASL Revision operator
13936returned an error. This operator now returns the current version
13937of the ACPI CA core subsystem.
13938
13939Fixed a problem where objects passed as control method parameters
13940to AcpiEvaluateObject were always deleted at method termination.
13941However, these objects may end up being stored into the namespace
13942by the called method.  The object reference count mechanism was
13943applied to these objects instead of a force delete.
13944
13945Fixed a problem where static strings or buffers (contained in the
13946AML code) that are declared as package elements within the ASL
13947code could cause a fault because the interpreter would attempt to
13948delete them.  These objects are now marked with the "static
13949object" flag to prevent any attempt to delete them.
13950
13951Implemented an interpreter optimization to use operands directly
13952from the state object instead of extracting the operands to local
13953variables.  This reduces stack use and code size, and improves
13954performance.
13955
13956The module exxface.c was eliminated as it was an unnecessary extra
13957layer of code.
13958
13959Current core subsystem library code sizes are shown below.  These
13960are the code and data sizes for the acpica.lib produced by the
13961Microsoft Visual C++ 6.0 compiler, and these values do not include
13962any ACPI driver or OSPM code.  The debug version of the code
13963includes the full debug trace mechanism -- leading to a much
13964larger code and data size.  Note that these values will vary
13965depending on the efficiency of the compiler and the compiler
13966options used during generation.
13967
13968  Non-Debug Version:  65K Code,   5K Data,   70K Total
13969(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
13970Total  (Previously 195K)
13971
13972Linux:
13973
13974Support for ACPI 2.0 64-bit integers has been added.   All ACPI
13975Integer objects are now 64 bits wide
13976
13977All Acpi data types and structures are now in lower case.  Only
13978Acpi macros are upper case for differentiation.
13979
13980 Documentation:
13981
13982Changes to the external interfaces as described above.
13983
13984 ----------------------------------------
13985Summary of changes for this label: 08_31_01
13986
13987 ACPI CA Core Subsystem:
13988
13989A bug with interpreter implementation of the ASL Divide operator
13990was found and fixed.  The implicit function return value (not the
13991explicit store operands) was returning the remainder instead of
13992the quotient.  This was a longstanding bug and it fixes several
13993known outstanding issues on various platforms.
13994
13995The ACPI_DEBUG_PRINT and function trace entry/exit macros have
13996been further optimized for size.  There are 700 invocations of the
13997DEBUG_PRINT macro alone, so each optimization reduces the size of
13998the debug version of the subsystem significantly.
13999
14000A stack trace mechanism has been implemented.  The maximum stack
14001usage is about 2K on 32-bit platforms.  The debugger command "stat
14002stack" will display the current maximum stack usage.
14003
14004All public symbols and global variables within the subsystem are
14005now prefixed with the string "Acpi".  This keeps all of the
14006symbols grouped together in a kernel map, and avoids conflicts
14007with other kernel subsystems.
14008
14009Most of the internal fixed lookup tables have been moved into the
14010code segment via the const operator.
14011
14012Several enhancements have been made to the interpreter to both
14013reduce the code size and improve performance.
14014
14015Current core subsystem library code sizes are shown below.  These
14016are the code and data sizes for the acpica.lib produced by the
14017Microsoft Visual C++ 6.0 compiler, and these values do not include
14018any ACPI driver or OSPM code.  The debug version of the code
14019includes the full debug trace mechanism which contains over 700
14020invocations of the DEBUG_PRINT macro, 500 function entry macro
14021invocations, and over 900 function exit macro invocations --
14022leading to a much larger code and data size.  Note that these
14023values will vary depending on the efficiency of the compiler and
14024the compiler options used during generation.
14025
14026        Non-Debug Version:  64K Code,   5K Data,   69K Total
14027Debug Version:     137K Code,  58K Data,  195K Total
14028
14029 Linux:
14030
14031Implemented wbinvd() macro, pending a kernel-wide definition.
14032
14033Fixed /proc/acpi/event to handle poll() and short reads.
14034
14035 ASL Compiler, version X2026:
14036
14037Fixed a problem introduced in the previous label where the AML
14038
14039code emitted for package objects produced packages with zero
14040length.
14041
14042 ----------------------------------------
14043Summary of changes for this label: 08_16_01
14044
14045ACPI CA Core Subsystem:
14046
14047The following ACPI 2.0 ASL operators have been implemented in the
14048AML interpreter (These are already supported by the Intel ASL
14049compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14050ToBuffer.  Support for 64-bit AML constants is implemented in the
14051AML parser, debugger, and disassembler.
14052
14053The internal memory tracking mechanism (leak detection code) has
14054been upgraded to reduce the memory overhead (a separate tracking
14055block is no longer allocated for each memory allocation), and now
14056supports all of the internal object caches.
14057
14058The data structures and code for the internal object caches have
14059been coelesced and optimized so that there is a single cache and
14060memory list data structure and a single group of functions that
14061implement generic cache management.  This has reduced the code
14062size in both the debug and release versions of the subsystem.
14063
14064The DEBUG_PRINT macro(s) have been optimized for size and replaced
14065by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14066different, because it generates a single call to an internal
14067function.  This results in a savings of about 90 bytes per
14068invocation, resulting in an overall code and data savings of about
1406916% in the debug version of the subsystem.
14070
14071 Linux:
14072
14073Fixed C3 disk corruption problems and re-enabled C3 on supporting
14074machines.
14075
14076Integrated low-level sleep code by Patrick Mochel.
14077
14078Further tweaked source code Linuxization.
14079
14080Other minor fixes.
14081
14082 ASL Compiler:
14083
14084Support for ACPI 2.0 variable length packages is fixed/completed.
14085
14086Fixed a problem where the optional length parameter for the ACPI
140872.0 ToString operator.
14088
14089Fixed multiple extraneous error messages when a syntax error is
14090detected within the declaration line of a control method.
14091
14092 ----------------------------------------
14093Summary of changes for this label: 07_17_01
14094
14095ACPI CA Core Subsystem:
14096
14097Added a new interface named AcpiGetFirmwareTable to obtain any
14098ACPI table via the ACPI signature.  The interface can be called at
14099any time during kernel initialization, even before the kernel
14100virtual memory manager is initialized and paging is enabled.  This
14101allows kernel subsystems to obtain ACPI tables very early, even
14102before the ACPI CA subsystem is initialized.
14103
14104Fixed a problem where Fields defined with the AnyAcc attribute
14105could be resolved to the incorrect address under the following
14106conditions: 1) the field width is larger than 8 bits and 2) the
14107parent operation region is not defined on a DWORD boundary.
14108
14109Fixed a problem where the interpreter is not being locked during
14110namespace initialization (during execution of the _INI control
14111methods), causing an error when an attempt is made to release it
14112later.
14113
14114ACPI 2.0 support in the AML Interpreter has begun and will be
14115ongoing throughout the rest of this year.  In this label, The Mod
14116operator is implemented.
14117
14118Added a new data type to contain full PCI addresses named
14119ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14120and Function values.
14121
14122 Linux:
14123
14124Enhanced the Linux version of the source code to change most
14125capitalized ACPI type names to lowercase. For example, all
14126instances of ACPI_STATUS are changed to acpi_status.  This will
14127result in a large diff, but the change is strictly cosmetic and
14128aligns the CA code closer to the Linux coding standard.
14129
14130OSL Interfaces:
14131
14132The interfaces to the PCI configuration space have been changed to
14133add the PCI Segment number and to split the single 32-bit combined
14134DeviceFunction field into two 16-bit fields.  This was
14135accomplished by moving the four values that define an address in
14136PCI configuration space (segment, bus, device, and function) to
14137the new ACPI_PCI_ID structure.
14138
14139The changes to the PCI configuration space interfaces led to a
14140reexamination of the complete set of address space access
14141interfaces for PCI, I/O, and Memory.  The previously existing 18
14142interfaces have proven difficult to maintain (any small change
14143must be propagated across at least 6 interfaces) and do not easily
14144allow for future expansion to 64 bits if necessary.  Also, on some
14145systems, it would not be appropriate to demultiplex the access
14146width (8, 16, 32,or 64) before calling the OSL if the
14147corresponding native OS interfaces contain a similar access width
14148parameter.  For these reasons, the 18 address space interfaces
14149have been replaced by these 6 new ones:
14150
14151AcpiOsReadPciConfiguration
14152AcpiOsWritePciConfiguration
14153AcpiOsReadMemory
14154AcpiOsWriteMemory
14155AcpiOsReadPort
14156AcpiOsWritePort
14157
14158Added a new interface named AcpiOsGetRootPointer to allow the OSL
14159to perform the platform and/or OS-specific actions necessary to
14160obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
14161interface will simply call down to the CA core to perform the low-
14162memory search for the table.  On IA-64, the RSDP is obtained from
14163EFI.  Migrating this interface to the OSL allows the CA core to
14164
14165remain OS and platform independent.
14166
14167Added a new interface named AcpiOsSignal to provide a generic
14168"function code and pointer" interface for various miscellaneous
14169signals and notifications that must be made to the host OS.   The
14170first such signals are intended to support the ASL Fatal and
14171Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
14172interface has been obsoleted.
14173
14174The definition of the AcpiFormatException interface has been
14175changed to simplify its use.  The caller no longer must supply a
14176buffer to the call; A pointer to a const string is now returned
14177directly.  This allows the call to be easily used in printf
14178statements, etc. since the caller does not have to manage a local
14179buffer.
14180
14181
14182 ASL Compiler, Version X2025:
14183
14184The ACPI 2.0 Switch/Case/Default operators have been implemented
14185and are fully functional.  They will work with all ACPI 1.0
14186interpreters, since the operators are simply translated to If/Else
14187pairs.
14188
14189The ACPI 2.0 ElseIf operator is implemented and will also work
14190with 1.0 interpreters, for the same reason.
14191
14192Implemented support for ACPI 2.0 variable-length packages.  These
14193packages have a separate opcode, and their size is determined by
14194the interpreter at run-time.
14195
14196Documentation The ACPI CA Programmer Reference has been updated to
14197reflect the new interfaces and changes to existing interfaces.
14198
14199 ------------------------------------------
14200Summary of changes for this label: 06_15_01
14201
14202 ACPI CA Core Subsystem:
14203
14204Fixed a problem where a DWORD-accessed field within a Buffer
14205object would get its byte address inadvertently rounded down to
14206the nearest DWORD.  Buffers are always Byte-accessible.
14207
14208 ASL Compiler, version X2024:
14209
14210Fixed a problem where the Switch() operator would either fault or
14211hang the compiler.  Note however, that the AML code for this ACPI
142122.0 operator is not yet implemented.
14213
14214Compiler uses the new AcpiOsGetTimer interface to obtain compile
14215timings.
14216
14217Implementation of the CreateField operator automatically converts
14218a reference to a named field within a resource descriptor from a
14219byte offset to a bit offset if required.
14220
14221Added some missing named fields from the resource descriptor
14222support. These are the names that are automatically created by the
14223compiler to reference fields within a descriptor.  They are only
14224valid at compile time and are not passed through to the AML
14225interpreter.
14226
14227Resource descriptor named fields are now typed as Integers and
14228subject to compile-time typechecking when used in expressions.
14229
14230 ------------------------------------------
14231Summary of changes for this label: 05_18_01
14232
14233 ACPI CA Core Subsystem:
14234
14235Fixed a couple of problems in the Field support code where bits
14236from adjacent fields could be returned along with the proper field
14237bits. Restructured the field support code to improve performance,
14238readability and maintainability.
14239
14240New DEBUG_PRINTP macro automatically inserts the procedure name
14241into the output, saving hundreds of copies of procedure name
14242strings within the source, shrinking the memory footprint of the
14243debug version of the core subsystem.
14244
14245 Source Code Structure:
14246
14247The source code directory tree was restructured to reflect the
14248current organization of the component architecture.  Some files
14249and directories have been moved and/or renamed.
14250
14251 Linux:
14252
14253Fixed leaking kacpidpc processes.
14254
14255Fixed queueing event data even when /proc/acpi/event is not
14256opened.
14257
14258 ASL Compiler, version X2020:
14259
14260Memory allocation performance enhancement - over 24X compile time
14261improvement on large ASL files.  Parse nodes and namestring
14262buffers are now allocated from a large internal compiler buffer.
14263
14264The temporary .SRC file is deleted unless the "-s" option is
14265specified
14266
14267The "-d" debug output option now sends all output to the .DBG file
14268instead of the console.
14269
14270"External" second parameter is now optional
14271
14272"ElseIf" syntax now properly allows the predicate
14273
14274Last operand to "Load" now recognized as a Target operand
14275
14276Debug object can now be used anywhere as a normal object.
14277
14278ResourceTemplate now returns an object of type BUFFER
14279
14280EISAID now returns an object of type INTEGER
14281
14282"Index" now works with a STRING operand
14283
14284"LoadTable" now accepts optional parameters
14285
14286"ToString" length parameter is now optional
14287
14288"Interrupt (ResourceType," parse error fixed.
14289
14290"Register" with a user-defined region space parse error fixed
14291
14292Escaped backslash at the end of a string ("\\") scan/parse error
14293fixed
14294
14295"Revision" is now an object of type INTEGER.
14296
14297
14298
14299------------------------------------------
14300Summary of changes for this label: 05_02_01
14301
14302Linux:
14303
14304/proc/acpi/event now blocks properly.
14305
14306Removed /proc/sys/acpi. You can still dump your DSDT from
14307/proc/acpi/dsdt.
14308
14309 ACPI CA Core Subsystem:
14310
14311Fixed a problem introduced in the previous label where some of the
14312"small" resource descriptor types were not recognized.
14313
14314Improved error messages for the case where an ASL Field is outside
14315the range of the parent operation region.
14316
14317 ASL Compiler, version X2018:
14318
14319
14320Added error detection for ASL Fields that extend beyond the length
14321of the parent operation region (only if the length of the region
14322is known at compile time.)  This includes fields that have a
14323minimum access width that is smaller than the parent region, and
14324individual field units that are partially or entirely beyond the
14325extent of the parent.
14326
14327
14328
14329------------------------------------------
14330Summary of changes for this label: 04_27_01
14331
14332 ACPI CA Core Subsystem:
14333
14334Fixed a problem where the namespace mutex could be released at the
14335wrong time during execution of AcpiRemoveAddressSpaceHandler.
14336
14337Added optional thread ID output for debug traces, to simplify
14338debugging of multiple threads.  Added context switch notification
14339when the debug code realizes that a different thread is now
14340executing ACPI code.
14341
14342Some additional external data types have been prefixed with the
14343string "ACPI_" for consistency.  This may effect existing code.
14344The data types affected are the external callback typedefs - e.g.,
14345
14346WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
14347
14348 Linux:
14349
14350Fixed an issue with the OSL semaphore implementation where a
14351thread was waking up with an error from receiving a SIGCHLD
14352signal.
14353
14354Linux version of ACPI CA now uses the system C library for string
14355manipulation routines instead of a local implementation.
14356
14357Cleaned up comments and removed TBDs.
14358
14359 ASL Compiler, version X2017:
14360
14361Enhanced error detection and reporting for all file I/O
14362operations.
14363
14364 Documentation:
14365
14366Programmer Reference updated to version 1.06.
14367
14368
14369
14370------------------------------------------
14371Summary of changes for this label: 04_13_01
14372
14373 ACPI CA Core Subsystem:
14374
14375Restructured support for BufferFields and RegionFields.
14376BankFields support is now fully operational.  All known 32-bit
14377limitations on field sizes have been removed.  Both BufferFields
14378and (Operation) RegionFields are now supported by the same field
14379management code.
14380
14381Resource support now supports QWORD address and IO resources. The
1438216/32/64 bit address structures and the Extended IRQ structure
14383have been changed to properly handle Source Resource strings.
14384
14385A ThreadId of -1 is now used to indicate a "mutex not acquired"
14386condition internally and must never be returned by AcpiOsThreadId.
14387This reserved value was changed from 0 since Unix systems allow a
14388thread ID of 0.
14389
14390Linux:
14391
14392Driver code reorganized to enhance portability
14393
14394Added a kernel configuration option to control ACPI_DEBUG
14395
14396Fixed the EC driver to honor _GLK.
14397
14398ASL Compiler, version X2016:
14399
14400Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
14401address space was set to 0, not 0x7f as it should be.
14402
14403 ------------------------------------------
14404Summary of changes for this label: 03_13_01
14405
14406 ACPI CA Core Subsystem:
14407
14408During ACPI initialization, the _SB_._INI method is now run if
14409present.
14410
14411Notify handler fix - notifies are deferred until the parent method
14412completes execution.  This fixes the "mutex already acquired"
14413issue seen occasionally.
14414
14415Part of the "implicit conversion" rules in ACPI 2.0 have been
14416found to cause compatibility problems with existing ASL/AML.  The
14417convert "result-to-target-type" implementation has been removed
14418for stores to method Args and Locals.  Source operand conversion
14419is still fully implemented.  Possible changes to ACPI 2.0
14420specification pending.
14421
14422Fix to AcpiRsCalculatePciRoutingTableLength to return correct
14423length.
14424
14425Fix for compiler warnings for 64-bit compiles.
14426
14427 Linux:
14428
14429/proc output aligned for easier parsing.
14430
14431Release-version compile problem fixed.
14432
14433New kernel configuration options documented in Configure.help.
14434
14435IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
14436context" message.
14437
14438 OSPM:
14439
14440Power resource driver integrated with bus manager.
14441
14442Fixed kernel fault during active cooling for thermal zones.
14443
14444Source Code:
14445
14446The source code tree has been restructured.
14447
14448
14449
14450------------------------------------------
14451Summary of changes for this label: 03_02_01
14452
14453 Linux OS Services Layer (OSL):
14454
14455Major revision of all Linux-specific code.
14456
14457Modularized all ACPI-specific drivers.
14458
14459Added new thermal zone and power resource drivers.
14460
14461Revamped /proc interface (new functionality is under /proc/acpi).
14462
14463New kernel configuration options.
14464
14465 Linux known issues:
14466
14467New kernel configuration options not documented in Configure.help
14468yet.
14469
14470
14471Module dependencies not currently implemented. If used, they
14472should be loaded in this order: busmgr, power, ec, system,
14473processor, battery, ac_adapter, button, thermal.
14474
14475Modules will not load if CONFIG_MODVERSION is set.
14476
14477IBM 600E - entering S5 may reboot instead of shutting down.
14478
14479IBM 600E - Sleep button may generate "Invalid <NULL> context"
14480message.
14481
14482Some systems may fail with "execution mutex already acquired"
14483message.
14484
14485 ACPI CA Core Subsystem:
14486
14487Added a new OSL Interface, AcpiOsGetThreadId.  This was required
14488for the  deadlock detection code. Defined to return a non-zero, 32-
14489bit thread ID for the currently executing thread.  May be a non-
14490zero constant integer on single-thread systems.
14491
14492Implemented deadlock detection for internal subsystem mutexes.  We
14493may add conditional compilation for this code (debug only) later.
14494
14495ASL/AML Mutex object semantics are now fully supported.  This
14496includes multiple acquires/releases by owner and support for the
14497
14498Mutex SyncLevel parameter.
14499
14500A new "Force Release" mechanism automatically frees all ASL
14501Mutexes that have been acquired but not released when a thread
14502exits the interpreter.  This forces conformance to the ACPI spec
14503("All mutexes must be released when an invocation exits") and
14504prevents deadlocked ASL threads.  This mechanism can be expanded
14505(later) to monitor other resource acquisitions if OEM ASL code
14506continues to misbehave (which it will).
14507
14508Several new ACPI exception codes have been added for the Mutex
14509support.
14510
14511Recursive method calls are now allowed and supported (the ACPI
14512spec does in fact allow recursive method calls.)  The number of
14513recursive calls is subject to the restrictions imposed by the
14514SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
14515parameter.
14516
14517Implemented support for the SyncLevel parameter for control
14518methods (ACPI 2.0 feature)
14519
14520Fixed a deadlock problem when multiple threads attempted to use
14521the interpreter.
14522
14523Fixed a problem where the string length of a String package
14524element was not always set in a package returned from
14525AcpiEvaluateObject.
14526
14527Fixed a problem where the length of a String package element was
14528not always included in the length of the overall package returned
14529from AcpiEvaluateObject.
14530
14531Added external interfaces (Acpi*) to the ACPI debug memory
14532manager.  This manager keeps a list of all outstanding
14533allocations, and can therefore detect memory leaks and attempts to
14534free memory blocks more than once. Useful for code such as the
14535power manager, etc.  May not be appropriate for device drivers.
14536Performance with the debug code enabled is slow.
14537
14538The ACPI Global Lock is now an optional hardware element.
14539
14540 ASL Compiler Version X2015:
14541
14542Integrated changes to allow the compiler to be generated on
14543multiple platforms.
14544
14545Linux makefile added to generate the compiler on Linux
14546
14547 Source Code:
14548
14549All platform-specific headers have been moved to their own
14550subdirectory, Include/Platform.
14551
14552New source file added, Interpreter/ammutex.c
14553
14554New header file, Include/acstruct.h
14555
14556 Documentation:
14557
14558The programmer reference has been updated for the following new
14559interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
14560
14561 ------------------------------------------
14562Summary of changes for this label: 02_08_01
14563
14564Core ACPI CA Subsystem: Fixed a problem where an error was
14565incorrectly returned if the return resource buffer was larger than
14566the actual data (in the resource interfaces).
14567
14568References to named objects within packages are resolved to the
14569
14570full pathname string before packages are returned directly (via
14571the AcpiEvaluateObject interface) or indirectly via the resource
14572interfaces.
14573
14574Linux OS Services Layer (OSL):
14575
14576Improved /proc battery interface.
14577
14578
14579Added C-state debugging output and other miscellaneous fixes.
14580
14581ASL Compiler Version X2014:
14582
14583All defined method arguments can now be used as local variables,
14584including the ones that are not actually passed in as parameters.
14585The compiler tracks initialization of the arguments and issues an
14586exception if they are used without prior assignment (just like
14587locals).
14588
14589The -o option now specifies a filename prefix that is used for all
14590output files, including the AML output file.  Otherwise, the
14591default behavior is as follows:  1) the AML goes to the file
14592specified in the DSDT.  2) all other output files use the input
14593source filename as the base.
14594
14595 ------------------------------------------
14596Summary of changes for this label: 01_25_01
14597
14598Core ACPI CA Subsystem: Restructured the implementation of object
14599store support within the  interpreter.  This includes support for
14600the Store operator as well  as any ASL operators that include a
14601target operand.
14602
14603Partially implemented support for Implicit Result-to-Target
14604conversion. This is when a result object is converted on the fly
14605to the type of  an existing target object.  Completion of this
14606support is pending  further analysis of the ACPI specification
14607concerning this matter.
14608
14609CPU-specific code has been removed from the subsystem (hardware
14610directory).
14611
14612New Power Management Timer functions added
14613
14614Linux OS Services Layer (OSL): Moved system state transition code
14615to the core, fixed it, and modified  Linux OSL accordingly.
14616
14617Fixed C2 and C3 latency calculations.
14618
14619
14620We no longer use the compilation date for the version message on
14621initialization, but retrieve the version from AcpiGetSystemInfo().
14622
14623Incorporated for fix Sony VAIO machines.
14624
14625Documentation:  The Programmer Reference has been updated and
14626reformatted.
14627
14628
14629ASL Compiler:  Version X2013: Fixed a problem where the line
14630numbering and error reporting could get out  of sync in the
14631presence of multiple include files.
14632
14633 ------------------------------------------
14634Summary of changes for this label: 01_15_01
14635
14636Core ACPI CA Subsystem:
14637
14638Implemented support for type conversions in the execution of the
14639ASL  Concatenate operator (The second operand is converted to
14640match the type  of the first operand before concatenation.)
14641
14642Support for implicit source operand conversion is partially
14643implemented.   The ASL source operand types Integer, Buffer, and
14644String are freely  interchangeable for most ASL operators and are
14645converted by the interpreter  on the fly as required.  Implicit
14646Target operand conversion (where the  result is converted to the
14647target type before storing) is not yet implemented.
14648
14649Support for 32-bit and 64-bit BCD integers is implemented.
14650
14651Problem fixed where a field read on an aligned field could cause a
14652read  past the end of the field.
14653
14654New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
14655does not return a value, but the caller expects one.  (The ASL
14656compiler flags this as a warning.)
14657
14658ASL Compiler:
14659
14660Version X2011:
146611. Static typechecking of all operands is implemented. This
14662prevents the use of invalid objects (such as using a Package where
14663an Integer is required) at compile time instead of at interpreter
14664run-time.
146652. The ASL source line is printed with ALL errors and warnings.
146663. Bug fix for source EOF without final linefeed.
146674. Debug option is split into a parse trace and a namespace trace.
146685. Namespace output option (-n) includes initial values for
14669integers and strings.
146706. Parse-only option added for quick syntax checking.
146717. Compiler checks for duplicate ACPI name declarations
14672
14673Version X2012:
146741. Relaxed typechecking to allow interchangeability between
14675strings, integers, and buffers.  These types are now converted by
14676the interpreter at runtime.
146772. Compiler reports time taken by each internal subsystem in the
14678debug         output file.
14679
14680
14681 ------------------------------------------
14682Summary of changes for this label: 12_14_00
14683
14684ASL Compiler:
14685
14686This is the first official release of the compiler. Since the
14687compiler requires elements of the Core Subsystem, this label
14688synchronizes everything.
14689
14690------------------------------------------
14691Summary of changes for this label: 12_08_00
14692
14693
14694Fixed a problem where named references within the ASL definition
14695of both OperationRegions and CreateXXXFields did not work
14696properly.  The symptom was an AE_AML_OPERAND_TYPE during
14697initialization of the region/field. This is similar (but not
14698related internally) to the problem that was fixed in the last
14699label.
14700
14701Implemented both 32-bit and 64-bit support for the BCD ASL
14702functions ToBCD and FromBCD.
14703
14704Updated all legal headers to include "2000" in the copyright
14705years.
14706
14707 ------------------------------------------
14708Summary of changes for this label: 12_01_00
14709
14710Fixed a problem where method invocations within the ASL definition
14711of both OperationRegions and CreateXXXFields did not work
14712properly.  The symptom was an AE_AML_OPERAND_TYPE during
14713initialization of the region/field:
14714
14715  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
14716[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
14717(0x3005)
14718
14719Fixed a problem where operators with more than one nested
14720subexpression would fail.  The symptoms were varied, by mostly
14721AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
14722problem that has gone unnoticed until now.
14723
14724  Subtract (Add (1,2), Multiply (3,4))
14725
14726Fixed a problem where AcpiGetHandle didn't quite get fixed in the
14727previous build (The prefix part of a relative path was handled
14728incorrectly).
14729
14730Fixed a problem where Operation Region initialization failed if
14731the operation region name was a "namepath" instead of a simple
14732"nameseg". Symptom was an AE_NO_OPERAND error.
14733
14734Fixed a problem where an assignment to a local variable via the
14735indirect RefOf mechanism only worked for the first such
14736assignment.  Subsequent assignments were ignored.
14737
14738 ------------------------------------------
14739Summary of changes for this label: 11_15_00
14740
14741ACPI 2.0 table support with backwards support for ACPI 1.0 and the
147420.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
14743the AML  interpreter does NOT have support for the new 2.0 ASL
14744grammar terms at this time.
14745
14746All ACPI hardware access is via the GAS structures in the ACPI 2.0
14747FADT.
14748
14749All physical memory addresses across all platforms are now 64 bits
14750wide. Logical address width remains dependent on the platform
14751(i.e., "void *").
14752
14753AcpiOsMapMemory interface changed to a 64-bit physical address.
14754
14755The AML interpreter integer size is now 64 bits, as per the ACPI
147562.0 specification.
14757
14758For backwards compatibility with ACPI 1.0, ACPI tables with a
14759revision number less than 2 use 32-bit integers only.
14760
14761Fixed a problem where the evaluation of OpRegion operands did not
14762always resolve them to numbers properly.
14763
14764------------------------------------------
14765Summary of changes for this label: 10_20_00
14766
14767Fix for CBN_._STA issue.  This fix will allow correct access to
14768CBN_ OpRegions when the _STA returns 0x8.
14769
14770Support to convert ACPI constants (Ones, Zeros, One) to actual
14771values before a package object is returned
14772
14773Fix for method call as predicate to if/while construct causing
14774incorrect if/while behavior
14775
14776Fix for Else block package lengths sometimes calculated wrong (if
14777block > 63 bytes)
14778
14779Fix for Processor object length field, was always zero
14780
14781Table load abort if FACP sanity check fails
14782
14783Fix for problem with Scope(name) if name already exists
14784
14785Warning emitted if a named object referenced cannot be found
14786(resolved) during method execution.
14787
14788
14789
14790
14791
14792------------------------------------------
14793Summary of changes for this label: 9_29_00
14794
14795New table initialization interfaces: AcpiInitializeSubsystem no
14796longer has any parameters AcpiFindRootPointer - Find the RSDP (if
14797necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
14798>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
14799AcpiLoadTables
14800
14801Note: These interface changes require changes to all existing OSDs
14802
14803The PCI_Config default address space handler is always installed
14804at the root namespace object.
14805
14806-------------------------------------------
14807Summary of changes for this label: 09_15_00
14808
14809The new initialization architecture is implemented.  New
14810interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
14811AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
14812
14813(Namespace is automatically loaded when a table is loaded)
14814
14815The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1481652 bytes to 32 bytes.  There is usually one of these for every
14817namespace object, so the memory savings is significant.
14818
14819Implemented just-in-time evaluation of the CreateField operators.
14820
14821Bug fixes for IA-64 support have been integrated.
14822
14823Additional code review comments have been implemented
14824
14825The so-called "third pass parse" has been replaced by a final walk
14826through the namespace to initialize all operation regions (address
14827spaces) and fields that have not yet been initialized during the
14828execution of the various _INI and REG methods.
14829
14830New file - namespace/nsinit.c
14831
14832-------------------------------------------
14833Summary of changes for this label: 09_01_00
14834
14835Namespace manager data structures have been reworked to change the
14836primary  object from a table to a single object.  This has
14837resulted in dynamic memory  savings of 3X within the namespace and
148382X overall in the ACPI CA subsystem.
14839
14840Fixed problem where the call to AcpiEvFindPciRootBuses was
14841inadvertently left  commented out.
14842
14843Reduced the warning count when generating the source with the GCC
14844compiler.
14845
14846Revision numbers added to each module header showing the
14847SourceSafe version of the file.  Please refer to this version
14848number when giving us feedback or comments on individual modules.
14849
14850The main object types within the subsystem have been renamed to
14851clarify their  purpose:
14852
14853ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
14854ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
14855ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
14856
14857NOTE: no changes to the initialization sequence are included in
14858this label.
14859
14860-------------------------------------------
14861Summary of changes for this label: 08_23_00
14862
14863Fixed problem where TerminateControlMethod was being called
14864multiple times per  method
14865
14866Fixed debugger problem where single stepping caused a semaphore to
14867be  oversignalled
14868
14869Improved performance through additional parse object caching -
14870added  ACPI_EXTENDED_OP type
14871
14872-------------------------------------------
14873Summary of changes for this label: 08_10_00
14874
14875Parser/Interpreter integration:  Eliminated the creation of
14876complete parse trees  for ACPI tables and control methods.
14877Instead, parse subtrees are created and  then deleted as soon as
14878they are processed (Either entered into the namespace or  executed
14879by the interpreter).  This reduces the use of dynamic kernel
14880memory  significantly. (about 10X)
14881
14882Exception codes broken into classes and renumbered.  Be sure to
14883recompile all  code that includes acexcep.h.  Hopefully we won't
14884have to renumber the codes  again now that they are split into
14885classes (environment, programmer, AML code,  ACPI table, and
14886internal).
14887
14888Fixed some additional alignment issues in the Resource Manager
14889subcomponent
14890
14891Implemented semaphore tracking in the AcpiExec utility, and fixed
14892several places  where mutexes/semaphores were being unlocked
14893without a corresponding lock  operation.  There are no known
14894semaphore or mutex "leaks" at this time.
14895
14896Fixed the case where an ASL Return operator is used to return an
14897unnamed  package.
14898
14899-------------------------------------------
14900Summary of changes for this label: 07_28_00
14901
14902Fixed a problem with the way addresses were calculated in
14903AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
14904manifested itself when a Field was  created with WordAccess or
14905DwordAccess, but the field unit defined within the  Field was less
14906
14907than a Word or Dword.
14908
14909Fixed a problem in AmlDumpOperands() module's loop to pull
14910operands off of the  operand stack to display information. The
14911problem manifested itself as a TLB  error on 64-bit systems when
14912accessing an operand stack with two or more  operands.
14913
14914Fixed a problem with the PCI configuration space handlers where
14915context was  getting confused between accesses. This required a
14916change to the generic address  space handler and address space
14917setup definitions. Handlers now get both a  global handler context
14918(this is the one passed in by the user when executing
14919AcpiInstallAddressSpaceHandler() and a specific region context
14920that is unique to  each region (For example, the _ADR, _SEG and
14921_BBN values associated with a  specific region). The generic
14922function definitions have changed to the  following:
14923
14924typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
14925UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
14926*HandlerContext, // This used to be void *Context void
14927*RegionContext); // This is an additional parameter
14928
14929typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
14930RegionHandle, UINT32 Function, void *HandlerContext,  void
14931**RegionContext); // This used to be **ReturnContext
14932
14933-------------------------------------------
14934Summary of changes for this label: 07_21_00
14935
14936Major file consolidation and rename.  All files within the
14937interpreter have been  renamed as well as most header files.  This
14938was done to prevent collisions with  existing files in the host
14939OSs -- filenames such as "config.h" and "global.h"  seem to be
14940quite common.  The VC project files have been updated.  All
14941makefiles  will require modification.
14942
14943The parser/interpreter integration continues in Phase 5 with the
14944implementation  of a complete 2-pass parse (the AML is parsed
14945twice) for each table;  This  avoids the construction of a huge
14946parse tree and therefore reduces the amount of  dynamic memory
14947required by the subsystem.  Greater use of the parse object cache
14948means that performance is unaffected.
14949
14950Many comments from the two code reviews have been rolled in.
14951
14952The 64-bit alignment support is complete.
14953
14954-------------------------------------------
14955Summary of changes for this label: 06_30_00
14956
14957With a nod and a tip of the hat to the technology of yesteryear,
14958we've added  support in the source code for 80 column output
14959devices.  The code is now mostly  constrained to 80 columns or
14960less to support environments and editors that 1)  cannot display
14961or print more than 80 characters on a single line, and 2) cannot
14962disable line wrapping.
14963
14964A major restructuring of the namespace data structure has been
14965completed.  The  result is 1) cleaner and more
14966understandable/maintainable code, and 2) a  significant reduction
14967in the dynamic memory requirement for each named ACPI  object
14968(almost half).
14969
14970-------------------------------------------
14971Summary of changes for this label: 06_23_00
14972
14973Linux support has been added.  In order to obtain approval to get
14974the ACPI CA  subsystem into the Linux kernel, we've had to make
14975quite a few changes to the  base subsystem that will affect all
14976users (all the changes are generic and OS- independent).  The
14977effects of these global changes have been somewhat far  reaching.
14978Files have been merged and/or renamed and interfaces have been
14979renamed.   The major changes are described below.
14980
14981Osd* interfaces renamed to AcpiOs* to eliminate namespace
14982pollution/confusion  within our target kernels.  All OSD
14983interfaces must be modified to match the new  naming convention.
14984
14985Files merged across the subsystem.  A number of the smaller source
14986and header  files have been merged to reduce the file count and
14987increase the density of the  existing files.  There are too many
14988to list here.  In general, makefiles that  call out individual
14989files will require rebuilding.
14990
14991Interpreter files renamed.  All interpreter files now have the
14992prefix am*  instead of ie* and is*.
14993
14994Header files renamed:  The acapi.h file is now acpixf.h.  The
14995acpiosd.h file is  now acpiosxf.h.  We are removing references to
14996the acronym "API" since it is  somewhat windowsy. The new name is
14997"external interface" or xface or xf in the  filenames.j
14998
14999
15000All manifest constants have been forced to upper case (some were
15001mixed case.)   Also, the string "ACPI_" has been prepended to many
15002(not all) of the constants,  typedefs, and structs.
15003
15004The globals "DebugLevel" and "DebugLayer" have been renamed
15005"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15006
15007All other globals within the subsystem are now prefixed with
15008"AcpiGbl_" Internal procedures within the subsystem are now
15009prefixed with "Acpi" (with only  a few exceptions).  The original
15010two-letter abbreviation for the subcomponent  remains after "Acpi"
15011- for example, CmCallocate became AcpiCmCallocate.
15012
15013Added a source code translation/conversion utility.  Used to
15014generate the Linux  source code, it can be modified to generate
15015other types of source as well. Can  also be used to cleanup
15016existing source by removing extraneous spaces and blank  lines.
15017Found in tools/acpisrc/*
15018
15019OsdUnMapMemory was renamed to OsdUnmapMemory and then
15020AcpiOsUnmapMemory.  (UnMap  became Unmap).
15021
15022A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15023When set to  one, this indicates that the caller wants to use the
15024
15025semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15026both types.  However, implementers of this  call may want to use
15027different OS primitives depending on the type of semaphore
15028requested.  For example, some operating systems provide separate
15029
15030"mutex" and  "semaphore" interfaces - where the mutex interface is
15031much faster because it  doesn't have all the overhead of a full
15032semaphore implementation.
15033
15034Fixed a deadlock problem where a method that accesses the PCI
15035address space can  block forever if it is the first access to the
15036space.
15037
15038-------------------------------------------
15039Summary of changes for this label: 06_02_00
15040
15041Support for environments that cannot handle unaligned data
15042accesses (e.g.  firmware and OS environments devoid of alignment
15043handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15044been added (via configurable macros) in  these three areas: -
15045Transfer of data from the raw AML byte stream is done via byte
15046moves instead of    word/dword/qword moves. - External objects are
15047aligned within the user buffer, including package   elements (sub-
15048objects). - Conversion of name strings to UINT32 Acpi Names is now
15049done byte-wise.
15050
15051The Store operator was modified to mimic Microsoft's
15052implementation when storing  to a Buffer Field.
15053
15054Added a check of the BM_STS bit before entering C3.
15055
15056The methods subdirectory has been obsoleted and removed.  A new
15057file, cmeval.c  subsumes the functionality.
15058
15059A 16-bit (DOS) version of AcpiExec has been developed.  The
15060makefile is under  the acpiexec directory.
15061