xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 066b6da2)
1----------------------------------------
2
324 July 2014. Summary of changes for version 20140724:
4
5This release is available at https://acpica.org/downloads
6
7The ACPI 5.1 specification has been released and is available at:
8http://uefi.org/specs/access
9
10
110) ACPI 5.1 support in ACPICA:
12
13ACPI 5.1 is fully supported in ACPICA as of this release.
14
15New predefined names. Support includes iASL and runtime ACPICA
16validation.
17    _CCA (Cache Coherency Attribute).
18    _DSD (Device-Specific Data). David Box.
19
20Modifications to existing ACPI tables. Support includes headers, iASL
21Data Table compiler, disassembler, and the template generator.
22    FADT - New fields and flags. Graeme Gregory.
23    GTDT - One new subtable and new fields. Tomasz Nowicki.
24    MADT - Two new subtables. Tomasz Nowicki.
25    PCCT - One new subtable.
26
27Miscellaneous.
28    New notification type for System Resource Affinity change events.
29
30
311) ACPICA kernel-resident subsystem:
32
33Fixed a regression introduced in 20140627 where a fault can happen during
34the deletion of Alias AML namespace objects. The problem affected both
35the core ACPICA and the ACPICA tools including iASL and AcpiExec.
36
37Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
38simple mechanism to enable wake GPEs that have no associated handler or
39control method. Rafael Wysocki.
40
41Updated the AcpiEnableGpe interface to disallow the enable if there is no
42handler or control method associated with the particular GPE. This will
43help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
44
45Updated GPE handling and dispatch by disabling the GPE before clearing
46the status bit for edge-triggered GPEs. Lv Zheng.
47
48Added Timer() support to the AML Debug object. The current timer value is
49now displayed with each invocation of (Store to) the debug object to
50enable simple generation of execution times for AML code (method
51execution for example.) ACPICA BZ 1093.
52
53Example Code and Data Size: These are the sizes for the OS-independent
54acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
55debug version of the code includes the debug output trace mechanism and
56has a much larger code and data size.
57
58  Current Release:
59    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
60    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
61  Previous Release:
62    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
63    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
64
65
662) iASL Compiler/Disassembler and Tools:
67
68Fixed an issue with the recently added local printf implementation,
69concerning width/precision specifiers that could cause incorrect output.
70Lv Zheng. ACPICA BZ 1094.
71
72Disassembler: Added support to detect buffers that contain UUIDs and
73disassemble them to an invocation of the ToUUID operator. Also emit
74commented descriptions of known ACPI-related UUIDs.
75
76AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
77-u. Adds three new files.
78
79iASL: Update table compiler and disassembler for DMAR table changes that
80were introduced in September 2013. With assistance by David Woodhouse.
81
82----------------------------------------
8327 June 2014. Summary of changes for version 20140627:
84
851) ACPICA kernel-resident subsystem:
86
87Formatted Output: Implemented local versions of standard formatted output
88utilities such as printf, etc. Over time, it has been discovered that
89there are in fact many portability issues with printf, and the addition
90of this feature will fix/prevent these issues once and for all. Some
91known issues are summarized below:
92
931) Output of 64-bit values is not portable. For example, UINT64 is %ull
94for the Linux kernel and is %uI64 for some MSVC versions.
952) Invoking printf consistently in a manner that is portable across both
9632-bit and 64-bit platforms is difficult at best in many situations.
973) The output format for pointers varies from system to system (leading
98zeros especially), and leads to inconsistent output from ACPICA across
99platforms.
1004) Certain platform-specific printf formats may conflict with ACPICA use.
1015) If there is no local C library available, ACPICA now has local support
102for printf.
103
104-- To address these printf issues in a complete manner, ACPICA now
105directly implements a small subset of printf format specifiers, only
106those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
107
108Implemented support for ACPICA generation within the EFI environment.
109Initially, the AcpiDump utility is supported in the UEFI shell
110environment. Lv Zheng.
111
112Added a new external interface, AcpiLogError, to improve ACPICA
113portability. This allows the host to redirect error messages from the
114ACPICA utilities. Lv Zheng.
115
116Added and deployed new OSL file I/O interfaces to improve ACPICA
117portability:
118  AcpiOsOpenFile
119  AcpiOsCloseFile
120  AcpiOsReadFile
121  AcpiOsWriteFile
122  AcpiOsGetFileOffset
123  AcpiOsSetFileOffset
124There are C library implementations of these functions in the new file
125service_layers/oslibcfs.c -- however, the functions can be implemented by
126the local host in any way necessary. Lv Zheng.
127
128Implemented a mechanism to disable/enable ACPI table checksum validation
129at runtime. This can be useful when loading tables very early during OS
130initialization when it may not be possible to map the entire table in
131order to compute the checksum. Lv Zheng.
132
133Fixed a buffer allocation issue for the Generic Serial Bus support.
134Originally, a fixed buffer length was used. This change allows for
135variable-length buffers based upon the protocol indicated by the field
136access attributes. Reported by Lan Tianyu. Lv Zheng.
137
138Fixed a problem where an object detached from a namespace node was not
139properly terminated/cleared and could cause a circular list problem if
140reattached. ACPICA BZ 1063. David Box.
141
142Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
143
144Fixed a possible memory leak in an error return path within the function
145AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
146
147Example Code and Data Size: These are the sizes for the OS-independent
148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
149debug version of the code includes the debug output trace mechanism and
150has a much larger code and data size.
151
152  Current Release:
153    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
154    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
155  Previous Release:
156    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
157    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
158
159
1602) iASL Compiler/Disassembler and Tools:
161
162Disassembler: Add dump of ASCII equivalent text within a comment at the
163end of each line of the output for the Buffer() ASL operator.
164
165AcpiDump: Miscellaneous changes:
166  Fixed repetitive table dump in -n mode.
167  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
168the ACPI 2.0 GUID fails.
169
170iASL: Fixed a problem where the compiler could fault if incorrectly given
171an acpidump output file as input. ACPICA BZ 1088. David Box.
172
173AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
174they are invoked without any arguments.
175
176Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
1771086. Colin Ian King.
178
179Disassembler: Cleaned up a block of code that extracts a parent Op
180object. Added a comment that explains that the parent is guaranteed to be
181valid in this case. ACPICA BZ 1069.
182
183----------------------------------------
18424 April 2014. Summary of changes for version 20140424:
185
1861) ACPICA kernel-resident subsystem:
187
188Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
189Some of these tables are known to contain a trailing NULL entry. Lv
190Zheng.
191
192Removed an extraneous error message for the case where there are a large
193number of system GPEs (> 124). This was the "32-bit FADT register is too
194long to convert to GAS struct" message, which is irrelevant for GPEs
195since the GPEx_BLK_LEN fields of the FADT are always used instead of the
196(limited capacity) GAS bit length. Also, several changes to ensure proper
197support for GPE numbers > 255, where some "GPE number" fields were 8-bits
198internally.
199
200Implemented and deployed additional configuration support for the public
201ACPICA external interfaces. Entire classes of interfaces can now be
202easily modified or configured out, replaced by stubbed inline functions
203by default. Lv Zheng.
204
205Moved all public ACPICA runtime configuration globals to the public
206ACPICA external interface file for convenience. Also, removed some
207obsolete/unused globals. See the file acpixf.h. Lv Zheng.
208
209Documentation: Added a new section to the ACPICA reference describing the
210maximum number of GPEs that can be supported by the FADT-defined GPEs in
211block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
212reference.
213
214Example Code and Data Size: These are the sizes for the OS-independent
215acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
216debug version of the code includes the debug output trace mechanism and
217has a much larger code and data size.
218
219  Current Release:
220    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
221    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
222  Previous Release:
223    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
224    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
225
226
2272) iASL Compiler/Disassembler and Tools:
228
229iASL and disassembler: Add full support for the LPIT table (Low Power
230Idle Table). Includes support in the disassembler, data table compiler,
231and template generator.
232
233AcpiDump utility:
2341) Add option to force the use of the RSDT (over the XSDT).
2352) Improve validation of the RSDP signature (use 8 chars instead of 4).
236
237iASL: Add check for predefined packages that are too large.  For
238predefined names that contain subpackages, check if each subpackage is
239too large. (Check for too small already exists.)
240
241Debugger: Updated the GPE command (which simulates a GPE by executing the
242GPE code paths in ACPICA). The GPE device is now optional, and defaults
243to the GPE 0/1 FADT-defined blocks.
244
245Unix application OSL: Update line-editing support. Add additional error
246checking and take care not to reset terminal attributes on exit if they
247were never set. This should help guarantee that the terminal is always
248left in the previous state on program exit.
249
250----------------------------------------
25125 March 2014. Summary of changes for version 20140325:
252
2531) ACPICA kernel-resident subsystem:
254
255Updated the auto-serialize feature for control methods. This feature
256automatically serializes all methods that create named objects in order
257to prevent runtime errors. The update adds support to ignore the
258currently executing AML SyncLevel when invoking such a method, in order
259to prevent disruption of any existing SyncLevel priorities that may exist
260in the AML code. Although the use of SyncLevels is relatively rare, this
261change fixes a regression where an AE_AML_MUTEX_ORDER exception can
262appear on some machines starting with the 20140214 release.
263
264Added a new external interface to allow the host to install ACPI tables
265very early, before the namespace is even created. AcpiInstallTable gives
266the host additional flexibility for ACPI table management. Tables can be
267installed directly by the host as if they had originally appeared in the
268XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
269(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
270with additional internal restructuring and cleanup. See the ACPICA
271Reference for interface details. Lv Zheng.
272
273Added validation of the checksum for all incoming dynamically loaded
274tables (via external interfaces or via AML Load/LoadTable operators). Lv
275Zheng.
276
277Updated the use of the AcpiOsWaitEventsComplete interface during Notify
278and GPE handler removal. Restructured calls to eliminate possible race
279conditions. Lv Zheng.
280
281Added a warning for the use/execution of the ASL/AML Unload (table)
282operator. This will help detect and identify machines that use this
283operator if and when it is ever used. This operator has never been seen
284in the field and the usage model and possible side-effects of the drastic
285runtime action of a full table removal are unknown.
286
287Reverted the use of #pragma push/pop which was introduced in the 20140214
288release. It appears that push and pop are not implemented by enough
289compilers to make the use of this feature feasible for ACPICA at this
290time. However, these operators may be deployed in a future ACPICA
291release.
292
293Added the missing EXPORT_SYMBOL macros for the install and remove SCI
294handler interfaces.
295
296Source code generation:
2971) Disabled the use of the "strchr" macro for the gcc-specific
298generation. For some versions of gcc, this macro can periodically expose
299a compiler bug which in turn causes compile-time error(s).
3002) Added support for PPC64 compilation. Colin Ian King.
301
302Example Code and Data Size: These are the sizes for the OS-independent
303acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
304debug version of the code includes the debug output trace mechanism and
305has a much larger code and data size.
306
307  Current Release:
308    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
309    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
310  Previous 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
314
3152) iASL Compiler/Disassembler and Tools:
316
317Disassembler: Added several new features to improve the readability of
318the resulting ASL code. Extra information is emitted within comment
319fields in the ASL code:
3201) Known _HID/_CID values are decoded to descriptive text.
3212) Standard values for the Notify() operator are decoded to descriptive
322text.
3233) Target operands are expanded to full pathnames (in a comment) when
324possible.
325
326Disassembler: Miscellaneous updates for extern() handling:
3271) Abort compiler if file specified by -fe option does not exist.
3282) Silence unnecessary warnings about argument count mismatches.
3293) Update warning messages concerning unresolved method externals.
3304) Emit "UnknownObj" keyword for externals whose type cannot be
331determined.
332
333AcpiHelp utility:
3341) Added the -a option to display both the ASL syntax and the AML
335encoding for an input ASL operator. This effectively displays all known
336information about an ASL operator with one AcpiHelp invocation.
3372) Added substring match support (similar to a wildcard) for the -i
338(_HID/PNP IDs) option.
339
340iASL/Disassembler: Since this tool does not yet support execution on big-
341endian machines, added detection of endianness and an error message if
342execution is attempted on big-endian. Support for big-endian within iASL
343is a feature that is on the ACPICA to-be-done list.
344
345AcpiBin utility:
3461) Remove option to extract binary files from an acpidump; this function
347is made obsolete by the AcpiXtract utility.
3482) General cleanup of open files and allocated buffers.
349
350----------------------------------------
35114 February 2014. Summary of changes for version 20140214:
352
3531) ACPICA kernel-resident subsystem:
354
355Implemented a new mechanism to proactively prevent problems with ill-
356behaved reentrant control methods that create named ACPI objects. This
357behavior is illegal as per the ACPI specification, but is nonetheless
358frequently seen in the field. Previously, this could lead to an
359AE_ALREADY_EXISTS exception if the method was actually entered by more
360than one thread. This new mechanism detects such methods at table load
361time and marks them "serialized" to prevent reentrancy. A new global
362option, AcpiGbl_AutoSerializeMethods, has been added to disable this
363feature if desired. This mechanism and global option obsoletes and
364supersedes the previous AcpiGbl_SerializeAllMethods option.
365
366Added the "Windows 2013" string to the _OSI support. ACPICA will now
367respond TRUE to _OSI queries with this string. It is the stated policy of
368ACPICA to add new strings to the _OSI support as soon as possible after
369they are defined. See the full ACPICA _OSI policy which has been added to
370the utilities/utosi.c file.
371
372Hardened/updated the _PRT return value auto-repair code:
3731) Do not abort the repair on a single subpackage failure, continue to
374check all subpackages.
3752) Add check for the minimum subpackage length (4).
3763) Properly handle extraneous NULL package elements.
377
378Added support to avoid the possibility of infinite loops when traversing
379object linked lists. Never allow an infinite loop, even in the face of
380corrupted object lists.
381
382ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
383pack(pop) directives to ensure that the ACPICA headers are independent of
384compiler settings or other host headers.
385
386Example Code and Data Size: These are the sizes for the OS-independent
387acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
388debug version of the code includes the debug output trace mechanism and
389has a much larger code and data size.
390
391  Current Release:
392    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
393    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
394  Previous Release:
395    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
396    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
397
398
3992) iASL Compiler/Disassembler and Tools:
400
401iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
402first reserved field was incorrectly forced to have a value of zero. This
403change correctly forces the field to have a value of one. ACPICA BZ 1081.
404
405Debugger: Added missing support for the "Extra" and "Data" subobjects
406when displaying object data.
407
408Debugger: Added support to display entire object linked lists when
409displaying object data.
410
411iASL: Removed the obsolete -g option to obtain ACPI tables from the
412Windows registry. This feature has been superseded by the acpidump
413utility.
414
415----------------------------------------
41614 January 2014. Summary of changes for version 20140114:
417
4181) ACPICA kernel-resident subsystem:
419
420Updated all ACPICA copyrights and signons to 2014. Added the 2014
421copyright to all module headers and signons, including the standard Linux
422header. This affects virtually every file in the ACPICA core subsystem,
423iASL compiler, all ACPICA utilities, and the test suites.
424
425Improved parameter validation for AcpiInstallGpeBlock. Added the
426following checks:
4271) The incoming device handle refers to type ACPI_TYPE_DEVICE.
4282) There is not already a GPE block attached to the device.
429Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
430device.
431
432Correctly support "references" in the ACPI_OBJECT. This change fixes the
433support to allow references (namespace nodes) to be passed as arguments
434to control methods via the evaluate object interface. This is probably
435most useful for testing purposes, however.
436
437Improved support for 32/64 bit physical addresses in printf()-like
438output. This change improves the support for physical addresses in printf
439debug statements and other output on both 32-bit and 64-bit hosts. It
440consistently outputs the appropriate number of bytes for each host. The
441%p specifier is unsatisfactory since it does not emit uniform output on
442all hosts/clib implementations (on some, leading zeros are not supported,
443leading to difficult-to-read output).
444
445Example Code and Data Size: These are the sizes for the OS-independent
446acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
447debug version of the code includes the debug output trace mechanism and
448has a much larger code and data size.
449
450  Current Release:
451    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
452    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
453  Previous Release:
454    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
455    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
456
457
4582) iASL Compiler/Disassembler and Tools:
459
460iASL: Fix a possible fault when using the Connection() operator. Fixes a
461problem if the parent Field definition for the Connection operator refers
462to an operation region that does not exist. ACPICA BZ 1064.
463
464AcpiExec: Load of local test tables is now optional. The utility has the
465capability to load some various tables to test features of ACPICA.
466However, there are enough of them that the output of the utility became
467confusing. With this change, only the required local tables are displayed
468(RSDP, XSDT, etc.) along with the actual tables loaded via the command
469line specification. This makes the default output simler and easier to
470understand. The -el command line option restores the original behavior
471for testing purposes.
472
473AcpiExec: Added support for overlapping operation regions. This change
474expands the simulation of operation regions by supporting regions that
475overlap within the given address space. Supports SystemMemory and
476SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
477
478AcpiExec: Added region handler support for PCI_Config and EC spaces. This
479allows AcpiExec to simulate these address spaces, similar to the current
480support for SystemMemory and SystemIO.
481
482Debugger: Added new command to read/write/compare all namespace objects.
483The command "test objects" will exercise the entire namespace by writing
484new values to each data object, and ensuring that the write was
485successful. The original value is then restored and verified.
486
487Debugger: Added the "test predefined" command. This change makes this
488test public and puts it under the new "test" command. The test executes
489each and every predefined name within the current namespace.
490
491----------------------------------------
49218 December 2013. Summary of changes for version 20131218:
493
494Global note: The ACPI 5.0A specification was released this month. There
495are no changes needed for ACPICA since this release of ACPI is an
496errata/clarification release. The specification is available at
497acpi.info.
498
499
5001) ACPICA kernel-resident subsystem:
501
502Added validation of the XSDT root table if it is present. Some older
503platforms contain an XSDT that is ill-formed or otherwise invalid (such
504as containing some or all entries that are NULL pointers). This change
505adds a new function to validate the XSDT before actually using it. If the
506XSDT is found to be invalid, ACPICA will now automatically fall back to
507using the RSDT instead. Original implementation by Zhao Yakui. Ported to
508ACPICA and enhanced by Lv Zheng and Bob Moore.
509
510Added a runtime option to ignore the XSDT and force the use of the RSDT.
511This change adds a runtime option that will force ACPICA to use the RSDT
512instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
513requires that an XSDT be used instead of the RSDT, the XSDT has been
514found to be corrupt or ill-formed on some machines. Lv Zheng.
515
516Added a runtime option to favor 32-bit FADT register addresses over the
51764-bit addresses. This change adds an option to favor 32-bit FADT
518addresses when there is a conflict between the 32-bit and 64-bit versions
519of the same register. The default behavior is to use the 64-bit version
520in accordance with the ACPI specification. This can now be overridden via
521the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
522
523During the change above, the internal "Convert FADT" and "Verify FADT"
524functions have been merged to simplify the code, making it easier to
525understand and maintain. ACPICA BZ 933.
526
527Improve exception reporting and handling for GPE block installation.
528Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
529status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
530
531Added helper macros to extract bus/segment numbers from the HEST table.
532This change adds two macros to extract the encoded bus and segment
533numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
534Betty Dall <betty.dall@hp.com>
535
536Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
537by ACPICA. It is not a public macro, so it should have no effect on
538existing OSV code. Lv Zheng.
539
540Example Code and Data Size: These are the sizes for the OS-independent
541acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
542debug version of the code includes the debug output trace mechanism and
543has a much larger code and data size.
544
545  Current Release:
546    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
547    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
548  Previous Release:
549    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
550    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
551
552
5532) iASL Compiler/Disassembler and Tools:
554
555Disassembler: Improved pathname support for emitted External()
556statements. This change adds full pathname support for external names
557that have been resolved internally by the inclusion of additional ACPI
558tables (via the iASL -e option). Without this change, the disassembler
559can emit multiple externals for the same object, or it become confused
560when the Scope() operator is used on an external object. Overall, greatly
561improves the ability to actually recompile the emitted ASL code when
562objects a referenced across multiple ACPI tables. Reported by Michael
563Tsirkin (mst@redhat.com).
564
565Tests/ASLTS: Updated functional control suite to execute with no errors.
566David Box. Fixed several errors related to the testing of the interpreter
567slack mode. Lv Zheng.
568
569iASL: Added support to detect names that are declared within a control
570method, but are unused (these are temporary names that are only valid
571during the time the method is executing). A remark is issued for these
572cases. ACPICA BZ 1022.
573
574iASL: Added full support for the DBG2 table. Adds full disassembler,
575table compiler, and template generator support for the DBG2 table (Debug
576Port 2 table).
577
578iASL: Added full support for the PCCT table, update the table definition.
579Updates the PCCT table definition in the actbl3.h header and adds table
580compiler and template generator support.
581
582iASL: Added an option to emit only error messages (no warnings/remarks).
583The -ve option will enable only error messages, warnings and remarks are
584suppressed. This can simplify debugging when only the errors are
585important, such as when an ACPI table is disassembled and there are many
586warnings and remarks -- but only the actual errors are of real interest.
587
588Example ACPICA code (source/tools/examples): Updated the example code so
589that it builds to an actual working program, not just example code. Added
590ACPI tables and execution of an example control method in the DSDT. Added
591makefile support for Unix generation.
592
593----------------------------------------
59415 November 2013. Summary of changes for version 20131115:
595
596This release is available at https://acpica.org/downloads
597
598
5991) ACPICA kernel-resident subsystem:
600
601Resource Manager: Fixed loop termination for the "get AML length"
602function. The loop previously had an error termination on a NULL resource
603pointer, which can never happen since the loop simply increments a valid
604resource pointer. This fix changes the loop to terminate with an error on
605an invalid end-of-buffer condition. The problem can be seen as an
606infinite loop by callers to AcpiSetCurrentResources with an invalid or
607corrupted resource descriptor, or a resource descriptor that is missing
608an END_TAG descriptor. Reported by Dan Carpenter
609<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
610
611Table unload and ACPICA termination: Delete all attached data objects
612during namespace node deletion. This fix updates namespace node deletion
613to delete the entire list of attached objects (attached via
614AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
6151024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
616
617ACPICA termination: Added support to delete all objects attached to the
618root namespace node. This fix deletes any and all objects that have been
619attached to the root node via AcpiAttachData. Previously, none of these
620objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
621
622Debug output: Do not emit the function nesting level for the in-kernel
623build. The nesting level is really only useful during a single-thread
624execution. Therefore, only enable this output for the AcpiExec utility.
625Also, only emit the thread ID when executing under AcpiExec (Context
626switches are still always detected and a message is emitted). ACPICA BZ
627972.
628
629Example Code and Data Size: These are the sizes for the OS-independent
630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
631debug version of the code includes the debug output trace mechanism and
632has a much larger code and data size.
633
634  Current Release:
635    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
636    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
637  Previous Release:
638    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
639    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
640
641
6422) iASL Compiler/Disassembler and Tools:
643
644AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
645correct portable POSIX header for terminal control functions.
646
647Disassembler: Fixed control method invocation issues related to the use
648of the CondRefOf() operator. The problem is seen in the disassembly where
649control method invocations may not be disassembled properly if the
650control method name has been used previously as an argument to CondRefOf.
651The solution is to not attempt to emit an external declaration for the
652CondRefOf target (it is not necessary in the first place). This prevents
653disassembler object type confusion. ACPICA BZ 988.
654
655Unix Makefiles: Added an option to disable compiler optimizations and the
656_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
657with optimizations (reportedly, gcc 4.4 for example). This change adds a
658command line option for make (NOOPT) that disables all compiler
659optimizations and the _FORTIFY_SOURCE compiler flag. The default
660optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
6611034. Lv Zheng, Bob Moore.
662
663Tests/ASLTS: Added options to specify individual test cases and modes.
664This allows testers running aslts.sh to optionally specify individual
665test modes and test cases. Also added an option to disable the forced
666generation of the ACPICA tools from source if desired. Lv Zheng.
667
668----------------------------------------
66927 September 2013. Summary of changes for version 20130927:
670
671This release is available at https://acpica.org/downloads
672
673
6741) ACPICA kernel-resident subsystem:
675
676Fixed a problem with store operations to reference objects. This change
677fixes a problem where a Store operation to an ArgX object that contained
678a
679reference to a field object did not complete the automatic dereference
680and
681then write to the actual field object. Instead, the object type of the
682field object was inadvertently changed to match the type of the source
683operand. The new behavior will actually write to the field object (buffer
684field or field unit), thus matching the correct ACPI-defined behavior.
685
686Implemented support to allow the host to redefine individual OSL
687prototypes. This change enables the host to redefine OSL prototypes found
688in the acpiosxf.h file. This allows the host to implement OSL interfaces
689with a macro or inlined function. Further, it allows the host to add any
690additional required modifiers such as __iomem, __init, __exit, etc., as
691necessary on a per-interface basis. Enables maximum flexibility for the
692OSL interfaces. Lv Zheng.
693
694Hardcoded the access width for the FADT-defined reset register. The ACPI
695specification requires the reset register width to be 8 bits. ACPICA now
696hardcodes the width to 8 and ignores the FADT width value. This provides
697compatibility with other ACPI implementations that have allowed BIOS code
698with bad register width values to go unnoticed. Matthew Garett, Bob
699Moore,
700Lv Zheng.
701
702Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
703used
704in the OSL header (acpiosxf). The change modifies the position of this
705macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
706build issues if the OSL defines the implementation of the interface to be
707an inline stub function. Lv Zheng.
708
709Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
710initialization interfaces. This change adds a new macro for the main init
711and terminate external interfaces in order to support hosts that require
712additional or different processing for these functions. Changed from
713ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
714Zheng, Bob Moore.
715
716Cleaned up the memory allocation macros for configurability. In the
717common
718case, the ACPI_ALLOCATE and related macros now resolve directly to their
719respective AcpiOs* OSL interfaces. Two options:
7201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
721default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
7222) For AcpiExec (and for debugging), the macros can optionally be
723resolved
724to the local ACPICA interfaces that track each allocation (local tracking
725is used to immediately detect memory leaks).
726Lv Zheng.
727
728Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
729to predefine this macro to either TRUE or FALSE during the system build.
730
731Replaced __FUNCTION_ with __func__ in the gcc-specific header.
732
733Example Code and Data Size: These are the sizes for the OS-independent
734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
735debug version of the code includes the debug output trace mechanism and
736has a much larger code and data size.
737
738  Current Release:
739    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
740    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
741  Previous Release:
742    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
743    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
744
745
7462) iASL Compiler/Disassembler and Tools:
747
748iASL: Implemented wildcard support for the -e option. This simplifies use
749when there are many SSDTs that must be included to resolve external
750method
751declarations. ACPICA BZ 1041. Example:
752    iasl -e ssdt*.dat -d dsdt.dat
753
754AcpiExec: Add history/line-editing for Unix/Linux systems. This change
755adds a portable module that implements full history and limited line
756editing for Unix and Linux systems. It does not use readline() due to
757portability issues. Instead it uses the POSIX termio interface to put the
758terminal in raw input mode so that the various special keys can be
759trapped
760(such as up/down-arrow for history support and left/right-arrow for line
761editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
762
763AcpiXtract: Add support to handle (ignore) "empty" lines containing only
764one or more spaces. This provides compatible with early or different
765versions of the AcpiDump utility. ACPICA BZ 1044.
766
767AcpiDump: Do not ignore tables that contain only an ACPI table header.
768Apparently, some BIOSs create SSDTs that contain an ACPI table header but
769no other data. This change adds support to dump these tables. Any tables
770shorter than the length of an ACPI table header remain in error (an error
771message is emitted). Reported by Yi Li.
772
773Debugger: Echo actual command along with the "unknown command" message.
774
775----------------------------------------
77623 August 2013. Summary of changes for version 20130823:
777
7781) ACPICA kernel-resident subsystem:
779
780Implemented support for host-installed System Control Interrupt (SCI)
781handlers. Certain ACPI functionality requires the host to handle raw
782SCIs. For example, the "SCI Doorbell" that is defined for memory power
783state support requires the host device driver to handle SCIs to examine
784if the doorbell has been activated. Multiple SCI handlers can be
785installed to allow for future expansion. New external interfaces are
786AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
787details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
788
789Operation region support: Never locally free the handler "context"
790pointer. This change removes some dangerous code that attempts to free
791the handler context pointer in some (rare) circumstances. The owner of
792the handler owns this pointer and the ACPICA code should never touch it.
793Although not seen to be an issue in any kernel, it did show up as a
794problem (fault) under AcpiExec. Also, set the internal storage field for
795the context pointer to zero when the region is deactivated, simply for
796sanity. David Box. ACPICA BZ 1039.
797
798AcpiRead: On error, do not modify the return value target location. If an
799error happens in the middle of a split 32/32 64-bit I/O operation, do not
800modify the target of the return value pointer. Makes the code consistent
801with the rest of ACPICA. Bjorn Helgaas.
802
803Example Code and Data Size: These are the sizes for the OS-independent
804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
805debug version of the code includes the debug output trace mechanism and
806has a much larger code and data size.
807
808  Current Release:
809    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
810    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
811  Previous Release:
812    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
813    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
814
815
8162) iASL Compiler/Disassembler and Tools:
817
818AcpiDump: Implemented several new features and fixed some problems:
8191) Added support to dump the RSDP, RSDT, and XSDT tables.
8202) Added support for multiple table instances (SSDT, UEFI).
8213) Added option to dump "customized" (overridden) tables (-c).
8224) Fixed a problem where some table filenames were improperly
823constructed.
8245) Improved some error messages, removed some unnecessary messages.
825
826iASL: Implemented additional support for disassembly of ACPI tables that
827contain invocations of external control methods. The -fe<file> option
828allows the import of a file that specifies the external methods along
829with the required number of arguments for each -- allowing for the
830correct disassembly of the table. This is a workaround for a limitation
831of AML code where the disassembler often cannot determine the number of
832arguments required for an external control method and generates incorrect
833ASL code. See the iASL reference for details. ACPICA BZ 1030.
834
835Debugger: Implemented a new command (paths) that displays the full
836pathnames (namepaths) and object types of all objects in the namespace.
837This is an alternative to the namespace command.
838
839Debugger: Implemented a new command (sci) that invokes the SCI dispatch
840mechanism and any installed handlers.
841
842iASL: Fixed a possible segfault for "too many parent prefixes" condition.
843This can occur if there are too many parent prefixes in a namepath (for
844example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
845
846Application OSLs: Set the return value for the PCI read functions. These
847functions simply return AE_OK, but should set the return value to zero
848also. This change implements this. ACPICA BZ 1038.
849
850Debugger: Prevent possible command line buffer overflow. Increase the
851size of a couple of the debugger line buffers, and ensure that overflow
852cannot happen. ACPICA BZ 1037.
853
854iASL: Changed to abort immediately on serious errors during the parsing
855phase. Due to the nature of ASL, there is no point in attempting to
856compile these types of errors, and they typically end up causing a
857cascade of hundreds of errors which obscure the original problem.
858
859----------------------------------------
86025 July 2013. Summary of changes for version 20130725:
861
8621) ACPICA kernel-resident subsystem:
863
864Fixed a problem with the DerefOf operator where references to FieldUnits
865and BufferFields incorrectly returned the parent object, not the actual
866value of the object. After this change, a dereference of a FieldUnit
867reference results in a read operation on the field to get the value, and
868likewise, the appropriate BufferField value is extracted from the target
869buffer.
870
871Fixed a problem where the _WAK method could cause a fault under these
872circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
873method returned no value. The problem is rarely seen because most kernels
874run ACPICA in slack mode.
875
876For the DerefOf operator, a fatal error now results if an attempt is made
877to dereference a reference (created by the Index operator) to a NULL
878package element. Provides compatibility with other ACPI implementations,
879and this behavior will be added to a future version of the ACPI
880specification.
881
882The ACPI Power Management Timer (defined in the FADT) is now optional.
883This provides compatibility with other ACPI implementations and will
884appear in the next version of the ACPI specification. If there is no PM
885Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
886zero in the FADT indicates no PM timer.
887
888Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
889allows the host to globally enable/disable all vendor strings, all
890feature strings, or both. Intended to be primarily used for debugging
891purposes only. Lv Zheng.
892
893Expose the collected _OSI data to the host via a global variable. This
894data tracks the highest level vendor ID that has been invoked by the BIOS
895so that the host (and potentially ACPICA itself) can change behaviors
896based upon the age of the BIOS.
897
898Example Code and Data Size: These are the sizes for the OS-independent
899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
900debug version of the code includes the debug output trace mechanism and
901has a much larger code and data size.
902
903  Current Release:
904    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
905    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
906  Previous Release:
907    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
908    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
909
910
9112) iASL Compiler/Disassembler and Tools:
912
913iASL: Created the following enhancements for the -so option (create
914offset table):
9151)Add offsets for the last nameseg in each namepath for every supported
916object type
9172)Add support for Processor, Device, Thermal Zone, and Scope objects
9183)Add the actual AML opcode for the parent object of every supported
919object type
9204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
921
922Disassembler: Emit all unresolved external symbols in a single block.
923These are external references to control methods that could not be
924resolved, and thus, the disassembler had to make a guess at the number of
925arguments to parse.
926
927iASL: The argument to the -T option (create table template) is now
928optional. If not specified, the default table is a DSDT, typically the
929most common case.
930
931----------------------------------------
93226 June 2013. Summary of changes for version 20130626:
933
9341) ACPICA kernel-resident subsystem:
935
936Fixed an issue with runtime repair of the _CST object. Null or invalid
937elements were not always removed properly. Lv Zheng.
938
939Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
940FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
941the maximum number of GPEs is 1016. Use of multiple GPE block devices
942makes the system-wide number of GPEs essentially unlimited.
943
944Example Code and Data Size: These are the sizes for the OS-independent
945acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
946debug version of the code includes the debug output trace mechanism and
947has a much larger code and data size.
948
949  Current Release:
950    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
951    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
952  Previous Release:
953    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
954    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
955
956
9572) iASL Compiler/Disassembler and Tools:
958
959Portable AcpiDump: Implemented full support for the Linux and FreeBSD
960hosts. Now supports Linux, FreeBSD, and Windows.
961
962Disassembler: Added some missing types for the HEST and EINJ tables: "Set
963Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
964
965iASL/Preprocessor: Implemented full support for nested
966#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
967
968Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
969max. The original purpose of this constraint was to limit the amount of
970debug output. However, the string function in question (UtPrintString) is
971now used for the disassembler also, where 256 bytes is insufficient.
972Reported by RehabMan@GitHub.
973
974iASL/DataTables: Fixed some problems and issues with compilation of DMAR
975tables. ACPICA BZ 999. Lv Zheng.
976
977iASL: Fixed a couple of error exit issues that could result in a "Could
978not delete <file>" message during ASL compilation.
979
980AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
981the actual signatures for these tables are "FACP" and "APIC",
982respectively.
983
984AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
985tables are allowed to have multiple instances.
986
987----------------------------------------
98817 May 2013. Summary of changes for version 20130517:
989
9901) ACPICA kernel-resident subsystem:
991
992Fixed a regression introduced in version 20130328 for _INI methods. This
993change fixes a problem introduced in 20130328 where _INI methods are no
994longer executed properly because of a memory block that was not
995initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
996<tomasz.nowicki@linaro.org>.
997
998Fixed a possible problem with the new extended sleep registers in the
999ACPI
10005.0 FADT. Do not use these registers (even if populated) unless the HW-
1001reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
10021020. Lv Zheng.
1003
1004Implemented return value repair code for _CST predefined objects: Sort
1005the
1006list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1007
1008Implemented a debug-only option to disable loading of SSDTs from the
1009RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1010ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1011acglobal.h - ACPICA BZ 1005. Lv Zheng.
1012
1013Fixed some issues in the ACPICA initialization and termination code:
1014Tomasz Nowicki <tomasz.nowicki@linaro.org>
10151) Clear events initialized flag upon event component termination. ACPICA
1016BZ 1013.
10172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
10183) Delete global lock pending lock during termination. ACPICA BZ 1012.
10194) Clear debug buffer global on termination to prevent possible multiple
1020delete. ACPICA BZ 1010.
1021
1022Standardized all switch() blocks across the entire source base. After
1023many
1024years, different formatting for switch() had crept in. This change makes
1025the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1026
1027Split some files to enhance ACPICA modularity and configurability:
10281) Split buffer dump routines into utilities/utbuffer.c
10292) Split internal error message routines into utilities/uterror.c
10303) Split table print utilities into tables/tbprint.c
10314) Split iASL command-line option processing into asloptions.c
1032
1033Makefile enhancements:
10341) Support for all new files above.
10352) Abort make on errors from any subcomponent. Chao Guan.
10363) Add build support for Apple Mac OS X. Liang Qi.
1037
1038Example Code and Data Size: These are the sizes for the OS-independent
1039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1040debug version of the code includes the debug output trace mechanism and
1041has a much larger code and data size.
1042
1043  Current Release:
1044    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1045    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1046  Previous Release:
1047    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1048    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1049
1050
10512) iASL Compiler/Disassembler and Tools:
1052
1053New utility: Implemented an easily portable version of the acpidump
1054utility to extract ACPI tables from the system (or a file) in an ASCII
1055hex
1056dump format. The top-level code implements the various command line
1057options, file I/O, and table dump routines. To port to a new host, only
1058three functions need to be implemented to get tables -- since this
1059functionality is OS-dependent. See the tools/acpidump/apmain.c module and
1060the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
10611) The Windows version obtains the ACPI tables from the Registry.
10622) The Linux version is under development.
10633) Other hosts - If an OS-dependent module is submitted, it will be
1064distributed with ACPICA.
1065
1066iASL: Fixed a regression for -D preprocessor option (define symbol). A
1067restructuring/change to the initialization sequence caused this option to
1068no longer work properly.
1069
1070iASL: Implemented a mechanism to disable specific warnings and remarks.
1071Adds a new command line option, "-vw <messageid> as well as "#pragma
1072disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1073
1074iASL: Fix for too-strict package object validation. The package object
1075validation for return values from the predefined names is a bit too
1076strict, it does not allow names references within the package (which will
1077be resolved at runtime.) These types of references cannot be validated at
1078compile time. This change ignores named references within package objects
1079for names that return or define static packages.
1080
1081Debugger: Fixed the 80-character command line limitation for the History
1082command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1083
1084iASL: Added control method and package support for the -so option
1085(generates AML offset table for BIOS support.)
1086
1087iASL: issue a remark if a non-serialized method creates named objects. If
1088a thread blocks within the method for any reason, and another thread
1089enters the method, the method will fail because an attempt will be made
1090to
1091create the same (named) object twice. In this case, issue a remark that
1092the method should be marked serialized. NOTE: may become a warning later.
1093ACPICA BZ 909.
1094
1095----------------------------------------
109618 April 2013. Summary of changes for version 20130418:
1097
10981) ACPICA kernel-resident subsystem:
1099
1100Fixed a possible buffer overrun during some rare but specific field unit
1101read operations. This overrun can only happen if the DSDT version is 1 --
1102meaning that all AML integers are 32 bits -- and the field length is
1103between 33 and 55 bits long. During the read, an internal buffer object
1104is
1105created for the field unit because the field is larger than an integer
1106(32
1107bits). However, in this case, the buffer will be incorrectly written
1108beyond the end because the buffer length is less than the internal
1109minimum
1110of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1111long, but a full 8 bytes will be written.
1112
1113Updated the Embedded Controller "orphan" _REG method support. This refers
1114to _REG methods under the EC device that have no corresponding operation
1115region. This is allowed by the ACPI specification. This update removes a
1116dependency on the existence an ECDT table. It will execute an orphan _REG
1117method as long as the operation region handler for the EC is installed at
1118the EC device node and not the namespace root. Rui Zhang (original
1119update), Bob Moore (update/integrate).
1120
1121Implemented run-time argument typechecking for all predefined ACPI names
1122(_STA, _BIF, etc.) This change performs object typechecking on all
1123incoming arguments for all predefined names executed via
1124AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1125passing correct object types as well as the correct number of arguments
1126(therefore identifying any issues immediately). Also, the ASL/namespace
1127definition of the predefined name is checked against the ACPI
1128specification for the proper argument count. Adds one new file,
1129nsarguments.c
1130
1131Changed an exception code for the ASL UnLoad() operator. Changed the
1132exception code for the case where the input DdbHandle is invalid, from
1133AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1134
1135Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
1136global makefile. The use of this flag causes compiler errors on earlier
1137versions of GCC, so it has been removed for compatibility.
1138
1139Miscellaneous cleanup:
11401) Removed some unused/obsolete macros
11412) Fixed a possible memory leak in the _OSI support
11423) Removed an unused variable in the predefined name support
11434) Windows OSL: remove obsolete reference to a memory list field
1144
1145Example Code and Data Size: These are the sizes for the OS-independent
1146acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1147debug version of the code includes the debug output trace mechanism and
1148has a much larger code and data size.
1149
1150  Current Release:
1151    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1152    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1153  Previous Release:
1154    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1155    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1156
1157
11582) iASL Compiler/Disassembler and Tools:
1159
1160AcpiExec: Added installation of a handler for the SystemCMOS address
1161space. This prevents control method abort if a method accesses this
1162space.
1163
1164AcpiExec: Added support for multiple EC devices, and now install EC
1165operation region handler(s) at the actual EC device instead of the
1166namespace root. This reflects the typical behavior of host operating
1167systems.
1168
1169AcpiExec: Updated to ensure that all operation region handlers are
1170installed before the _REG methods are executed. This prevents a _REG
1171method from aborting if it accesses an address space has no handler.
1172AcpiExec installs a handler for every possible address space.
1173
1174Debugger: Enhanced the "handlers" command to display non-root handlers.
1175This change enhances the handlers command to display handlers associated
1176with individual devices throughout the namespace, in addition to the
1177currently supported display of handlers associated with the root
1178namespace
1179node.
1180
1181ASL Test Suite: Several test suite errors have been identified and
1182resolved, reducing the total error count during execution. Chao Guan.
1183
1184----------------------------------------
118528 March 2013. Summary of changes for version 20130328:
1186
11871) ACPICA kernel-resident subsystem:
1188
1189Fixed several possible race conditions with the internal object reference
1190counting mechanism. Some of the external ACPICA interfaces update object
1191reference counts without holding the interpreter or namespace lock. This
1192change adds a spinlock to protect reference count updates on the internal
1193ACPICA objects. Reported by and with assistance from Andriy Gapon
1194(avg@FreeBSD.org).
1195
1196FADT support: Removed an extraneous warning for very large GPE register
1197sets. This change removes a size mismatch warning if the legacy length
1198field for a GPE register set is larger than the 64-bit GAS structure can
1199accommodate. GPE register sets can be larger than the 255-bit width
1200limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1201
1202_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1203return from this interface. Handles a possible timeout case if
1204ACPI_WAIT_FOREVER is modified by the host to be a value less than
1205"forever". Jung-uk Kim.
1206
1207Predefined name support: Add allowed/required argument type information
1208to
1209the master predefined info table. This change adds the infrastructure to
1210enable typechecking on incoming arguments for all predefined
1211methods/objects. It does not actually contain the code that will fully
1212utilize this information, this is still under development. Also condenses
1213some duplicate code for the predefined names into a new module,
1214utilities/utpredef.c
1215
1216Example Code and Data Size: These are the sizes for the OS-independent
1217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1218debug version of the code includes the debug output trace mechanism and
1219has a much larger code and data size.
1220
1221  Previous Release:
1222    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1223    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1224  Current Release:
1225    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1226    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1227
1228
12292) iASL Compiler/Disassembler and Tools:
1230
1231iASL: Implemented a new option to simplify the development of ACPI-
1232related
1233BIOS code. Adds support for a new "offset table" output file. The -so
1234option will create a C table containing the AML table offsets of various
1235named objects in the namespace so that BIOS code can modify them easily
1236at
1237boot time. This can simplify BIOS runtime code by eliminating expensive
1238searches for "magic values", enhancing boot times and adding greater
1239reliability. With assistance from Lee Hamel.
1240
1241iASL: Allow additional predefined names to return zero-length packages.
1242Now, all predefined names that are defined by the ACPI specification to
1243return a "variable-length package of packages" are allowed to return a
1244zero length top-level package. This allows the BIOS to tell the host that
1245the requested feature is not supported, and supports existing BIOS/ASL
1246code and practices.
1247
1248iASL: Changed the "result not used" warning to an error. This is the case
1249where an ASL operator is effectively a NOOP because the result of the
1250operation is not stored anywhere. For example:
1251    Add (4, Local0)
1252There is no target (missing 3rd argument), nor is the function return
1253value used. This is potentially a very serious problem -- since the code
1254was probably intended to do something, but for whatever reason, the value
1255was not stored. Therefore, this issue has been upgraded from a warning to
1256an error.
1257
1258AcpiHelp: Added allowable/required argument types to the predefined names
1259info display. This feature utilizes the recent update to the predefined
1260names table (above).
1261
1262----------------------------------------
126314 February 2013. Summary of changes for version 20130214:
1264
12651) ACPICA Kernel-resident Subsystem:
1266
1267Fixed a possible regression on some hosts: Reinstated the safe return
1268macros (return_ACPI_STATUS, etc.) that ensure that the argument is
1269evaluated only once. Although these macros are not needed for the ACPICA
1270code itself, they are often used by ACPI-related host device drivers
1271where
1272the safe feature may be necessary.
1273
1274Fixed several issues related to the ACPI 5.0 reduced hardware support
1275(SOC): Now ensure that if the platform declares itself as hardware-
1276reduced
1277via the FADT, the following functions become NOOPs (and always return
1278AE_OK) because ACPI is always enabled by definition on these machines:
1279  AcpiEnable
1280  AcpiDisable
1281  AcpiHwGetMode
1282  AcpiHwSetMode
1283
1284Dynamic Object Repair: Implemented additional runtime repairs for
1285predefined name return values. Both of these repairs can simplify code in
1286the related device drivers that invoke these methods:
12871) For the _STR and _MLS names, automatically repair/convert an ASCII
1288string to a Unicode buffer.
12892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
1290a
1291lone end tag descriptor in the following cases: A Return(0) was executed,
1292a null buffer was returned, or no object at all was returned (non-slack
1293mode only). Adds a new file, nsconvert.c
1294ACPICA BZ 998. Bob Moore, Lv Zheng.
1295
1296Resource Manager: Added additional code to prevent possible infinite
1297loops
1298while traversing corrupted or ill-formed resource template buffers. Check
1299for zero-length resource descriptors in all code that loops through
1300resource templates (the length field is used to index through the
1301template). This change also hardens the external AcpiWalkResources and
1302AcpiWalkResourceBuffer interfaces.
1303
1304Local Cache Manager: Enhanced the main data structure to eliminate an
1305unnecessary mechanism to access the next object in the list. Actually
1306provides a small performance enhancement for hosts that use the local
1307ACPICA cache manager. Jung-uk Kim.
1308
1309Example Code and Data Size: These are the sizes for the OS-independent
1310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1311debug version of the code includes the debug output trace mechanism and
1312has a much larger code and data size.
1313
1314  Previous Release:
1315    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1316    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1317  Current Release:
1318    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1319    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1320
1321
13222) iASL Compiler/Disassembler and Tools:
1323
1324iASL/Disassembler: Fixed several issues with the definition of the ACPI
13255.0 RASF table (RAS Feature Table). This change incorporates late changes
1326that were made to the ACPI 5.0 specification.
1327
1328iASL/Disassembler: Added full support for the following new ACPI tables:
1329  1) The MTMR table (MID Timer Table)
1330  2) The VRTC table (Virtual Real Time Clock Table).
1331Includes header file, disassembler, table compiler, and template support
1332for both tables.
1333
1334iASL: Implemented compile-time validation of package objects returned by
1335predefined names. This new feature validates static package objects
1336returned by the various predefined names defined to return packages. Both
1337object types and package lengths are validated, for both parent packages
1338and sub-packages, if any. The code is similar in structure and behavior
1339to
1340the runtime repair mechanism within the AML interpreter and uses the
1341existing predefined name information table. Adds a new file, aslprepkg.c.
1342ACPICA BZ 938.
1343
1344iASL: Implemented auto-detection of binary ACPI tables for disassembly.
1345This feature detects a binary file with a valid ACPI table header and
1346invokes the disassembler automatically. Eliminates the need to
1347specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1348
1349iASL/Disassembler: Added several warnings for the case where there are
1350unresolved control methods during the disassembly. This can potentially
1351cause errors when the output file is compiled, because the disassembler
1352assumes zero method arguments in these cases (it cannot determine the
1353actual number of arguments without resolution/definition of the method).
1354
1355Debugger: Added support to display all resources with a single command.
1356Invocation of the resources command with no arguments will now display
1357all
1358resources within the current namespace.
1359
1360AcpiHelp: Added descriptive text for each ACPICA exception code displayed
1361via the -e option.
1362
1363----------------------------------------
136417 January 2013. Summary of changes for version 20130117:
1365
13661) ACPICA Kernel-resident Subsystem:
1367
1368Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
1369return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
1370objects to return a package containing one integer, most BIOS code
1371returns
1372two integers and the previous code reflects that. However, we also need
1373to
1374support BIOS code that actually implements to the ACPI spec, and this
1375change reflects this.
1376
1377Fixed two issues with the ACPI_DEBUG_PRINT macros:
13781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
1379C compilers that require this support.
13802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
1381ACPI_DEBUG is already used by many of the various hosts.
1382
1383Updated all ACPICA copyrights and signons to 2013. Added the 2013
1384copyright to all module headers and signons, including the standard Linux
1385header. This affects virtually every file in the ACPICA core subsystem,
1386iASL compiler, all ACPICA utilities, and the test suites.
1387
1388Example Code and Data Size: These are the sizes for the OS-independent
1389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1390debug version of the code includes the debug output trace mechanism and
1391has a much larger code and data size.
1392
1393  Previous Release:
1394    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1395    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1396  Current Release:
1397    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1398    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1399
1400
14012) iASL Compiler/Disassembler and Tools:
1402
1403Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
1404prevent a possible fault on some hosts. Some C libraries modify the arg
1405pointer parameter to vfprintf making it difficult to call it twice in the
1406AcpiOsVprintf function. Use a local buffer to workaround this issue. This
1407does not affect the Windows OSL since the Win C library does not modify
1408the arg pointer. Chao Guan, Bob Moore.
1409
1410iASL: Fixed a possible infinite loop when the maximum error count is
1411reached. If an output file other than the .AML file is specified (such as
1412a listing file), and the maximum number of errors is reached, do not
1413attempt to flush data to the output file(s) as the compiler is aborting.
1414This can cause an infinite loop as the max error count code essentially
1415keeps calling itself.
1416
1417iASL/Disassembler: Added an option (-in) to ignore NOOP
1418opcodes/operators.
1419Implemented for both the compiler and the disassembler. Often, the NOOP
1420opcode is used as padding for packages that are changed dynamically by
1421the
1422BIOS. When disassembled and recompiled, these NOOPs will cause syntax
1423errors. This option causes the disassembler to ignore all NOOP opcodes
1424(0xA3), and it also causes the compiler to ignore all ASL source code
1425NOOP
1426statements as well.
1427
1428Debugger: Enhanced the Sleep command to execute all sleep states. This
1429change allows Sleep to be invoked with no arguments and causes the
1430debugger to execute all of the sleep states, 0-5, automatically.
1431
1432----------------------------------------
143320 December 2012. Summary of changes for version 20121220:
1434
14351) ACPICA Kernel-resident Subsystem:
1436
1437Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
1438alternate entry point for AcpiWalkResources and improves the usability of
1439the resource manager by accepting as input a buffer containing the output
1440of either a _CRS, _PRS, or _AEI method. The key functionality is that the
1441input buffer is not deleted by this interface so that it can be used by
1442the host later. See the ACPICA reference for details.
1443
1444Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
1445(DSDT version < 2). The constant will be truncated and this warning
1446reflects that behavior.
1447
1448Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
1449ExtendedInterrupt, and GpioInt descriptors. This change adds support to
1450both get and set the new wake bit in these descriptors, separately from
1451the existing share bit. Reported by Aaron Lu.
1452
1453Interpreter: Fix Store() when an implicit conversion is not possible. For
1454example, in the cases such as a store of a string to an existing package
1455object, implement the store as a CopyObject(). This is a small departure
1456from the ACPI specification which states that the control method should
1457be
1458aborted in this case. However, the ASLTS suite depends on this behavior.
1459
1460Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
1461macros: check if debug output is currently enabled as soon as possible to
1462minimize performance impact if debug is in fact not enabled.
1463
1464Source code restructuring: Cleanup to improve modularity. The following
1465new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
1466psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
1467Associated makefiles and project files have been updated.
1468
1469Changed an exception code for LoadTable operator. For the case where one
1470of the input strings is too long, change the returned exception code from
1471AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1472
1473Fixed a possible memory leak in dispatcher error path. On error, delete
1474the mutex object created during method mutex creation. Reported by
1475tim.gardner@canonical.com.
1476
1477Example Code and Data Size: These are the sizes for the OS-independent
1478acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1479debug version of the code includes the debug output trace mechanism and
1480has a much larger code and data size.
1481
1482  Previous Release:
1483    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1484    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1485  Current Release:
1486    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1487    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1488
1489
14902) iASL Compiler/Disassembler and Tools:
1491
1492iASL: Disallow a method call as argument to the ObjectType ASL operator.
1493This change tracks an errata to the ACPI 5.0 document. The AML grammar
1494will not allow the interpreter to differentiate between a method and a
1495method invocation when these are used as an argument to the ObjectType
1496operator. The ACPI specification change is to disallow a method
1497invocation
1498(UserTerm) for the ObjectType operator.
1499
1500Finish support for the TPM2 and CSRT tables in the headers, table
1501compiler, and disassembler.
1502
1503Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
1504always expires immediately if the semaphore is not available. The
1505original
1506code was using a relative-time timeout, but sem_timedwait requires the
1507use
1508of an absolute time.
1509
1510iASL: Added a remark if the Timer() operator is used within a 32-bit
1511table. This operator returns a 64-bit time value that will be truncated
1512within a 32-bit table.
1513
1514iASL Source code restructuring: Cleanup to improve modularity. The
1515following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
1516aslmethod.c, and aslfileio.c. Associated makefiles and project files have
1517been updated.
1518
1519
1520----------------------------------------
152114 November 2012. Summary of changes for version 20121114:
1522
15231) ACPICA Kernel-resident Subsystem:
1524
1525Implemented a performance enhancement for ACPI/AML Package objects. This
1526change greatly increases the performance of Package objects within the
1527interpreter. It changes the processing of reference counts for packages
1528by
1529optimizing for the most common case where the package sub-objects are
1530either Integers, Strings, or Buffers. Increases the overall performance
1531of
1532the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
15332X.)
1534Chao Guan. ACPICA BZ 943.
1535
1536Implemented and deployed common macros to extract flag bits from resource
1537descriptors. Improves readability and maintainability of the code. Fixes
1538a
1539problem with the UART serial bus descriptor for the number of data bits
1540flags (was incorrectly 2 bits, should be 3).
1541
1542Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
1543of the macros and changed the SETx macros to the style of (destination,
1544source). Also added ACPI_CASTx companion macros. Lv Zheng.
1545
1546Example Code and Data Size: These are the sizes for the OS-independent
1547acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1548debug version of the code includes the debug output trace mechanism and
1549has a much larger code and data size.
1550
1551  Previous Release:
1552    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1553    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1554  Current Release:
1555    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1556    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1557
1558
15592) iASL Compiler/Disassembler and Tools:
1560
1561Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
1562adds the ShareAndWake and ExclusiveAndWake flags which were added to the
1563Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1564
1565Disassembler: Fixed a problem with external declaration generation. Fixes
1566a problem where an incorrect pathname could be generated for an external
1567declaration if the original reference to the object includes leading
1568carats (^). ACPICA BZ 984.
1569
1570Debugger: Completed a major update for the Disassemble<method> command.
1571This command was out-of-date and did not properly disassemble control
1572methods that had any reasonable complexity. This fix brings the command
1573up
1574to the same level as the rest of the disassembler. Adds one new file,
1575dmdeferred.c, which is existing code that is now common with the main
1576disassembler and the debugger disassemble command. ACPICA MZ 978.
1577
1578iASL: Moved the parser entry prototype to avoid a duplicate declaration.
1579Newer versions of Bison emit this prototype, so moved the prototype out
1580of
1581the iASL header to where it is actually used in order to avoid a
1582duplicate
1583declaration.
1584
1585iASL/Tools: Standardized use of the stream I/O functions:
1586  1) Ensure check for I/O error after every fopen/fread/fwrite
1587  2) Ensure proper order of size/count arguments for fread/fwrite
1588  3) Use test of (Actual != Requested) after all fwrite, and most fread
1589  4) Standardize I/O error messages
1590Improves reliability and maintainability of the code. Bob Moore, Lv
1591Zheng.
1592ACPICA BZ 981.
1593
1594Disassembler: Prevent duplicate External() statements. During generation
1595of external statements, detect similar pathnames that are actually
1596duplicates such as these:
1597  External (\ABCD)
1598  External (ABCD)
1599Remove all leading '\' characters from pathnames during the external
1600statement generation so that duplicates will be detected and tossed.
1601ACPICA BZ 985.
1602
1603Tools: Replace low-level I/O with stream I/O functions. Replace
1604open/read/write/close with the stream I/O equivalents
1605fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
1606Moore.
1607
1608AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
1609name header so that AcpiXtract recognizes the output file/table.
1610
1611iASL: Remove obsolete -2 option flag. Originally intended to force the
1612compiler/disassembler into an ACPI 2.0 mode, this was never implemented
1613and the entire concept is now obsolete.
1614
1615----------------------------------------
161618 October 2012. Summary of changes for version 20121018:
1617
1618
16191) ACPICA Kernel-resident Subsystem:
1620
1621Updated support for the ACPI 5.0 MPST table. Fixes some problems
1622introduced by late changes to the table as it was added to the ACPI 5.0
1623specification. Includes header, disassembler, and data table compiler
1624support as well as a new version of the MPST template.
1625
1626AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
16275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
1628methods: _HID, _CID, and _UID.
1629
1630Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
1631ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
1632name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
1633names for their various drivers. Affects the AcpiGetObjectInfo external
1634interface, and other internal interfaces as well.
1635
1636Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
1637This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
1638on machines that support non-aligned transfers. Optimizes for this case
1639rather than using a strncpy. With assistance from Zheng Lv.
1640
1641Resource Manager: Small fix for buffer size calculation. Fixed a one byte
1642error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
1643
1644Added a new debug print message for AML mutex objects that are force-
1645released. At control method termination, any currently acquired mutex
1646objects are force-released. Adds a new debug-only message for each one
1647that is released.
1648
1649Audited/updated all ACPICA return macros and the function debug depth
1650counter: 1) Ensure that all functions that use the various TRACE macros
1651also use the appropriate ACPICA return macros. 2) Ensure that all normal
1652return statements surround the return expression (value) with parens to
1653ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
1654Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
1655
1656Global source code changes/maintenance: All extra lines at the start and
1657end of each source file have been removed for consistency. Also, within
1658comments, all new sentences start with a single space instead of a double
1659space, again for consistency across the code base.
1660
1661Example Code and Data Size: These are the sizes for the OS-independent
1662acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1663debug version of the code includes the debug output trace mechanism and
1664has a much larger code and data size.
1665
1666  Previous Release:
1667    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1668    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1669  Current Release:
1670    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1671    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1672
1673
16742) iASL Compiler/Disassembler and Tools:
1675
1676AcpiExec: Improved the algorithm used for memory leak/corruption
1677detection. Added some intelligence to the code that maintains the global
1678list of allocated memory. The list is now ordered by allocated memory
1679address, significantly improving performance. When running AcpiExec on
1680the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
1681on the platform and/or the environment. Note, this performance
1682enhancement affects the AcpiExec utility only, not the kernel-resident
1683ACPICA code.
1684
1685Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
1686the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
1687incorrect table offset reported for invalid opcodes. Report the original
168832-bit value for bad ACPI_NAMEs (as well as the repaired name.)
1689
1690Disassembler: Enhanced the -vt option to emit the binary table data in
1691hex format to assist with debugging.
1692
1693Fixed a potential filename buffer overflow in osunixdir.c. Increased the
1694size of file structure. Colin Ian King.
1695
1696----------------------------------------
169713 September 2012. Summary of changes for version 20120913:
1698
1699
17001) ACPICA Kernel-resident Subsystem:
1701
1702ACPI 5.0: Added two new notify types for the Hardware Error Notification
1703Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
1704and
1705MCE(6).
1706
1707Table Manager: Merged/removed duplicate code in the root table resize
1708functions. One function is external, the other is internal. Lv Zheng,
1709ACPICA
1710BZ 846.
1711
1712Makefiles: Completely removed the obsolete "Linux" makefiles under
1713acpica/generate/linux. These makefiles are obsolete and have been
1714replaced
1715by
1716the generic unix makefiles under acpica/generate/unix.
1717
1718Makefiles: Ensure that binary files always copied properly. Minor rule
1719change
1720to ensure that the final binary output files are always copied up to the
1721appropriate binary directory (bin32 or bin64.)
1722
1723Example Code and Data Size: These are the sizes for the OS-independent
1724acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1725debug
1726version of the code includes the debug output trace mechanism and has a
1727much
1728larger code and data size.
1729
1730  Previous Release:
1731    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1732    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1733  Current Release:
1734    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1735    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1736
1737
17382) iASL Compiler/Disassembler and Tools:
1739
1740Disassembler: Fixed a possible fault during the disassembly of resource
1741descriptors when a second parse is required because of the invocation of
1742external control methods within the table. With assistance from
1743adq@lidskialf.net. ACPICA BZ 976.
1744
1745iASL: Fixed a namepath optimization problem. An error can occur if the
1746parse
1747node that contains the namepath to be optimized does not have a parent
1748node
1749that is a named object. This change fixes the problem.
1750
1751iASL: Fixed a regression where the AML file is not deleted on errors. The
1752AML
1753output file should be deleted if there are any errors during the
1754compiler.
1755The
1756only exception is if the -f (force output) option is used. ACPICA BZ 974.
1757
1758iASL: Added a feature to automatically increase internal line buffer
1759sizes.
1760Via realloc(), automatically increase the internal line buffer sizes as
1761necessary to support very long source code lines. The current version of
1762the
1763preprocessor requires a buffer long enough to contain full source code
1764lines.
1765This change increases the line buffer(s) if the input lines go beyond the
1766current buffer size. This eliminates errors that occurred when a source
1767code
1768line was longer than the buffer.
1769
1770iASL: Fixed a problem with constant folding in method declarations. The
1771SyncLevel term is a ByteConstExpr, and incorrect code would be generated
1772if a
1773Type3 opcode was used.
1774
1775Debugger: Improved command help support. For incorrect argument count,
1776display
1777full help for the command. For help command itself, allow an argument to
1778specify a command.
1779
1780Test Suites: Several bug fixes for the ASLTS suite reduces the number of
1781errors during execution of the suite. Guan Chao.
1782
1783----------------------------------------
178416 August 2012. Summary of changes for version 20120816:
1785
1786
17871) ACPICA Kernel-resident Subsystem:
1788
1789Removed all use of the deprecated _GTS and _BFS predefined methods. The
1790_GTS
1791(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
1792deprecated and will probably be removed from the ACPI specification.
1793Windows
1794does not invoke them, and reportedly never will. The final nail in the
1795coffin
1796is that the ACPI specification states that these methods must be run with
1797interrupts off, which is not going to happen in a kernel interpreter.
1798Note:
1799Linux has removed all use of the methods also. It was discovered that
1800invoking these functions caused failures on some machines, probably
1801because
1802they were never tested since Windows does not call them. Affects two
1803external
1804interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
1805ACPICA BZ 969.
1806
1807Implemented support for complex bit-packed buffers returned from the _PLD
1808(Physical Location of Device) predefined method. Adds a new external
1809interface, AcpiDecodePldBuffer that parses the buffer into a more usable
1810C
1811structure. Note: C Bitfields cannot be used for this type of predefined
1812structure since the memory layout of individual bitfields is not defined
1813by
1814the C language. In addition, there are endian concerns where a compiler
1815will
1816change the bitfield ordering based on the machine type. The new ACPICA
1817interface eliminates these issues, and should be called after _PLD is
1818executed. ACPICA BZ 954.
1819
1820Implemented a change to allow a scope change to root (via "Scope (\)")
1821during
1822execution of module-level ASL code (code that is executed at table load
1823time.) Lin Ming.
1824
1825Added the Windows8/Server2012 string for the _OSI method. This change
1826adds
1827a
1828new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
18292012.
1830
1831Added header support for the new ACPI tables DBG2 (Debug Port Table Type
18322)
1833and CSRT (Core System Resource Table).
1834
1835Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
1836names. This simplifies access to the buffers returned by these predefined
1837names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
1838
1839GPE support: Removed an extraneous parameter from the various low-level
1840internal GPE functions. Tang Feng.
1841
1842Removed the linux makefiles from the unix packages. The generate/linux
1843makefiles are obsolete and have been removed from the unix tarball
1844release
1845packages. The replacement makefiles are under generate/unix, and there is
1846a
1847top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
1848
1849Updates for Unix makefiles:
18501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
18512) Update linker flags (move to end of command line) for AcpiExec
1852utility.
1853Guan Chao.
1854
1855Split ACPICA initialization functions to new file, utxfinit.c. Split from
1856utxface.c to improve modularity and reduce file size.
1857
1858Example Code and Data Size: These are the sizes for the OS-independent
1859acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1860debug version of the code includes the debug output trace mechanism and
1861has a
1862much larger code and data size.
1863
1864  Previous Release:
1865    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1866    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1867  Current Release:
1868    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1869    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1870
1871
18722) iASL Compiler/Disassembler and Tools:
1873
1874iASL: Fixed a problem with constant folding for fixed-length constant
1875expressions. The constant-folding code was not being invoked for constant
1876expressions that allow the use of type 3/4/5 opcodes to generate
1877constants
1878for expressions such as ByteConstExpr, WordConstExpr, etc. This could
1879result
1880in the generation of invalid AML bytecode. ACPICA BZ 970.
1881
1882iASL: Fixed a generation issue on newer versions of Bison. Newer versions
1883apparently automatically emit some of the necessary externals. This
1884change
1885handles these versions in order to eliminate generation warnings.
1886
1887Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
1888
1889Disassembler: Add support to decode _PLD buffers. The decoded buffer
1890appears
1891within comments in the output file.
1892
1893Debugger: Fixed a regression with the "Threads" command where
1894AE_BAD_PARAMETER was always returned.
1895
1896----------------------------------------
189711 July 2012. Summary of changes for version 20120711:
1898
18991) ACPICA Kernel-resident Subsystem:
1900
1901Fixed a possible fault in the return package object repair code. Fixes a
1902problem that can occur when a lone package object is wrapped with an
1903outer
1904package object in order to force conformance to the ACPI specification.
1905Can
1906affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
1907_DLM,
1908_CSD, _PSD, _TSD.
1909
1910Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
1911PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
1912ARB_DIS bit must be implemented in the host-dependent C3 processor power
1913state
1914support. Note, ARB_DIS is obsolete and only applies to older chipsets,
1915both
1916Intel and other vendors. (for Intel: ICH4-M and earlier)
1917
1918This change removes the code to disable/enable bus master arbitration
1919during
1920suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
1921causes
1922resume problems on some machines. The change has been in use for over
1923seven
1924years within Linux.
1925
1926Implemented two new external interfaces to support host-directed dynamic
1927ACPI
1928table load and unload. They are intended to simplify the host
1929implementation
1930of hot-plug support:
1931  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
1932  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
1933table.
1934See the ACPICA reference for additional details. Adds one new file,
1935components/tables/tbxfload.c
1936
1937Implemented and deployed two new interfaces for errors and warnings that
1938are
1939known to be caused by BIOS/firmware issues:
1940  AcpiBiosError: Prints "ACPI Firmware Error" message.
1941  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
1942Deployed these new interfaces in the ACPICA Table Manager code for ACPI
1943table
1944and FADT errors. Additional deployment to be completed as appropriate in
1945the
1946future. The associated conditional macros are ACPI_BIOS_ERROR and
1947ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
1948ACPICA
1949BZ
1950843.
1951
1952Implicit notify support: ensure that no memory allocation occurs within a
1953critical region. This fix moves a memory allocation outside of the time
1954that a
1955spinlock is held. Fixes issues on systems that do not allow this
1956behavior.
1957Jung-uk Kim.
1958
1959Split exception code utilities and tables into a new file,
1960utilities/utexcep.c
1961
1962Example Code and Data Size: These are the sizes for the OS-independent
1963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1964debug
1965version of the code includes the debug output trace mechanism and has a
1966much
1967larger code and data size.
1968
1969  Previous Release:
1970    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
1971    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
1972  Current Release:
1973    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
1974    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
1975
1976
19772) iASL Compiler/Disassembler and Tools:
1978
1979iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
1980of
19810. Jung-uk Kim.
1982
1983Debugger: Enhanced the "tables" command to emit additional information
1984about
1985the current set of ACPI tables, including the owner ID and flags decode.
1986
1987Debugger: Reimplemented the "unload" command to use the new
1988AcpiUnloadParentTable external interface. This command was disable
1989previously
1990due to need for an unload interface.
1991
1992AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
1993option
1994will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
1995
1996----------------------------------------
199720 June 2012. Summary of changes for version 20120620:
1998
1999
20001) ACPICA Kernel-resident Subsystem:
2001
2002Implemented support to expand the "implicit notify" feature to allow
2003multiple
2004devices to be notified by a single GPE. This feature automatically
2005generates a
2006runtime device notification in the absence of a BIOS-provided GPE control
2007method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2008notify is
2009provided by ACPICA for Windows compatibility, and is a workaround for
2010BIOS
2011AML
2012code errors. See the description of the AcpiSetupGpeForWake interface in
2013the
2014APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2015
2016Changed some comments and internal function names to simplify and ensure
2017correctness of the Linux code translation. No functional changes.
2018
2019Example Code and Data Size: These are the sizes for the OS-independent
2020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2021debug
2022version of the code includes the debug output trace mechanism and has a
2023much
2024larger code and data size.
2025
2026  Previous Release:
2027    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2028    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2029  Current Release:
2030    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2031    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2032
2033
20342) iASL Compiler/Disassembler and Tools:
2035
2036Disassembler: Added support to emit short, commented descriptions for the
2037ACPI
2038predefined names in order to improve the readability of the disassembled
2039output. ACPICA BZ 959. Changes include:
2040  1) Emit descriptions for all standard predefined names (_INI, _STA,
2041_PRW,
2042etc.)
2043  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2044  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2045etc.)
2046
2047AcpiSrc: Fixed several long-standing Linux code translation issues.
2048Argument
2049descriptions in function headers are now translated properly to lower
2050case
2051and
2052underscores. ACPICA BZ 961. Also fixes translation problems such as
2053these:
2054(old -> new)
2055  i_aSL -> iASL
2056  00-7_f -> 00-7F
2057  16_k -> 16K
2058  local_fADT -> local_FADT
2059  execute_oSI -> execute_OSI
2060
2061iASL: Fixed a problem where null bytes were inadvertently emitted into
2062some
2063listing files.
2064
2065iASL: Added the existing debug options to the standard help screen. There
2066are
2067no longer two different help screens. ACPICA BZ 957.
2068
2069AcpiHelp: Fixed some typos in the various predefined name descriptions.
2070Also
2071expand some of the descriptions where appropriate.
2072
2073iASL: Fixed the -ot option (display compile times/statistics). Was not
2074working
2075properly for standard output; only worked for the debug file case.
2076
2077----------------------------------------
207818 May 2012. Summary of changes for version 20120518:
2079
2080
20811) ACPICA Core Subsystem:
2082
2083Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2084defined
2085to block until asynchronous events such as notifies and GPEs have
2086completed.
2087Within ACPICA, it is only called before a notify or GPE handler is
2088removed/uninstalled. It also may be useful for the host OS within related
2089drivers such as the Embedded Controller driver. See the ACPICA reference
2090for
2091additional information. ACPICA BZ 868.
2092
2093ACPI Tables: Added a new error message for a possible overflow failure
2094during
2095the conversion of FADT 32-bit legacy register addresses to internal
2096common
209764-
2098bit GAS structure representation. The GAS has a one-byte "bit length"
2099field,
2100thus limiting the register length to 255 bits. ACPICA BZ 953.
2101
2102Example Code and Data Size: These are the sizes for the OS-independent
2103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2104debug
2105version of the code includes the debug output trace mechanism and has a
2106much
2107larger code and data size.
2108
2109  Previous Release:
2110    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2111    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2112  Current Release:
2113    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2114    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2115
2116
21172) iASL Compiler/Disassembler and Tools:
2118
2119iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2120macro.
2121This keyword was added late in the ACPI 5.0 release cycle and was not
2122implemented until now.
2123
2124Disassembler: Added support for Operation Region externals. Adds missing
2125support for operation regions that are defined in another table, and
2126referenced locally via a Field or BankField ASL operator. Now generates
2127the
2128correct External statement.
2129
2130Disassembler: Several additional fixes for the External() statement
2131generation
2132related to some ASL operators. Also, order the External() statements
2133alphabetically in the disassembler output. Fixes the External()
2134generation
2135for
2136the Create* field, Alias, and Scope operators:
2137 1) Create* buffer field operators - fix type mismatch warning on
2138disassembly
2139 2) Alias - implement missing External support
2140 3) Scope - fix to make sure all necessary externals are emitted.
2141
2142iASL: Improved pathname support. For include files, merge the prefix
2143pathname
2144with the file pathname and eliminate unnecessary components. Convert
2145backslashes in all pathnames to forward slashes, for readability. Include
2146file
2147pathname changes affect both #include and Include() type operators.
2148
2149iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
2150end
2151of a valid line by inserting a newline and then returning the EOF during
2152the
2153next call to GetNextLine. Prevents the line from being ignored due to EOF
2154condition.
2155
2156iASL: Implemented some changes to enhance the IDE support (-vi option.)
2157Error
2158and Warning messages are now correctly recognized for both the source
2159code
2160browser and the global error and warning counts.
2161
2162----------------------------------------
216320 April 2012. Summary of changes for version 20120420:
2164
2165
21661) ACPICA Core Subsystem:
2167
2168Implemented support for multiple notify handlers. This change adds
2169support
2170to
2171allow multiple system and device notify handlers on Device, Thermal Zone,
2172and
2173Processor objects. This can simplify the host OS notification
2174implementation.
2175Also re-worked and restructured the entire notify support code to
2176simplify
2177handler installation, handler removal, notify event queuing, and notify
2178dispatch to handler(s). Note: there can still only be two global notify
2179handlers - one for system notifies and one for device notifies. There are
2180no
2181changes to the existing handler install/remove interfaces. Lin Ming, Bob
2182Moore, Rafael Wysocki.
2183
2184Fixed a regression in the package repair code where the object reference
2185count was calculated incorrectly. Regression was introduced in the commit
2186"Support to add Package wrappers".
2187
2188Fixed a couple possible memory leaks in the AML parser, in the error
2189recovery
2190path. Jesper Juhl, Lin Ming.
2191
2192Example Code and Data Size: These are the sizes for the OS-independent
2193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2194debug version of the code includes the debug output trace mechanism and
2195has a
2196much larger code and data size.
2197
2198  Previous Release:
2199    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2200    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2201  Current Release:
2202    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2203    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2204
2205
22062) iASL Compiler/Disassembler and Tools:
2207
2208iASL: Fixed a problem with the resource descriptor support where the
2209length
2210of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2211included in cumulative descriptor offset, resulting in incorrect values
2212for
2213resource tags within resource descriptors appearing after a
2214StartDependent*
2215descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2216
2217iASL and Preprocessor: Implemented full support for the #line directive
2218to
2219correctly track original source file line numbers through the .i
2220preprocessor
2221output file - for error and warning messages.
2222
2223iASL: Expand the allowable byte constants for address space IDs.
2224Previously,
2225the allowable range was 0x80-0xFF (user-defined spaces), now the range is
22260x0A-0xFF to allow for custom and new IDs without changing the compiler.
2227
2228iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2229
2230iASL: Add option to completely disable the preprocessor (-Pn).
2231
2232iASL: Now emit all error/warning messages to standard error (stderr) by
2233default (instead of the previous stdout).
2234
2235ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
2236Update
2237for resource descriptor offset fix above. Update/cleanup error output
2238routines. Enable and send iASL errors/warnings to an error logfile
2239(error.txt). Send all other iASL output to a logfile (compiler.txt).
2240Fixed
2241several extraneous "unrecognized operator" messages.
2242
2243----------------------------------------
224420 March 2012. Summary of changes for version 20120320:
2245
2246
22471) ACPICA Core Subsystem:
2248
2249Enhanced the sleep/wake interfaces to optionally execute the _GTS method
2250(Going To Sleep) and the _BFS method (Back From Sleep). Windows
2251apparently
2252does not execute these methods, and therefore these methods are often
2253untested. It has been seen on some systems where the execution of these
2254methods causes errors and also prevents the machine from entering S5. It
2255is
2256therefore suggested that host operating systems do not execute these
2257methods
2258by default. In the future, perhaps these methods can be optionally
2259executed
2260based on the age of the system and/or what is the newest version of
2261Windows
2262that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
2263and
2264AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
2265Ming.
2266
2267Fixed a problem where the length of the local/common FADT was set too
2268early.
2269The local FADT table length cannot be set to the common length until the
2270original length has been examined. There is code that checks the table
2271length
2272and sets various fields appropriately. This can affect older machines
2273with
2274early FADT versions. For example, this can cause inadvertent writes to
2275the
2276CST_CNT register. Julian Anastasov.
2277
2278Fixed a mapping issue related to a physical table override. Use the
2279deferred
2280mapping mechanism for tables loaded via the physical override OSL
2281interface.
2282This allows for early mapping before the virtual memory manager is
2283available.
2284Thomas Renninger, Bob Moore.
2285
2286Enhanced the automatic return-object repair code: Repair a common problem
2287with
2288predefined methods that are defined to return a variable-length Package
2289of
2290sub-objects. If there is only one sub-object, some BIOS ASL code
2291mistakenly
2292simply returns the single object instead of a Package with one sub-
2293object.
2294This new support will repair this error by wrapping a Package object
2295around
2296the original object, creating the correct and expected Package with one
2297sub-
2298object. Names that can be repaired in this manner include: _ALR, _CSD,
2299_HPX,
2300_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
2301939.
2302
2303Changed the exception code returned for invalid ACPI paths passed as
2304parameters to external interfaces such as AcpiEvaluateObject. Was
2305AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2306
2307Example Code and Data Size: These are the sizes for the OS-independent
2308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2309debug
2310version of the code includes the debug output trace mechanism and has a
2311much
2312larger code and data size.
2313
2314  Previous Release:
2315    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2316    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2317  Current Release:
2318    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2319    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2320
2321
23222) iASL Compiler/Disassembler and Tools:
2323
2324iASL: Added the infrastructure and initial implementation of a integrated
2325C-
2326like preprocessor. This will simplify BIOS development process by
2327eliminating
2328the need for a separate preprocessing step during builds. On Windows, it
2329also
2330eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
2331features including full #define() macro support are still under
2332development.
2333These preprocessor directives are supported:
2334    #define
2335    #elif
2336    #else
2337    #endif
2338    #error
2339    #if
2340    #ifdef
2341    #ifndef
2342    #include
2343    #pragma message
2344    #undef
2345    #warning
2346In addition, these new command line options are supported:
2347    -D <symbol> Define symbol for preprocessor use
2348    -li         Create preprocessed output file (*.i)
2349    -P          Preprocess only and create preprocessor output file (*.i)
2350
2351Table Compiler: Fixed a problem where the equals operator within an
2352expression
2353did not work properly.
2354
2355Updated iASL to use the current versions of Bison/Flex. Updated the
2356Windows
2357project file to invoke these tools from the standard location. ACPICA BZ
2358904.
2359Versions supported:
2360    Flex for Windows:  V2.5.4
2361    Bison for Windows: V2.4.1
2362
2363----------------------------------------
236415 February 2012. Summary of changes for version 20120215:
2365
2366
23671) ACPICA Core Subsystem:
2368
2369There have been some major changes to the sleep/wake support code, as
2370described below (a - e).
2371
2372a) The AcpiLeaveSleepState has been split into two interfaces, similar to
2373AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
2374AcpiLeaveSleepStatePrep. This allows the host to perform actions between
2375the
2376time the _BFS method is called and the _WAK method is called. NOTE: all
2377hosts
2378must update their wake/resume code or else sleep/wake will not work
2379properly.
2380Rafael Wysocki.
2381
2382b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
2383_WAK
2384method. Some machines require that the GPEs are enabled before the _WAK
2385method
2386is executed. Thomas Renninger.
2387
2388c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
2389bit.
2390Some BIOS code assumes that WAK_STS will be cleared on resume and use it
2391to
2392determine whether the system is rebooting or resuming. Matthew Garrett.
2393
2394d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
2395Sleep) to
2396match the ACPI specification requirement. Rafael Wysocki.
2397
2398e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
2399registers within the V5 FADT. This support adds two new files:
2400hardware/hwesleep.c implements the support for the new registers. Moved
2401all
2402sleep/wake external interfaces to hardware/hwxfsleep.c.
2403
2404
2405Added a new OSL interface for ACPI table overrides,
2406AcpiOsPhysicalTableOverride. This interface allows the host to override a
2407table via a physical address, instead of the logical address required by
2408AcpiOsTableOverride. This simplifies the host implementation. Initial
2409implementation by Thomas Renninger. The ACPICA implementation creates a
2410single
2411shared function for table overrides that attempts both a logical and a
2412physical override.
2413
2414Expanded the OSL memory read/write interfaces to 64-bit data
2415(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
2416transfer support for GAS register structures passed to AcpiRead and
2417AcpiWrite.
2418
2419Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
2420custom
2421build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
2422model.
2423See the ACPICA reference for details. ACPICA BZ 942. This option removes
2424about
242510% of the code and 5% of the static data, and the following hardware
2426ACPI
2427features become unavailable:
2428    PM Event and Control registers
2429    SCI interrupt (and handler)
2430    Fixed Events
2431    General Purpose Events (GPEs)
2432    Global Lock
2433    ACPI PM timer
2434    FACS table (Waking vectors and Global Lock)
2435
2436Updated the unix tarball directory structure to match the ACPICA git
2437source
2438tree. This ensures that the generic unix makefiles work properly (in
2439generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
2440867.
2441
2442Updated the return value of the _REV predefined method to integer value 5
2443to
2444reflect ACPI 5.0 support.
2445
2446Moved the external ACPI PM timer interface prototypes to the public
2447acpixf.h
2448file where they belong.
2449
2450Example Code and Data Size: These are the sizes for the OS-independent
2451acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2452debug
2453version of the code includes the debug output trace mechanism and has a
2454much
2455larger code and data size.
2456
2457  Previous Release:
2458    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2459    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2460  Current Release:
2461    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2462    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2463
2464
24652) iASL Compiler/Disassembler and Tools:
2466
2467Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
2468descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
2469incorrectly displayed.
2470
2471AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
2472specification.
2473
2474----------------------------------------
247511 January 2012. Summary of changes for version 20120111:
2476
2477
24781) ACPICA Core Subsystem:
2479
2480Implemented a new mechanism to allow host device drivers to check for
2481address
2482range conflicts with ACPI Operation Regions. Both SystemMemory and
2483SystemIO
2484address spaces are supported. A new external interface,
2485AcpiCheckAddressRange,
2486allows drivers to check an address range against the ACPI namespace. See
2487the
2488ACPICA reference for additional details. Adds one new file,
2489utilities/utaddress.c. Lin Ming, Bob Moore.
2490
2491Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
2492Control
2493and
2494Status registers, update the ACPI 5.0 flags, and update internal data
2495structures to handle an FADT larger than 256 bytes. The size of the ACPI
24965.0
2497FADT is 268 bytes.
2498
2499Updated all ACPICA copyrights and signons to 2012. Added the 2012
2500copyright to
2501all module headers and signons, including the standard Linux header. This
2502affects virtually every file in the ACPICA core subsystem, iASL compiler,
2503and
2504all ACPICA utilities.
2505
2506Example Code and Data Size: These are the sizes for the OS-independent
2507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2508debug
2509version of the code includes the debug output trace mechanism and has a
2510much
2511larger code and data size.
2512
2513  Previous Release:
2514    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2515    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2516  Current Release:
2517    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2518    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2519
2520
25212) iASL Compiler/Disassembler and Tools:
2522
2523Disassembler: fixed a problem with the automatic resource tag generation
2524support. Fixes a problem where the resource tags are inadvertently not
2525constructed if the table being disassembled contains external references
2526to
2527control methods. Moved the actual construction of the tags to after the
2528final
2529namespace is constructed (after 2nd parse is invoked due to external
2530control
2531method references.) ACPICA BZ 941.
2532
2533Table Compiler: Make all "generic" operators caseless. These are the
2534operators
2535like UINT8, String, etc. Making these caseless improves ease-of-use.
2536ACPICA BZ
2537934.
2538
2539----------------------------------------
254023 November 2011. Summary of changes for version 20111123:
2541
25420) ACPI 5.0 Support:
2543
2544This release contains full support for the ACPI 5.0 specification, as
2545summarized below.
2546
2547Reduced Hardware Support:
2548-------------------------
2549
2550This support allows for ACPI systems without the usual ACPI hardware.
2551This
2552support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
2553will
2554not attempt to initialize or use any of the usual ACPI hardware. Note,
2555when
2556this flag is set, all of the following ACPI hardware is assumed to be not
2557present and is not initialized or accessed:
2558
2559    General Purpose Events (GPEs)
2560    Fixed Events (PM1a/PM1b and PM Control)
2561    Power Management Timer and Console Buttons (power/sleep)
2562    Real-time Clock Alarm
2563    Global Lock
2564    System Control Interrupt (SCI)
2565    The FACS is assumed to be non-existent
2566
2567ACPI Tables:
2568------------
2569
2570All new tables and updates to existing tables are fully supported in the
2571ACPICA headers (for use by device drivers), the disassembler, and the
2572iASL
2573Data Table Compiler. ACPI 5.0 defines these new tables:
2574
2575    BGRT        /* Boot Graphics Resource Table */
2576    DRTM        /* Dynamic Root of Trust for Measurement table */
2577    FPDT        /* Firmware Performance Data Table */
2578    GTDT        /* Generic Timer Description Table */
2579    MPST        /* Memory Power State Table */
2580    PCCT        /* Platform Communications Channel Table */
2581    PMTT        /* Platform Memory Topology Table */
2582    RASF        /* RAS Feature table */
2583
2584Operation Regions/SpaceIDs:
2585---------------------------
2586
2587All new operation regions are fully supported by the iASL compiler, the
2588disassembler, and the ACPICA runtime code (for dispatch to region
2589handlers.)
2590The new operation region Space IDs are:
2591
2592    GeneralPurposeIo
2593    GenericSerialBus
2594
2595Resource Descriptors:
2596---------------------
2597
2598All new ASL resource descriptors are fully supported by the iASL
2599compiler,
2600the
2601ASL/AML disassembler, and the ACPICA runtime Resource Manager code
2602(including
2603all new predefined resource tags). New descriptors are:
2604
2605    FixedDma
2606    GpioIo
2607    GpioInt
2608    I2cSerialBus
2609    SpiSerialBus
2610    UartSerialBus
2611
2612ASL/AML Operators, New and Modified:
2613------------------------------------
2614
2615One new operator is added, the Connection operator, which is used to
2616associate
2617a GeneralPurposeIo or GenericSerialBus resource descriptor with
2618individual
2619field objects within an operation region. Several new protocols are
2620associated
2621with the AccessAs operator. All are fully supported by the iASL compiler,
2622disassembler, and runtime ACPICA AML interpreter:
2623
2624    Connection                      // Declare Field Connection
2625attributes
2626    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2627    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
2628Protocol
2629    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2630    RawDataBuffer                       // Data type for Vendor Data
2631fields
2632
2633Predefined ASL/AML Objects:
2634---------------------------
2635
2636All new predefined objects/control-methods are supported by the iASL
2637compiler
2638and the ACPICA runtime validation/repair (arguments and return values.)
2639New
2640predefined names include the following:
2641
2642Standard Predefined Names (Objects or Control Methods):
2643    _AEI, _CLS, _CPC, _CWS, _DEP,
2644    _DLM, _EVT, _GCP, _CRT, _GWS,
2645    _HRV, _PRE, _PSE, _SRT, _SUB.
2646
2647Resource Tags (Names used to access individual fields within resource
2648descriptors):
2649    _DBT, _DPL, _DRS, _END, _FLC,
2650    _IOR, _LIN, _MOD, _PAR, _PHA,
2651    _PIN, _PPI, _POL, _RXL, _SLV,
2652    _SPE, _STB, _TXL, _VEN.
2653
2654ACPICA External Interfaces:
2655---------------------------
2656
2657Several new interfaces have been defined for use by ACPI-related device
2658drivers and other host OS services:
2659
2660AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
2661to
2662acquire and release AML mutexes that are defined in the DSDT/SSDT tables
2663provided by the BIOS. They are intended to be used in conjunction with
2664the
2665ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
2666mutual exclusion with the AML code/interpreter.
2667
2668AcpiGetEventResources: Returns the (formatted) resource descriptors as
2669defined
2670by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
2671provides
2672resource descriptors associated with hardware-reduced platform events,
2673similar
2674to the AcpiGetCurrentResources interface.
2675
2676Operation Region Handlers: For General Purpose IO and Generic Serial Bus
2677operation regions, information about the Connection() object and any
2678optional
2679length information is passed to the region handler within the Context
2680parameter.
2681
2682AcpiBufferToResource: This interface converts a raw AML buffer containing
2683a
2684resource template or resource descriptor to the ACPI_RESOURCE internal
2685format
2686suitable for use by device drivers. Can be used by an operation region
2687handler
2688to convert the Connection() buffer object into a ACPI_RESOURCE.
2689
2690Miscellaneous/Tools/TestSuites:
2691-------------------------------
2692
2693Support for extended _HID names (Four alpha characters instead of three).
2694Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
2695Support for ACPI 5.0 features in the ASLTS test suite.
2696Fully updated documentation (ACPICA and iASL reference documents.)
2697
2698ACPI Table Definition Language:
2699-------------------------------
2700
2701Support for this language was implemented and released as a subsystem of
2702the
2703iASL compiler in 2010. (See the iASL compiler User Guide.)
2704
2705
2706Non-ACPI 5.0 changes for this release:
2707--------------------------------------
2708
27091) ACPICA Core Subsystem:
2710
2711Fix a problem with operation region declarations where a failure can
2712occur
2713if
2714the region name and an argument that evaluates to an object (such as the
2715region address) are in different namespace scopes. Lin Ming, ACPICA BZ
2716937.
2717
2718Do not abort an ACPI table load if an invalid space ID is found within.
2719This
2720will be caught later if the offending method is executed. ACPICA BZ 925.
2721
2722Fixed an issue with the FFixedHW space ID where the ID was not always
2723recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
2724
2725Fixed a problem with the 32-bit generation of the unix-specific OSL
2726(osunixxf.c). Lin Ming, ACPICA BZ 936.
2727
2728Several changes made to enable generation with the GCC 4.6 compiler.
2729ACPICA BZ
2730935.
2731
2732New error messages: Unsupported I/O requests (not 8/16/32 bit), and
2733Index/Bank
2734field registers out-of-range.
2735
27362) iASL Compiler/Disassembler and Tools:
2737
2738iASL: Implemented the __PATH__ operator, which returns the full pathname
2739of
2740the current source file.
2741
2742AcpiHelp: Automatically display expanded keyword information for all ASL
2743operators.
2744
2745Debugger: Add "Template" command to disassemble/dump resource template
2746buffers.
2747
2748Added a new master script to generate and execute the ASLTS test suite.
2749Automatically handles 32- and 64-bit generation. See tests/aslts.sh
2750
2751iASL: Fix problem with listing generation during processing of the
2752Switch()
2753operator where AML listing was disabled until the entire Switch block was
2754completed.
2755
2756iASL: Improve support for semicolon statement terminators. Fix "invalid
2757character" message for some cases when the semicolon is used. Semicolons
2758are
2759now allowed after every <Term> grammar element. ACPICA BZ 927.
2760
2761iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
2762923.
2763
2764Disassembler: Fix problem with disassembly of the DataTableRegion
2765operator
2766where an inadvertent "Unhandled deferred opcode" message could be
2767generated.
2768
27693) Example Code and Data Size
2770
2771These are the sizes for the OS-independent acpica.lib produced by the
2772Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2773includes the debug output trace mechanism and has a much larger code and
2774data
2775size.
2776
2777  Previous Release:
2778    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2779    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2780  Current Release:
2781    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2782    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2783
2784----------------------------------------
278522 September 2011. Summary of changes for version 20110922:
2786
27870) ACPI 5.0 News:
2788
2789Support for ACPI 5.0 in ACPICA has been underway for several months and
2790will
2791be released at the same time that ACPI 5.0 is officially released.
2792
2793The ACPI 5.0 specification is on track for release in the next few
2794months.
2795
27961) ACPICA Core Subsystem:
2797
2798Fixed a problem where the maximum sleep time for the Sleep() operator was
2799intended to be limited to two seconds, but was inadvertently limited to
280020
2801seconds instead.
2802
2803Linux and Unix makefiles: Added header file dependencies to ensure
2804correct
2805generation of ACPICA core code and utilities. Also simplified the
2806makefiles
2807considerably through the use of the vpath variable to specify search
2808paths.
2809ACPICA BZ 924.
2810
28112) iASL Compiler/Disassembler and Tools:
2812
2813iASL: Implemented support to check the access length for all fields
2814created to
2815access named Resource Descriptor fields. For example, if a resource field
2816is
2817defined to be two bits, a warning is issued if a CreateXxxxField() is
2818used
2819with an incorrect bit length. This is implemented for all current
2820resource
2821descriptor names. ACPICA BZ 930.
2822
2823Disassembler: Fixed a byte ordering problem with the output of 24-bit and
282456-
2825bit integers.
2826
2827iASL: Fixed a couple of issues associated with variable-length package
2828objects. 1) properly handle constants like One, Ones, Zero -- do not make
2829a
2830VAR_PACKAGE when these are used as a package length. 2) Allow the
2831VAR_PACKAGE
2832opcode (in addition to PACKAGE) when validating object types for
2833predefined
2834names.
2835
2836iASL: Emit statistics for all output files (instead of just the ASL input
2837and
2838AML output). Includes listings, hex files, etc.
2839
2840iASL: Added -G option to the table compiler to allow the compilation of
2841custom
2842ACPI tables. The only part of a table that is required is the standard
284336-
2844byte
2845ACPI header.
2846
2847AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
2848headers),
2849which also adds correct 64-bit support. Also, now all output filenames
2850are
2851completely lower case.
2852
2853AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
2854loading table files. A warning is issued for any such tables. The only
2855exception is an FADT. This also fixes a possible fault when attempting to
2856load
2857non-AML tables. ACPICA BZ 932.
2858
2859AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
2860a
2861missing table terminator could cause a fault when using the -p option.
2862
2863AcpiSrc: Fixed a possible divide-by-zero fault when generating file
2864statistics.
2865
28663) Example Code and Data Size
2867
2868These are the sizes for the OS-independent acpica.lib produced by the
2869Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2870includes the debug output trace mechanism and has a much larger code and
2871data
2872size.
2873
2874  Previous Release (VC 9.0):
2875    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2876    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2877  Current Release (VC 9.0):
2878    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2879    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2880
2881
2882----------------------------------------
288323 June 2011. Summary of changes for version 20110623:
2884
28851) ACPI CA Core Subsystem:
2886
2887Updated the predefined name repair mechanism to not attempt repair of a
2888_TSS
2889return object if a _PSS object is present. We can only sort the _TSS
2890return
2891package if there is no _PSS within the same scope. This is because if
2892_PSS
2893is
2894present, the ACPI specification dictates that the _TSS Power Dissipation
2895field
2896is to be ignored, and therefore some BIOSs leave garbage values in the
2897_TSS
2898Power field(s). In this case, it is best to just return the _TSS package
2899as-
2900is. Reported by, and fixed with assistance from Fenghua Yu.
2901
2902Added an option to globally disable the control method return value
2903validation
2904and repair. This runtime option can be used to disable return value
2905repair
2906if
2907this is causing a problem on a particular machine. Also added an option
2908to
2909AcpiExec (-dr) to set this disable flag.
2910
2911All makefiles and project files: Major changes to improve generation of
2912ACPICA
2913tools. ACPICA BZ 912:
2914    Reduce default optimization levels to improve compatibility
2915    For Linux, add strict-aliasing=0 for gcc 4
2916    Cleanup and simplify use of command line defines
2917    Cleanup multithread library support
2918    Improve usage messages
2919
2920Linux-specific header: update handling of THREAD_ID and pthread. For the
292132-
2922bit case, improve casting to eliminate possible warnings, especially with
2923the
2924acpica tools.
2925
2926Example Code and Data Size: These are the sizes for the OS-independent
2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2928debug
2929version of the code includes the debug output trace mechanism and has a
2930much
2931larger code and data size.
2932
2933  Previous Release (VC 9.0):
2934    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
2935    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2936  Current Release (VC 9.0):
2937    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2938    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2939
29402) iASL Compiler/Disassembler and Tools:
2941
2942With this release, a new utility named "acpihelp" has been added to the
2943ACPICA
2944package. This utility summarizes the ACPI specification chapters for the
2945ASL
2946and AML languages. It generates under Linux/Unix as well as Windows, and
2947provides the following functionality:
2948    Find/display ASL operator(s) -- with description and syntax.
2949    Find/display ASL keyword(s) -- with exact spelling and descriptions.
2950    Find/display ACPI predefined name(s) -- with description, number
2951        of arguments, and the return value data type.
2952    Find/display AML opcode name(s) -- with opcode, arguments, and
2953grammar.
2954    Decode/display AML opcode -- with opcode name, arguments, and
2955grammar.
2956
2957Service Layers: Make multi-thread support configurable. Conditionally
2958compile
2959the multi-thread support so that threading libraries will not be linked
2960if
2961not
2962necessary. The only tool that requires multi-thread support is AcpiExec.
2963
2964iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
2965of
2966Bison appear to want the interface to yyerror to be a const char * (or at
2967least this is a problem when generating iASL on some systems.) ACPICA BZ
2968923
2969Pierre Lejeune.
2970
2971Tools: Fix for systems where O_BINARY is not defined. Only used for
2972Windows
2973versions of the tools.
2974
2975----------------------------------------
297627 May 2011. Summary of changes for version 20110527:
2977
29781) ACPI CA Core Subsystem:
2979
2980ASL Load() operator: Reinstate most restrictions on the incoming ACPI
2981table
2982signature. Now, only allow SSDT, OEMx, and a null signature. History:
2983    1) Originally, we checked the table signature for "SSDT" or "PSDT".
2984       (PSDT is now obsolete.)
2985    2) We added support for OEMx tables, signature "OEM" plus a fourth
2986       "don't care" character.
2987    3) Valid tables were encountered with a null signature, so we just
2988       gave up on validating the signature, (05/2008).
2989    4) We encountered non-AML tables such as the MADT, which caused
2990       interpreter errors and kernel faults. So now, we once again allow
2991       only SSDT, OEMx, and now, also a null signature. (05/2011).
2992
2993Added the missing _TDL predefined name to the global name list in order
2994to
2995enable validation. Affects both the core ACPICA code and the iASL
2996compiler.
2997
2998Example Code and Data Size: These are the sizes for the OS-independent
2999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3000debug
3001version of the code includes the debug output trace mechanism and has a
3002much
3003larger code and data size.
3004
3005  Previous Release (VC 9.0):
3006    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3007    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3008  Current Release (VC 9.0):
3009    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3010    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3011
30122) iASL Compiler/Disassembler and Tools:
3013
3014Debugger/AcpiExec: Implemented support for "complex" method arguments on
3015the
3016debugger command line. This adds support beyond simple integers --
3017including
3018Strings, Buffers, and Packages. Includes support for nested packages.
3019Increased the default command line buffer size to accommodate these
3020arguments.
3021See the ACPICA reference for details and syntax. ACPICA BZ 917.
3022
3023Debugger/AcpiExec: Implemented support for "default" method arguments for
3024the
3025Execute/Debug command. Now, the debugger will always invoke a control
3026method
3027with the required number of arguments -- even if the command line
3028specifies
3029none or insufficient arguments. It uses default integer values for any
3030missing
3031arguments. Also fixes a bug where only six method arguments maximum were
3032supported instead of the required seven.
3033
3034Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
3035and
3036also return status in order to prevent buffer overruns. See the ACPICA
3037reference for details and syntax. ACPICA BZ 921
3038
3039iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
3040makefiles to simplify support for the two different but similar parser
3041generators, bison and yacc.
3042
3043Updated the generic unix makefile for gcc 4. The default gcc version is
3044now
3045expected to be 4 or greater, since options specific to gcc 4 are used.
3046
3047----------------------------------------
304813 April 2011. Summary of changes for version 20110413:
3049
30501) ACPI CA Core Subsystem:
3051
3052Implemented support to execute a so-called "orphan" _REG method under the
3053EC
3054device. This change will force the execution of a _REG method underneath
3055the
3056EC
3057device even if there is no corresponding operation region of type
3058EmbeddedControl. Fixes a problem seen on some machines and apparently is
3059compatible with Windows behavior. ACPICA BZ 875.
3060
3061Added more predefined methods that are eligible for automatic NULL
3062package
3063element removal. This change adds another group of predefined names to
3064the
3065list
3066of names that can be repaired by having NULL package elements dynamically
3067removed. This group are those methods that return a single variable-
3068length
3069package containing simple data types such as integers, buffers, strings.
3070This
3071includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
3072_PSL,
3073_Sx,
3074and _TZD. ACPICA BZ 914.
3075
3076Split and segregated all internal global lock functions to a new file,
3077evglock.c.
3078
3079Updated internal address SpaceID for DataTable regions. Moved this
3080internal
3081space
3082id in preparation for ACPI 5.0 changes that will include some new space
3083IDs.
3084This
3085change should not affect user/host code.
3086
3087Example Code and Data Size: These are the sizes for the OS-independent
3088acpica.lib
3089produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3090version of
3091the code includes the debug output trace mechanism and has a much larger
3092code
3093and
3094data size.
3095
3096  Previous Release (VC 9.0):
3097    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3098    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3099  Current Release (VC 9.0):
3100    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3101    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3102
31032) iASL Compiler/Disassembler and Tools:
3104
3105iASL/DTC: Major update for new grammar features. Allow generic data types
3106in
3107custom ACPI tables. Field names are now optional. Any line can be split
3108to
3109multiple lines using the continuation char (\). Large buffers now use
3110line-
3111continuation character(s) and no colon on the continuation lines. See the
3112grammar
3113update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
3114Moore.
3115
3116iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
3117statements.
3118Since the parser stuffs a "zero" as the return value for these statements
3119(due
3120to
3121the underlying AML grammar), they were seen as "return with value" by the
3122iASL
3123semantic checking. They are now seen correctly as "null" return
3124statements.
3125
3126iASL: Check if a_REG declaration has a corresponding Operation Region.
3127Adds a
3128check for each _REG to ensure that there is in fact a corresponding
3129operation
3130region declaration in the same scope. If not, the _REG method is not very
3131useful
3132since it probably won't be executed. ACPICA BZ 915.
3133
3134iASL/DTC: Finish support for expression evaluation. Added a new
3135expression
3136parser
3137that implements c-style operator precedence and parenthesization. ACPICA
3138bugzilla
3139908.
3140
3141Disassembler/DTC: Remove support for () and <> style comments in data
3142tables.
3143Now
3144that DTC has full expression support, we don't want to have comment
3145strings
3146that
3147start with a parentheses or a less-than symbol. Now, only the standard /*
3148and
3149//
3150comments are supported, as well as the bracket [] comments.
3151
3152AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
3153"unusual"
3154headers in the acpidump file. Update the header validation to support
3155these
3156tables. Problem introduced in previous AcpiXtract version in the change
3157to
3158support "wrong checksum" error messages emitted by acpidump utility.
3159
3160iASL: Add a * option to generate all template files (as a synonym for
3161ALL)
3162as
3163in
3164"iasl -T *" or "iasl -T ALL".
3165
3166iASL/DTC: Do not abort compiler on fatal errors. We do not want to
3167completely
3168abort the compiler on "fatal" errors, simply should abort the current
3169compile.
3170This allows multiple compiles with a single (possibly wildcard) compiler
3171invocation.
3172
3173----------------------------------------
317416 March 2011. Summary of changes for version 20110316:
3175
31761) ACPI CA Core Subsystem:
3177
3178Fixed a problem caused by a _PRW method appearing at the namespace root
3179scope
3180during the setup of wake GPEs. A fault could occur if a _PRW directly
3181under
3182the
3183root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3184
3185Implemented support for "spurious" Global Lock interrupts. On some
3186systems, a
3187global lock interrupt can occur without the pending flag being set. Upon
3188a
3189GL
3190interrupt, we now ensure that a thread is actually waiting for the lock
3191before
3192signaling GL availability. Rafael Wysocki, Bob Moore.
3193
3194Example Code and Data Size: These are the sizes for the OS-independent
3195acpica.lib
3196produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3197version of
3198the code includes the debug output trace mechanism and has a much larger
3199code
3200and
3201data size.
3202
3203  Previous Release (VC 9.0):
3204    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3205    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3206  Current Release (VC 9.0):
3207    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3208    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3209
32102) iASL Compiler/Disassembler and Tools:
3211
3212Implemented full support for the "SLIC" ACPI table. Includes support in
3213the
3214header files, disassembler, table compiler, and template generator. Bob
3215Moore,
3216Lin Ming.
3217
3218AcpiXtract: Correctly handle embedded comments and messages from
3219AcpiDump.
3220Apparently some or all versions of acpidump will occasionally emit a
3221comment
3222like
3223"Wrong checksum", etc., into the dump file. This was causing problems for
3224AcpiXtract. ACPICA BZ 905.
3225
3226iASL: Fix the Linux makefile by removing an inadvertent double file
3227inclusion.
3228ACPICA BZ 913.
3229
3230AcpiExec: Update installation of operation region handlers. Install one
3231handler
3232for a user-defined address space. This is used by the ASL test suite
3233(ASLTS).
3234
3235----------------------------------------
323611 February 2011. Summary of changes for version 20110211:
3237
32381) ACPI CA Core Subsystem:
3239
3240Added a mechanism to defer _REG methods for some early-installed
3241handlers.
3242Most user handlers should be installed before call to
3243AcpiEnableSubsystem.
3244However, Event handlers and region handlers should be installed after
3245AcpiInitializeObjects. Override handlers for the "default" regions should
3246be
3247installed early, however. This change executes all _REG methods for the
3248default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
3249chicken/egg issues between them. ACPICA BZ 848.
3250
3251Implemented an optimization for GPE detection. This optimization will
3252simply
3253ignore GPE registers that contain no enabled GPEs -- there is no need to
3254read the register since this information is available internally. This
3255becomes more important on machines with a large GPE space. ACPICA
3256bugzilla
3257884. Lin Ming. Suggestion from Joe Liu.
3258
3259Removed all use of the highly unreliable FADT revision field. The
3260revision
3261number in the FADT has been found to be completely unreliable and cannot
3262be
3263trusted. Only the actual table length can be used to infer the version.
3264This
3265change updates the ACPICA core and the disassembler so that both no
3266longer
3267even look at the FADT version and instead depend solely upon the FADT
3268length.
3269
3270Fix an unresolved name issue for the no-debug and no-error-message source
3271generation cases. The _AcpiModuleName was left undefined in these cases,
3272but
3273it is actually needed as a parameter to some interfaces. Define
3274_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3275
3276Split several large files (makefiles and project files updated)
3277  utglobal.c   -> utdecode.c
3278  dbcomds.c    -> dbmethod.c dbnames.c
3279  dsopcode.c   -> dsargs.c dscontrol.c
3280  dsload.c     -> dsload2.c
3281  aslanalyze.c -> aslbtypes.c aslwalks.c
3282
3283Example Code and Data Size: These are the sizes for the OS-independent
3284acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3285debug version of the code includes the debug output trace mechanism and
3286has
3287a much larger code and data size.
3288
3289  Previous Release (VC 9.0):
3290    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3291    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3292  Current Release (VC 9.0):
3293    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3294    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3295
32962) iASL Compiler/Disassembler and Tools:
3297
3298iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
3299These are useful C-style macros with the standard definitions. ACPICA
3300bugzilla 898.
3301
3302iASL/DTC: Added support for integer expressions and labels. Support for
3303full
3304expressions for all integer fields in all ACPI tables. Support for labels
3305in
3306"generic" portions of tables such as UEFI. See the iASL reference manual.
3307
3308Debugger: Added a command to display the status of global handlers. The
3309"handlers" command will display op region, fixed event, and miscellaneous
3310global handlers. installation status -- and for op regions, whether
3311default
3312or user-installed handler will be used.
3313
3314iASL: Warn if reserved method incorrectly returns a value. Many
3315predefined
3316names are defined such that they do not return a value. If implemented as
3317a
3318method, issue a warning if such a name explicitly returns a value. ACPICA
3319Bugzilla 855.
3320
3321iASL: Added detection of GPE method name conflicts. Detects a conflict
3322where
3323there are two GPE methods of the form _Lxy and _Exy in the same scope.
3324(For
3325example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3326
3327iASL/DTC: Fixed a couple input scanner issues with comments and line
3328numbers. Comment remover could get confused and miss a comment ending.
3329Fixed
3330a problem with line counter maintenance.
3331
3332iASL/DTC: Reduced the severity of some errors from fatal to error. There
3333is
3334no need to abort on simple errors within a field definition.
3335
3336Debugger: Simplified the output of the help command. All help output now
3337in
3338a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3339
3340----------------------------------------
334112 January 2011. Summary of changes for version 20110112:
3342
33431) ACPI CA Core Subsystem:
3344
3345Fixed a race condition between method execution and namespace walks that
3346can
3347possibly cause a fault. The problem was apparently introduced in version
334820100528 as a result of a performance optimization that reduces the
3349number
3350of
3351namespace walks upon method exit by using the delete_namespace_subtree
3352function instead of the delete_namespace_by_owner function used
3353previously.
3354Bug is a missing namespace lock in the delete_namespace_subtree function.
3355dana.myers@oracle.com
3356
3357Fixed several issues and a possible fault with the automatic "serialized"
3358method support. History: This support changes a method to "serialized" on
3359the
3360fly if the method generates an AE_ALREADY_EXISTS error, indicating the
3361possibility that it cannot handle reentrancy. This fix repairs a couple
3362of
3363issues seen in the field, especially on machines with many cores:
3364
3365    1) Delete method children only upon the exit of the last thread,
3366       so as to not delete objects out from under other running threads
3367      (and possibly causing a fault.)
3368    2) Set the "serialized" bit for the method only upon the exit of the
3369       Last thread, so as to not cause deadlock when running threads
3370       attempt to exit.
3371    3) Cleanup the use of the AML "MethodFlags" and internal method flags
3372       so that there is no longer any confusion between the two.
3373
3374    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3375
3376Debugger: Now lock the namespace for duration of a namespace dump.
3377Prevents
3378issues if the namespace is changing dynamically underneath the debugger.
3379Especially affects temporary namespace nodes, since the debugger displays
3380these also.
3381
3382Updated the ordering of include files. The ACPICA headers should appear
3383before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
3384set
3385any necessary compiler-specific defines, etc. Affects the ACPI-related
3386tools
3387and utilities.
3388
3389Updated all ACPICA copyrights and signons to 2011. Added the 2011
3390copyright
3391to all module headers and signons, including the Linux header. This
3392affects
3393virtually every file in the ACPICA core subsystem, iASL compiler, and all
3394utilities.
3395
3396Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
3397project files for VC++ 6.0 are now obsolete. New project files can be
3398found
3399under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
3400details.
3401
3402Example Code and Data Size: These are the sizes for the OS-independent
3403acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3404debug version of the code includes the debug output trace mechanism and
3405has a
3406much larger code and data size.
3407
3408  Previous Release (VC 6.0):
3409    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3410    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3411  Current Release (VC 9.0):
3412    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3413    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3414
34152) iASL Compiler/Disassembler and Tools:
3416
3417iASL: Added generic data types to the Data Table compiler. Add "generic"
3418data
3419types such as UINT32, String, Unicode, etc., to simplify the generation
3420of
3421platform-defined tables such as UEFI. Lin Ming.
3422
3423iASL: Added listing support for the Data Table Compiler. Adds listing
3424support
3425(-l) to display actual binary output for each line of input code.
3426
3427----------------------------------------
342809 December 2010. Summary of changes for version 20101209:
3429
34301) ACPI CA Core Subsystem:
3431
3432Completed the major overhaul of the GPE support code that was begun in
3433July
34342010. Major features include: removal of _PRW execution in ACPICA (host
3435executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
3436changes to existing interfaces, simplification of GPE handler operation,
3437and
3438a handful of new interfaces:
3439
3440    AcpiUpdateAllGpes
3441    AcpiFinishGpe
3442    AcpiSetupGpeForWake
3443    AcpiSetGpeWakeMask
3444    One new file, evxfgpe.c to consolidate all external GPE interfaces.
3445
3446See the ACPICA Programmer Reference for full details and programming
3447information. See the new section 4.4 "General Purpose Event (GPE)
3448Support"
3449for a full overview, and section 8.7 "ACPI General Purpose Event
3450Management"
3451for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
3452Ming,
3453Bob Moore, Rafael Wysocki.
3454
3455Implemented a new GPE feature for Windows compatibility, the "Implicit
3456Wake
3457GPE Notify". This feature will automatically issue a Notify(2) on a
3458device
3459when a Wake GPE is received if there is no corresponding GPE method or
3460handler. ACPICA BZ 870.
3461
3462Fixed a problem with the Scope() operator during table parse and load
3463phase.
3464During load phase (table load or method execution), the scope operator
3465should
3466not enter the target into the namespace. Instead, it should open a new
3467scope
3468at the target location. Linux BZ 19462, ACPICA BZ 882.
3469
3470Example Code and Data Size: These are the sizes for the OS-independent
3471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3472debug version of the code includes the debug output trace mechanism and
3473has a
3474much larger code and data size.
3475
3476  Previous Release:
3477    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3478    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3479  Current Release:
3480    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3481    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3482
34832) iASL Compiler/Disassembler and Tools:
3484
3485iASL: Relax the alphanumeric restriction on _CID strings. These strings
3486are
3487"bus-specific" per the ACPI specification, and therefore any characters
3488are
3489acceptable. The only checks that can be performed are for a null string
3490and
3491perhaps for a leading asterisk. ACPICA BZ 886.
3492
3493iASL: Fixed a problem where a syntax error that caused a premature EOF
3494condition on the source file emitted a very confusing error message. The
3495premature EOF is now detected correctly. ACPICA BZ 891.
3496
3497Disassembler: Decode the AccessSize within a Generic Address Structure
3498(byte
3499access, word access, etc.) Note, this field does not allow arbitrary bit
3500access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3501
3502New: AcpiNames utility - Example namespace dump utility. Shows an example
3503of
3504ACPICA configuration for a minimal namespace dump utility. Uses table and
3505namespace managers, but no AML interpreter. Does not add any
3506functionality
3507over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
3508partition and configure ACPICA. ACPICA BZ 883.
3509
3510AML Debugger: Increased the debugger buffer size for method return
3511objects.
3512Was 4K, increased to 16K. Also enhanced error messages for debugger
3513method
3514execution, including the buffer overflow case.
3515
3516----------------------------------------
351713 October 2010. Summary of changes for version 20101013:
3518
35191) ACPI CA Core Subsystem:
3520
3521Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
3522now
3523clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
3524HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3525
3526Changed the type of the predefined namespace object _TZ from ThermalZone
3527to
3528Device. This was found to be confusing to the host software that
3529processes
3530the various thermal zones, since _TZ is not really a ThermalZone.
3531However,
3532a
3533Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
3534Zhang.
3535
3536Added Windows Vista SP2 to the list of supported _OSI strings. The actual
3537string is "Windows 2006 SP2".
3538
3539Eliminated duplicate code in AcpiUtExecute* functions. Now that the
3540nsrepair
3541code automatically repairs _HID-related strings, this type of code is no
3542longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
3543878.
3544
3545Example Code and Data Size: These are the sizes for the OS-independent
3546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3547debug version of the code includes the debug output trace mechanism and
3548has a
3549much larger code and data size.
3550
3551  Previous Release:
3552    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3553    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3554  Current Release:
3555    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3556    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3557
35582) iASL Compiler/Disassembler and Tools:
3559
3560iASL: Implemented additional compile-time validation for _HID strings.
3561The
3562non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
3563length
3564of
3565the string must be exactly seven or eight characters. For both _HID and
3566_CID
3567strings, all characters must be alphanumeric. ACPICA BZ 874.
3568
3569iASL: Allow certain "null" resource descriptors. Some BIOS code creates
3570descriptors that are mostly or all zeros, with the expectation that they
3571will
3572be filled in at runtime. iASL now allows this as long as there is a
3573"resource
3574tag" (name) associated with the descriptor, which gives the ASL a handle
3575needed to modify the descriptor. ACPICA BZ 873.
3576
3577Added single-thread support to the generic Unix application OSL.
3578Primarily
3579for iASL support, this change removes the use of semaphores in the
3580single-
3581threaded ACPICA tools/applications - increasing performance. The
3582_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
3583option. ACPICA BZ 879.
3584
3585AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
3586support
3587for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3588
3589iASL: Moved all compiler messages to a new file, aslmessages.h.
3590
3591----------------------------------------
359215 September 2010. Summary of changes for version 20100915:
3593
35941) ACPI CA Core Subsystem:
3595
3596Removed the AcpiOsDerivePciId OSL interface. The various host
3597implementations
3598of this function were not OS-dependent and are now obsolete and can be
3599removed from all host OSLs. This function has been replaced by
3600AcpiHwDerivePciId, which is now part of the ACPICA core code.
3601AcpiHwDerivePciId has been implemented without recursion. Adds one new
3602module, hwpci.c. ACPICA BZ 857.
3603
3604Implemented a dynamic repair for _HID and _CID strings. The following
3605problems are now repaired at runtime: 1) Remove a leading asterisk in the
3606string, and 2) the entire string is uppercased. Both repairs are in
3607accordance with the ACPI specification and will simplify host driver
3608code.
3609ACPICA BZ 871.
3610
3611The ACPI_THREAD_ID type is no longer configurable, internally it is now
3612always UINT64. This simplifies the ACPICA code, especially any printf
3613output.
3614UINT64 is the only common data type for all thread_id types across all
3615operating systems. It is now up to the host OSL to cast the native
3616thread_id
3617type to UINT64 before returning the value to ACPICA (via
3618AcpiOsGetThreadId).
3619Lin Ming, Bob Moore.
3620
3621Added the ACPI_INLINE type to enhance the ACPICA configuration. The
3622"inline"
3623keyword is not standard across compilers, and this type allows inline to
3624be
3625configured on a per-compiler basis. Lin Ming.
3626
3627Made the system global AcpiGbl_SystemAwakeAndRunning publically
3628available.
3629Added an extern for this boolean in acpixf.h. Some hosts utilize this
3630value
3631during suspend/restore operations. ACPICA BZ 869.
3632
3633All code that implements error/warning messages with the "ACPI:" prefix
3634has
3635been moved to a new module, utxferror.c.
3636
3637The UINT64_OVERLAY was moved to utmath.c, which is the only module where
3638it
3639is used. ACPICA BZ 829. Lin Ming, Bob Moore.
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:  89.1K Code, 19.0K Data, 108.1K Total
3649    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3650  Current Release:
3651    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3652    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3653
36542) iASL Compiler/Disassembler and Tools:
3655
3656iASL/Disassembler: Write ACPI errors to stderr instead of the output
3657file.
3658This keeps the output files free of random error messages that may
3659originate
3660from within the namespace/interpreter code. Used this opportunity to
3661merge
3662all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
3663866. Lin Ming, Bob Moore.
3664
3665Tools: update some printfs for ansi warnings on size_t. Handle width
3666change
3667of size_t on 32-bit versus 64-bit generations. Lin Ming.
3668
3669----------------------------------------
367006 August 2010. Summary of changes for version 20100806:
3671
36721) ACPI CA Core Subsystem:
3673
3674Designed and implemented a new host interface to the _OSI support code.
3675This
3676will allow the host to dynamically add or remove multiple _OSI strings,
3677as
3678well as install an optional handler that is called for each _OSI
3679invocation.
3680Also added a new AML debugger command, 'osi' to display and modify the
3681global
3682_OSI string table, and test support in the AcpiExec utility. See the
3683ACPICA
3684reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
3685New Functions:
3686    AcpiInstallInterface - Add an _OSI string.
3687    AcpiRemoveInterface - Delete an _OSI string.
3688    AcpiInstallInterfaceHandler - Install optional _OSI handler.
3689Obsolete Functions:
3690    AcpiOsValidateInterface - no longer used.
3691New Files:
3692    source/components/utilities/utosi.c
3693
3694Re-introduced the support to enable multi-byte transfers for Embedded
3695Controller (EC) operation regions. A reported problem was found to be a
3696bug
3697in the host OS, not in the multi-byte support. Previously, the maximum
3698data
3699size passed to the EC operation region handler was a single byte. There
3700are
3701often EC Fields larger than one byte that need to be transferred, and it
3702is
3703useful for the EC driver to lock these as a single transaction. This
3704change
3705enables single transfers larger than 8 bits. This effectively changes the
3706access to the EC space from ByteAcc to AnyAcc, and will probably require
3707changes to the host OS Embedded Controller driver to enable 16/32/64/256-
3708bit
3709transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
3710
3711Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
3712prototype in acpiosxf.h had the output value pointer as a (void *).
3713It should be a (UINT64 *). This may affect some host OSL code.
3714
3715Fixed a couple problems with the recently modified Linux makefiles for
3716iASL
3717and AcpiExec. These new makefiles place the generated object files in the
3718local directory so that there can be no collisions between the files that
3719are
3720shared between them that are compiled with different options.
3721
3722Example Code and Data Size: These are the sizes for the OS-independent
3723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3724debug version of the code includes the debug output trace mechanism and
3725has a
3726much larger code and data size.
3727
3728  Previous Release:
3729    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3730    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3731  Current Release:
3732    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3733    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3734
37352) iASL Compiler/Disassembler and Tools:
3736
3737iASL/Disassembler: Added a new option (-da, "disassemble all") to load
3738the
3739namespace from and disassemble an entire group of AML files. Useful for
3740loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
3741and
3742disassembling with one simple command. ACPICA BZ 865. Lin Ming.
3743
3744iASL: Allow multiple invocations of -e option. This change allows
3745multiple
3746uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
3747834.
3748Lin Ming.
3749
3750----------------------------------------
375102 July 2010. Summary of changes for version 20100702:
3752
37531) ACPI CA Core Subsystem:
3754
3755Implemented several updates to the recently added GPE reference count
3756support. The model for "wake" GPEs is changing to give the host OS
3757complete
3758control of these GPEs. Eventually, the ACPICA core will not execute any
3759_PRW
3760methods, since the host already must execute them. Also, additional
3761changes
3762were made to help ensure that the reference counts are kept in proper
3763synchronization with reality. Rafael J. Wysocki.
3764
37651) Ensure that GPEs are not enabled twice during initialization.
37662) Ensure that GPE enable masks stay in sync with the reference count.
37673) Do not inadvertently enable GPEs when writing GPE registers.
37684) Remove the internal wake reference counter and add new AcpiGpeWakeup
3769interface. This interface will set or clear individual GPEs for wakeup.
37705) Remove GpeType argument from AcpiEnable and AcpiDisable. These
3771interfaces
3772are now used for "runtime" GPEs only.
3773
3774Changed the behavior of the GPE install/remove handler interfaces. The
3775GPE
3776is
3777no longer disabled during this process, as it was found to cause problems
3778on
3779some machines. Rafael J. Wysocki.
3780
3781Reverted a change introduced in version 20100528 to enable Embedded
3782Controller multi-byte transfers. This change was found to cause problems
3783with
3784Index Fields and possibly Bank Fields. It will be reintroduced when these
3785problems have been resolved.
3786
3787Fixed a problem with references to Alias objects within Package Objects.
3788A
3789reference to an Alias within the definition of a Package was not always
3790resolved properly. Aliases to objects like Processors, Thermal zones,
3791etc.
3792were resolved to the actual object instead of a reference to the object
3793as
3794it
3795should be. Package objects are only allowed to contain integer, string,
3796buffer, package, and reference objects. Redhat bugzilla 608648.
3797
3798Example Code and Data Size: These are the sizes for the OS-independent
3799acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3800debug version of the code includes the debug output trace mechanism and
3801has a
3802much larger code and data size.
3803
3804  Previous Release:
3805    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3806    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3807  Current Release:
3808    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3809    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3810
38112) iASL Compiler/Disassembler and Tools:
3812
3813iASL: Implemented a new compiler subsystem to allow definition and
3814compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
3815These
3816are called "ACPI Data Tables", and the new compiler is the "Data Table
3817Compiler". This compiler is intended to simplify the existing error-prone
3818process of creating these tables for the BIOS, as well as allowing the
3819disassembly, modification, recompilation, and override of existing ACPI
3820data
3821tables. See the iASL User Guide for detailed information.
3822
3823iASL: Implemented a new Template Generator option in support of the new
3824Data
3825Table Compiler. This option will create examples of all known ACPI tables
3826that can be used as the basis for table development. See the iASL
3827documentation and the -T option.
3828
3829Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
3830Descriptor Table).
3831
3832Updated the Linux makefiles for iASL and AcpiExec to place the generated
3833object files in the local directory so that there can be no collisions
3834between the shared files between them that are generated with different
3835options.
3836
3837Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
3838Use
3839the #define __APPLE__ to enable this support.
3840
3841----------------------------------------
384228 May 2010. Summary of changes for version 20100528:
3843
3844Note: The ACPI 4.0a specification was released on April 5, 2010 and is
3845available at www.acpi.info. This is primarily an errata release.
3846
38471) ACPI CA Core Subsystem:
3848
3849Undefined ACPI tables: We are looking for the definitions for the
3850following
3851ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
3852
3853Implemented support to enable multi-byte transfers for Embedded
3854Controller
3855(EC) operation regions. Previously, the maximum data size passed to the
3856EC
3857operation region handler was a single byte. There are often EC Fields
3858larger
3859than one byte that need to be transferred, and it is useful for the EC
3860driver
3861to lock these as a single transaction. This change enables single
3862transfers
3863larger than 8 bits. This effectively changes the access to the EC space
3864from
3865ByteAcc to AnyAcc, and will probably require changes to the host OS
3866Embedded
3867Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
3868bit
3869transfers. Alexey Starikovskiy, Lin Ming
3870
3871Implemented a performance enhancement for namespace search and access.
3872This
3873change enhances the performance of namespace searches and walks by adding
3874a
3875backpointer to the parent in each namespace node. On large namespaces,
3876this
3877change can improve overall ACPI performance by up to 9X. Adding a pointer
3878to
3879each namespace node increases the overall size of the internal namespace
3880by
3881about 5%, since each namespace entry usually consists of both a namespace
3882node and an ACPI operand object. However, this is the first growth of the
3883namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
3884
3885Implemented a performance optimization that reduces the number of
3886namespace
3887walks. On control method exit, only walk the namespace if the method is
3888known
3889to have created namespace objects outside of its local scope. Previously,
3890the
3891entire namespace was traversed on each control method exit. This change
3892can
3893improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
3894Moore.
3895
3896Added support to truncate I/O addresses to 16 bits for Windows
3897compatibility.
3898Some ASL code has been seen in the field that inadvertently has bits set
3899above bit 15. This feature is optional and is enabled if the BIOS
3900requests
3901any Windows OSI strings. It can also be enabled by the host OS. Matthew
3902Garrett, Bob Moore.
3903
3904Added support to limit the maximum time for the ASL Sleep() operator. To
3905prevent accidental deep sleeps, limit the maximum time that Sleep() will
3906actually sleep. Configurable, the default maximum is two seconds. ACPICA
3907bugzilla 854.
3908
3909Added run-time validation support for the _WDG and_WED Microsoft
3910predefined
3911methods. These objects are defined by "Windows Instrumentation", and are
3912not
3913part of the ACPI spec. ACPICA BZ 860.
3914
3915Expanded all statistic counters used during namespace and device
3916initialization from 16 to 32 bits in order to support very large
3917namespaces.
3918
3919Replaced all instances of %d in printf format specifiers with %u since
3920nearly
3921all integers in ACPICA are unsigned.
3922
3923Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
3924returned
3925as AE_NO_HANDLER.
3926
3927Example Code and Data Size: These are the sizes for the OS-independent
3928acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3929debug version of the code includes the debug output trace mechanism and
3930has a
3931much larger code and data size.
3932
3933  Previous Release:
3934    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3935    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
3936  Current Release:
3937    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3938    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3939
39402) iASL Compiler/Disassembler and Tools:
3941
3942iASL: Added compiler support for the _WDG and_WED Microsoft predefined
3943methods. These objects are defined by "Windows Instrumentation", and are
3944not
3945part of the ACPI spec. ACPICA BZ 860.
3946
3947AcpiExec: added option to disable the memory tracking mechanism. The -dt
3948option will disable the tracking mechanism, which improves performance
3949considerably.
3950
3951AcpiExec: Restructured the command line options into -d (disable) and -e
3952(enable) options.
3953
3954----------------------------------------
395528 April 2010. Summary of changes for version 20100428:
3956
39571) ACPI CA Core Subsystem:
3958
3959Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
3960including FADT-based and GPE Block Devices, execute any _PRW methods in
3961the
3962new table, and process any _Lxx/_Exx GPE methods in the new table. Any
3963runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
3964immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
3965Devices. Provides compatibility with other ACPI implementations. Two new
3966files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
3967Moore.
3968
3969Fixed a regression introduced in version 20100331 within the table
3970manager
3971where initial table loading could fail. This was introduced in the fix
3972for
3973AcpiReallocateRootTable. Also, renamed some of fields in the table
3974manager
3975data structures to clarify their meaning and use.
3976
3977Fixed a possible allocation overrun during internal object copy in
3978AcpiUtCopySimpleObject. The original code did not correctly handle the
3979case
3980where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
3981847.
3982
3983Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
3984possible access beyond end-of-allocation. Also, now fully validate
3985descriptor
3986(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
3987
3988Example Code and Data Size: These are the sizes for the OS-independent
3989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3990debug version of the code includes the debug output trace mechanism and
3991has a
3992much larger code and data size.
3993
3994  Previous Release:
3995    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
3996    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
3997  Current Release:
3998    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
3999    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4000
40012) iASL Compiler/Disassembler and Tools:
4002
4003iASL: Implemented Min/Max/Len/Gran validation for address resource
4004descriptors. This change implements validation for the address fields
4005that
4006are common to all address-type resource descriptors. These checks are
4007implemented: Checks for valid Min/Max, length within the Min/Max window,
4008valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
4009per
4010table 6-40 in the ACPI 4.0a specification. Also split the large
4011aslrestype1.c
4012and aslrestype2.c files into five new files. ACPICA BZ 840.
4013
4014iASL: Added support for the _Wxx predefined names. This support was
4015missing
4016and these names were not recognized by the compiler as valid predefined
4017names. ACPICA BZ 851.
4018
4019iASL: Added an error for all predefined names that are defined to return
4020no
4021value and thus must be implemented as Control Methods. These include all
4022of
4023the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
4024names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4025
4026iASL: Implemented the -ts option to emit hex AML data in ASL format, as
4027an
4028ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
4029be
4030dynamically loaded via the Load() operator. Also cleaned up output for
4031the
4032-
4033ta and -tc options. ACPICA BZ 853.
4034
4035Tests: Added a new file with examples of extended iASL error checking.
4036Demonstrates the advanced error checking ability of the iASL compiler.
4037Available at tests/misc/badcode.asl.
4038
4039----------------------------------------
404031 March 2010. Summary of changes for version 20100331:
4041
40421) ACPI CA Core Subsystem:
4043
4044Completed a major update for the GPE support in order to improve support
4045for
4046shared GPEs and to simplify both host OS and ACPICA code. Added a
4047reference
4048count mechanism to support shared GPEs that require multiple device
4049drivers.
4050Several external interfaces have changed. One external interface has been
4051removed. One new external interface was added. Most of the GPE external
4052interfaces now use the GPE spinlock instead of the events mutex (and the
4053Flags parameter for many GPE interfaces has been removed.) See the
4054updated
4055ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
4056Rafael
4057Wysocki. ACPICA BZ 831.
4058
4059Changed:
4060    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
4061Removed:
4062    AcpiSetGpeType
4063New:
4064    AcpiSetGpe
4065
4066Implemented write support for DataTable operation regions. These regions
4067are
4068defined via the DataTableRegion() operator. Previously, only read support
4069was
4070implemented. The ACPI specification allows DataTableRegions to be
4071read/write,
4072however.
4073
4074Implemented a new subsystem option to force a copy of the DSDT to local
4075memory. Optionally copy the entire DSDT to local memory (instead of
4076simply
4077mapping it.) There are some (albeit very rare) BIOSs that corrupt or
4078replace
4079the original DSDT, creating the need for this option. Default is FALSE,
4080do
4081not copy the DSDT.
4082
4083Implemented detection of a corrupted or replaced DSDT. This change adds
4084support to detect a DSDT that has been corrupted and/or replaced from
4085outside
4086the OS (by firmware). This is typically catastrophic for the system, but
4087has
4088been seen on some machines. Once this problem has been detected, the DSDT
4089copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4090
4091Fixed two problems with AcpiReallocateRootTable during the root table
4092copy.
4093When copying the root table to the new allocation, the length used was
4094incorrect. The new size was used instead of the current table size,
4095meaning
4096too much data was copied. Also, the count of available slots for ACPI
4097tables
4098was not set correctly. Alexey Starikovskiy, Bob Moore.
4099
4100Example Code and Data Size: These are the sizes for the OS-independent
4101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4102debug version of the code includes the debug output trace mechanism and
4103has a
4104much larger code and data size.
4105
4106  Previous Release:
4107    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4108    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4109  Current Release:
4110    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4111    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4112
41132) iASL Compiler/Disassembler and Tools:
4114
4115iASL: Implement limited typechecking for values returned from predefined
4116control methods. The type of any returned static (unnamed) object is now
4117validated. For example, Return(1). ACPICA BZ 786.
4118
4119iASL: Fixed a predefined name object verification regression. Fixes a
4120problem
4121introduced in version 20100304. An error is incorrectly generated if a
4122predefined name is declared as a static named object with a value defined
4123using the keywords "Zero", "One", or "Ones". Lin Ming.
4124
4125iASL: Added Windows 7 support for the -g option (get local ACPI tables)
4126by
4127reducing the requested registry access rights. ACPICA BZ 842.
4128
4129Disassembler: fixed a possible fault when generating External()
4130statements.
4131Introduced in commit ae7d6fd: Properly handle externals with parent-
4132prefix
4133(carat). Fixes a string length allocation calculation. Lin Ming.
4134
4135----------------------------------------
413604 March 2010. Summary of changes for version 20100304:
4137
41381) ACPI CA Core Subsystem:
4139
4140Fixed a possible problem with the AML Mutex handling function
4141AcpiExReleaseMutex where the function could fault under the very rare
4142condition when the interpreter has blocked, the interpreter lock is
4143released,
4144the interpreter is then reentered via the same thread, and attempts to
4145acquire an AML mutex that was previously acquired. FreeBSD report 140979.
4146Lin
4147Ming.
4148
4149Implemented additional configuration support for the AML "Debug Object".
4150Output from the debug object can now be enabled via a global variable,
4151AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
4152debugging.
4153This debug output is now available in the release version of ACPICA
4154instead
4155of just the debug version. Also, the entire debug output module can now
4156be
4157configured out of the ACPICA build if desired. One new file added,
4158executer/exdebug.c. Lin Ming, Bob Moore.
4159
4160Added header support for the ACPI MCHI table (Management Controller Host
4161Interface Table). This table was added in ACPI 4.0, but the defining
4162document
4163has only recently become available.
4164
4165Standardized output of integer values for ACPICA warnings/errors. Always
4166use
41670x prefix for hex output, always use %u for unsigned integer decimal
4168output.
4169Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
4170400
4171invocations.) These invocations were converted from the original
4172ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4173
4174Example Code and Data Size: These are the sizes for the OS-independent
4175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4176debug version of the code includes the debug output trace mechanism and
4177has a
4178much larger code and data size.
4179
4180  Previous Release:
4181    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4182    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4183  Current Release:
4184    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4185    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4186
41872) iASL Compiler/Disassembler and Tools:
4188
4189iASL: Implemented typechecking support for static (non-control method)
4190predefined named objects that are declared with the Name() operator. For
4191example, the type of this object is now validated to be of type Integer:
4192Name(_BBN, 1). This change migrates the compiler to using the core
4193predefined
4194name table instead of maintaining a local version. Added a new file,
4195aslpredef.c. ACPICA BZ 832.
4196
4197Disassembler: Added support for the ACPI 4.0 MCHI table.
4198
4199----------------------------------------
420021 January 2010. Summary of changes for version 20100121:
4201
42021) ACPI CA Core Subsystem:
4203
4204Added the 2010 copyright to all module headers and signons. This affects
4205virtually every file in the ACPICA core subsystem, the iASL compiler, the
4206tools/utilities, and the test suites.
4207
4208Implemented a change to the AcpiGetDevices interface to eliminate
4209unnecessary
4210invocations of the _STA method. In the case where a specific _HID is
4211requested, do not run _STA until a _HID match is found. This eliminates
4212potentially dozens of _STA calls during a search for a particular
4213device/HID,
4214which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4215
4216Implemented an additional repair for predefined method return values.
4217Attempt
4218to repair unexpected NULL elements within returned Package objects.
4219Create
4220an
4221Integer of value zero, a NULL String, or a zero-length Buffer as
4222appropriate.
4223ACPICA BZ 818. Lin Ming, Bob Moore.
4224
4225Removed the obsolete ACPI_INTEGER data type. This type was introduced as
4226the
4227code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
4228(with
422964-bit AML integers). It is now obsolete and this change removes it from
4230the
4231ACPICA code base, replaced by UINT64. The original typedef has been
4232retained
4233for now for compatibility with existing device driver code. ACPICA BZ
4234824.
4235
4236Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
4237in
4238the parse tree object.
4239
4240Added additional warning options for the gcc-4 generation. Updated the
4241source
4242accordingly. This includes some code restructuring to eliminate
4243unreachable
4244code, elimination of some gotos, elimination of unused return values,
4245some
4246additional casting, and removal of redundant declarations.
4247
4248Example Code and Data Size: These are the sizes for the OS-independent
4249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4250debug version of the code includes the debug output trace mechanism and
4251has a
4252much larger code and data size.
4253
4254  Previous Release:
4255    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4256    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4257  Current Release:
4258    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4259    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4260
42612) iASL Compiler/Disassembler and Tools:
4262
4263No functional changes for this release.
4264
4265----------------------------------------
426614 December 2009. Summary of changes for version 20091214:
4267
42681) ACPI CA Core Subsystem:
4269
4270Enhanced automatic data type conversions for predefined name repairs.
4271This
4272change expands the automatic repairs/conversions for predefined name
4273return
4274values to make Integers, Strings, and Buffers fully interchangeable.
4275Also,
4276a
4277Buffer can be converted to a Package of Integers if necessary. The
4278nsrepair.c
4279module was completely restructured. Lin Ming, Bob Moore.
4280
4281Implemented automatic removal of null package elements during predefined
4282name
4283repairs. This change will automatically remove embedded and trailing NULL
4284package elements from returned package objects that are defined to
4285contain
4286a
4287variable number of sub-packages. The driver is then presented with a
4288package
4289with no null elements to deal with. ACPICA BZ 819.
4290
4291Implemented a repair for the predefined _FDE and _GTM names. The expected
4292return value for both names is a Buffer of 5 DWORDs. This repair fixes
4293two
4294possible problems (both seen in the field), where a package of integers
4295is
4296returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
4297Kim.
4298
4299Implemented additional module-level code support. This change will
4300properly
4301execute module-level code that is not at the root of the namespace (under
4302a
4303Device object, etc.). Now executes the code within the current scope
4304instead
4305of the root. ACPICA BZ 762. Lin Ming.
4306
4307Fixed possible mutex acquisition errors when running _REG methods. Fixes
4308a
4309problem where mutex errors can occur when running a _REG method that is
4310in
4311the same scope as a method-defined operation region or an operation
4312region
4313under a module-level IF block. This type of code is rare, so the problem
4314has
4315not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4316
4317Fixed a possible memory leak during module-level code execution. An
4318object
4319could be leaked for each block of executed module-level code if the
4320interpreter slack mode is enabled This change deletes any implicitly
4321returned
4322object from the module-level code block. Lin Ming.
4323
4324Removed messages for successful predefined repair(s). The repair
4325mechanism
4326was considered too wordy. Now, messages are only unconditionally emitted
4327if
4328the return object cannot be repaired. Existing messages for successful
4329repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
4330827.
4331
4332Example Code and Data Size: These are the sizes for the OS-independent
4333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4334debug version of the code includes the debug output trace mechanism and
4335has a
4336much larger code and data size.
4337
4338  Previous Release:
4339    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4340    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4341  Current Release:
4342    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4343    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4344
43452) iASL Compiler/Disassembler and Tools:
4346
4347iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
4348files
4349were no longer automatically removed at the termination of the compile.
4350
4351acpiexec: Implemented the -f option to specify default region fill value.
4352This option specifies the value used to initialize buffers that simulate
4353operation regions. Default value is zero. Useful for debugging problems
4354that
4355depend on a specific initial value for a region or field.
4356
4357----------------------------------------
435812 November 2009. Summary of changes for version 20091112:
4359
43601) ACPI CA Core Subsystem:
4361
4362Implemented a post-order callback to AcpiWalkNamespace. The existing
4363interface only has a pre-order callback. This change adds an additional
4364parameter for a post-order callback which will be more useful for bus
4365scans.
4366ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4367
4368Modified the behavior of the operation region memory mapping cache for
4369SystemMemory. Ensure that the memory mappings created for operation
4370regions
4371do not cross 4K page boundaries. Crossing a page boundary while mapping
4372regions can cause kernel warnings on some hosts if the pages have
4373different
4374attributes. Such regions are probably BIOS bugs, and this is the
4375workaround.
4376Linux BZ 14445. Lin Ming.
4377
4378Implemented an automatic repair for predefined methods that must return
4379sorted lists. This change will repair (by sorting) packages returned by
4380_ALR,
4381_PSS, and _TSS. Drivers can now assume that the packages are correctly
4382sorted
4383and do not contain NULL package elements. Adds one new file,
4384namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4385
4386Fixed a possible fault during predefined name validation if a return
4387Package
4388object contains NULL elements. Also adds a warning if a NULL element is
4389followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
4390may
4391include repair or removal of all such NULL elements where possible.
4392
4393Implemented additional module-level executable AML code support. This
4394change
4395will execute module-level code that is not at the root of the namespace
4396(under a Device object, etc.) at table load time. Module-level executable
4397AML
4398code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4399
4400Implemented a new internal function to create Integer objects. This
4401function
4402simplifies miscellaneous object creation code. ACPICA BZ 823.
4403
4404Reduced the severity of predefined repair messages, Warning to Info.
4405Since
4406the object was successfully repaired, a warning is too severe. Reduced to
4407an
4408info message for now. These messages may eventually be changed to debug-
4409only.
4410ACPICA BZ 812.
4411
4412Example Code and Data Size: These are the sizes for the OS-independent
4413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4414debug version of the code includes the debug output trace mechanism and
4415has a
4416much larger code and data size.
4417
4418  Previous Release:
4419    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4420    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4421  Current Release:
4422    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4423    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4424
44252) iASL Compiler/Disassembler and Tools:
4426
4427iASL: Implemented Switch() with While(1) so that Break works correctly.
4428This
4429change correctly implements the Switch operator with a surrounding
4430While(1)
4431so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4432
4433iASL: Added a message if a package initializer list is shorter than
4434package
4435length. Adds a new remark for a Package() declaration if an initializer
4436list
4437exists, but is shorter than the declared length of the package. Although
4438technically legal, this is probably a coding error and it is seen in the
4439field. ACPICA BZ 815. Lin Ming, Bob Moore.
4440
4441iASL: Fixed a problem where the compiler could fault after the maximum
4442number
4443of errors was reached (200).
4444
4445acpixtract: Fixed a possible warning for pointer cast if the compiler
4446warning
4447level set very high.
4448
4449----------------------------------------
445013 October 2009. Summary of changes for version 20091013:
4451
44521) ACPI CA Core Subsystem:
4453
4454Fixed a problem where an Operation Region _REG method could be executed
4455more
4456than once. If a custom address space handler is installed by the host
4457before
4458the "initialize operation regions" phase of the ACPICA initialization,
4459any
4460_REG methods for that address space could be executed twice. This change
4461fixes the problem. ACPICA BZ 427. Lin Ming.
4462
4463Fixed a possible memory leak for the Scope() ASL operator. When the exact
4464invocation of "Scope(\)" is executed (change scope to root), one internal
4465operand object was leaked. Lin Ming.
4466
4467Implemented a run-time repair for the _MAT predefined method. If the _MAT
4468return value is defined as a Field object in the AML, and the field
4469size is less than or equal to the default width of an integer (32 or
447064),_MAT
4471can incorrectly return an Integer instead of a Buffer. ACPICA now
4472automatically repairs this problem. ACPICA BZ 810.
4473
4474Implemented a run-time repair for the _BIF and _BIX predefined methods.
4475The
4476"OEM Information" field is often incorrectly returned as an Integer with
4477value zero if the field is not supported by the platform. This is due to
4478an
4479ambiguity in the ACPI specification. The field should always be a string.
4480ACPICA now automatically repairs this problem by returning a NULL string
4481within the returned Package. ACPICA BZ 807.
4482
4483Example Code and Data Size: These are the sizes for the OS-independent
4484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4485debug version of the code includes the debug output trace mechanism and
4486has a
4487much larger code and data size.
4488
4489  Previous Release:
4490    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4491    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4492  Current Release:
4493    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4494    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4495
44962) iASL Compiler/Disassembler and Tools:
4497
4498Disassembler: Fixed a problem where references to external symbols that
4499contained one or more parent-prefixes (carats) were not handled
4500correctly,
4501possibly causing a fault. ACPICA BZ 806. Lin Ming.
4502
4503Disassembler: Restructured the code so that all functions that handle
4504external symbols are in a single module. One new file is added,
4505common/dmextern.c.
4506
4507AML Debugger: Added a max count argument for the Batch command (which
4508executes multiple predefined methods within the namespace.)
4509
4510iASL: Updated the compiler documentation (User Reference.) Available at
4511http://www.acpica.org/documentation/. ACPICA BZ 750.
4512
4513AcpiXtract: Updated for Lint and other formatting changes. Close all open
4514files.
4515
4516----------------------------------------
451703 September 2009. Summary of changes for version 20090903:
4518
45191) ACPI CA Core Subsystem:
4520
4521For Windows Vista compatibility, added the automatic execution of an _INI
4522method located at the namespace root (\_INI). This method is executed at
4523table load time. This support is in addition to the automatic execution
4524of
4525\_SB._INI. Lin Ming.
4526
4527Fixed a possible memory leak in the interpreter for AML package objects
4528if
4529the package initializer list is longer than the defined size of the
4530package.
4531This apparently can only happen if the BIOS changes the package size on
4532the
4533fly (seen in a _PSS object), as ASL compilers do not allow this. The
4534interpreter will truncate the package to the defined size (and issue an
4535error
4536message), but previously could leave the extra objects undeleted if they
4537were
4538pre-created during the argument processing (such is the case if the
4539package
4540consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
4541
4542Fixed a problem seen when a Buffer or String is stored to itself via ASL.
4543This has been reported in the field. Previously, ACPICA would zero out
4544the
4545buffer/string. Now, the operation is treated as a noop. Provides Windows
4546compatibility. ACPICA BZ 803. Lin Ming.
4547
4548Removed an extraneous error message for ASL constructs of the form
4549Store(LocalX,LocalX) when LocalX is uninitialized. These curious
4550statements
4551are seen in many BIOSs and are once again treated as NOOPs and no error
4552is
4553emitted when they are encountered. ACPICA BZ 785.
4554
4555Fixed an extraneous warning message if a _DSM reserved method returns a
4556Package object. _DSM can return any type of object, so validation on the
4557return type cannot be performed. ACPICA BZ 802.
4558
4559Example Code and Data Size: These are the sizes for the OS-independent
4560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4561debug version of the code includes the debug output trace mechanism and
4562has a
4563much larger code and data size.
4564
4565  Previous Release:
4566    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4567    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4568  Current Release:
4569    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4570    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4571
45722) iASL Compiler/Disassembler and Tools:
4573
4574iASL: Fixed a problem with the use of the Alias operator and Resource
4575Templates. The correct alias is now constructed and no error is emitted.
4576ACPICA BZ 738.
4577
4578iASL: Implemented the -I option to specify additional search directories
4579for
4580include files. Allows multiple additional search paths for include files.
4581Directories are searched in the order specified on the command line
4582(after
4583the local directory is searched.) ACPICA BZ 800.
4584
4585iASL: Fixed a problem where the full pathname for include files was not
4586emitted for warnings/errors. This caused the IDE support to not work
4587properly. ACPICA BZ 765.
4588
4589iASL: Implemented the -@ option to specify a Windows-style response file
4590containing additional command line options. ACPICA BZ 801.
4591
4592AcpiExec: Added support to load multiple AML files simultaneously (such
4593as
4594a
4595DSDT and multiple SSDTs). Also added support for wildcards within the AML
4596pathname. These features allow all machine tables to be easily loaded and
4597debugged together. ACPICA BZ 804.
4598
4599Disassembler: Added missing support for disassembly of HEST table Error
4600Bank
4601subtables.
4602
4603----------------------------------------
460430 July 2009. Summary of changes for version 20090730:
4605
4606The ACPI 4.0 implementation for ACPICA is complete with this release.
4607
46081) ACPI CA Core Subsystem:
4609
4610ACPI 4.0: Added header file support for all new and changed ACPI tables.
4611Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
4612new
4613for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
4614BERT,
4615EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
4616There
4617have been some ACPI 4.0 changes to other existing tables. Split the large
4618actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
4619
4620ACPI 4.0: Implemented predefined name validation for all new names. There
4621are
462231 new names in ACPI 4.0. The predefined validation module was split into
4623two
4624files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
4625
4626Implemented support for so-called "module-level executable code". This is
4627executable AML code that exists outside of any control method and is
4628intended
4629to be executed at table load time. Although illegal since ACPI 2.0, this
4630type
4631of code still exists and is apparently still being created. Blocks of
4632this
4633code are now detected and executed as intended. Currently, the code
4634blocks
4635must exist under either an If, Else, or While construct; these are the
4636typical cases seen in the field. ACPICA BZ 762. Lin Ming.
4637
4638Implemented an automatic dynamic repair for predefined names that return
4639nested Package objects. This applies to predefined names that are defined
4640to
4641return a variable-length Package of sub-packages. If the number of sub-
4642packages is one, BIOS code is occasionally seen that creates a simple
4643single
4644package with no sub-packages. This code attempts to fix the problem by
4645wrapping a new package object around the existing package. These methods
4646can
4647be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
4648BZ
4649790.
4650
4651Fixed a regression introduced in 20090625 for the AcpiGetDevices
4652interface.
4653The _HID/_CID matching was broken and no longer matched IDs correctly.
4654ACPICA
4655BZ 793.
4656
4657Fixed a problem with AcpiReset where the reset would silently fail if the
4658register was one of the protected I/O ports. AcpiReset now bypasses the
4659port
4660validation mechanism. This may eventually be driven into the
4661AcpiRead/Write
4662interfaces.
4663
4664Fixed a regression related to the recent update of the AcpiRead/Write
4665interfaces. A sleep/suspend could fail if the optional PM2 Control
4666register
4667does not exist during an attempt to write the Bus Master Arbitration bit.
4668(However, some hosts already delete the code that writes this bit, and
4669the
4670code may in fact be obsolete at this date.) ACPICA BZ 799.
4671
4672Fixed a problem where AcpiTerminate could fault if inadvertently called
4673twice
4674in succession. ACPICA BZ 795.
4675
4676Example Code and Data Size: These are the sizes for the OS-independent
4677acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4678debug version of the code includes the debug output trace mechanism and
4679has a
4680much larger code and data size.
4681
4682  Previous Release:
4683    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4684    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4685  Current Release:
4686    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4687    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4688
46892) iASL Compiler/Disassembler and Tools:
4690
4691ACPI 4.0: Implemented disassembler support for all new ACPI tables and
4692changes to existing tables. ACPICA BZ 775.
4693
4694----------------------------------------
469525 June 2009. Summary of changes for version 20090625:
4696
4697The ACPI 4.0 Specification was released on June 16 and is available at
4698www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
4699continue for the next few releases.
4700
47011) ACPI CA Core Subsystem:
4702
4703ACPI 4.0: Implemented interpreter support for the IPMI operation region
4704address space. Includes support for bi-directional data buffers and an
4705IPMI
4706address space handler (to be installed by an IPMI device driver.) ACPICA
4707BZ
4708773. Lin Ming.
4709
4710ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
4711Includes
4712support in both the header files and the disassembler.
4713
4714Completed a major update for the AcpiGetObjectInfo external interface.
4715Changes include:
4716 - Support for variable, unlimited length HID, UID, and CID strings.
4717 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
4718etc.)
4719 - Call the _SxW power methods on behalf of a device object.
4720 - Determine if a device is a PCI root bridge.
4721 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
4722These changes will require an update to all callers of this interface.
4723See
4724the updated ACPICA Programmer Reference for details. One new source file
4725has
4726been added - utilities/utids.c. ACPICA BZ 368, 780.
4727
4728Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
4729transfers. The Value parameter has been extended from 32 bits to 64 bits
4730in
4731order to support new ACPI 4.0 tables. These changes will require an
4732update
4733to
4734all callers of these interfaces. See the ACPICA Programmer Reference for
4735details. ACPICA BZ 768.
4736
4737Fixed several problems with AcpiAttachData. The handler was not invoked
4738when
4739the host node was deleted. The data sub-object was not automatically
4740deleted
4741when the host node was deleted. The interface to the handler had an
4742unused
4743parameter, this was removed. ACPICA BZ 778.
4744
4745Enhanced the function that dumps ACPI table headers. All non-printable
4746characters in the string fields are now replaced with '?' (Signature,
4747OemId,
4748OemTableId, and CompilerId.) ACPI tables with non-printable characters in
4749these fields are occasionally seen in the field. ACPICA BZ 788.
4750
4751Fixed a problem with predefined method repair code where the code that
4752attempts to repair/convert an object of incorrect type is only executed
4753on
4754the first time the predefined method is called. The mechanism that
4755disables
4756warnings on subsequent calls was interfering with the repair mechanism.
4757ACPICA BZ 781.
4758
4759Fixed a possible memory leak in the predefined validation/repair code
4760when
4761a
4762buffer is automatically converted to an expected string object.
4763
4764Removed obsolete 16-bit files from the distribution and from the current
4765git
4766tree head. ACPICA BZ 776.
4767
4768Example Code and Data Size: These are the sizes for the OS-independent
4769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4770debug version of the code includes the debug output trace mechanism and
4771has a
4772much larger code and data size.
4773
4774  Previous Release:
4775    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
4776    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
4777  Current Release:
4778    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4779    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4780
47812) iASL Compiler/Disassembler and Tools:
4782
4783ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
4784operation region keyword. ACPICA BZ 771, 772. Lin Ming.
4785
4786ACPI 4.0: iASL - implemented compile-time validation support for all new
4787predefined names and control methods (31 total). ACPICA BZ 769.
4788
4789----------------------------------------
479021 May 2009. Summary of changes for version 20090521:
4791
47921) ACPI CA Core Subsystem:
4793
4794Disabled the preservation of the SCI enable bit in the PM1 control
4795register.
4796The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
4797to
4798be
4799a "preserved" bit - "OSPM always preserves this bit position", section
48004.7.3.2.1. However, some machines fail if this bit is in fact preserved
4801because the bit needs to be explicitly set by the OS as a workaround. No
4802machines fail if the bit is not preserved. Therefore, ACPICA no longer
4803attempts to preserve this bit.
4804
4805Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
4806incorrectly formed _PRT package could cause a fault. Added validation to
4807ensure that each package element is actually a sub-package.
4808
4809Implemented a new interface to install or override a single control
4810method,
4811AcpiInstallMethod. This interface is useful when debugging in order to
4812repair
4813an existing method or to install a missing method without having to
4814override
4815the entire ACPI table. See the ACPICA Programmer Reference for use and
4816examples. Lin Ming, Bob Moore.
4817
4818Fixed several reference count issues with the DdbHandle object that is
4819created from a Load or LoadTable operator. Prevent premature deletion of
4820the
4821object. Also, mark the object as invalid once the table has been
4822unloaded.
4823This is needed because the handle itself may not be deleted after the
4824table
4825unload, depending on whether it has been stored in a named object by the
4826caller. Lin Ming.
4827
4828Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
4829mutexes of the same sync level are acquired but then not released in
4830strict
4831opposite order, the internally maintained Current Sync Level becomes
4832confused
4833and can cause subsequent execution errors. ACPICA BZ 471.
4834
4835Changed the allowable release order for ASL mutex objects. The ACPI 4.0
4836specification has been changed to make the SyncLevel for mutex objects
4837more
4838useful. When releasing a mutex, the SyncLevel of the mutex must now be
4839the
4840same as the current sync level. This makes more sense than the previous
4841rule
4842(SyncLevel less than or equal). This change updates the code to match the
4843specification.
4844
4845Fixed a problem with the local version of the AcpiOsPurgeCache function.
4846The
4847(local) cache must be locked during all cache object deletions. Andrew
4848Baumann.
4849
4850Updated the Load operator to use operation region interfaces. This
4851replaces
4852direct memory mapping with region access calls. Now, all region accesses
4853go
4854through the installed region handler as they should.
4855
4856Simplified and optimized the NsGetNextNode function. Reduced parameter
4857count
4858and reduced code for this frequently used function.
4859
4860Example Code and Data Size: These are the sizes for the OS-independent
4861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4862debug version of the code includes the debug output trace mechanism and
4863has a
4864much larger code and data size.
4865
4866  Previous Release:
4867    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
4868    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
4869  Current Release:
4870    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
4871    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
4872
48732) iASL Compiler/Disassembler and Tools:
4874
4875Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
4876problems
4877with sub-table disassembly and handling invalid sub-tables. Attempt
4878recovery
4879after an invalid sub-table ID.
4880
4881----------------------------------------
488222 April 2009. Summary of changes for version 20090422:
4883
48841) ACPI CA Core Subsystem:
4885
4886Fixed a compatibility issue with the recently released I/O port
4887protection
4888mechanism. For windows compatibility, 1) On a port protection violation,
4889simply ignore the request and do not return an exception (allow the
4890control
4891method to continue execution.) 2) If only part of the request overlaps a
4892protected port, read/write the individual ports that are not protected.
4893Linux
4894BZ 13036. Lin Ming
4895
4896Enhanced the execution of the ASL/AML BreakPoint operator so that it
4897actually
4898breaks into the AML debugger if the debugger is present. This matches the
4899ACPI-defined behavior.
4900
4901Fixed several possible warnings related to the use of the configurable
4902ACPI_THREAD_ID. This type can now be configured as either an integer or a
4903pointer with no warnings. Also fixes several warnings in printf-like
4904statements for the 64-bit build when the type is configured as a pointer.
4905ACPICA BZ 766, 767.
4906
4907Fixed a number of possible warnings when compiling with gcc 4+ (depending
4908on
4909warning options.) Examples include printf formats, aliasing, unused
4910globals,
4911missing prototypes, missing switch default statements, use of non-ANSI
4912library functions, use of non-ANSI constructs. See generate/unix/Makefile
4913for
4914a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
4915
4916Example Code and Data Size: These are the sizes for the OS-independent
4917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4918debug version of the code includes the debug output trace mechanism and
4919has a
4920much larger code and data size.
4921
4922  Previous Release:
4923    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
4924    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
4925  Current Release:
4926    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
4927    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
4928
49292) iASL Compiler/Disassembler and Tools:
4930
4931iASL: Fixed a generation warning from Bison 2.3 and fixed several
4932warnings
4933on
4934the 64-bit build.
4935
4936iASL: Fixed a problem where the Unix/Linux versions of the compiler could
4937not
4938correctly digest Windows/DOS formatted files (with CR/LF).
4939
4940iASL: Added a new option for "quiet mode" (-va) that produces only the
4941compilation summary, not individual errors and warnings. Useful for large
4942batch compilations.
4943
4944AcpiExec: Implemented a new option (-z) to enable a forced
4945semaphore/mutex
4946timeout that can be used to detect hang conditions during execution of
4947AML
4948code (includes both internal semaphores and AML-defined mutexes and
4949events.)
4950
4951Added new makefiles for the generation of acpica in a generic unix-like
4952environment. These makefiles are intended to generate the acpica tools
4953and
4954utilities from the original acpica git source tree structure.
4955
4956Test Suites: Updated and cleaned up the documentation files. Updated the
4957copyrights to 2009, affecting all source files. Use the new version of
4958iASL
4959with quiet mode. Increased the number of available semaphores in the
4960Windows
4961OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
4962added
4963an alternate implementation of the semaphore timeout to allow aslts to
4964execute fully on Cygwin.
4965
4966----------------------------------------
496720 March 2009. Summary of changes for version 20090320:
4968
49691) ACPI CA Core Subsystem:
4970
4971Fixed a possible race condition between AcpiWalkNamespace and dynamic
4972table
4973unloads. Added a reader/writer locking mechanism to allow multiple
4974concurrent
4975namespace walks (readers), but block a dynamic table unload until it can
4976gain
4977exclusive write access to the namespace. This fixes a problem where a
4978table
4979unload could (possibly catastrophically) delete the portion of the
4980namespace
4981that is currently being examined by a walk. Adds a new file, utlock.c,
4982that
4983implements the reader/writer lock mechanism. ACPICA BZ 749.
4984
4985Fixed a regression introduced in version 20090220 where a change to the
4986FADT
4987handling could cause the ACPICA subsystem to access non-existent I/O
4988ports.
4989
4990Modified the handling of FADT register and table (FACS/DSDT) addresses.
4991The
4992FADT can contain both 32-bit and 64-bit versions of these addresses.
4993Previously, the 64-bit versions were favored, meaning that if both 32 and
499464
4995versions were valid, but not equal, the 64-bit version was used. This was
4996found to cause some machines to fail. Now, in this case, the 32-bit
4997version
4998is used instead. This now matches the Windows behavior.
4999
5000Implemented a new mechanism to protect certain I/O ports. Provides
5001Microsoft
5002compatibility and protects the standard PC I/O ports from access via AML
5003code. Adds a new file, hwvalid.c
5004
5005Fixed a possible extraneous warning message from the FADT support. The
5006message warns of a 32/64 length mismatch between the legacy and GAS
5007definitions for a register.
5008
5009Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
5010is
5011made obsolete by the port protection mechanism above. It was previously
5012used
5013to validate the entire address range of an operation region, which could
5014be
5015incorrect if the range included illegal ports, but fields within the
5016operation region did not actually access those ports. Validation is now
5017performed on a per-field basis instead of the entire region.
5018
5019Modified the handling of the PM1 Status Register ignored bit (bit 11.)
5020Ignored bits must be "preserved" according to the ACPI spec. Usually,
5021this
5022means a read/modify/write when writing to the register. However, for
5023status
5024registers, writing a one means clear the event. Writing a zero means
5025preserve
5026the event (do not clear.) This behavior is clarified in the ACPI 4.0
5027spec,
5028and the ACPICA code now simply always writes a zero to the ignored bit.
5029
5030Modified the handling of ignored bits for the PM1 A/B Control Registers.
5031As
5032per the ACPI specification, for the control registers, preserve
5033(read/modify/write) all bits that are defined as either reserved or
5034ignored.
5035
5036Updated the handling of write-only bits in the PM1 A/B Control Registers.
5037When reading the register, zero the write-only bits as per the ACPI spec.
5038ACPICA BZ 443. Lin Ming.
5039
5040Removed "Linux" from the list of supported _OSI strings. Linux no longer
5041wants to reply true to this request. The Windows strings are the only
5042paths
5043through the AML that are tested and known to work properly.
5044
5045  Previous Release:
5046    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5047    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5048  Current Release:
5049    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5050    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5051
50522) iASL Compiler/Disassembler and Tools:
5053
5054Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
5055and
5056aetables.c
5057
5058----------------------------------------
505920 February 2009. Summary of changes for version 20090220:
5060
50611) ACPI CA Core Subsystem:
5062
5063Optimized the ACPI register locking. Removed locking for reads from the
5064ACPI
5065bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
5066is
5067not required when reading the single-bit registers. The
5068AcpiGetRegisterUnlocked function is no longer needed and has been
5069removed.
5070This will improve performance for reads on these registers. ACPICA BZ
5071760.
5072
5073Fixed the parameter validation for AcpiRead/Write. Now return
5074AE_BAD_PARAMETER if the input register pointer is null, and
5075AE_BAD_ADDRESS
5076if
5077the register has an address of zero. Previously, these cases simply
5078returned
5079AE_OK. For optional registers such as PM1B status/enable/control, the
5080caller
5081should check for a valid register address before calling. ACPICA BZ 748.
5082
5083Renamed the external ACPI bit register access functions. Renamed
5084AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
5085functions. The new names are AcpiReadBitRegister and
5086AcpiWriteBitRegister.
5087Also, restructured the code for these functions by simplifying the code
5088path
5089and condensing duplicate code to reduce code size.
5090
5091Added new functions to transparently handle the possibly split PM1 A/B
5092registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
5093functions
5094now handle the split registers for PM1 Status, Enable, and Control.
5095ACPICA
5096BZ
5097746.
5098
5099Added a function to handle the PM1 control registers,
5100AcpiHwWritePm1Control.
5101This function writes both of the PM1 control registers (A/B). These
5102registers
5103are different than the PM1 A/B status and enable registers in that
5104different
5105values can be written to the A/B registers. Most notably, the SLP_TYP
5106bits
5107can be different, as per the values returned from the _Sx predefined
5108methods.
5109
5110Removed an extra register write within AcpiHwClearAcpiStatus. This
5111function
5112was writing an optional PM1B status register twice. The existing call to
5113the
5114low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
5115A/B
5116register. ACPICA BZ 751.
5117
5118Split out the PM1 Status registers from the FADT. Added new globals for
5119these
5120registers (A/B), similar to the way the PM1 Enable registers are handled.
5121Instead of overloading the FADT Event Register blocks. This makes the
5122code
5123clearer and less prone to error.
5124
5125Fixed the warning message for when the platform contains too many ACPI
5126tables
5127for the default size of the global root table data structure. The
5128calculation
5129for the truncation value was incorrect.
5130
5131Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
5132obsolete macro, since it is now a simple reference to ->common.type.
5133There
5134were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5135
5136Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
5137TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
5138simply SLEEP_TYPE. ACPICA BZ 754.
5139
5140Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
5141function is only needed on 64-bit host operating systems and is thus not
5142included for 32-bit hosts.
5143
5144Debug output: print the input and result for invocations of the _OSI
5145reserved
5146control method via the ACPI_LV_INFO debug level. Also, reduced some of
5147the
5148verbosity of this debug level. Len Brown.
5149
5150Example Code and Data Size: These are the sizes for the OS-independent
5151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5152debug version of the code includes the debug output trace mechanism and
5153has a
5154much larger code and data size.
5155
5156  Previous Release:
5157    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5158    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5159  Current Release:
5160    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5161    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5162
51632) iASL Compiler/Disassembler and Tools:
5164
5165Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
5166various legal performance profiles.
5167
5168----------------------------------------
516923 January 2009. Summary of changes for version 20090123:
5170
51711) ACPI CA Core Subsystem:
5172
5173Added the 2009 copyright to all module headers and signons. This affects
5174virtually every file in the ACPICA core subsystem, the iASL compiler, and
5175the tools/utilities.
5176
5177Implemented a change to allow the host to override any ACPI table,
5178including
5179dynamically loaded tables. Previously, only the DSDT could be replaced by
5180the
5181host. With this change, the AcpiOsTableOverride interface is called for
5182each
5183table found in the RSDT/XSDT during ACPICA initialization, and also
5184whenever
5185a table is dynamically loaded via the AML Load operator.
5186
5187Updated FADT flag definitions, especially the Boot Architecture flags.
5188
5189Debugger: For the Find command, automatically pad the input ACPI name
5190with
5191underscores if the name is shorter than 4 characters. This enables a
5192match
5193with the actual namespace entry which is itself padded with underscores.
5194
5195Example Code and Data Size: These are the sizes for the OS-independent
5196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5197debug version of the code includes the debug output trace mechanism and
5198has a
5199much larger code and data size.
5200
5201  Previous Release:
5202    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5203    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5204  Current Release:
5205    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5206    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5207
52082) iASL Compiler/Disassembler and Tools:
5209
5210Fix build error under Bison-2.4.
5211
5212Dissasembler: Enhanced FADT support. Added decoding of the Boot
5213Architecture
5214flags. Now decode all flags, regardless of the FADT version. Flag output
5215includes the FADT version which first defined each flag.
5216
5217The iASL -g option now dumps the RSDT to a file (in addition to the FADT
5218and
5219DSDT). Windows only.
5220
5221----------------------------------------
522204 December 2008. Summary of changes for version 20081204:
5223
52241) ACPI CA Core Subsystem:
5225
5226The ACPICA Programmer Reference has been completely updated and revamped
5227for
5228this release. This includes updates to the external interfaces, OSL
5229interfaces, the overview sections, and the debugger reference.
5230
5231Several new ACPICA interfaces have been implemented and documented in the
5232programmer reference:
5233AcpiReset - Writes the reset value to the FADT-defined reset register.
5234AcpiDisableAllGpes - Disable all available GPEs.
5235AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
5236AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
5237AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
5238AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
5239AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
5240
5241Most of the public ACPI hardware-related interfaces have been moved to a
5242new
5243file, components/hardware/hwxface.c
5244
5245Enhanced the FADT parsing and low-level ACPI register access: The ACPI
5246register lengths within the FADT are now used, and the low level ACPI
5247register access no longer hardcodes the ACPI register lengths. Given that
5248there may be some risk in actually trusting the FADT register lengths, a
5249run-
5250time option was added to fall back to the default hardcoded lengths if
5251the
5252FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
5253option is set to true for now, and a warning is issued if a suspicious
5254FADT
5255register length is overridden with the default value.
5256
5257Fixed a reference count issue in NsRepairObject. This problem was
5258introduced
5259in version 20081031 as part of a fix to repair Buffer objects within
5260Packages. Lin Ming.
5261
5262Added semaphore support to the Linux/Unix application OS-services layer
5263(OSL). ACPICA BZ 448. Lin Ming.
5264
5265Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
5266will
5267be implemented in the OSL, or will binary semaphores be used instead.
5268
5269Example Code and Data Size: These are the sizes for the OS-independent
5270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5271debug version of the code includes the debug output trace mechanism and
5272has a
5273much larger code and data size.
5274
5275  Previous Release:
5276    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5277    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5278  Current Release:
5279    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5280    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5281
52822) iASL Compiler/Disassembler and Tools:
5283
5284iASL: Completed the '-e' option to include additional ACPI tables in
5285order
5286to
5287aid with disassembly and External statement generation. ACPICA BZ 742.
5288Lin
5289Ming.
5290
5291iASL: Removed the "named object in while loop" error. The compiler cannot
5292determine how many times a loop will execute. ACPICA BZ 730.
5293
5294Disassembler: Implemented support for FADT revision 2 (MS extension).
5295ACPICA
5296BZ 743.
5297
5298Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
5299MCFG).
5300
5301----------------------------------------
530231 October 2008. Summary of changes for version 20081031:
5303
53041) ACPI CA Core Subsystem:
5305
5306Restructured the ACPICA header files into public/private. acpi.h now
5307includes
5308only the "public" acpica headers. All other acpica headers are "private"
5309and
5310should not be included by acpica users. One new file, accommon.h is used
5311to
5312include the commonly used private headers for acpica code generation.
5313Future
5314plans include moving all private headers to a new subdirectory.
5315
5316Implemented an automatic Buffer->String return value conversion for
5317predefined ACPI methods. For these methods (such as _BIF), added
5318automatic
5319conversion for return objects that are required to be a String, but a
5320Buffer
5321was found instead. This can happen when reading string battery data from
5322an
5323operation region, because it used to be difficult to convert the data
5324from
5325buffer to string from within the ASL. Ensures that the host OS is
5326provided
5327with a valid null-terminated string. Linux BZ 11822.
5328
5329Updated the FACS waking vector interfaces. Split
5330AcpiSetFirmwareWakingVector
5331into two: one for the 32-bit vector, another for the 64-bit vector. This
5332is
5333required because the host OS must setup the wake much differently for
5334each
5335vector (real vs. protected mode, etc.) and the interface itself should
5336not
5337be
5338deciding which vector to use. Also, eliminated the
5339GetFirmwareWakingVector
5340interface, as it served no purpose (only the firmware reads the vector,
5341OS
5342only writes the vector.) ACPICA BZ 731.
5343
5344Implemented a mechanism to escape infinite AML While() loops. Added a
5345loop
5346counter to force exit from AML While loops if the count becomes too
5347large.
5348This can occur in poorly written AML when the hardware does not respond
5349within a while loop and the loop does not implement a timeout. The
5350maximum
5351loop count is configurable. A new exception code is returned when a loop
5352is
5353broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
5354
5355Optimized the execution of AML While loops. Previously, a control state
5356object was allocated and freed for each execution of the loop. The
5357optimization is to simply reuse the control state for each iteration.
5358This
5359speeds up the raw loop execution time by about 5%.
5360
5361Enhanced the implicit return mechanism. For Windows compatibility, return
5362an
5363implicit integer of value zero for methods that contain no executable
5364code.
5365Such methods are seen in the field as stubs (presumably), and can cause
5366drivers to fail if they expect a return value. Lin Ming.
5367
5368Allow multiple backslashes as root prefixes in namepaths. In a fully
5369qualified namepath, allow multiple backslash prefixes. This can happen
5370(and
5371is seen in the field) because of the use of a double-backslash in strings
5372(since backslash is the escape character) causing confusion. ACPICA BZ
5373739
5374Lin Ming.
5375
5376Emit a warning if two different FACS or DSDT tables are discovered in the
5377FADT. Checks if there are two valid but different addresses for the FACS
5378and
5379DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
5380
5381Consolidated the method argument count validation code. Merged the code
5382that
5383validates control method argument counts into the predefined validation
5384module. Eliminates possible multiple warnings for incorrect argument
5385counts.
5386
5387Implemented ACPICA example code. Includes code for ACPICA initialization,
5388handler installation, and calling a control method. Available at
5389source/tools/examples.
5390
5391Added a global pointer for FACS table to simplify internal FACS access.
5392Use
5393the global pointer instead of using AcpiGetTableByIndex for each FACS
5394access.
5395This simplifies the code for the Global Lock and the Firmware Waking
5396Vector(s).
5397
5398Example Code and Data Size: These are the sizes for the OS-independent
5399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5400debug version of the code includes the debug output trace mechanism and
5401has a
5402much larger code and data size.
5403
5404  Previous Release:
5405    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5406    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5407  Current Release:
5408    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5409    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5410
54112) iASL Compiler/Disassembler and Tools:
5412
5413iASL: Improved disassembly of external method calls. Added the -e option
5414to
5415allow the inclusion of additional ACPI tables to help with the
5416disassembly
5417of
5418method invocations and the generation of external declarations during the
5419disassembly. Certain external method invocations cannot be disassembled
5420properly without the actual declaration of the method. Use the -e option
5421to
5422include the table where the external method(s) are actually declared.
5423Most
5424useful for disassembling SSDTs that make method calls back to the master
5425DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
5426-d
5427-e dsdt.aml ssdt1.aml
5428
5429iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
5430problem where the use of an alias within a namepath would result in a not
5431found error or cause the compiler to fault. Also now allows forward
5432references from the Alias operator itself. ACPICA BZ 738.
5433
5434----------------------------------------
543526 September 2008. Summary of changes for version 20080926:
5436
54371) ACPI CA Core Subsystem:
5438
5439Designed and implemented a mechanism to validate predefined ACPI methods
5440and
5441objects. This code validates the predefined ACPI objects (objects whose
5442names
5443start with underscore) that appear in the namespace, at the time they are
5444evaluated. The argument count and the type of the returned object are
5445validated against the ACPI specification. The purpose of this validation
5446is
5447to detect problems with the BIOS-implemented predefined ACPI objects
5448before
5449the results are returned to the ACPI-related drivers. Future enhancements
5450may
5451include actual repair of incorrect return objects where possible. Two new
5452files are nspredef.c and acpredef.h.
5453
5454Fixed a fault in the AML parser if a memory allocation fails during the
5455Op
5456completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
5457
5458Fixed an issue with implicit return compatibility. This change improves
5459the
5460implicit return mechanism to be more compatible with the MS interpreter.
5461Lin
5462Ming, ACPICA BZ 349.
5463
5464Implemented support for zero-length buffer-to-string conversions. Allow
5465zero
5466length strings during interpreter buffer-to-string conversions. For
5467example,
5468during the ToDecimalString and ToHexString operators, as well as implicit
5469conversions. Fiodor Suietov, ACPICA BZ 585.
5470
5471Fixed two possible memory leaks in the error exit paths of
5472AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
5473are
5474similar in that they use a stack of state objects in order to eliminate
5475recursion. The stack must be fully unwound and deallocated if an error
5476occurs. Lin Ming. ACPICA BZ 383.
5477
5478Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
5479global
5480ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
5481Moore ACPICA BZ 442.
5482
5483Removed the obsolete version number in module headers. Removed the
5484"$Revision" number that appeared in each module header. This version
5485number
5486was useful under SourceSafe and CVS, but has no meaning under git. It is
5487not
5488only incorrect, it could also be misleading.
5489
5490Example Code and Data Size: These are the sizes for the OS-independent
5491acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5492debug version of the code includes the debug output trace mechanism and
5493has a
5494much larger code and data size.
5495
5496  Previous Release:
5497    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5498    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5499  Current Release:
5500    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5501    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5502
5503----------------------------------------
550429 August 2008. Summary of changes for version 20080829:
5505
55061) ACPI CA Core Subsystem:
5507
5508Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
5509Reference. Changes include the elimination of cheating on the Object
5510field
5511for the DdbHandle subtype, addition of a reference class field to
5512differentiate the various reference types (instead of an AML opcode), and
5513the
5514cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
5515
5516Reduce an error to a warning for an incorrect method argument count.
5517Previously aborted with an error if too few arguments were passed to a
5518control method via the external ACPICA interface. Now issue a warning
5519instead
5520and continue. Handles the case where the method inadvertently declares
5521too
5522many arguments, but does not actually use the extra ones. Applies mainly
5523to
5524the predefined methods. Lin Ming. Linux BZ 11032.
5525
5526Disallow the evaluation of named object types with no intrinsic value.
5527Return
5528AE_TYPE for objects that have no value and therefore evaluation is
5529undefined:
5530Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
5531of
5532these types were allowed, but an exception would be generated at some
5533point
5534during the evaluation. Now, the error is generated up front.
5535
5536Fixed a possible memory leak in the AcpiNsGetExternalPathname function
5537(nsnames.c). Fixes a leak in the error exit path.
5538
5539Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
5540debug
5541levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
5542ACPI_EXCEPTION
5543interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
5544ACPI_LV_EVENTS.
5545
5546Removed obsolete and/or unused exception codes from the acexcep.h header.
5547There is the possibility that certain device drivers may be affected if
5548they
5549use any of these exceptions.
5550
5551The ACPICA documentation has been added to the public git source tree,
5552under
5553acpica/documents. Included are the ACPICA programmer reference, the iASL
5554compiler reference, and the changes.txt release logfile.
5555
5556Example Code and Data Size: These are the sizes for the OS-independent
5557acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5558debug version of the code includes the debug output trace mechanism and
5559has a
5560much larger code and data size.
5561
5562  Previous Release:
5563    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5564    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5565  Current Release:
5566    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5567    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5568
55692) iASL Compiler/Disassembler and Tools:
5570
5571Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
5572defines _SCP with 3 arguments. Previous versions defined it with only 1
5573argument. iASL now allows both definitions.
5574
5575iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
5576zero-
5577length subtables when disassembling ACPI tables. Also fixed a couple of
5578errors where a full 16-bit table type field was not extracted from the
5579input
5580properly.
5581
5582acpisrc: Improve comment counting mechanism for generating source code
5583statistics. Count first and last lines of multi-line comments as
5584whitespace,
5585not comment lines. Handle Linux legal header in addition to standard
5586acpica
5587header.
5588
5589----------------------------------------
5590
559129 July 2008. Summary of changes for version 20080729:
5592
55931) ACPI CA Core Subsystem:
5594
5595Fix a possible deadlock in the GPE dispatch. Remove call to
5596AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
5597attempt
5598to acquire the GPE lock but can deadlock since the GPE lock is already
5599held
5600at dispatch time. This code was introduced in version 20060831 as a
5601response
5602to Linux BZ 6881 and has since been removed from Linux.
5603
5604Add a function to dereference returned reference objects. Examines the
5605return
5606object from a call to AcpiEvaluateObject. Any Index or RefOf references
5607are
5608automatically dereferenced in an attempt to return something useful
5609(these
5610reference types cannot be converted into an external ACPI_OBJECT.)
5611Provides
5612MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
5613
5614x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
5615subtables for the MADT and one new subtable for the SRAT. Includes
5616disassembler and AcpiSrc support. Data from the Intel 64 Architecture
5617x2APIC
5618Specification, June 2008.
5619
5620Additional error checking for pathname utilities. Add error check after
5621all
5622calls to AcpiNsGetPathnameLength. Add status return from
5623AcpiNsBuildExternalPath and check after all calls. Add parameter
5624validation
5625to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
5626
5627Return status from the global init function AcpiUtGlobalInitialize. This
5628is
5629used by both the kernel subsystem and the utilities such as iASL
5630compiler.
5631The function could possibly fail when the caches are initialized. Yang
5632Yi.
5633
5634Add a function to decode reference object types to strings. Created for
5635improved error messages.
5636
5637Improve object conversion error messages. Better error messages during
5638object
5639conversion from internal to the external ACPI_OBJECT. Used for external
5640calls
5641to AcpiEvaluateObject.
5642
5643Example Code and Data Size: These are the sizes for the OS-independent
5644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5645debug version of the code includes the debug output trace mechanism and
5646has a
5647much larger code and data size.
5648
5649  Previous Release:
5650    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5651    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5652  Current Release:
5653    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5654    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5655
56562) iASL Compiler/Disassembler and Tools:
5657
5658Debugger: fix a possible hang when evaluating non-methods. Fixes a
5659problem
5660introduced in version 20080701. If the object being evaluated (via
5661execute
5662command) is not a method, the debugger can hang while trying to obtain
5663non-
5664existent parameters.
5665
5666iASL: relax error for using reserved "_T_x" identifiers. These names can
5667appear in a disassembled ASL file if they were emitted by the original
5668compiler. Instead of issuing an error or warning and forcing the user to
5669manually change these names, issue a remark instead.
5670
5671iASL: error if named object created in while loop. Emit an error if any
5672named
5673object is created within a While loop. If allowed, this code will
5674generate
5675a
5676run-time error on the second iteration of the loop when an attempt is
5677made
5678to
5679create the same named object twice. ACPICA bugzilla 730.
5680
5681iASL: Support absolute pathnames for include files. Add support for
5682absolute
5683pathnames within the Include operator. previously, only relative
5684pathnames
5685were supported.
5686
5687iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
5688Descriptor.
5689The ACPI spec requires one interrupt minimum. BZ 423
5690
5691iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
5692Handles the case for the Interrupt Resource Descriptor where
5693the ResourceSource argument is omitted but ResourceSourceIndex
5694is present. Now leave room for the Index. BZ 426
5695
5696iASL: Prevent error message if CondRefOf target does not exist. Fixes
5697cases
5698where an error message is emitted if the target does not exist. BZ 516
5699
5700iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
5701(get ACPI tables on Windows). This was apparently broken in version
570220070919.
5703
5704AcpiXtract: Handle EOF while extracting data. Correctly handle the case
5705where
5706the EOF happens immediately after the last table in the input file. Print
5707completion message. Previously, no message was displayed in this case.
5708
5709----------------------------------------
571001 July 2008. Summary of changes for version 20080701:
5711
57120) Git source tree / acpica.org
5713
5714Fixed a problem where a git-clone from http would not transfer the entire
5715source tree.
5716
57171) ACPI CA Core Subsystem:
5718
5719Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
5720enable bit. Now performs a read-change-write of the enable register
5721instead
5722of simply writing out the cached enable mask. This will prevent
5723inadvertent
5724enabling of GPEs if a rogue GPE is received during initialization (before
5725GPE
5726handlers are installed.)
5727
5728Implemented a copy for dynamically loaded tables. Previously, dynamically
5729loaded tables were simply mapped - but on some machines this memory is
5730corrupted after suspend. Now copy the table to a local buffer. For the
5731OpRegion case, added checksum verify. Use the table length from the table
5732header, not the region length. For the Buffer case, use the table length
5733also. Dennis Noordsij, Bob Moore. BZ 10734
5734
5735Fixed a problem where the same ACPI table could not be dynamically loaded
5736and
5737unloaded more than once. Without this change, a table cannot be loaded
5738again
5739once it has been loaded/unloaded one time. The current mechanism does not
5740unregister a table upon an unload. During a load, if the same table is
5741found,
5742this no longer returns an exception. BZ 722
5743
5744Fixed a problem where the wrong descriptor length was calculated for the
5745EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
5746EndTag
5747are calculated as 12 bytes long, but the actual length in the internal
5748descriptor is 16 because of the round-up to 8 on the 64-bit build.
5749Reported
5750by Linn Crosetto. BZ 728
5751
5752Fixed a possible memory leak in the Unload operator. The DdbHandle
5753returned
5754by Load() did not have its reference count decremented during unload,
5755leading
5756to a memory leak. Lin Ming. BZ 727
5757
5758Fixed a possible memory leak when deleting thermal/processor objects. Any
5759associated notify handlers (and objects) were not being deleted. Fiodor
5760Suietov. BZ 506
5761
5762Fixed the ordering of the ASCII names in the global mutex table to match
5763the
5764actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
5765only.
5766Vegard Nossum. BZ 726
5767
5768Enhanced the AcpiGetObjectInfo interface to return the number of required
5769arguments if the object is a control method. Added this call to the
5770debugger
5771so the proper number of default arguments are passed to a method. This
5772prevents a warning when executing methods from AcpiExec.
5773
5774Added a check for an invalid handle in AcpiGetObjectInfo. Return
5775AE_BAD_PARAMETER if input handle is invalid. BZ 474
5776
5777Fixed an extraneous warning from exconfig.c on the 64-bit build.
5778
5779Example Code and Data Size: These are the sizes for the OS-independent
5780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5781debug version of the code includes the debug output trace mechanism and
5782has a
5783much larger code and data size.
5784
5785  Previous Release:
5786    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
5787    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
5788  Current Release:
5789    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5790    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5791
57922) iASL Compiler/Disassembler and Tools:
5793
5794iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
5795resource descriptor names.
5796
5797iASL: Detect invalid ASCII characters in input (windows version). Removed
5798the
5799"-CF" flag from the flex compile, enables correct detection of non-ASCII
5800characters in the input. BZ 441
5801
5802iASL: Eliminate warning when result of LoadTable is not used. Eliminate
5803the
5804"result of operation not used" warning when the DDB handle returned from
5805LoadTable is not used. The warning is not needed. BZ 590
5806
5807AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
5808method
5809to
5810pass address of table to the AML. Added option to disable OpRegion
5811simulation
5812to allow creation of an OpRegion with a real address that was passed to
5813_CFG.
5814All of this allows testing of the Load and Unload operators from
5815AcpiExec.
5816
5817Debugger: update tables command for unloaded tables. Handle unloaded
5818tables
5819and use the standard table header output routine.
5820
5821----------------------------------------
582209 June 2008. Summary of changes for version 20080609:
5823
58241) ACPI CA Core Subsystem:
5825
5826Implemented a workaround for reversed _PRT entries. A significant number
5827of
5828BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
5829change dynamically detects and repairs this problem. Provides
5830compatibility
5831with MS ACPI. BZ 6859
5832
5833Simplified the internal ACPI hardware interfaces to eliminate the locking
5834flag parameter from Register Read/Write. Added a new external interface,
5835AcpiGetRegisterUnlocked.
5836
5837Fixed a problem where the invocation of a GPE control method could hang.
5838This
5839was a regression introduced in 20080514. The new method argument count
5840validation mechanism can enter an infinite loop when a GPE method is
5841dispatched. Problem fixed by removing the obsolete code that passed GPE
5842block
5843information to the notify handler via the control method parameter
5844pointer.
5845
5846Fixed a problem where the _SST execution status was incorrectly returned
5847to
5848the caller of AcpiEnterSleepStatePrep. This was a regression introduced
5849in
585020080514. _SST is optional and a NOT_FOUND exception should never be
5851returned. BZ 716
5852
5853Fixed a problem where a deleted object could be accessed from within the
5854AML
5855parser. This was a regression introduced in version 20080123 as a fix for
5856the
5857Unload operator. Lin Ming. BZ 10669
5858
5859Cleaned up the debug operand dump mechanism. Eliminated unnecessary
5860operands
5861and eliminated the use of a negative index in a loop. Operands are now
5862displayed in the correct order, not backwards. This also fixes a
5863regression
5864introduced in 20080514 on 64-bit systems where the elimination of
5865ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
5866715
5867
5868Fixed a possible memory leak in EvPciConfigRegionSetup where the error
5869exit
5870path did not delete a locally allocated structure.
5871
5872Updated definitions for the DMAR and SRAT tables to synchronize with the
5873current specifications. Includes disassembler support.
5874
5875Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
5876loop termination value was used. Loop terminated on iteration early,
5877missing
5878one mutex. Linn Crosetto
5879
5880Example Code and Data Size: These are the sizes for the OS-independent
5881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5882debug version of the code includes the debug output trace mechanism and
5883has a
5884much larger code and data size.
5885
5886  Previous Release:
5887    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
5888    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
5889  Current Release:
5890    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
5891    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
5892
58932) iASL Compiler/Disassembler and Tools:
5894
5895Disassembler: Implemented support for EisaId() within _CID objects. Now
5896disassemble integer _CID objects back to EisaId invocations, including
5897multiple integers within _CID packages. Includes single-step support for
5898debugger also.
5899
5900Disassembler: Added support for DMAR and SRAT table definition changes.
5901
5902----------------------------------------
590314 May 2008. Summary of changes for version 20080514:
5904
59051) ACPI CA Core Subsystem:
5906
5907Fixed a problem where GPEs were enabled too early during the ACPICA
5908initialization. This could lead to "handler not installed" errors on some
5909machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
5910This
5911ensures that all operation regions and devices throughout the namespace
5912have
5913been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
5914
5915Implemented a change to the enter sleep code. Moved execution of the _GTS
5916method to just before setting sleep enable bit. The execution was moved
5917from
5918AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
5919immediately before the SLP_EN bit is set, as per the ACPI specification.
5920Luming Yu, BZ 1653.
5921
5922Implemented a fix to disable unknown GPEs (2nd version). Now always
5923disable
5924the GPE, even if ACPICA thinks that that it is already disabled. It is
5925possible that the AML or some other code has enabled the GPE unbeknownst
5926to
5927the ACPICA code.
5928
5929Fixed a problem with the Field operator where zero-length fields would
5930return
5931an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
5932ASL
5933field declarations in Field(), BankField(), and IndexField(). BZ 10606.
5934
5935Implemented a fix for the Load operator, now load the table at the
5936namespace
5937root. This reverts a change introduced in version 20071019. The table is
5938now
5939loaded at the namespace root even though this goes against the ACPI
5940specification. This provides compatibility with other ACPI
5941implementations.
5942The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
5943Ming.
5944
5945Fixed a problem where ACPICA would not Load() tables with unusual
5946signatures.
5947Now ignore ACPI table signature for Load() operator. Only "SSDT" is
5948acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
5949Therefore, signature validation is worthless. Apparently MS ACPI accepts
5950such
5951signatures, ACPICA must be compatible. BZ 10454.
5952
5953Fixed a possible negative array index in AcpiUtValidateException. Added
5954NULL
5955fields to the exception string arrays to eliminate a -1 subtraction on
5956the
5957SubStatus field.
5958
5959Updated the debug tracking macros to reduce overall code and data size.
5960Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
5961instead of pointers to static strings. Jan Beulich and Bob Moore.
5962
5963Implemented argument count checking in control method invocation via
5964AcpiEvaluateObject. Now emit an error if too few arguments, warning if
5965too
5966many. This applies only to extern programmatic control method execution,
5967not
5968method-to-method calls within the AML. Lin Ming.
5969
5970Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
5971no
5972longer needed, especially with the removal of 16-bit support. It was
5973replaced
5974mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
5975bit
5976on
597732/64-bit platforms is required.
5978
5979Added the C const qualifier for appropriate string constants -- mostly
5980MODULE_NAME and printf format strings. Jan Beulich.
5981
5982Example Code and Data Size: These are the sizes for the OS-independent
5983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5984debug version of the code includes the debug output trace mechanism and
5985has a
5986much larger code and data size.
5987
5988  Previous Release:
5989    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
5990    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
5991  Current Release:
5992    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
5993    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
5994
59952) iASL Compiler/Disassembler and Tools:
5996
5997Implemented ACPI table revision ID validation in the disassembler. Zero
5998is
5999always invalid. For DSDTs, the ID controls the interpreter integer width.
60001
6001means 32-bit and this is unusual. 2 or greater is 64-bit.
6002
6003----------------------------------------
600421 March 2008. Summary of changes for version 20080321:
6005
60061) ACPI CA Core Subsystem:
6007
6008Implemented an additional change to the GPE support in order to suppress
6009spurious or stray GPEs. The AcpiEvDisableGpe function will now
6010permanently
6011disable incoming GPEs that are neither enabled nor disabled -- meaning
6012that
6013the GPE is unknown to the system. This should prevent future interrupt
6014floods
6015from that GPE. BZ 6217 (Zhang Rui)
6016
6017Fixed a problem where NULL package elements were not returned to the
6018AcpiEvaluateObject interface correctly. The element was simply ignored
6019instead of returning a NULL ACPI_OBJECT package element, potentially
6020causing
6021a buffer overflow and/or confusing the caller who expected a fixed number
6022of
6023elements. BZ 10132 (Lin Ming, Bob Moore)
6024
6025Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
6026Dword,
6027Qword), Field, BankField, and IndexField operators when invoked from
6028inside
6029an executing control method. In this case, these operators created
6030namespace
6031nodes that were incorrectly left marked as permanent nodes instead of
6032temporary nodes. This could cause a problem if there is race condition
6033between an exiting control method and a running namespace walk. (Reported
6034by
6035Linn Crosetto)
6036
6037Fixed a problem where the CreateField and CreateXXXField operators would
6038incorrectly allow duplicate names (the name of the field) with no
6039exception
6040generated.
6041
6042Implemented several changes for Notify handling. Added support for new
6043Notify
6044values (ACPI 2.0+) and improved the Notify debug output. Notify on
6045PowerResource objects is no longer allowed, as per the ACPI
6046specification.
6047(Bob Moore, Zhang Rui)
6048
6049All Reference Objects returned via the AcpiEvaluateObject interface are
6050now
6051marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
6052for
6053NULL objects - either NULL package elements or unresolved named
6054references.
6055
6056Fixed a problem where an extraneous debug message was produced for
6057package
6058objects (when debugging enabled). The message "Package List length larger
6059than NumElements count" is now produced in the correct case, and is now
6060an
6061error message rather than a debug message. Added a debug message for the
6062opposite case, where NumElements is larger than the Package List (the
6063package
6064will be padded out with NULL elements as per the ACPI spec.)
6065
6066Implemented several improvements for the output of the ASL "Debug" object
6067to
6068clarify and keep all data for a given object on one output line.
6069
6070Fixed two size calculation issues with the variable-length Start
6071Dependent
6072resource descriptor.
6073
6074Example Code and Data Size: These are the sizes for the OS-independent
6075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6076debug version of the code includes the debug output trace mechanism and
6077has
6078a much larger code and data size.
6079
6080  Previous 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  Current Release:
6084    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6085    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6086
60872) iASL Compiler/Disassembler and Tools:
6088
6089Fixed a problem with the use of the Switch operator where execution of
6090the
6091containing method by multiple concurrent threads could cause an
6092AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
6093actual Switch opcode, it must be simulated with local named temporary
6094variables and if/else pairs. The solution chosen was to mark any method
6095that
6096uses Switch as Serialized, thus preventing multiple thread entries. BZ
6097469.
6098
6099----------------------------------------
610013 February 2008. Summary of changes for version 20080213:
6101
61021) ACPI CA Core Subsystem:
6103
6104Implemented another MS compatibility design change for GPE/Notify
6105handling.
6106GPEs are now cleared/enabled asynchronously to allow all pending notifies
6107to
6108complete first. It is expected that the OSL will queue the enable request
6109behind all pending notify requests (may require changes to the local host
6110OSL
6111in AcpiOsExecute). Alexey Starikovskiy.
6112
6113Fixed a problem where buffer and package objects passed as arguments to a
6114control method via the external AcpiEvaluateObject interface could cause
6115an
6116AE_AML_INTERNAL exception depending on the order and type of operators
6117executed by the target control method.
6118
6119Fixed a problem where resource descriptor size optimization could cause a
6120problem when a _CRS resource template is passed to a _SRS method. The
6121_SRS
6122resource template must use the same descriptors (with the same size) as
6123returned from _CRS. This change affects the following resource
6124descriptors:
6125IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
61269487)
6127
6128Fixed a problem where a CopyObject to RegionField, BankField, and
6129IndexField
6130objects did not perform an implicit conversion as it should. These types
6131must
6132retain their initial type permanently as per the ACPI specification.
6133However,
6134a CopyObject to all other object types should not perform an implicit
6135conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6136
6137Fixed a problem with the AcpiGetDevices interface where the mechanism to
6138match device CIDs did not examine the entire list of available CIDs, but
6139instead aborted on the first non-matching CID. Andrew Patterson.
6140
6141Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
6142was
6143inadvertently changed to return a 16-bit value instead of a 32-bit value,
6144truncating the upper dword of a 64-bit value. This macro is only used to
6145display debug output, so no incorrect calculations were made. Also,
6146reimplemented the macro so that a 64-bit shift is not performed by
6147inefficient compilers.
6148
6149Added missing va_end statements that should correspond with each va_start
6150statement.
6151
6152Example Code and Data Size: These are the sizes for the OS-independent
6153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6154debug version of the code includes the debug output trace mechanism and
6155has
6156a much larger code and data size.
6157
6158  Previous Release:
6159    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6160    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6161  Current Release:
6162    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6163    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6164
61652) iASL Compiler/Disassembler and Tools:
6166
6167Implemented full disassembler support for the following new ACPI tables:
6168BERT, EINJ, and ERST. Implemented partial disassembler support for the
6169complicated HEST table. These tables support the Windows Hardware Error
6170Architecture (WHEA).
6171
6172----------------------------------------
617323 January 2008. Summary of changes for version 20080123:
6174
61751) ACPI CA Core Subsystem:
6176
6177Added the 2008 copyright to all module headers and signons. This affects
6178virtually every file in the ACPICA core subsystem, the iASL compiler, and
6179the tools/utilities.
6180
6181Fixed a problem with the SizeOf operator when used with Package and
6182Buffer
6183objects. These objects have deferred execution for some arguments, and
6184the
6185execution is now completed before the SizeOf is executed. This problem
6186caused
6187unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
6188BZ
61899558
6190
6191Implemented an enhancement to the interpreter "slack mode". In the
6192absence
6193of
6194an explicit return or an implicitly returned object from the last
6195executed
6196opcode, a control method will now implicitly return an integer of value 0
6197for
6198Microsoft compatibility. (Lin Ming) BZ 392
6199
6200Fixed a problem with the Load operator where an exception was not
6201returned
6202in
6203the case where the table is already loaded. (Lin Ming) BZ 463
6204
6205Implemented support for the use of DDBHandles as an Indexed Reference, as
6206per
6207the ACPI spec. (Lin Ming) BZ 486
6208
6209Implemented support for UserTerm (Method invocation) for the Unload
6210operator
6211as per the ACPI spec. (Lin Ming) BZ 580
6212
6213Fixed a problem with the LoadTable operator where the OemId and
6214OemTableId
6215input strings could cause unexpected failures if they were shorter than
6216the
6217maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
6218
6219Implemented support for UserTerm (Method invocation) for the Unload
6220operator
6221as per the ACPI spec. (Lin Ming) BZ 580
6222
6223Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
6224HEST,
6225IBFT, UEFI, WDAT. Disassembler support is forthcoming.
6226
6227Example Code and Data Size: These are the sizes for the OS-independent
6228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6229debug version of the code includes the debug output trace mechanism and
6230has
6231a much larger code and data size.
6232
6233  Previous Release:
6234    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6235    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6236  Current Release:
6237    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6238    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6239
62402) iASL Compiler/Disassembler and Tools:
6241
6242Implemented support in the disassembler for checksum validation on
6243incoming
6244binary DSDTs and SSDTs. If incorrect, a message is displayed within the
6245table
6246header dump at the start of the disassembly.
6247
6248Implemented additional debugging information in the namespace listing
6249file
6250created during compilation. In addition to the namespace hierarchy, the
6251full
6252pathname to each namespace object is displayed.
6253
6254Fixed a problem with the disassembler where invalid ACPI tables could
6255cause
6256faults or infinite loops.
6257
6258Fixed an unexpected parse error when using the optional "parameter types"
6259list in a control method declaration. (Lin Ming) BZ 397
6260
6261Fixed a problem where two External declarations with the same name did
6262not
6263cause an error (Lin Ming) BZ 509
6264
6265Implemented support for full TermArgs (adding Argx, Localx and method
6266invocation) for the ParameterData parameter to the LoadTable operator.
6267(Lin
6268Ming) BZ 583,587
6269
6270----------------------------------------
627119 December 2007. Summary of changes for version 20071219:
6272
62731) ACPI CA Core Subsystem:
6274
6275Implemented full support for deferred execution for the TermArg string
6276arguments for DataTableRegion. This enables forward references and full
6277operand resolution for the three string arguments. Similar to
6278OperationRegion
6279deferred argument execution.) Lin Ming. BZ 430
6280
6281Implemented full argument resolution support for the BankValue argument
6282to
6283BankField. Previously, only constants were supported, now any TermArg may
6284be
6285used. Lin Ming BZ 387, 393
6286
6287Fixed a problem with AcpiGetDevices where the search of a branch of the
6288device tree could be terminated prematurely. In accordance with the ACPI
6289specification, the search down the current branch is terminated if a
6290device
6291is both not present and not functional (instead of just not present.)
6292Yakui
6293Zhao.
6294
6295Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
6296if
6297the underlying AML code changed the GPE enable registers. Now, any
6298unknown
6299incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
6300disabled
6301instead of simply ignored. Rui Zhang.
6302
6303Fixed a problem with Index Fields where the Index register was
6304incorrectly
6305limited to a maximum of 32 bits. Now any size may be used.
6306
6307Fixed a couple memory leaks associated with "implicit return" objects
6308when
6309the AML Interpreter slack mode is enabled. Lin Ming BZ 349
6310
6311Example Code and Data Size: These are the sizes for the OS-independent
6312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6313debug version of the code includes the debug output trace mechanism and
6314has
6315a much larger code and data size.
6316
6317  Previous Release:
6318    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6319    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6320  Current Release:
6321    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6322    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6323
6324----------------------------------------
632514 November 2007. Summary of changes for version 20071114:
6326
63271) ACPI CA Core Subsystem:
6328
6329Implemented event counters for each of the Fixed Events, the ACPI SCI
6330(interrupt) itself, and control methods executed. Named
6331AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
6332These
6333should be useful for debugging and statistics.
6334
6335Implemented a new external interface, AcpiGetStatistics, to retrieve the
6336contents of the various event counters. Returns the current values for
6337AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
6338AcpiMethodCount. The interface can be expanded in the future if new
6339counters
6340are added. Device drivers should use this interface rather than access
6341the
6342counters directly.
6343
6344Fixed a problem with the FromBCD and ToBCD operators. With some
6345compilers,
6346the ShortDivide function worked incorrectly, causing problems with the
6347BCD
6348functions with large input values. A truncation from 64-bit to 32-bit
6349inadvertently occurred. Internal BZ 435. Lin Ming
6350
6351Fixed a problem with Index references passed as method arguments.
6352References
6353passed as arguments to control methods were dereferenced immediately
6354(before
6355control was passed to the called method). The references are now
6356correctly
6357passed directly to the called method. BZ 5389. Lin Ming
6358
6359Fixed a problem with CopyObject used in conjunction with the Index
6360operator.
6361The reference was incorrectly dereferenced before the copy. The reference
6362is
6363now correctly copied. BZ 5391. Lin Ming
6364
6365Fixed a problem with Control Method references within Package objects.
6366These
6367references are now correctly generated. This completes the package
6368construction overhaul that began in version 20071019.
6369
6370Example Code and Data Size: These are the sizes for the OS-independent
6371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6372debug version of the code includes the debug output trace mechanism and
6373has
6374a much larger code and data size.
6375
6376  Previous Release:
6377    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6378    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6379  Current Release:
6380    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6381    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6382
6383
63842) iASL Compiler/Disassembler and Tools:
6385
6386The AcpiExec utility now installs handlers for all of the predefined
6387Operation Region types. New types supported are: PCI_Config, CMOS, and
6388PCIBARTarget.
6389
6390Fixed a problem with the 64-bit version of AcpiExec where the extended
6391(64-
6392bit) address fields for the DSDT and FACS within the FADT were not being
6393used, causing truncation of the upper 32-bits of these addresses. Lin
6394Ming
6395and Bob Moore
6396
6397----------------------------------------
639819 October 2007. Summary of changes for version 20071019:
6399
64001) ACPI CA Core Subsystem:
6401
6402Fixed a problem with the Alias operator when the target of the alias is a
6403named ASL operator that opens a new scope -- Scope, Device,
6404PowerResource,
6405Processor, and ThermalZone. In these cases, any children of the original
6406operator could not be accessed via the alias, potentially causing
6407unexpected
6408AE_NOT_FOUND exceptions. (BZ 9067)
6409
6410Fixed a problem with the Package operator where all named references were
6411created as object references and left otherwise unresolved. According to
6412the
6413ACPI specification, a Package can only contain Data Objects or references
6414to
6415control methods. The implication is that named references to Data Objects
6416(Integer, Buffer, String, Package, BufferField, Field) should be resolved
6417immediately upon package creation. This is the approach taken with this
6418change. References to all other named objects (Methods, Devices, Scopes,
6419etc.) are all now properly created as reference objects. (BZ 5328)
6420
6421Reverted a change to Notify handling that was introduced in version
642220070508. This version changed the Notify handling from asynchronous to
6423fully synchronous (Device driver Notify handling with respect to the
6424Notify
6425ASL operator). It was found that this change caused more problems than it
6426solved and was removed by most users.
6427
6428Fixed a problem with the Increment and Decrement operators where the type
6429of
6430the target object could be unexpectedly and incorrectly changed. (BZ 353)
6431Lin Ming.
6432
6433Fixed a problem with the Load and LoadTable operators where the table
6434location within the namespace was ignored. Instead, the table was always
6435loaded into the root or current scope. Lin Ming.
6436
6437Fixed a problem with the Load operator when loading a table from a buffer
6438object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
6439
6440Fixed a problem with the Debug object where a store of a DdbHandle
6441reference
6442object to the Debug object could cause a fault.
6443
6444Added a table checksum verification for the Load operator, in the case
6445where
6446the load is from a buffer. (BZ 578).
6447
6448Implemented additional parameter validation for the LoadTable operator.
6449The
6450length of the input strings SignatureString, OemIdString, and OemTableId
6451are
6452now checked for maximum lengths. (BZ 582) Lin Ming.
6453
6454Example Code and Data Size: These are the sizes for the OS-independent
6455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6456debug version of the code includes the debug output trace mechanism and
6457has
6458a much larger code and data size.
6459
6460  Previous Release:
6461    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6462    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6463  Current Release:
6464    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6465    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6466
6467
64682) iASL Compiler/Disassembler:
6469
6470Fixed a problem where if a single file was specified and the file did not
6471exist, no error message was emitted. (Introduced with wildcard support in
6472version 20070917.)
6473
6474----------------------------------------
647519 September 2007. Summary of changes for version 20070919:
6476
64771) ACPI CA Core Subsystem:
6478
6479Designed and implemented new external interfaces to install and remove
6480handlers for ACPI table-related events. Current events that are defined
6481are
6482LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
6483they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
6484AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
6485
6486Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
6487(acpi_serialized option on Linux) could cause some systems to hang during
6488initialization. (Bob Moore) BZ 8171
6489
6490Fixed a problem where objects of certain types (Device, ThermalZone,
6491Processor, PowerResource) can be not found if they are declared and
6492referenced from within the same control method (Lin Ming) BZ 341
6493
6494Example Code and Data Size: These are the sizes for the OS-independent
6495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6496debug version of the code includes the debug output trace mechanism and
6497has
6498a much larger code and data size.
6499
6500  Previous Release:
6501    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6502    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6503  Current Release:
6504    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6505    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6506
6507
65082) iASL Compiler/Disassembler:
6509
6510Implemented support to allow multiple files to be compiled/disassembled
6511in
6512a
6513single invocation. This includes command line wildcard support for both
6514the
6515Windows and Unix versions of the compiler. This feature simplifies the
6516disassembly and compilation of multiple ACPI tables in a single
6517directory.
6518
6519----------------------------------------
652008 May 2007. Summary of changes for version 20070508:
6521
65221) ACPI CA Core Subsystem:
6523
6524Implemented a Microsoft compatibility design change for the handling of
6525the
6526Notify AML operator. Previously, notify handlers were dispatched and
6527executed completely asynchronously in a deferred thread. The new design
6528still executes the notify handlers in a different thread, but the
6529original
6530thread that executed the Notify() now waits at a synchronization point
6531for
6532the notify handler to complete. Some machines depend on a synchronous
6533Notify
6534operator in order to operate correctly.
6535
6536Implemented support to allow Package objects to be passed as method
6537arguments to the external AcpiEvaluateObject interface. Previously, this
6538would return the AE_NOT_IMPLEMENTED exception. This feature had not been
6539implemented since there were no reserved control methods that required it
6540until recently.
6541
6542Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
6543that
6544contained invalid non-zero values in reserved fields could cause later
6545failures because these fields have meaning in later revisions of the
6546FADT.
6547For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
6548fields
6549are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
6550
6551Fixed a problem where the Global Lock handle was not properly updated if
6552a
6553thread that acquired the Global Lock via executing AML code then
6554attempted
6555to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
6556Joe
6557Liu.
6558
6559Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
6560could be corrupted if the interrupt being removed was at the head of the
6561list. Reported by Linn Crosetto.
6562
6563Example Code and Data Size: These are the sizes for the OS-independent
6564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6565debug version of the code includes the debug output trace mechanism and
6566has
6567a much larger code and data size.
6568
6569  Previous Release:
6570    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6571    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6572  Current Release:
6573    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6574    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6575
6576----------------------------------------
657720 March 2007. Summary of changes for version 20070320:
6578
65791) ACPI CA Core Subsystem:
6580
6581Implemented a change to the order of interpretation and evaluation of AML
6582operand objects within the AML interpreter. The interpreter now evaluates
6583operands in the order that they appear in the AML stream (and the
6584corresponding ASL code), instead of in the reverse order (after the
6585entire
6586operand list has been parsed). The previous behavior caused several
6587subtle
6588incompatibilities with the Microsoft AML interpreter as well as being
6589somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
6590
6591Implemented a change to the ACPI Global Lock support. All interfaces to
6592the
6593global lock now allow the same thread to acquire the lock multiple times.
6594This affects the AcpiAcquireGlobalLock external interface to the global
6595lock
6596as well as the internal use of the global lock to support AML fields -- a
6597control method that is holding the global lock can now simultaneously
6598access
6599AML fields that require global lock protection. Previously, in both
6600cases,
6601this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
6602to
6603AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
6604Controller. There is no change to the behavior of the AML Acquire
6605operator,
6606as this can already be used to acquire a mutex multiple times by the same
6607thread. BZ 8066. With assistance from Alexey Starikovskiy.
6608
6609Fixed a problem where invalid objects could be referenced in the AML
6610Interpreter after error conditions. During operand evaluation, ensure
6611that
6612the internal "Return Object" field is cleared on error and only valid
6613pointers are stored there. Caused occasional access to deleted objects
6614that
6615resulted in "large reference count" warning messages. Valery Podrezov.
6616
6617Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
6618on
6619deeply nested control method invocations. BZ 7873, local BZ 487. Valery
6620Podrezov.
6621
6622Fixed an internal problem with the handling of result objects on the
6623interpreter result stack. BZ 7872. Valery Podrezov.
6624
6625Removed obsolete code that handled the case where AML_NAME_OP is the
6626target
6627of a reference (Reference.Opcode). This code was no longer necessary. BZ
66287874. Valery Podrezov.
6629
6630Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
6631was
6632a
6633remnant from the previously discontinued 16-bit support.
6634
6635Example Code and Data Size: These are the sizes for the OS-independent
6636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6637debug version of the code includes the debug output trace mechanism and
6638has
6639a much larger code and data size.
6640
6641  Previous Release:
6642    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6643    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6644  Current Release:
6645    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6646    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6647
6648----------------------------------------
664926 January 2007. Summary of changes for version 20070126:
6650
66511) ACPI CA Core Subsystem:
6652
6653Added the 2007 copyright to all module headers and signons. This affects
6654virtually every file in the ACPICA core subsystem, the iASL compiler, and
6655the utilities.
6656
6657Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
6658during a table load. A bad pointer was passed in the case where the DSDT
6659is
6660overridden, causing a fault in this case.
6661
6662Example Code and Data Size: These are the sizes for the OS-independent
6663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6664debug version of the code includes the debug output trace mechanism and
6665has
6666a much larger code and data size.
6667
6668  Previous Release:
6669    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6670    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6671  Current Release:
6672    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6673    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6674
6675----------------------------------------
667615 December 2006. Summary of changes for version 20061215:
6677
66781) ACPI CA Core Subsystem:
6679
6680Support for 16-bit ACPICA has been completely removed since it is no
6681longer
6682necessary and it clutters the code. All 16-bit macros, types, and
6683conditional compiles have been removed, cleaning up and simplifying the
6684code
6685across the entire subsystem. DOS support is no longer needed since the
6686bootable Linux firmware kit is now available.
6687
6688The handler for the Global Lock is now removed during AcpiTerminate to
6689enable a clean subsystem restart, via the implementation of the
6690AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
6691HP)
6692
6693Implemented enhancements to the multithreading support within the
6694debugger
6695to enable improved multithreading debugging and evaluation of the
6696subsystem.
6697(Valery Podrezov)
6698
6699Debugger: Enhanced the Statistics/Memory command to emit the total
6700(maximum)
6701memory used during the execution, as well as the maximum memory consumed
6702by
6703each of the various object types. (Valery Podrezov)
6704
6705Example Code and Data Size: These are the sizes for the OS-independent
6706acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6707debug version of the code includes the debug output trace mechanism and
6708has
6709a much larger code and data size.
6710
6711  Previous Release:
6712    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6713    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6714  Current Release:
6715    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6716    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6717
6718
67192) iASL Compiler/Disassembler and Tools:
6720
6721AcpiExec: Implemented a new option (-m) to display full memory use
6722statistics upon subsystem/program termination. (Valery Podrezov)
6723
6724----------------------------------------
672509 November 2006. Summary of changes for version 20061109:
6726
67271) ACPI CA Core Subsystem:
6728
6729Optimized the Load ASL operator in the case where the source operand is
6730an
6731operation region. Simply map the operation region memory, instead of
6732performing a bytewise read. (Region must be of type SystemMemory, see
6733below.)
6734
6735Fixed the Load ASL operator for the case where the source operand is a
6736region field. A buffer object is also allowed as the source operand. BZ
6737480
6738
6739Fixed a problem where the Load ASL operator allowed the source operand to
6740be
6741an operation region of any type. It is now restricted to regions of type
6742SystemMemory, as per the ACPI specification. BZ 481
6743
6744Additional cleanup and optimizations for the new Table Manager code.
6745
6746AcpiEnable will now fail if all of the required ACPI tables are not
6747loaded
6748(FADT, FACS, DSDT). BZ 477
6749
6750Added #pragma pack(8/4) to acobject.h to ensure that the structures in
6751this
6752header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
6753manually optimized to be aligned and will not work if it is byte-packed.
6754
6755Example Code and Data Size: These are the sizes for the OS-independent
6756acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6757debug version of the code includes the debug output trace mechanism and
6758has
6759a much larger code and data size.
6760
6761  Previous Release:
6762    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6763    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6764  Current Release:
6765    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6766    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6767
6768
67692) iASL Compiler/Disassembler and Tools:
6770
6771Fixed a problem where the presence of the _OSI predefined control method
6772within complex expressions could cause an internal compiler error.
6773
6774AcpiExec: Implemented full region support for multiple address spaces.
6775SpaceId is now part of the REGION object. BZ 429
6776
6777----------------------------------------
677811 October 2006. Summary of changes for version 20061011:
6779
67801) ACPI CA Core Subsystem:
6781
6782Completed an AML interpreter performance enhancement for control method
6783execution. Previously a 2-pass parse/execution, control methods are now
6784completely parsed and executed in a single pass. This improves overall
6785interpreter performance by ~25%, reduces code size, and reduces CPU stack
6786use. (Valery Podrezov + interpreter changes in version 20051202 that
6787eliminated namespace loading during the pass one parse.)
6788
6789Implemented _CID support for PCI Root Bridge detection. If the _HID does
6790not
6791match the predefined PCI Root Bridge IDs, the _CID list (if present) is
6792now
6793obtained and also checked for an ID match.
6794
6795Implemented additional support for the PCI _ADR execution: upsearch until
6796a
6797device scope is found before executing _ADR. This allows PCI_Config
6798operation regions to be declared locally within control methods
6799underneath
6800PCI device objects.
6801
6802Fixed a problem with a possible race condition between threads executing
6803AcpiWalkNamespace and the AML interpreter. This condition was removed by
6804modifying AcpiWalkNamespace to (by default) ignore all temporary
6805namespace
6806entries created during any concurrent control method execution. An
6807additional namespace race condition is known to exist between
6808AcpiWalkNamespace and the Load/Unload ASL operators and is still under
6809investigation.
6810
6811Restructured the AML ParseLoop function, breaking it into several
6812subfunctions in order to reduce CPU stack use and improve
6813maintainability.
6814(Mikhail Kouzmich)
6815
6816AcpiGetHandle: Fix for parameter validation to detect invalid
6817combinations
6818of prefix handle and pathname. BZ 478
6819
6820Example Code and Data Size: These are the sizes for the OS-independent
6821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6822debug version of the code includes the debug output trace mechanism and
6823has
6824a much larger code and data size.
6825
6826  Previous Release:
6827    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6828    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
6829  Current Release:
6830    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6831    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6832
68332) iASL Compiler/Disassembler and Tools:
6834
6835Ported the -g option (get local ACPI tables) to the new ACPICA Table
6836Manager
6837to restore original behavior.
6838
6839----------------------------------------
684027 September 2006. Summary of changes for version 20060927:
6841
68421) ACPI CA Core Subsystem:
6843
6844Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
6845These functions now use a spinlock for mutual exclusion and the interrupt
6846level indication flag is not needed.
6847
6848Fixed a problem with the Global Lock where the lock could appear to be
6849obtained before it is actually obtained. The global lock semaphore was
6850inadvertently created with one unit instead of zero units. (BZ 464)
6851Fiodor
6852Suietov.
6853
6854Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
6855during
6856a read from a buffer or region field. (BZ 458) Fiodor Suietov.
6857
6858Example Code and Data Size: These are the sizes for the OS-independent
6859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6860debug version of the code includes the debug output trace mechanism and
6861has
6862a much larger code and data size.
6863
6864  Previous Release:
6865    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6866    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
6867  Current Release:
6868    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6869    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
6870
6871
68722) iASL Compiler/Disassembler and Tools:
6873
6874Fixed a compilation problem with the pre-defined Resource Descriptor
6875field
6876names where an "object does not exist" error could be incorrectly
6877generated
6878if the parent ResourceTemplate pathname places the template within a
6879different namespace scope than the current scope. (BZ 7212)
6880
6881Fixed a problem where the compiler could hang after syntax errors
6882detected
6883in an ElseIf construct. (BZ 453)
6884
6885Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
6886operator. An incorrect output filename was produced when this parameter
6887was
6888a null string (""). Now, the original input filename is used as the AML
6889output filename, with an ".aml" extension.
6890
6891Implemented a generic batch command mode for the AcpiExec utility
6892(execute
6893any AML debugger command) (Valery Podrezov).
6894
6895----------------------------------------
689612 September 2006. Summary of changes for version 20060912:
6897
68981) ACPI CA Core Subsystem:
6899
6900Enhanced the implementation of the "serialized mode" of the interpreter
6901(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
6902specified, instead of creating a serialization semaphore per control
6903method,
6904the interpreter lock is simply no longer released before a blocking
6905operation during control method execution. This effectively makes the AML
6906Interpreter single-threaded. The overhead of a semaphore per-method is
6907eliminated.
6908
6909Fixed a regression where an error was no longer emitted if a control
6910method
6911attempts to create 2 objects of the same name. This once again returns
6912AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
6913that
6914will dynamically serialize the control method to possible prevent future
6915errors. (BZ 440)
6916
6917Integrated a fix for a problem with PCI Express HID detection in the PCI
6918Config Space setup procedure. (BZ 7145)
6919
6920Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
6921AcpiHwInitialize function - the FADT registers are now validated when the
6922table is loaded.
6923
6924Added two new warnings during FADT verification - 1) if the FADT is
6925larger
6926than the largest known FADT version, and 2) if there is a mismatch
6927between
6928a
692932-bit block address and the 64-bit X counterpart (when both are non-
6930zero.)
6931
6932Example Code and Data Size: These are the sizes for the OS-independent
6933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6934debug version of the code includes the debug output trace mechanism and
6935has
6936a much larger code and data size.
6937
6938  Previous Release:
6939    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
6940    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
6941  Current Release:
6942    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6943    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
6944
6945
69462) iASL Compiler/Disassembler and Tools:
6947
6948Fixed a problem with the implementation of the Switch() operator where
6949the
6950temporary variable was declared too close to the actual Switch, instead
6951of
6952at method level. This could cause a problem if the Switch() operator is
6953within a while loop, causing an error on the second iteration. (BZ 460)
6954
6955Disassembler - fix for error emitted for unknown type for target of scope
6956operator. Now, ignore it and continue.
6957
6958Disassembly of an FADT now verifies the input FADT and reports any errors
6959found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
6960
6961Disassembly of raw data buffers with byte initialization data now
6962prefixes
6963each output line with the current buffer offset.
6964
6965Disassembly of ASF! table now includes all variable-length data fields at
6966the end of some of the subtables.
6967
6968The disassembler now emits a comment if a buffer appears to be a
6969ResourceTemplate, but cannot be disassembled as such because the EndTag
6970does
6971not appear at the very end of the buffer.
6972
6973AcpiExec - Added the "-t" command line option to enable the serialized
6974mode
6975of the AML interpreter.
6976
6977----------------------------------------
697831 August 2006. Summary of changes for version 20060831:
6979
69801) ACPI CA Core Subsystem:
6981
6982Miscellaneous fixes for the Table Manager:
6983- Correctly initialize internal common FADT for all 64-bit "X" fields
6984- Fixed a couple table mapping issues during table load
6985- Fixed a couple alignment issues for IA64
6986- Initialize input array to zero in AcpiInitializeTables
6987- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
6988AcpiGetTableByIndex
6989
6990Change for GPE support: when a "wake" GPE is received, all wake GPEs are
6991now
6992immediately disabled to prevent the waking GPE from firing again and to
6993prevent other wake GPEs from interrupting the wake process.
6994
6995Added the AcpiGpeCount global that tracks the number of processed GPEs,
6996to
6997be used for debugging systems with a large number of ACPI interrupts.
6998
6999Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
7000both the ACPICA headers and the disassembler.
7001
7002Example Code and Data Size: These are the sizes for the OS-independent
7003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7004debug version of the code includes the debug output trace mechanism and
7005has
7006a much larger code and data size.
7007
7008  Previous Release:
7009    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7010    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7011  Current Release:
7012    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7013    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7014
7015
70162) iASL Compiler/Disassembler and Tools:
7017
7018Disassembler support for the DMAR ACPI table.
7019
7020----------------------------------------
702123 August 2006. Summary of changes for version 20060823:
7022
70231) ACPI CA Core Subsystem:
7024
7025The Table Manager component has been completely redesigned and
7026reimplemented. The new design is much simpler, and reduces the overall
7027code
7028and data size of the kernel-resident ACPICA by approximately 5%. Also, it
7029is
7030now possible to obtain the ACPI tables very early during kernel
7031initialization, even before dynamic memory management is initialized.
7032(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7033
7034Obsolete ACPICA interfaces:
7035
7036- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
7037init
7038time).
7039- AcpiLoadTable: Not needed.
7040- AcpiUnloadTable: Not needed.
7041
7042New ACPICA interfaces:
7043
7044- AcpiInitializeTables: Must be called before the table manager can be
7045used.
7046- AcpiReallocateRootTable: Used to transfer the root table to dynamically
7047allocated memory after it becomes available.
7048- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
7049tables
7050in the RSDT/XSDT.
7051
7052Other ACPICA changes:
7053
7054- AcpiGetTableHeader returns the actual mapped table header, not a copy.
7055Use
7056AcpiOsUnmapMemory to free this mapping.
7057- AcpiGetTable returns the actual mapped table. The mapping is managed
7058internally and must not be deleted by the caller. Use of this interface
7059causes no additional dynamic memory allocation.
7060- AcpiFindRootPointer: Support for physical addressing has been
7061eliminated,
7062it appeared to be unused.
7063- The interface to AcpiOsMapMemory has changed to be consistent with the
7064other allocation interfaces.
7065- The interface to AcpiOsGetRootPointer has changed to eliminate
7066unnecessary
7067parameters.
7068- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
706964-
7070bit platforms. Was previously 64 bits on all platforms.
7071- The interface to the ACPI Global Lock acquire/release macros have
7072changed
7073slightly since ACPICA no longer keeps a local copy of the FACS with a
7074constructed pointer to the actual global lock.
7075
7076Porting to the new table manager:
7077
7078- AcpiInitializeTables: Must be called once, and can be called anytime
7079during the OS initialization process. It allows the host to specify an
7080area
7081of memory to be used to store the internal version of the RSDT/XSDT (root
7082table). This allows the host to access ACPI tables before memory
7083management
7084is initialized and running.
7085- AcpiReallocateRootTable: Can be called after memory management is
7086running
7087to copy the root table to a dynamically allocated array, freeing up the
7088scratch memory specified in the call to AcpiInitializeTables.
7089- AcpiSubsystemInitialize: This existing interface is independent of the
7090Table Manager, and does not have to be called before the Table Manager
7091can
7092be used, it only must be called before the rest of ACPICA can be used.
7093- ACPI Tables: Some changes have been made to the names and structure of
7094the
7095actbl.h and actbl1.h header files and may require changes to existing
7096code.
7097For example, bitfields have been completely removed because of their lack
7098of
7099portability across C compilers.
7100- Update interfaces to the Global Lock acquire/release macros if local
7101versions are used. (see acwin.h)
7102
7103Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7104
7105New files: tbfind.c
7106
7107Example Code and Data Size: These are the sizes for the OS-independent
7108acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7109debug version of the code includes the debug output trace mechanism and
7110has
7111a much larger code and data size.
7112
7113  Previous Release:
7114    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7115    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7116  Current Release:
7117    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7118    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7119
7120
71212) iASL Compiler/Disassembler and Tools:
7122
7123No changes for this release.
7124
7125----------------------------------------
712621 July 2006. Summary of changes for version 20060721:
7127
71281) ACPI CA Core Subsystem:
7129
7130The full source code for the ASL test suite used to validate the iASL
7131compiler and the ACPICA core subsystem is being released with the ACPICA
7132source for the first time. The source is contained in a separate package
7133and
7134consists of over 1100 files that exercise all ASL/AML operators. The
7135package
7136should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
7137Fiodor
7138Suietov)
7139
7140Completed a new design and implementation for support of the ACPI Global
7141Lock. On the OS side, the global lock is now treated as a standard AML
7142mutex. Previously, multiple OS threads could "acquire" the global lock
7143simultaneously. However, this could cause the BIOS to be starved out of
7144the
7145lock - especially in cases such as the Embedded Controller driver where
7146there is a tight coupling between the OS and the BIOS.
7147
7148Implemented an optimization for the ACPI Global Lock interrupt mechanism.
7149The Global Lock interrupt handler no longer queues the execution of a
7150separate thread to signal the global lock semaphore. Instead, the
7151semaphore
7152is signaled directly from the interrupt handler.
7153
7154Implemented support within the AML interpreter for package objects that
7155contain a larger AML length (package list length) than the package
7156element
7157count. In this case, the length of the package is truncated to match the
7158package element count. Some BIOS code apparently modifies the package
7159length
7160on the fly, and this change supports this behavior. Provides
7161compatibility
7162with the MS AML interpreter. (With assistance from Fiodor Suietov)
7163
7164Implemented a temporary fix for the BankValue parameter of a Bank Field
7165to
7166support all constant values, now including the Zero and One opcodes.
7167Evaluation of this parameter must eventually be converted to a full
7168TermArg
7169evaluation. A not-implemented error is now returned (temporarily) for
7170non-
7171constant values for this parameter.
7172
7173Fixed problem reports (Fiodor Suietov) integrated:
7174- Fix for premature object deletion after CopyObject on Operation Region
7175(BZ
7176350)
7177
7178Example Code and Data Size: These are the sizes for the OS-independent
7179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7180debug version of the code includes the debug output trace mechanism and
7181has
7182a much larger code and data size.
7183
7184  Previous Release:
7185    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7186    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7187  Current Release:
7188    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7189    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7190
7191
71922) iASL Compiler/Disassembler and Tools:
7193
7194No changes for this release.
7195
7196----------------------------------------
719707 July 2006. Summary of changes for version 20060707:
7198
71991) ACPI CA Core Subsystem:
7200
7201Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
7202that do not allow the initialization of address pointers within packed
7203structures - even though the hardware itself may support misaligned
7204transfers. Some of the debug data structures are packed by default to
7205minimize size.
7206
7207Added an error message for the case where AcpiOsGetThreadId() returns
7208zero.
7209A non-zero value is required by the core ACPICA code to ensure the proper
7210operation of AML mutexes and recursive control methods.
7211
7212The DSDT is now the only ACPI table that determines whether the AML
7213interpreter is in 32-bit or 64-bit mode. Not really a functional change,
7214but
7215the hooks for per-table 32/64 switching have been removed from the code.
7216A
7217clarification to the ACPI specification is forthcoming in ACPI 3.0B.
7218
7219Fixed a possible leak of an OwnerID in the error path of
7220AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
7221deletion to a single place in AcpiTbUninstallTable to correct possible
7222leaks
7223when using the AcpiTbDeleteTablesByType interface (with assistance from
7224Lance Ortiz.)
7225
7226Fixed a problem with Serialized control methods where the semaphore
7227associated with the method could be over-signaled after multiple method
7228invocations.
7229
7230Fixed two issues with the locking of the internal namespace data
7231structure.
7232Both the Unload() operator and AcpiUnloadTable interface now lock the
7233namespace during the namespace deletion associated with the table unload
7234(with assistance from Linn Crosetto.)
7235
7236Fixed problem reports (Valery Podrezov) integrated:
7237- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
7238
7239Fixed problem reports (Fiodor Suietov) integrated:
7240- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
7241- On Address Space handler deletion, needless deactivation call (BZ 374)
7242- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
7243375)
7244- Possible memory leak, Notify sub-objects of Processor, Power,
7245ThermalZone
7246(BZ 376)
7247- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
7248- Minimum Length of RSDT should be validated (BZ 379)
7249- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
7250Handler (BZ (380)
7251- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
7252loaded
7253(BZ 381)
7254
7255Example Code and Data Size: These are the sizes for the OS-independent
7256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7257debug version of the code includes the debug output trace mechanism and
7258has
7259a much larger code and data size.
7260
7261  Previous Release:
7262    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7263    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7264  Current Release:
7265    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7266    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7267
7268
72692) iASL Compiler/Disassembler and Tools:
7270
7271Fixed problem reports:
7272Compiler segfault when ASL contains a long (>1024) String declaration (BZ
7273436)
7274
7275----------------------------------------
727623 June 2006. Summary of changes for version 20060623:
7277
72781) ACPI CA Core Subsystem:
7279
7280Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
7281allows the type to be customized to the host OS for improved efficiency
7282(since a spinlock is usually a very small object.)
7283
7284Implemented support for "ignored" bits in the ACPI registers. According
7285to
7286the ACPI specification, these bits should be preserved when writing the
7287registers via a read/modify/write cycle. There are 3 bits preserved in
7288this
7289manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
7290
7291Implemented the initial deployment of new OSL mutex interfaces. Since
7292some
7293host operating systems have separate mutex and semaphore objects, this
7294feature was requested. The base code now uses mutexes (and the new mutex
7295interfaces) wherever a binary semaphore was used previously. However, for
7296the current release, the mutex interfaces are defined as macros to map
7297them
7298to the existing semaphore interfaces. Therefore, no OSL changes are
7299required
7300at this time. (See acpiosxf.h)
7301
7302Fixed several problems with the support for the control method SyncLevel
7303parameter. The SyncLevel now works according to the ACPI specification
7304and
7305in concert with the Mutex SyncLevel parameter, since the current
7306SyncLevel
7307is a property of the executing thread. Mutual exclusion for control
7308methods
7309is now implemented with a mutex instead of a semaphore.
7310
7311Fixed three instances of the use of the C shift operator in the bitfield
7312support code (exfldio.c) to avoid the use of a shift value larger than
7313the
7314target data width. The behavior of C compilers is undefined in this case
7315and
7316can cause unpredictable results, and therefore the case must be detected
7317and
7318avoided. (Fiodor Suietov)
7319
7320Added an info message whenever an SSDT or OEM table is loaded dynamically
7321via the Load() or LoadTable() ASL operators. This should improve
7322debugging
7323capability since it will show exactly what tables have been loaded
7324(beyond
7325the tables present in the RSDT/XSDT.)
7326
7327Example Code and Data Size: These are the sizes for the OS-independent
7328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7329debug version of the code includes the debug output trace mechanism and
7330has
7331a much larger code and data size.
7332
7333  Previous Release:
7334    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7335    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7336  Current Release:
7337    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7338    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7339
7340
73412) iASL Compiler/Disassembler and Tools:
7342
7343No changes for this release.
7344
7345----------------------------------------
734608 June 2006. Summary of changes for version 20060608:
7347
73481) ACPI CA Core Subsystem:
7349
7350Converted the locking mutex used for the ACPI hardware to a spinlock.
7351This
7352change should eliminate all problems caused by attempting to acquire a
7353semaphore at interrupt level, and it means that all ACPICA external
7354interfaces that directly access the ACPI hardware can be safely called
7355from
7356interrupt level. OSL code that implements the semaphore interfaces should
7357be
7358able to eliminate any workarounds for being called at interrupt level.
7359
7360Fixed a regression introduced in 20060526 where the ACPI device
7361initialization could be prematurely aborted with an AE_NOT_FOUND if a
7362device
7363did not have an optional _INI method.
7364
7365Fixed an IndexField issue where a write to the Data Register should be
7366limited in size to the AccessSize (width) of the IndexField itself. (BZ
7367433,
7368Fiodor Suietov)
7369
7370Fixed problem reports (Valery Podrezov) integrated:
7371- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
7372
7373Fixed problem reports (Fiodor Suietov) integrated:
7374- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
7375
7376Removed four global mutexes that were obsolete and were no longer being
7377used.
7378
7379Example Code and Data Size: These are the sizes for the OS-independent
7380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7381debug version of the code includes the debug output trace mechanism and
7382has
7383a much larger code and data size.
7384
7385  Previous Release:
7386    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7387    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7388  Current Release:
7389    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7390    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7391
7392
73932) iASL Compiler/Disassembler and Tools:
7394
7395Fixed a fault when using -g option (get tables from registry) on Windows
7396machines.
7397
7398Fixed problem reports integrated:
7399- Generate error if CreateField NumBits parameter is zero. (BZ 405)
7400- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
7401Suietov)
7402- Global table revision override (-r) is ignored (BZ 413)
7403
7404----------------------------------------
740526 May 2006. Summary of changes for version 20060526:
7406
74071) ACPI CA Core Subsystem:
7408
7409Restructured, flattened, and simplified the internal interfaces for
7410namespace object evaluation - resulting in smaller code, less CPU stack
7411use,
7412and fewer interfaces. (With assistance from Mikhail Kouzmich)
7413
7414Fixed a problem with the CopyObject operator where the first parameter
7415was
7416not typed correctly for the parser, interpreter, compiler, and
7417disassembler.
7418Caused various errors and unexpected behavior.
7419
7420Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
7421produced incorrect results with some C compilers. Since the behavior of C
7422compilers when the shift value is larger than the datatype width is
7423apparently not well defined, the interpreter now detects this condition
7424and
7425simply returns zero as expected in all such cases. (BZ 395)
7426
7427Fixed problem reports (Valery Podrezov) integrated:
7428- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
7429- Allow interpreter to handle nested method declarations (BZ 5361)
7430
7431Fixed problem reports (Fiodor Suietov) integrated:
7432- AcpiTerminate doesn't free debug memory allocation list objects (BZ
7433355)
7434- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
7435356)
7436- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
7437- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
7438- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
7439- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
7440- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
7441- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
7442- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
7443365)
7444- Status of the Global Initialization Handler call not used (BZ 366)
7445- Incorrect object parameter to Global Initialization Handler (BZ 367)
7446
7447Example Code and Data Size: These are the sizes for the OS-independent
7448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7449debug version of the code includes the debug output trace mechanism and
7450has
7451a much larger code and data size.
7452
7453  Previous Release:
7454    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7455    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7456  Current Release:
7457    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7458    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7459
7460
74612) iASL Compiler/Disassembler and Tools:
7462
7463Modified the parser to allow the names IO, DMA, and IRQ to be used as
7464namespace identifiers with no collision with existing resource descriptor
7465macro names. This provides compatibility with other ASL compilers and is
7466most useful for disassembly/recompilation of existing tables without
7467parse
7468errors. (With assistance from Thomas Renninger)
7469
7470Disassembler: fixed an incorrect disassembly problem with the
7471DataTableRegion and CopyObject operators. Fixed a possible fault during
7472disassembly of some Alias operators.
7473
7474----------------------------------------
747512 May 2006. Summary of changes for version 20060512:
7476
74771) ACPI CA Core Subsystem:
7478
7479Replaced the AcpiOsQueueForExecution interface with a new interface named
7480AcpiOsExecute. The major difference is that the new interface does not
7481have
7482a Priority parameter, this appeared to be useless and has been replaced
7483by
7484a
7485Type parameter. The Type tells the host what type of execution is being
7486requested, such as global lock handler, notify handler, GPE handler, etc.
7487This allows the host to queue and execute the request as appropriate for
7488the
7489request type, possibly using different work queues and different
7490priorities
7491for the various request types. This enables fixes for multithreading
7492deadlock problems such as BZ #5534, and will require changes to all
7493existing
7494OS interface layers. (Alexey Starikovskiy and Bob Moore)
7495
7496Fixed a possible memory leak associated with the support for the so-
7497called
7498"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
7499Suietov)
7500
7501Fixed a problem with the Load() operator where a table load from an
7502operation region could overwrite an internal table buffer by up to 7
7503bytes
7504and cause alignment faults on IPF systems. (With assistance from Luming
7505Yu)
7506
7507Example Code and Data Size: These are the sizes for the OS-independent
7508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7509debug version of the code includes the debug output trace mechanism and
7510has
7511a much larger code and data size.
7512
7513  Previous Release:
7514    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7515    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7516  Current Release:
7517    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7518    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7519
7520
7521
75222) iASL Compiler/Disassembler and Tools:
7523
7524Disassembler: Implemented support to cross reference the internal
7525namespace
7526and automatically generate ASL External() statements for symbols not
7527defined
7528within the current table being disassembled. This will simplify the
7529disassembly and recompilation of interdependent tables such as SSDTs
7530since
7531these statements will no longer have to be added manually.
7532
7533Disassembler: Implemented experimental support to automatically detect
7534invocations of external control methods and generate appropriate
7535External()
7536statements. This is problematic because the AML cannot be correctly
7537parsed
7538until the number of arguments for each control method is known.
7539Currently,
7540standalone method invocations and invocations as the source operand of a
7541Store() statement are supported.
7542
7543Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
7544LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
7545LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
7546more readable and likely closer to the original ASL source.
7547
7548----------------------------------------
754921 April 2006. Summary of changes for version 20060421:
7550
75511) ACPI CA Core Subsystem:
7552
7553Removed a device initialization optimization introduced in 20051216 where
7554the _STA method was not run unless an _INI was also present for the same
7555device. This optimization could cause problems because it could allow
7556_INI
7557methods to be run within a not-present device subtree. (If a not-present
7558device had no _INI, _STA would not be run, the not-present status would
7559not
7560be discovered, and the children of the device would be incorrectly
7561traversed.)
7562
7563Implemented a new _STA optimization where namespace subtrees that do not
7564contain _INI are identified and ignored during device initialization.
7565Selectively running _STA can significantly improve boot time on large
7566machines (with assistance from Len Brown.)
7567
7568Implemented support for the device initialization case where the returned
7569_STA flags indicate a device not-present but functioning. In this case,
7570_INI
7571is not run, but the device children are examined for presence, as per the
7572ACPI specification.
7573
7574Implemented an additional change to the IndexField support in order to
7575conform to MS behavior. The value written to the Index Register is not
7576simply a byte offset, it is a byte offset in units of the access width of
7577the parent Index Field. (Fiodor Suietov)
7578
7579Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
7580interface is called during the creation of all AML operation regions, and
7581allows the host OS to exert control over what addresses it will allow the
7582AML code to access. Operation Regions whose addresses are disallowed will
7583cause a runtime exception when they are actually accessed (will not
7584affect
7585or abort table loading.) See oswinxf or osunixxf for an example
7586implementation.
7587
7588Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
7589interface allows the host OS to match the various "optional"
7590interface/behavior strings for the _OSI predefined control method as
7591appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
7592for an example implementation.
7593
7594Restructured and corrected various problems in the exception handling
7595code
7596paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
7597(with assistance from Takayoshi Kochi.)
7598
7599Modified the Linux source converter to ignore quoted string literals
7600while
7601converting identifiers from mixed to lower case. This will correct
7602problems
7603with the disassembler and other areas where such strings must not be
7604modified.
7605
7606The ACPI_FUNCTION_* macros no longer require quotes around the function
7607name. This allows the Linux source converter to convert the names, now
7608that
7609the converter ignores quoted strings.
7610
7611Example Code and Data Size: These are the sizes for the OS-independent
7612acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7613debug version of the code includes the debug output trace mechanism and
7614has
7615a much larger code and data size.
7616
7617  Previous Release:
7618
7619    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7620    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7621  Current Release:
7622    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7623    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7624
7625
76262) iASL Compiler/Disassembler and Tools:
7627
7628Implemented 3 new warnings for iASL, and implemented multiple warning
7629levels
7630(w2 flag).
7631
76321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
7633not
7634WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
7635check for the possible timeout, a warning is issued.
7636
76372) Useless operators: If an ASL operator does not specify an optional
7638target
7639operand and it also does not use the function return value from the
7640operator, a warning is issued since the operator effectively does
7641nothing.
7642
76433) Unreferenced objects: If a namespace object is created, but never
7644referenced, a warning is issued. This is a warning level 2 since there
7645are
7646cases where this is ok, such as when a secondary table is loaded that
7647uses
7648the unreferenced objects. Even so, care is taken to only flag objects
7649that
7650don't look like they will ever be used. For example, the reserved methods
7651(starting with an underscore) are usually not referenced because it is
7652expected that the OS will invoke them.
7653
7654----------------------------------------
765531 March 2006. Summary of changes for version 20060331:
7656
76571) ACPI CA Core Subsystem:
7658
7659Implemented header file support for the following additional ACPI tables:
7660ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
7661support,
7662all current and known ACPI tables are now defined in the ACPICA headers
7663and
7664are available for use by device drivers and other software.
7665
7666Implemented support to allow tables that contain ACPI names with invalid
7667characters to be loaded. Previously, this would cause the table load to
7668fail, but since there are several known cases of such tables on existing
7669machines, this change was made to enable ACPI support for them. Also,
7670this
7671matches the behavior of the Microsoft ACPI implementation.
7672
7673Fixed a couple regressions introduced during the memory optimization in
7674the
767520060317 release. The namespace node definition required additional
7676reorganization and an internal datatype that had been changed to 8-bit
7677was
7678restored to 32-bit. (Valery Podrezov)
7679
7680Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
7681could be passed through to AcpiOsReleaseObject which is unexpected. Such
7682null pointers are now trapped and ignored, matching the behavior of the
7683previous implementation before the deployment of AcpiOsReleaseObject.
7684(Valery Podrezov, Fiodor Suietov)
7685
7686Fixed a memory mapping leak during the deletion of a SystemMemory
7687operation
7688region where a cached memory mapping was not deleted. This became a
7689noticeable problem for operation regions that are defined within
7690frequently
7691used control methods. (Dana Meyers)
7692
7693Reorganized the ACPI table header files into two main files: one for the
7694ACPI tables consumed by the ACPICA core, and another for the
7695miscellaneous
7696ACPI tables that are consumed by the drivers and other software. The
7697various
7698FADT definitions were merged into one common section and three different
7699tables (ACPI 1.0, 1.0+, and 2.0)
7700
7701Example Code and Data Size: These are the sizes for the OS-independent
7702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7703debug version of the code includes the debug output trace mechanism and
7704has
7705a much larger code and data size.
7706
7707  Previous 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  Current Release:
7711    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7712    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7713
7714
77152) iASL Compiler/Disassembler and Tools:
7716
7717Disassembler: Implemented support to decode and format all non-AML ACPI
7718tables (tables other than DSDTs and SSDTs.) This includes the new tables
7719added to the ACPICA headers, therefore all current and known ACPI tables
7720are
7721supported.
7722
7723Disassembler: The change to allow ACPI names with invalid characters also
7724enables the disassembly of such tables. Invalid characters within names
7725are
7726changed to '*' to make the name printable; the iASL compiler will still
7727generate an error for such names, however, since this is an invalid ACPI
7728character.
7729
7730Implemented an option for AcpiXtract (-a) to extract all tables found in
7731the
7732input file. The default invocation extracts only the DSDTs and SSDTs.
7733
7734Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
7735makefile for the AcpiXtract utility.
7736
7737----------------------------------------
773817 March 2006. Summary of changes for version 20060317:
7739
77401) ACPI CA Core Subsystem:
7741
7742Implemented the use of a cache object for all internal namespace nodes.
7743Since there are about 1000 static nodes in a typical system, this will
7744decrease memory use for cache implementations that minimize per-
7745allocation
7746overhead (such as a slab allocator.)
7747
7748Removed the reference count mechanism for internal namespace nodes, since
7749it
7750was deemed unnecessary. This reduces the size of each namespace node by
7751about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
7752case,
7753and 32 bytes for the 64-bit case.
7754
7755Optimized several internal data structures to reduce object size on 64-
7756bit
7757platforms by packing data within the 64-bit alignment. This includes the
7758frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
7759instances corresponding to the namespace objects.
7760
7761Added two new strings for the predefined _OSI method: "Windows 2001.1
7762SP1"
7763and "Windows 2006".
7764
7765Split the allocation tracking mechanism out to a separate file, from
7766utalloc.c to uttrack.c. This mechanism appears to be only useful for
7767application-level code. Kernels may wish to not include uttrack.c in
7768distributions.
7769
7770Removed all remnants of the obsolete ACPI_REPORT_* macros and the
7771associated
7772code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
7773macros.)
7774
7775Code and Data Size: These are the sizes for the acpica.lib produced by
7776the
7777Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7778ACPI
7779driver or OSPM code. The debug version of the code includes the debug
7780output
7781trace mechanism and has a much larger code and data size. Note that these
7782values will vary depending on the efficiency of the compiler and the
7783compiler options used during generation.
7784
7785  Previous Release:
7786    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7787    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7788  Current Release:
7789    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
7790    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
7791
7792
77932) iASL Compiler/Disassembler and Tools:
7794
7795Implemented an ANSI C version of the acpixtract utility. This version
7796will
7797automatically extract the DSDT and all SSDTs from the input acpidump text
7798file and dump the binary output to separate files. It can also display a
7799summary of the input file including the headers for each table found and
7800will extract any single ACPI table, with any signature. (See
7801source/tools/acpixtract)
7802
7803----------------------------------------
780410 March 2006. Summary of changes for version 20060310:
7805
78061) ACPI CA Core Subsystem:
7807
7808Tagged all external interfaces to the subsystem with the new
7809ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
7810assist
7811kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
7812macro. The default definition is NULL.
7813
7814Added the ACPI_THREAD_ID type for the return value from
7815AcpiOsGetThreadId.
7816This allows the host to define this as necessary to simplify kernel
7817integration. The default definition is ACPI_NATIVE_UINT.
7818
7819Fixed two interpreter problems related to error processing, the deletion
7820of
7821objects, and placing invalid pointers onto the internal operator result
7822stack. BZ 6028, 6151 (Valery Podrezov)
7823
7824Increased the reference count threshold where a warning is emitted for
7825large
7826reference counts in order to eliminate unnecessary warnings on systems
7827with
7828large namespaces (especially 64-bit.) Increased the value from 0x400 to
78290x800.
7830
7831Due to universal disagreement as to the meaning of the 'c' in the
7832calloc()
7833function, the ACPI_MEM_CALLOCATE macro has been renamed to
7834ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
7835ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
7836ACPI_FREE.
7837
7838Code and Data Size: These are the sizes for the acpica.lib produced by
7839the
7840Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7841ACPI
7842driver or OSPM code. The debug version of the code includes the debug
7843output
7844trace mechanism and has a much larger code and data size. Note that these
7845values will vary depending on the efficiency of the compiler and the
7846compiler options used during generation.
7847
7848  Previous Release:
7849    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
7850    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
7851  Current Release:
7852    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7853    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7854
7855
78562) iASL Compiler/Disassembler:
7857
7858Disassembler: implemented support for symbolic resource descriptor
7859references. If a CreateXxxxField operator references a fixed offset
7860within
7861a
7862resource descriptor, a name is assigned to the descriptor and the offset
7863is
7864translated to the appropriate resource tag and pathname. The addition of
7865this support brings the disassembled code very close to the original ASL
7866source code and helps eliminate run-time errors when the disassembled
7867code
7868is modified (and recompiled) in such a way as to invalidate the original
7869fixed offsets.
7870
7871Implemented support for a Descriptor Name as the last parameter to the
7872ASL
7873Register() macro. This parameter was inadvertently left out of the ACPI
7874specification, and will be added for ACPI 3.0b.
7875
7876Fixed a problem where the use of the "_OSI" string (versus the full path
7877"\_OSI") caused an internal compiler error. ("No back ptr to op")
7878
7879Fixed a problem with the error message that occurs when an invalid string
7880is
7881used for a _HID object (such as one with an embedded asterisk:
7882"*PNP010A".)
7883The correct message is now displayed.
7884
7885----------------------------------------
788617 February 2006. Summary of changes for version 20060217:
7887
78881) ACPI CA Core Subsystem:
7889
7890Implemented a change to the IndexField support to match the behavior of
7891the
7892Microsoft AML interpreter. The value written to the Index register is now
7893a
7894byte offset, no longer an index based upon the width of the Data
7895register.
7896This should fix IndexField problems seen on some machines where the Data
7897register is not exactly one byte wide. The ACPI specification will be
7898clarified on this point.
7899
7900Fixed a problem where several resource descriptor types could overrun the
7901internal descriptor buffer due to size miscalculation: VendorShort,
7902VendorLong, and Interrupt. This was noticed on IA64 machines, but could
7903affect all platforms.
7904
7905Fixed a problem where individual resource descriptors were misaligned
7906within
7907the internal buffer, causing alignment faults on IA64 platforms.
7908
7909Code and Data Size: These are the sizes for the acpica.lib produced by
7910the
7911Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7912ACPI
7913driver or OSPM code. The debug version of the code includes the debug
7914output
7915trace mechanism and has a much larger code and data size. Note that these
7916values will vary depending on the efficiency of the compiler and the
7917compiler options used during generation.
7918
7919  Previous Release:
7920    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7921    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
7922  Current Release:
7923    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
7924    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
7925
7926
79272) iASL Compiler/Disassembler:
7928
7929Implemented support for new reserved names: _WDG and _WED are Microsoft
7930extensions for Windows Instrumentation Management, _TDL is a new ACPI-
7931defined method (Throttling Depth Limit.)
7932
7933Fixed a problem where a zero-length VendorShort or VendorLong resource
7934descriptor was incorrectly emitted as a descriptor of length one.
7935
7936----------------------------------------
793710 February 2006. Summary of changes for version 20060210:
7938
79391) ACPI CA Core Subsystem:
7940
7941Removed a couple of extraneous ACPI_ERROR messages that appeared during
7942normal execution. These became apparent after the conversion from
7943ACPI_DEBUG_PRINT.
7944
7945Fixed a problem where the CreateField operator could hang if the BitIndex
7946or
7947NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
7948
7949Fixed a problem where a DeRefOf operation on a buffer object incorrectly
7950failed with an exception. This also fixes a couple of related RefOf and
7951DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
7952
7953Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
7954of
7955AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
7956BZ
79575480)
7958
7959Implemented a memory cleanup at the end of the execution of each
7960iteration
7961of an AML While() loop, preventing the accumulation of outstanding
7962objects.
7963(Valery Podrezov, BZ 5427)
7964
7965Eliminated a chunk of duplicate code in the object resolution code.
7966(Valery
7967Podrezov, BZ 5336)
7968
7969Fixed several warnings during the 64-bit code generation.
7970
7971The AcpiSrc source code conversion tool now inserts one line of
7972whitespace
7973after an if() statement that is followed immediately by a comment,
7974improving
7975readability of the Linux code.
7976
7977Code and Data Size: The current and previous library sizes for the core
7978subsystem are shown below. These are the code and data sizes for the
7979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
7980These
7981values do not include any ACPI driver or OSPM code. The debug version of
7982the
7983code includes the debug output trace mechanism and has a much larger code
7984and data size. Note that these values will vary depending on the
7985efficiency
7986of the compiler and the compiler options used during generation.
7987
7988  Previous Release:
7989    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
7990    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
7991  Current Release:
7992    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7993    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
7994
7995
79962) iASL Compiler/Disassembler:
7997
7998Fixed a problem with the disassembly of a BankField operator with a
7999complex
8000expression for the BankValue parameter.
8001
8002----------------------------------------
800327 January 2006. Summary of changes for version 20060127:
8004
80051) ACPI CA Core Subsystem:
8006
8007Implemented support in the Resource Manager to allow unresolved
8008namestring
8009references within resource package objects for the _PRT method. This
8010support
8011is in addition to the previously implemented unresolved reference support
8012within the AML parser. If the interpreter slack mode is enabled, these
8013unresolved references will be passed through to the caller as a NULL
8014package
8015entry.
8016
8017Implemented and deployed new macros and functions for error and warning
8018messages across the subsystem. These macros are simpler and generate less
8019code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
8020ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
8021macros remain defined to allow ACPI drivers time to migrate to the new
8022macros.
8023
8024Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
8025the
8026Acquire/Release Lock OSL interfaces.
8027
8028Fixed a problem where Alias ASL operators are sometimes not correctly
8029resolved, in both the interpreter and the iASL compiler.
8030
8031Fixed several problems with the implementation of the
8032ConcatenateResTemplate
8033ASL operator. As per the ACPI specification, zero length buffers are now
8034treated as a single EndTag. One-length buffers always cause a fatal
8035exception. Non-zero length buffers that do not end with a full 2-byte
8036EndTag
8037cause a fatal exception.
8038
8039Fixed a possible structure overwrite in the AcpiGetObjectInfo external
8040interface. (With assistance from Thomas Renninger)
8041
8042Code and Data Size: The current and previous library sizes for the core
8043subsystem are shown below. These are the code and data sizes for the
8044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8045These
8046values do not include any ACPI driver or OSPM code. The debug version of
8047the
8048code includes the debug output trace mechanism and has a much larger code
8049and data size. Note that these values will vary depending on the
8050efficiency
8051of the compiler and the compiler options used during generation.
8052
8053  Previous Release:
8054    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8055    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8056  Current Release:
8057    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8058    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8059
8060
80612) iASL Compiler/Disassembler:
8062
8063Fixed an internal error that was generated for any forward references to
8064ASL
8065Alias objects.
8066
8067----------------------------------------
806813 January 2006. Summary of changes for version 20060113:
8069
80701) ACPI CA Core Subsystem:
8071
8072Added 2006 copyright to all module headers and signons. This affects
8073virtually every file in the ACPICA core subsystem, iASL compiler, and the
8074utilities.
8075
8076Enhanced the ACPICA error reporting in order to simplify user migration
8077to
8078the non-debug version of ACPICA. Replaced all instances of the
8079ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
8080debug
8081levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
8082respectively. This preserves all error and warning messages in the non-
8083debug
8084version of the ACPICA code (this has been referred to as the "debug lite"
8085option.) Over 200 cases were converted to create a total of over 380
8086error/warning messages across the ACPICA code. This increases the code
8087and
8088data size of the default non-debug version of the code somewhat (about
808913K),
8090but all error/warning reporting may be disabled if desired (and code
8091eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
8092configuration option. The size of the debug version of ACPICA remains
8093about
8094the same.
8095
8096Fixed a memory leak within the AML Debugger "Set" command. One object was
8097not properly deleted for every successful invocation of the command.
8098
8099Code and Data Size: The current and previous library sizes for the core
8100subsystem are shown below. These are the code and data sizes for the
8101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8102These
8103values do not include any ACPI driver or OSPM code. The debug version of
8104the
8105code includes the debug output trace mechanism and has a much larger code
8106and data size. Note that these values will vary depending on the
8107efficiency
8108of the compiler and the compiler options used during generation.
8109
8110  Previous Release:
8111    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8112    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8113  Current Release:
8114    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8115    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8116
8117
81182) iASL Compiler/Disassembler:
8119
8120The compiler now officially supports the ACPI 3.0a specification that was
8121released on December 30, 2005. (Specification is available at
8122www.acpi.info)
8123
8124----------------------------------------
812516 December 2005. Summary of changes for version 20051216:
8126
81271) ACPI CA Core Subsystem:
8128
8129Implemented optional support to allow unresolved names within ASL Package
8130objects. A null object is inserted in the package when a named reference
8131cannot be located in the current namespace. Enabled via the interpreter
8132slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
8133machines
8134that contain such code.
8135
8136Implemented an optimization to the initialization sequence that can
8137improve
8138boot time. During ACPI device initialization, the _STA method is now run
8139if
8140and only if the _INI method exists. The _STA method is used to determine
8141if
8142the device is present; An _INI can only be run if _STA returns present,
8143but
8144it is a waste of time to run the _STA method if the _INI does not exist.
8145(Prototype and assistance from Dong Wei)
8146
8147Implemented use of the C99 uintptr_t for the pointer casting macros if it
8148is
8149available in the current compiler. Otherwise, the default (void *) cast
8150is
8151used as before.
8152
8153Fixed some possible memory leaks found within the execution path of the
8154Break, Continue, If, and CreateField operators. (Valery Podrezov)
8155
8156Fixed a problem introduced in the 20051202 release where an exception is
8157generated during method execution if a control method attempts to declare
8158another method.
8159
8160Moved resource descriptor string constants that are used by both the AML
8161disassembler and AML debugger to the common utilities directory so that
8162these components are independent.
8163
8164Implemented support in the AcpiExec utility (-e switch) to globally
8165ignore
8166exceptions during control method execution (method is not aborted.)
8167
8168Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
8169generation.
8170
8171Code and Data Size: The current and previous library sizes for the core
8172subsystem are shown below. These are the code and data sizes for the
8173acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8174These
8175values do not include any ACPI driver or OSPM code. The debug version of
8176the
8177code includes the debug output trace mechanism and has a much larger code
8178and data size. Note that these values will vary depending on the
8179efficiency
8180of the compiler and the compiler options used during generation.
8181
8182  Previous Release:
8183    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8184    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8185  Current Release:
8186    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8187    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8188
8189
81902) iASL Compiler/Disassembler:
8191
8192Fixed a problem where a CPU stack overflow fault could occur if a
8193recursive
8194method call was made from within a Return statement.
8195
8196----------------------------------------
819702 December 2005. Summary of changes for version 20051202:
8198
81991) ACPI CA Core Subsystem:
8200
8201Modified the parsing of control methods to no longer create namespace
8202objects during the first pass of the parse. Objects are now created only
8203during the execute phase, at the moment the namespace creation operator
8204is
8205encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
8206This
8207should eliminate ALREADY_EXISTS exceptions seen on some machines where
8208reentrant control methods are protected by an AML mutex. The mutex will
8209now
8210correctly block multiple threads from attempting to create the same
8211object
8212more than once.
8213
8214Increased the number of available Owner Ids for namespace object tracking
8215from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
8216on
8217some machines with a large number of ACPI tables (either static or
8218dynamic).
8219
8220Fixed a problem with the AcpiExec utility where a fault could occur when
8221the
8222-b switch (batch mode) is used.
8223
8224Enhanced the namespace dump routine to output the owner ID for each
8225namespace object.
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.3K Code, 12.3K Data,  88.6K 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.2K Code, 67.4K Data, 230.6K Total
8244
8245
82462) iASL Compiler/Disassembler:
8247
8248Fixed a parse error during compilation of certain Switch/Case constructs.
8249To
8250simplify the parse, the grammar now allows for multiple Default
8251statements
8252and this error is now detected and flagged during the analysis phase.
8253
8254Disassembler: The disassembly now includes the contents of the original
8255table header within a comment at the start of the file. This includes the
8256name and version of the original ASL compiler.
8257
8258----------------------------------------
825917 November 2005. Summary of changes for version 20051117:
8260
82611) ACPI CA Core Subsystem:
8262
8263Fixed a problem in the AML parser where the method thread count could be
8264decremented below zero if any errors occurred during the method parse
8265phase.
8266This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
8267machines.
8268This also fixed a related regression with the mechanism that detects and
8269corrects methods that cannot properly handle reentrancy (related to the
8270deployment of the new OwnerId mechanism.)
8271
8272Eliminated the pre-parsing of control methods (to detect errors) during
8273table load. Related to the problem above, this was causing unwind issues
8274if
8275any errors occurred during the parse, and it seemed to be overkill. A
8276table
8277load should not be aborted if there are problems with any single control
8278method, thus rendering this feature rather pointless.
8279
8280Fixed a problem with the new table-driven resource manager where an
8281internal
8282buffer overflow could occur for small resource templates.
8283
8284Implemented a new external interface, AcpiGetVendorResource. This
8285interface
8286will find and return a vendor-defined resource descriptor within a _CRS
8287or
8288_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
8289Helgaas.
8290
8291Removed the length limit (200) on string objects as per the upcoming ACPI
82923.0A specification. This affects the following areas of the interpreter:
82931)
8294any implicit conversion of a Buffer to a String, 2) a String object
8295result
8296of the ASL Concatentate operator, 3) the String object result of the ASL
8297ToString operator.
8298
8299Fixed a problem in the Windows OS interface layer (OSL) where a
8300WAIT_FOREVER
8301on a semaphore object would incorrectly timeout. This allows the
8302multithreading features of the AcpiExec utility to work properly under
8303Windows.
8304
8305Updated the Linux makefiles for the iASL compiler and AcpiExec to include
8306the recently added file named "utresrc.c".
8307
8308Code and Data Size: The current and previous library sizes for the core
8309subsystem are shown below. These are the code and data sizes for the
8310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8311These
8312values do not include any ACPI driver or OSPM code. The debug version of
8313the
8314code includes the debug output trace mechanism and has a much larger code
8315and data size. Note that these values will vary depending on the
8316efficiency
8317of the compiler and the compiler options used during generation.
8318
8319  Previous Release:
8320    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8321    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8322  Current Release:
8323    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8324    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8325
8326
83272) iASL Compiler/Disassembler:
8328
8329Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
8330specification. For the iASL compiler, this means that string literals
8331within
8332the source ASL can be of any length.
8333
8334Enhanced the listing output to dump the AML code for resource descriptors
8335immediately after the ASL code for each descriptor, instead of in a block
8336at
8337the end of the entire resource template.
8338
8339Enhanced the compiler debug output to dump the entire original parse tree
8340constructed during the parse phase, before any transforms are applied to
8341the
8342tree. The transformed tree is dumped also.
8343
8344----------------------------------------
834502 November 2005. Summary of changes for version 20051102:
8346
83471) ACPI CA Core Subsystem:
8348
8349Modified the subsystem initialization sequence to improve GPE support.
8350The
8351GPE initialization has been split into two parts in order to defer
8352execution
8353of the _PRW methods (Power Resources for Wake) until after the hardware
8354is
8355fully initialized and the SCI handler is installed. This allows the _PRW
8356methods to access fields protected by the Global Lock. This will fix
8357systems
8358where a NO_GLOBAL_LOCK exception has been seen during initialization.
8359
8360Converted the ACPI internal object disassemble and display code within
8361the
8362AML debugger to fully table-driven operation, reducing code size and
8363increasing maintainability.
8364
8365Fixed a regression with the ConcatenateResTemplate() ASL operator
8366introduced
8367in the 20051021 release.
8368
8369Implemented support for "local" internal ACPI object types within the
8370debugger "Object" command and the AcpiWalkNamespace external interfaces.
8371These local types include RegionFields, BankFields, IndexFields, Alias,
8372and
8373reference objects.
8374
8375Moved common AML resource handling code into a new file, "utresrc.c".
8376This
8377code is shared by both the Resource Manager and the AML Debugger.
8378
8379Code and Data Size: The current and previous library sizes for the core
8380subsystem are shown below. These are the code and data sizes for the
8381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8382These
8383values do not include any ACPI driver or OSPM code. The debug version of
8384the
8385code includes the debug output trace mechanism and has a much larger code
8386and data size. Note that these values will vary depending on the
8387efficiency
8388of the compiler and the compiler options used during generation.
8389
8390  Previous Release:
8391    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8392    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8393  Current Release:
8394    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8395    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8396
8397
83982) iASL Compiler/Disassembler:
8399
8400Fixed a problem with very large initializer lists (more than 4000
8401elements)
8402for both Buffer and Package objects where the parse stack could overflow.
8403
8404Enhanced the pre-compile source code scan for non-ASCII characters to
8405ignore
8406characters within comment fields. The scan is now always performed and is
8407no
8408longer optional, detecting invalid characters within a source file
8409immediately rather than during the parse phase or later.
8410
8411Enhanced the ASL grammar definition to force early reductions on all
8412list-
8413style grammar elements so that the overall parse stack usage is greatly
8414reduced. This should improve performance and reduce the possibility of
8415parse
8416stack overflow.
8417
8418Eliminated all reduce/reduce conflicts in the iASL parser generation.
8419Also,
8420with the addition of a %expected statement, the compiler generates from
8421source with no warnings.
8422
8423Fixed a possible segment fault in the disassembler if the input filename
8424does not contain a "dot" extension (Thomas Renninger).
8425
8426----------------------------------------
842721 October 2005. Summary of changes for version 20051021:
8428
84291) ACPI CA Core Subsystem:
8430
8431Implemented support for the EM64T and other x86-64 processors. This
8432essentially entails recognizing that these processors support non-aligned
8433memory transfers. Previously, all 64-bit processors were assumed to lack
8434hardware support for non-aligned transfers.
8435
8436Completed conversion of the Resource Manager to nearly full table-driven
8437operation. Specifically, the resource conversion code (convert AML to
8438internal format and the reverse) and the debug code to dump internal
8439resource descriptors are fully table-driven, reducing code and data size
8440and
8441improving maintainability.
8442
8443The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
8444word
8445on 64-bit processors instead of a fixed 32-bit word. (With assistance
8446from
8447Alexey Starikovskiy)
8448
8449Implemented support within the resource conversion code for the Type-
8450Specific byte within the various ACPI 3.0 *WordSpace macros.
8451
8452Fixed some issues within the resource conversion code for the type-
8453specific
8454flags for both Memory and I/O address resource descriptors. For Memory,
8455implemented support for the MTP and TTP flags. For I/O, split the TRS and
8456TTP flags into two separate fields.
8457
8458Code and Data Size: The current and previous library sizes for the core
8459subsystem are shown below. These are the code and data sizes for the
8460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8461These
8462values do not include any ACPI driver or OSPM code. The debug version of
8463the
8464code includes the debug output trace mechanism and has a much larger code
8465and data size. Note that these values will vary depending on the
8466efficiency
8467of the compiler and the compiler options used during generation.
8468
8469  Previous Release:
8470    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8471    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8472  Current Release:
8473    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8474    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8475
8476
8477
84782) iASL Compiler/Disassembler:
8479
8480Relaxed a compiler restriction that disallowed a ResourceIndex byte if
8481the
8482corresponding ResourceSource string was not also present in a resource
8483descriptor declaration. This restriction caused problems with existing
8484AML/ASL code that includes the Index byte without the string. When such
8485AML
8486was disassembled, it could not be compiled without modification. Further,
8487the modified code created a resource template with a different size than
8488the
8489original, breaking code that used fixed offsets into the resource
8490template
8491buffer.
8492
8493Removed a recent feature of the disassembler to ignore a lone
8494ResourceIndex
8495byte. This byte is now emitted if present so that the exact AML can be
8496reproduced when the disassembled code is recompiled.
8497
8498Improved comments and text alignment for the resource descriptor code
8499emitted by the disassembler.
8500
8501Implemented disassembler support for the ACPI 3.0 AccessSize field within
8502a
8503Register() resource descriptor.
8504
8505----------------------------------------
850630 September 2005. Summary of changes for version 20050930:
8507
85081) ACPI CA Core Subsystem:
8509
8510Completed a major overhaul of the Resource Manager code - specifically,
8511optimizations in the area of the AML/internal resource conversion code.
8512The
8513code has been optimized to simplify and eliminate duplicated code, CPU
8514stack
8515use has been decreased by optimizing function parameters and local
8516variables, and naming conventions across the manager have been
8517standardized
8518for clarity and ease of maintenance (this includes function, parameter,
8519variable, and struct/typedef names.) The update may force changes in some
8520driver code, depending on how resources are handled by the host OS.
8521
8522All Resource Manager dispatch and information tables have been moved to a
8523single location for clarity and ease of maintenance. One new file was
8524created, named "rsinfo.c".
8525
8526The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
8527guarantee that the argument is not evaluated twice, making them less
8528prone
8529to macro side-effects. However, since there exists the possibility of
8530additional stack use if a particular compiler cannot optimize them (such
8531as
8532in the debug generation case), the original macros are optionally
8533available.
8534Note that some invocations of the return_VALUE macro may now cause size
8535mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
8536to
8537eliminate these. (From Randy Dunlap)
8538
8539Implemented a new mechanism to enable debug tracing for individual
8540control
8541methods. A new external interface, AcpiDebugTrace, is provided to enable
8542this mechanism. The intent is to allow the host OS to easily enable and
8543disable tracing for problematic control methods. This interface can be
8544easily exposed to a user or debugger interface if desired. See the file
8545psxface.c for details.
8546
8547AcpiUtCallocate will now return a valid pointer if a length of zero is
8548specified - a length of one is used and a warning is issued. This matches
8549the behavior of AcpiUtAllocate.
8550
8551Code and Data Size: The current and previous library sizes for the core
8552subsystem are shown below. These are the code and data sizes for the
8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8554These
8555values do not include any ACPI driver or OSPM code. The debug version of
8556the
8557code includes the debug output trace mechanism and has a much larger code
8558and data size. Note that these values will vary depending on the
8559efficiency
8560of the compiler and the compiler options used during generation.
8561
8562  Previous Release:
8563    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8564    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8565  Current Release:
8566    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8567    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8568
8569
85702) iASL Compiler/Disassembler:
8571
8572A remark is issued if the effective compile-time length of a package or
8573buffer is zero. Previously, this was a warning.
8574
8575----------------------------------------
857616 September 2005. Summary of changes for version 20050916:
8577
85781) ACPI CA Core Subsystem:
8579
8580Fixed a problem within the Resource Manager where support for the Generic
8581Register descriptor was not fully implemented. This descriptor is now
8582fully
8583recognized, parsed, disassembled, and displayed.
8584
8585Completely restructured the Resource Manager code to utilize table-driven
8586dispatch and lookup, eliminating many of the large switch() statements.
8587This
8588reduces overall subsystem code size and code complexity. Affects the
8589resource parsing and construction, disassembly, and debug dump output.
8590
8591Cleaned up and restructured the debug dump output for all resource
8592descriptors. Improved readability of the output and reduced code size.
8593
8594Fixed a problem where changes to internal data structures caused the
8595optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
8596
8597Code and Data Size: The current and previous library sizes for the core
8598subsystem are shown below. These are the code and data sizes for the
8599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8600These
8601values do not include any ACPI driver or OSPM code. The debug version of
8602the
8603code includes the debug output trace mechanism and has a much larger code
8604and data size. Note that these values will vary depending on the
8605efficiency
8606of the compiler and the compiler options used during generation.
8607
8608  Previous Release:
8609    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8610    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8611  Current Release:
8612    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8613    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8614
8615
86162) iASL Compiler/Disassembler:
8617
8618Updated the disassembler to automatically insert an EndDependentFn()
8619macro
8620into the ASL stream if this macro is missing in the original AML code,
8621simplifying compilation of the resulting ASL module.
8622
8623Fixed a problem in the disassembler where a disassembled ResourceSource
8624string (within a large resource descriptor) was not surrounded by quotes
8625and
8626not followed by a comma, causing errors when the resulting ASL module was
8627compiled. Also, escape sequences within a ResourceSource string are now
8628handled correctly (especially "\\")
8629
8630----------------------------------------
863102 September 2005. Summary of changes for version 20050902:
8632
86331) ACPI CA Core Subsystem:
8634
8635Fixed a problem with the internal Owner ID allocation and deallocation
8636mechanisms for control method execution and recursive method invocation.
8637This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
8638messages seen on some systems. Recursive method invocation depth is
8639currently limited to 255. (Alexey Starikovskiy)
8640
8641Completely eliminated all vestiges of support for the "module-level
8642executable code" until this support is fully implemented and debugged.
8643This
8644should eliminate the NO_RETURN_VALUE exceptions seen during table load on
8645some systems that invoke this support.
8646
8647Fixed a problem within the resource manager code where the transaction
8648flags
8649for a 64-bit address descriptor were handled incorrectly in the type-
8650specific flag byte.
8651
8652Consolidated duplicate code within the address descriptor resource
8653manager
8654code, reducing overall subsystem code size.
8655
8656Fixed a fault when using the AML debugger "disassemble" command to
8657disassemble individual control methods.
8658
8659Removed references to the "release_current" directory within the Unix
8660release package.
8661
8662Code and Data Size: The current and previous core subsystem library sizes
8663are shown below. These are the code and data sizes for the acpica.lib
8664produced by the Microsoft Visual C++ 6.0 compiler. These values do not
8665include any ACPI driver or OSPM code. The debug version of the code
8666includes
8667the debug output trace mechanism and has a much larger code and data
8668size.
8669Note that these values will vary depending on the efficiency of the
8670compiler
8671and the compiler options used during generation.
8672
8673  Previous Release:
8674    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8675    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8676  Current Release:
8677    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8678    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8679
8680
86812) iASL Compiler/Disassembler:
8682
8683Implemented an error check for illegal duplicate values in the interrupt
8684and
8685dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
8686Interrupt().
8687
8688Implemented error checking for the Irq() and IrqNoFlags() macros to
8689detect
8690too many values in the interrupt list (16 max) and invalid values in the
8691list (range 0 - 15)
8692
8693The maximum length string literal within an ASL file is now restricted to
8694200 characters as per the ACPI specification.
8695
8696Fixed a fault when using the -ln option (generate namespace listing).
8697
8698Implemented an error check to determine if a DescriptorName within a
8699resource descriptor has already been used within the current scope.
8700
8701----------------------------------------
870215 August 2005.  Summary of changes for version 20050815:
8703
87041) ACPI CA Core Subsystem:
8705
8706Implemented a full bytewise compare to determine if a table load request
8707is
8708attempting to load a duplicate table. The compare is performed if the
8709table
8710signatures and table lengths match. This will allow different tables with
8711the same OEM Table ID and revision to be loaded - probably against the
8712ACPI
8713specification, but discovered in the field nonetheless.
8714
8715Added the changes.txt logfile to each of the zipped release packages.
8716
8717Code and Data Size: Current and previous core subsystem library sizes are
8718shown below. These are the code and data sizes for the acpica.lib
8719produced
8720by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8721any ACPI driver or OSPM code. The debug version of the code includes the
8722debug output trace mechanism and has a much larger code and data size.
8723Note
8724that these values will vary depending on the efficiency of the compiler
8725and
8726the compiler options used during generation.
8727
8728  Previous Release:
8729    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8730    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8731  Current Release:
8732    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8733    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8734
8735
87362) iASL Compiler/Disassembler:
8737
8738Fixed a problem where incorrect AML code could be generated for Package
8739objects if optimization is disabled (via the -oa switch).
8740
8741Fixed a problem with where incorrect AML code is generated for variable-
8742length packages when the package length is not specified and the number
8743of
8744initializer values is greater than 255.
8745
8746
8747----------------------------------------
874829 July 2005.  Summary of changes for version 20050729:
8749
87501) ACPI CA Core Subsystem:
8751
8752Implemented support to ignore an attempt to install/load a particular
8753ACPI
8754table more than once. Apparently there exists BIOS code that repeatedly
8755attempts to load the same SSDT upon certain events. With assistance from
8756Venkatesh Pallipadi.
8757
8758Restructured the main interface to the AML parser in order to correctly
8759handle all exceptional conditions. This will prevent leakage of the
8760OwnerId
8761resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
8762some
8763machines. With assistance from Alexey Starikovskiy.
8764
8765Support for "module level code" has been disabled in this version due to
8766a
8767number of issues that have appeared on various machines. The support can
8768be
8769enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
8770compilation. When the issues are fully resolved, the code will be enabled
8771by
8772default again.
8773
8774Modified the internal functions for debug print support to define the
8775FunctionName parameter as a (const char *) for compatibility with
8776compiler
8777built-in macros such as __FUNCTION__, etc.
8778
8779Linted the entire ACPICA source tree for both 32-bit and 64-bit.
8780
8781Implemented support to display an object count summary for the AML
8782Debugger
8783commands Object and Methods.
8784
8785Code and Data Size: Current and previous core subsystem library sizes are
8786shown below. These are the code and data sizes for the acpica.lib
8787produced
8788by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8789any ACPI driver or OSPM code. The debug version of the code includes the
8790debug output trace mechanism and has a much larger code and data size.
8791Note
8792that these values will vary depending on the efficiency of the compiler
8793and
8794the compiler options used during generation.
8795
8796  Previous Release:
8797    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
8798    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
8799  Current Release:
8800    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8801    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8802
8803
88042) iASL Compiler/Disassembler:
8805
8806Fixed a regression that appeared in the 20050708 version of the compiler
8807where an error message was inadvertently emitted for invocations of the
8808_OSI
8809reserved control method.
8810
8811----------------------------------------
881208 July 2005.  Summary of changes for version 20050708:
8813
88141) ACPI CA Core Subsystem:
8815
8816The use of the CPU stack in the debug version of the subsystem has been
8817considerably reduced. Previously, a debug structure was declared in every
8818function that used the debug macros. This structure has been removed in
8819favor of declaring the individual elements as parameters to the debug
8820functions. This reduces the cumulative stack use during nested execution
8821of
8822ACPI function calls at the cost of a small increase in the code size of
8823the
8824debug version of the subsystem. With assistance from Alexey Starikovskiy
8825and
8826Len Brown.
8827
8828Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
8829headers to define a macro that will return the current function name at
8830runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
8831by
8832the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
8833compiler-dependent header, the function name is saved on the CPU stack
8834(one
8835pointer per function.) This mechanism is used because apparently there
8836exists no standard ANSI-C defined macro that that returns the function
8837name.
8838
8839Redesigned and reimplemented the "Owner ID" mechanism used to track
8840namespace objects created/deleted by ACPI tables and control method
8841execution. A bitmap is now used to allocate and free the IDs, thus
8842solving
8843the wraparound problem present in the previous implementation. The size
8844of
8845the namespace node descriptor was reduced by 2 bytes as a result (Alexey
8846Starikovskiy).
8847
8848Removed the UINT32_BIT and UINT16_BIT types that were used for the
8849bitfield
8850flag definitions within the headers for the predefined ACPI tables. These
8851have been replaced by UINT8_BIT in order to increase the code portability
8852of
8853the subsystem. If the use of UINT8 remains a problem, we may be forced to
8854eliminate bitfields entirely because of a lack of portability.
8855
8856Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
8857This
8858is a frequently used function and this improvement increases the
8859performance
8860of the entire subsystem (Alexey Starikovskiy).
8861
8862Fixed several possible memory leaks and the inverse - premature object
8863deletion (Alexey Starikovskiy).
8864
8865Code and Data Size: Current and previous core subsystem library sizes are
8866shown below. These are the code and data sizes for the acpica.lib
8867produced
8868by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8869any ACPI driver or OSPM code. The debug version of the code includes the
8870debug output trace mechanism and has a much larger code and data size.
8871Note
8872that these values will vary depending on the efficiency of the compiler
8873and
8874the compiler options used during generation.
8875
8876  Previous Release:
8877    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
8878    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
8879  Current Release:
8880    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
8881    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
8882
8883----------------------------------------
888424 June 2005.  Summary of changes for version 20050624:
8885
88861) ACPI CA Core Subsystem:
8887
8888Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
8889the host-defined cache object. This allows the OSL implementation to
8890define
8891and type this object in any manner desired, simplifying the OSL
8892implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
8893Linux, and should be defined in the OS-specific header file for other
8894operating systems as required.
8895
8896Changed the interface to AcpiOsAcquireObject to directly return the
8897requested object as the function return (instead of ACPI_STATUS.) This
8898change was made for performance reasons, since this is the purpose of the
8899interface in the first place. AcpiOsAcquireObject is now similar to the
8900AcpiOsAllocate interface.
8901
8902Implemented a new AML debugger command named Businfo. This command
8903displays
8904information about all devices that have an associate _PRT object. The
8905_ADR,
8906_HID, _UID, and _CID are displayed for these devices.
8907
8908Modified the initialization sequence in AcpiInitializeSubsystem to call
8909the
8910OSL interface AcpiOslInitialize first, before any local initialization.
8911This
8912change was required because the global initialization now calls OSL
8913interfaces.
8914
8915Enhanced the Dump command to display the entire contents of Package
8916objects
8917(including all sub-objects and their values.)
8918
8919Restructured the code base to split some files because of size and/or
8920because the code logically belonged in a separate file. New files are
8921listed
8922below. All makefiles and project files included in the ACPI CA release
8923have
8924been updated.
8925    utilities/utcache.c           /* Local cache interfaces */
8926    utilities/utmutex.c           /* Local mutex support */
8927    utilities/utstate.c           /* State object support */
8928    interpreter/parser/psloop.c   /* Main AML parse loop */
8929
8930Code and Data Size: Current and previous core subsystem library sizes are
8931shown below. These are the code and data sizes for the acpica.lib
8932produced
8933by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8934any ACPI driver or OSPM code. The debug version of the code includes the
8935debug output trace mechanism and has a much larger code and data size.
8936Note
8937that these values will vary depending on the efficiency of the compiler
8938and
8939the compiler options used during generation.
8940
8941  Previous Release:
8942    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
8943    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
8944  Current Release:
8945    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
8946    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
8947
8948
89492) iASL Compiler/Disassembler:
8950
8951Fixed a regression introduced in version 20050513 where the use of a
8952Package
8953object within a Case() statement caused a compile time exception. The
8954original behavior has been restored (a Match() operator is emitted.)
8955
8956----------------------------------------
895717 June 2005.  Summary of changes for version 20050617:
8958
89591) ACPI CA Core Subsystem:
8960
8961Moved the object cache operations into the OS interface layer (OSL) to
8962allow
8963the host OS to handle these operations if desired (for example, the Linux
8964OSL will invoke the slab allocator). This support is optional; the
8965compile
8966time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
8967cache
8968code in the ACPI CA core. The new OSL interfaces are shown below. See
8969utalloc.c for an example implementation, and acpiosxf.h for the exact
8970interface definitions. With assistance from Alexey Starikovskiy.
8971    AcpiOsCreateCache
8972    AcpiOsDeleteCache
8973    AcpiOsPurgeCache
8974    AcpiOsAcquireObject
8975    AcpiOsReleaseObject
8976
8977Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
8978return
8979and restore a flags parameter. This fits better with many OS lock models.
8980Note: the current execution state (interrupt handler or not) is no longer
8981passed to these interfaces. If necessary, the OSL must determine this
8982state
8983by itself, a simple and fast operation. With assistance from Alexey
8984Starikovskiy.
8985
8986Fixed a problem in the ACPI table handling where a valid XSDT was assumed
8987present if the revision of the RSDP was 2 or greater. According to the
8988ACPI
8989specification, the XSDT is optional in all cases, and the table manager
8990therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
8991Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
8992contain
8993only the RSDT.
8994
8995Fixed an interpreter problem with the Mid() operator in the case of an
8996input
8997string where the resulting output string is of zero length. It now
8998correctly
8999returns a valid, null terminated string object instead of a string object
9000with a null pointer.
9001
9002Fixed a problem with the control method argument handling to allow a
9003store
9004to an Arg object that already contains an object of type Device. The
9005Device
9006object is now correctly overwritten. Previously, an error was returned.
9007
9008
9009Enhanced the debugger Find command to emit object values in addition to
9010the
9011found object pathnames. The output format is the same as the dump
9012namespace
9013command.
9014
9015Enhanced the debugger Set command. It now has the ability to set the
9016value
9017of any Named integer object in the namespace (Previously, only method
9018locals
9019and args could be set.)
9020
9021Code and Data Size: Current and previous core subsystem library sizes are
9022shown below. These are the code and data sizes for the acpica.lib
9023produced
9024by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9025any ACPI driver or OSPM code. The debug version of the code includes the
9026debug output trace mechanism and has a much larger code and data size.
9027Note
9028that these values will vary depending on the efficiency of the compiler
9029and
9030the compiler options used during generation.
9031
9032  Previous Release:
9033    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9034    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9035  Current Release:
9036    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9037    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9038
9039
90402) iASL Compiler/Disassembler:
9041
9042Fixed a regression in the disassembler where if/else/while constructs
9043were
9044output incorrectly. This problem was introduced in the previous release
9045(20050526). This problem also affected the single-step disassembly in the
9046debugger.
9047
9048Fixed a problem where compiling the reserved _OSI method would randomly
9049(but
9050rarely) produce compile errors.
9051
9052Enhanced the disassembler to emit compilable code in the face of
9053incorrect
9054AML resource descriptors. If the optional ResourceSourceIndex is present,
9055but the ResourceSource is not, do not emit the ResourceSourceIndex in the
9056disassembly. Otherwise, the resulting code cannot be compiled without
9057errors.
9058
9059----------------------------------------
906026 May 2005.  Summary of changes for version 20050526:
9061
90621) ACPI CA Core Subsystem:
9063
9064Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
9065the module level (not within a control method.) These opcodes are
9066executed
9067exactly once at the time the table is loaded. This type of code was legal
9068up
9069until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
9070in
9071order to provide backwards compatibility with earlier BIOS
9072implementations.
9073This eliminates the "Encountered executable code at module level" warning
9074that was previously generated upon detection of such code.
9075
9076Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
9077inadvertently be generated during the lookup of namespace objects in the
9078second pass parse of ACPI tables and control methods. It appears that
9079this
9080problem could occur during the resolution of forward references to
9081namespace
9082objects.
9083
9084Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
9085corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
9086allows the deadlock detection debug code to be compiled out in the normal
9087case, improving mutex performance (and overall subsystem performance)
9088considerably.
9089
9090Implemented a handful of miscellaneous fixes for possible memory leaks on
9091error conditions and error handling control paths. These fixes were
9092suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9093
9094Added a check for a null RSDT pointer in AcpiGetFirmwareTable
9095(tbxfroot.c)
9096to prevent a fault in this error case.
9097
9098Code and Data Size: Current and previous core subsystem library sizes are
9099shown below. These are the code and data sizes for the acpica.lib
9100produced
9101by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9102any ACPI driver or OSPM code. The debug version of the code includes the
9103debug output trace mechanism and has a much larger code and data size.
9104Note
9105that these values will vary depending on the efficiency of the compiler
9106and
9107the compiler options used during generation.
9108
9109  Previous Release:
9110    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9111    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9112  Current Release:
9113    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9114    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9115
9116
91172) iASL Compiler/Disassembler:
9118
9119Implemented support to allow Type 1 and Type 2 ASL operators to appear at
9120the module level (not within a control method.) These operators will be
9121executed once at the time the table is loaded. This type of code was
9122legal
9123up until the release of ACPI 2.0B (2002) and is now supported by the iASL
9124compiler in order to provide backwards compatibility with earlier BIOS
9125ASL
9126code.
9127
9128The ACPI integer width (specified via the table revision ID or the -r
9129override, 32 or 64 bits) is now used internally during compile-time
9130constant
9131folding to ensure that constants are truncated to 32 bits if necessary.
9132Previously, the revision ID value was only emitted in the AML table
9133header.
9134
9135An error message is now generated for the Mutex and Method operators if
9136the
9137SyncLevel parameter is outside the legal range of 0 through 15.
9138
9139Fixed a problem with the Method operator ParameterTypes list handling
9140(ACPI
91413.0). Previously, more than 2 types or 2 arguments generated a syntax
9142error.
9143The actual underlying implementation of method argument typechecking is
9144still under development, however.
9145
9146----------------------------------------
914713 May 2005.  Summary of changes for version 20050513:
9148
91491) ACPI CA Core Subsystem:
9150
9151Implemented support for PCI Express root bridges -- added support for
9152device
9153PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9154
9155The interpreter now automatically truncates incoming 64-bit constants to
915632
9157bits if currently executing out of a 32-bit ACPI table (Revision < 2).
9158This
9159also affects the iASL compiler constant folding. (Note: as per below, the
9160iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9161
9162Fixed a problem where string and buffer objects with "static" pointers
9163(pointers to initialization data within an ACPI table) were not handled
9164consistently. The internal object copy operation now always copies the
9165data
9166to a newly allocated buffer, regardless of whether the source object is
9167static or not.
9168
9169Fixed a problem with the FromBCD operator where an implicit result
9170conversion was improperly performed while storing the result to the
9171target
9172operand. Since this is an "explicit conversion" operator, the implicit
9173conversion should never be performed on the output.
9174
9175Fixed a problem with the CopyObject operator where a copy to an existing
9176named object did not always completely overwrite the existing object
9177stored
9178at name. Specifically, a buffer-to-buffer copy did not delete the
9179existing
9180buffer.
9181
9182Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
9183and
9184structs for consistency.
9185
9186Code and Data Size: Current and previous core subsystem library sizes are
9187shown below. These are the code and data sizes for the acpica.lib
9188produced
9189by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9190any ACPI driver or OSPM code. The debug version of the code includes the
9191debug output trace mechanism and has a much larger code and data size.
9192Note
9193that these values will vary depending on the efficiency of the compiler
9194and
9195the compiler options used during generation.
9196
9197  Previous Release:
9198    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9199    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9200  Current Release: (Same sizes)
9201    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9202    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9203
9204
92052) iASL Compiler/Disassembler:
9206
9207The compiler now emits a warning if an attempt is made to generate a 64-
9208bit
9209integer constant from within a 32-bit ACPI table (Revision < 2). The
9210integer
9211is truncated to 32 bits.
9212
9213Fixed a problem with large package objects: if the static length of the
9214package is greater than 255, the "variable length package" opcode is
9215emitted. Previously, this caused an error. This requires an update to the
9216ACPI spec, since it currently (incorrectly) states that packages larger
9217than
9218255 elements are not allowed.
9219
9220The disassembler now correctly handles variable length packages and
9221packages
9222larger than 255 elements.
9223
9224----------------------------------------
922508 April 2005.  Summary of changes for version 20050408:
9226
92271) ACPI CA Core Subsystem:
9228
9229Fixed three cases in the interpreter where an "index" argument to an ASL
9230function was still (internally) 32 bits instead of the required 64 bits.
9231This was the Index argument to the Index, Mid, and Match operators.
9232
9233The "strupr" function is now permanently local (AcpiUtStrupr), since this
9234is
9235not a POSIX-defined function and not present in most kernel-level C
9236libraries. All references to the C library strupr function have been
9237removed
9238from the headers.
9239
9240Completed the deployment of static functions/prototypes. All prototypes
9241with
9242the static attribute have been moved from the headers to the owning C
9243file.
9244
9245Implemented an extract option (-e) for the AcpiBin utility (AML binary
9246utility). This option allows the utility to extract individual ACPI
9247tables
9248from the output of AcpiDmp. It provides the same functionality of the
9249acpixtract.pl perl script without the worry of setting the correct perl
9250options. AcpiBin runs on Windows and has not yet been generated/validated
9251in
9252the Linux/Unix environment (but should be soon).
9253
9254Updated and fixed the table dump option for AcpiBin (-d). This option
9255converts a single ACPI table to a hex/ascii file, similar to the output
9256of
9257AcpiDmp.
9258
9259Code and Data Size: Current and previous core subsystem library sizes are
9260shown below. These are the code and data sizes for the acpica.lib
9261produced
9262by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9263any ACPI driver or OSPM code. The debug version of the code includes the
9264debug output trace mechanism and has a much larger code and data size.
9265Note
9266that these values will vary depending on the efficiency of the compiler
9267and
9268the compiler options used during generation.
9269
9270  Previous Release:
9271    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9272    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9273  Current Release:
9274    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9275    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9276
9277
92782) iASL Compiler/Disassembler:
9279
9280Disassembler fix: Added a check to ensure that the table length found in
9281the
9282ACPI table header within the input file is not longer than the actual
9283input
9284file size. This indicates some kind of file or table corruption.
9285
9286----------------------------------------
928729 March 2005.  Summary of changes for version 20050329:
9288
92891) ACPI CA Core Subsystem:
9290
9291An error is now generated if an attempt is made to create a Buffer Field
9292of
9293length zero (A CreateField with a length operand of zero.)
9294
9295The interpreter now issues a warning whenever executable code at the
9296module
9297level is detected during ACPI table load. This will give some idea of the
9298prevalence of this type of code.
9299
9300Implemented support for references to named objects (other than control
9301methods) within package objects.
9302
9303Enhanced package object output for the debug object. Package objects are
9304now
9305completely dumped, showing all elements.
9306
9307Enhanced miscellaneous object output for the debug object. Any object can
9308now be written to the debug object (for example, a device object can be
9309written, and the type of the object will be displayed.)
9310
9311The "static" qualifier has been added to all local functions across both
9312the
9313core subsystem and the iASL compiler.
9314
9315The number of "long" lines (> 80 chars) within the source has been
9316significantly reduced, by about 1/3.
9317
9318Cleaned up all header files to ensure that all CA/iASL functions are
9319prototyped (even static functions) and the formatting is consistent.
9320
9321Two new header files have been added, acopcode.h and acnames.h.
9322
9323Removed several obsolete functions that were no longer used.
9324
9325Code and Data Size: Current and previous core subsystem library sizes are
9326shown below. These are the code and data sizes for the acpica.lib
9327produced
9328by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9329any ACPI driver or OSPM code. The debug version of the code includes the
9330debug output trace mechanism and has a much larger code and data size.
9331Note
9332that these values will vary depending on the efficiency of the compiler
9333and
9334the compiler options used during generation.
9335
9336  Previous Release:
9337    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9338    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9339  Current Release:
9340    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9341    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9342
9343
9344
93452) iASL Compiler/Disassembler:
9346
9347Fixed a problem with the resource descriptor generation/support. For the
9348ResourceSourceIndex and the ResourceSource fields, both must be present,
9349or
9350both must be not present - can't have one without the other.
9351
9352The compiler now returns non-zero from the main procedure if any errors
9353have
9354occurred during the compilation.
9355
9356
9357----------------------------------------
935809 March 2005.  Summary of changes for version 20050309:
9359
93601) ACPI CA Core Subsystem:
9361
9362The string-to-buffer implicit conversion code has been modified again
9363after
9364a change to the ACPI specification.  In order to match the behavior of
9365the
9366other major ACPI implementation, the target buffer is no longer truncated
9367if
9368the source string is smaller than an existing target buffer. This change
9369requires an update to the ACPI spec, and should eliminate the recent
9370AE_AML_BUFFER_LIMIT issues.
9371
9372The "implicit return" support was rewritten to a new algorithm that
9373solves
9374the general case. Rather than attempt to determine when a method is about
9375to
9376exit, the result of every ASL operator is saved momentarily until the
9377very
9378next ASL operator is executed. Therefore, no matter how the method exits,
9379there will always be a saved implicit return value. This feature is only
9380enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
9381eliminate
9382AE_AML_NO_RETURN_VALUE errors when enabled.
9383
9384Implemented implicit conversion support for the predicate (operand) of
9385the
9386If, Else, and While operators. String and Buffer arguments are
9387automatically
9388converted to Integers.
9389
9390Changed the string-to-integer conversion behavior to match the new ACPI
9391errata: "If no integer object exists, a new integer is created. The ASCII
9392string is interpreted as a hexadecimal constant. Each string character is
9393interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
9394with the first character as the most significant digit, and ending with
9395the
9396first non-hexadecimal character or end-of-string." This means that the
9397first
9398non-hex character terminates the conversion and this is the code that was
9399changed.
9400
9401Fixed a problem where the ObjectType operator would fail (fault) when
9402used
9403on an Index of a Package which pointed to a null package element. The
9404operator now properly returns zero (Uninitialized) in this case.
9405
9406Fixed a problem where the While operator used excessive memory by not
9407properly popping the result stack during execution. There was no memory
9408leak
9409after execution, however. (Code provided by Valery Podrezov.)
9410
9411Fixed a problem where references to control methods within Package
9412objects
9413caused the method to be invoked, instead of producing a reference object
9414pointing to the method.
9415
9416Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
9417to
9418improve performance and reduce code size. (Code provided by Alexey
9419Starikovskiy.)
9420
9421Code and Data Size: Current and previous core subsystem library sizes are
9422shown below. These are the code and data sizes for the acpica.lib
9423produced
9424by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9425any ACPI driver or OSPM code. The debug version of the code includes the
9426debug output trace mechanism and has a much larger code and data size.
9427Note
9428that these values will vary depending on the efficiency of the compiler
9429and
9430the compiler options used during generation.
9431
9432  Previous Release:
9433    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9434    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9435  Current Release:
9436    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9437    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9438
9439
94402) iASL Compiler/Disassembler:
9441
9442Fixed a problem with the Return operator with no arguments. Since the AML
9443grammar for the byte encoding requires an operand for the Return opcode,
9444the
9445compiler now emits a Return(Zero) for this case.  An ACPI specification
9446update has been written for this case.
9447
9448For tables other than the DSDT, namepath optimization is automatically
9449disabled. This is because SSDTs can be loaded anywhere in the namespace,
9450the
9451compiler has no knowledge of where, and thus cannot optimize namepaths.
9452
9453Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
9454inadvertently omitted from the ACPI specification, and will require an
9455update to the spec.
9456
9457The source file scan for ASCII characters is now optional (-a). This
9458change
9459was made because some vendors place non-ascii characters within comments.
9460However, the scan is simply a brute-force byte compare to ensure all
9461characters in the file are in the range 0x00 to 0x7F.
9462
9463Fixed a problem with the CondRefOf operator where the compiler was
9464inappropriately checking for the existence of the target. Since the point
9465of
9466the operator is to check for the existence of the target at run-time, the
9467compiler no longer checks for the target existence.
9468
9469Fixed a problem where errors generated from the internal AML interpreter
9470during constant folding were not handled properly, causing a fault.
9471
9472Fixed a problem with overly aggressive range checking for the Stall
9473operator. The valid range (max 255) is now only checked if the operand is
9474of
9475type Integer. All other operand types cannot be statically checked.
9476
9477Fixed a problem where control method references within the RefOf,
9478DeRefOf,
9479and ObjectType operators were not treated properly. They are now treated
9480as
9481actual references, not method invocations.
9482
9483Fixed and enhanced the "list namespace" option (-ln). This option was
9484broken
9485a number of releases ago.
9486
9487Improved error handling for the Field, IndexField, and BankField
9488operators.
9489The compiler now cleanly reports and recovers from errors in the field
9490component (FieldUnit) list.
9491
9492Fixed a disassembler problem where the optional ResourceDescriptor fields
9493TRS and TTP were not always handled correctly.
9494
9495Disassembler - Comments in output now use "//" instead of "/*"
9496
9497----------------------------------------
949828 February 2005.  Summary of changes for version 20050228:
9499
95001) ACPI CA Core Subsystem:
9501
9502Fixed a problem where the result of an Index() operator (an object
9503reference) must increment the reference count on the target object for
9504the
9505life of the object reference.
9506
9507Implemented AML Interpreter and Debugger support for the new ACPI 3.0
9508Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
9509WordSpace
9510resource descriptors.
9511
9512Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
9513Space Descriptor" string, indicating interpreter support for the
9514descriptors
9515above.
9516
9517Implemented header support for the new ACPI 3.0 FADT flag bits.
9518
9519Implemented header support for the new ACPI 3.0 PCI Express bits for the
9520PM1
9521status/enable registers.
9522
9523Updated header support for the MADT processor local Apic struct and MADT
9524platform interrupt source struct for new ACPI 3.0 fields.
9525
9526Implemented header support for the SRAT and SLIT ACPI tables.
9527
9528Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
9529flag
9530at runtime.
9531
9532Code and Data Size: Current and previous core subsystem library sizes are
9533shown below. These are the code and data sizes for the acpica.lib
9534produced
9535by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9536any ACPI driver or OSPM code. The debug version of the code includes the
9537debug output trace mechanism and has a much larger code and data size.
9538Note
9539that these values will vary depending on the efficiency of the compiler
9540and
9541the compiler options used during generation.
9542
9543  Previous Release:
9544    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9545    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9546  Current Release:
9547    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9548    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9549
9550
95512) iASL Compiler/Disassembler:
9552
9553Fixed a problem with the internal 64-bit String-to-integer conversion
9554with
9555strings less than two characters long.
9556
9557Fixed a problem with constant folding where the result of the Index()
9558operator can not be considered a constant. This means that Index() cannot
9559be
9560a type3 opcode and this will require an update to the ACPI specification.
9561
9562Disassembler: Implemented support for the TTP, MTP, and TRS resource
9563descriptor fields. These fields were inadvertently ignored and not output
9564in
9565the disassembly of the resource descriptor.
9566
9567
9568 ----------------------------------------
956911 February 2005.  Summary of changes for version 20050211:
9570
95711) ACPI CA Core Subsystem:
9572
9573Implemented ACPI 3.0 support for implicit conversion within the Match()
9574operator. MatchObjects can now be of type integer, buffer, or string
9575instead
9576of just type integer.  Package elements are implicitly converted to the
9577type
9578of the MatchObject. This change aligns the behavior of Match() with the
9579behavior of the other logical operators (LLess(), etc.) It also requires
9580an
9581errata change to the ACPI specification as this support was intended for
9582ACPI 3.0, but was inadvertently omitted.
9583
9584Fixed a problem with the internal implicit "to buffer" conversion.
9585Strings
9586that are converted to buffers will cause buffer truncation if the string
9587is
9588smaller than the target buffer. Integers that are converted to buffers
9589will
9590not cause buffer truncation, only zero extension (both as per the ACPI
9591spec.) The problem was introduced when code was added to truncate the
9592buffer, but this should not be performed in all cases, only the string
9593case.
9594
9595Fixed a problem with the Buffer and Package operators where the
9596interpreter
9597would get confused if two such operators were used as operands to an ASL
9598operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
9599stack was not being popped after the execution of these operators,
9600resulting
9601in an AE_NO_RETURN_VALUE exception.
9602
9603Fixed a problem with constructs of the form Store(Index(...),...). The
9604reference object returned from Index was inadvertently resolved to an
9605actual
9606value. This problem was introduced in version 20050114 when the behavior
9607of
9608Store() was modified to restrict the object types that can be used as the
9609source operand (to match the ACPI specification.)
9610
9611Reduced excessive stack use within the AcpiGetObjectInfo procedure.
9612
9613Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
9614
9615Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
9616
9617Code and Data Size: Current and previous core subsystem library sizes are
9618shown below. These are the code and data sizes for the acpica.lib
9619produced
9620by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9621any ACPI driver or OSPM code. The debug version of the code includes the
9622debug output trace mechanism and has a much larger code and data size.
9623Note
9624that these values will vary depending on the efficiency of the compiler
9625and
9626the compiler options used during generation.
9627
9628  Previous Release:
9629    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
9630    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
9631  Current Release:
9632    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9633    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9634
9635
96362) iASL Compiler/Disassembler:
9637
9638Fixed a code generation problem in the constant folding optimization code
9639where incorrect code was generated if a constant was reduced to a buffer
9640object (i.e., a reduced type 5 opcode.)
9641
9642Fixed a typechecking problem for the ToBuffer operator. Caused by an
9643incorrect return type in the internal opcode information table.
9644
9645----------------------------------------
964625 January 2005.  Summary of changes for version 20050125:
9647
96481) ACPI CA Core Subsystem:
9649
9650Fixed a recently introduced problem with the Global Lock where the
9651underlying semaphore was not created.  This problem was introduced in
9652version 20050114, and caused an AE_AML_NO_OPERAND exception during an
9653Acquire() operation on _GL.
9654
9655The local object cache is now optional, and is disabled by default. Both
9656AcpiExec and the iASL compiler enable the cache because they run in user
9657mode and this enhances their performance. #define
9658ACPI_ENABLE_OBJECT_CACHE
9659to enable the local cache.
9660
9661Fixed an issue in the internal function AcpiUtEvaluateObject concerning
9662the
9663optional "implicit return" support where an error was returned if no
9664return
9665object was expected, but one was implicitly returned. AE_OK is now
9666returned
9667in this case and the implicitly returned object is deleted.
9668AcpiUtEvaluateObject is only occasionally used, and only to execute
9669reserved
9670methods such as _STA and _INI where the return type is known up front.
9671
9672Fixed a few issues with the internal convert-to-integer code. It now
9673returns
9674an error if an attempt is made to convert a null string, a string of only
9675blanks/tabs, or a zero-length buffer. This affects both implicit
9676conversion
9677and explicit conversion via the ToInteger() operator.
9678
9679The internal debug code in AcpiUtAcquireMutex has been commented out. It
9680is
9681not needed for normal operation and should increase the performance of
9682the
9683entire subsystem. The code remains in case it is needed for debug
9684purposes
9685again.
9686
9687The AcpiExec source and makefile are included in the Unix/Linux package
9688for
9689the first time.
9690
9691Code and Data Size: Current and previous core subsystem library sizes are
9692shown below. These are the code and data sizes for the acpica.lib
9693produced
9694by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9695any ACPI driver or OSPM code. The debug version of the code includes the
9696debug output trace mechanism and has a much larger code and data size.
9697Note
9698that these values will vary depending on the efficiency of the compiler
9699and
9700the compiler options used during generation.
9701
9702  Previous Release:
9703    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9704    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9705  Current Release:
9706    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
9707    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
9708
97092) iASL Compiler/Disassembler:
9710
9711Switch/Case support: A warning is now issued if the type of the Switch
9712value
9713cannot be determined at compile time. For example, Switch(Arg0) will
9714generate the warning, and the type is assumed to be an integer. As per
9715the
9716ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
9717the
9718warning.
9719
9720Switch/Case support: Implemented support for buffer and string objects as
9721the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
9722buffers and strings.
9723
9724Switch/Case support: The emitted code for the LEqual() comparisons now
9725uses
9726the switch value as the first operand, not the second. The case value is
9727now
9728the second operand, and this allows the case value to be implicitly
9729converted to the type of the switch value, not the other way around.
9730
9731Switch/Case support: Temporary variables are now emitted immediately
9732within
9733the control method, not at the global level. This means that there are
9734now
973536 temps available per-method, not 36 temps per-module as was the case
9736with
9737the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
9738
9739----------------------------------------
974014 January 2005.  Summary of changes for version 20050114:
9741
9742Added 2005 copyright to all module headers.  This affects every module in
9743the core subsystem, iASL compiler, and the utilities.
9744
97451) ACPI CA Core Subsystem:
9746
9747Fixed an issue with the String-to-Buffer conversion code where the string
9748null terminator was not included in the buffer after conversion, but
9749there
9750is existing ASL that assumes the string null terminator is included. This
9751is
9752the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
9753introduced in the previous version when the code was updated to correctly
9754set the converted buffer size as per the ACPI specification. The ACPI
9755spec
9756is ambiguous and will be updated to specify that the null terminator must
9757be
9758included in the converted buffer. This also affects the ToBuffer() ASL
9759operator.
9760
9761Fixed a problem with the Mid() ASL/AML operator where it did not work
9762correctly on Buffer objects. Newly created sub-buffers were not being
9763marked
9764as initialized.
9765
9766
9767Fixed a problem in AcpiTbFindTable where incorrect string compares were
9768performed on the OemId and OemTableId table header fields.  These fields
9769are
9770not null terminated, so strncmp is now used instead of strcmp.
9771
9772Implemented a restriction on the Store() ASL/AML operator to align the
9773behavior with the ACPI specification.  Previously, any object could be
9774used
9775as the source operand.  Now, the only objects that may be used are
9776Integers,
9777Buffers, Strings, Packages, Object References, and DDB Handles.  If
9778necessary, the original behavior can be restored by enabling the
9779EnableInterpreterSlack flag.
9780
9781Enhanced the optional "implicit return" support to allow an implicit
9782return
9783value from methods that are invoked externally via the AcpiEvaluateObject
9784interface.  This enables implicit returns from the _STA and _INI methods,
9785for example.
9786
9787Changed the Revision() ASL/AML operator to return the current version of
9788the
9789AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
9790returned
9791the supported ACPI version (This is the function of the _REV method).
9792
9793Updated the _REV predefined method to return the currently supported
9794version
9795of ACPI, now 3.
9796
9797Implemented batch mode option for the AcpiExec utility (-b).
9798
9799Code and Data Size: Current and previous core subsystem library sizes are
9800shown below. These are the code and data sizes for the acpica.lib
9801produced
9802by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9803any ACPI driver or OSPM code. The debug version of the code includes the
9804debug output trace mechanism and has a much larger code and data size.
9805Note
9806that these values will vary depending on the efficiency of the compiler
9807and
9808the compiler options used during generation.
9809
9810  Previous Release:
9811    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9812    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9813  Current Release:
9814    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9815    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9816
9817----------------------------------------
981810 December 2004.  Summary of changes for version 20041210:
9819
9820ACPI 3.0 support is nearing completion in both the iASL compiler and the
9821ACPI CA core subsystem.
9822
98231) ACPI CA Core Subsystem:
9824
9825Fixed a problem in the ToDecimalString operator where the resulting
9826string
9827length was incorrectly calculated. The length is now calculated exactly,
9828eliminating incorrect AE_STRING_LIMIT exceptions.
9829
9830Fixed a problem in the ToHexString operator to allow a maximum 200
9831character
9832string to be produced.
9833
9834Fixed a problem in the internal string-to-buffer and buffer-to-buffer
9835copy
9836routine where the length of the resulting buffer was not truncated to the
9837new size (if the target buffer already existed).
9838
9839Code and Data Size: Current and previous core subsystem library sizes are
9840shown below. These are the code and data sizes for the acpica.lib
9841produced
9842by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9843any ACPI driver or OSPM code. The debug version of the code includes the
9844debug output trace mechanism and has a much larger code and data size.
9845Note
9846that these values will vary depending on the efficiency of the compiler
9847and
9848the compiler options used during generation.
9849
9850  Previous Release:
9851    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9852    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
9853  Current Release:
9854    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9855    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9856
9857
98582) iASL Compiler/Disassembler:
9859
9860Implemented the new ACPI 3.0 resource template macros - DWordSpace,
9861ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
9862Includes support in the disassembler.
9863
9864Implemented support for the new (ACPI 3.0) parameter to the Register
9865macro,
9866AccessSize.
9867
9868Fixed a problem where the _HE resource name for the Interrupt macro was
9869referencing bit 0 instead of bit 1.
9870
9871Implemented check for maximum 255 interrupts in the Interrupt macro.
9872
9873Fixed a problem with the predefined resource descriptor names where
9874incorrect AML code was generated if the offset within the resource buffer
9875was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
9876but did not update the surrounding package lengths.
9877
9878Changes to the Dma macro:  All channels within the channel list must be
9879in
9880the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
9881optional (default is BusMaster).
9882
9883Implemented check for maximum 7 data bytes for the VendorShort macro.
9884
9885The ReadWrite parameter is now optional for the Memory32 and similar
9886macros.
9887
9888----------------------------------------
988903 December 2004.  Summary of changes for version 20041203:
9890
98911) ACPI CA Core Subsystem:
9892
9893The low-level field insertion/extraction code (exfldio) has been
9894completely
9895rewritten to eliminate unnecessary complexity, bugs, and boundary
9896conditions.
9897
9898Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
9899ToDecimalString
9900operators where the input operand could be inadvertently deleted if no
9901conversion was necessary (e.g., if the input to ToInteger was an Integer
9902object.)
9903
9904Fixed a problem with the ToDecimalString and ToHexString where an
9905incorrect
9906exception code was returned if the resulting string would be > 200 chars.
9907AE_STRING_LIMIT is now returned.
9908
9909Fixed a problem with the Concatenate operator where AE_OK was always
9910returned, even if the operation failed.
9911
9912Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
9913semaphores to be allocated.
9914
9915Code and Data Size: Current and previous core subsystem library sizes are
9916shown below. These are the code and data sizes for the acpica.lib
9917produced
9918by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9919any ACPI driver or OSPM code. The debug version of the code includes the
9920debug output trace mechanism and has a much larger code and data size.
9921Note
9922that these values will vary depending on the efficiency of the compiler
9923and
9924the compiler options used during generation.
9925
9926  Previous Release:
9927    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9928    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9929  Current Release:
9930    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9931    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
9932
9933
99342) iASL Compiler/Disassembler:
9935
9936Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
9937recently introduced in 20041119.
9938
9939Fixed a problem with the ToUUID macro where the upper nybble of each
9940buffer
9941byte was inadvertently set to zero.
9942
9943----------------------------------------
994419 November 2004.  Summary of changes for version 20041119:
9945
99461) ACPI CA Core Subsystem:
9947
9948Fixed a problem in the internal ConvertToInteger routine where new
9949integers
9950were not truncated to 32 bits for 32-bit ACPI tables. This routine
9951converts
9952buffers and strings to integers.
9953
9954Implemented support to store a value to an Index() on a String object.
9955This
9956is an ACPI 2.0 feature that had not yet been implemented.
9957
9958Implemented new behavior for storing objects to individual package
9959elements
9960(via the Index() operator). The previous behavior was to invoke the
9961implicit
9962conversion rules if an object was already present at the index.  The new
9963behavior is to simply delete any existing object and directly store the
9964new
9965object. Although the ACPI specification seems unclear on this subject,
9966other
9967ACPI implementations behave in this manner.  (This is the root of the
9968AE_BAD_HEX_CONSTANT issue.)
9969
9970Modified the RSDP memory scan mechanism to support the extended checksum
9971for
9972ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
9973RSDP signature is found with a valid checksum.
9974
9975Code and Data Size: Current and previous core subsystem library sizes are
9976shown below. These are the code and data sizes for the acpica.lib
9977produced
9978by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9979any ACPI driver or OSPM code. The debug version of the code includes the
9980debug output trace mechanism and has a much larger code and data size.
9981Note
9982that these values will vary depending on the efficiency of the compiler
9983and
9984the compiler options used during generation.
9985
9986  Previous Release:
9987    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9988    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9989  Current Release:
9990    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
9991    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
9992
9993
99942) iASL Compiler/Disassembler:
9995
9996Fixed a missing semicolon in the aslcompiler.y file.
9997
9998----------------------------------------
999905 November 2004.  Summary of changes for version 20041105:
10000
100011) ACPI CA Core Subsystem:
10002
10003Implemented support for FADT revision 2.  This was an interim table
10004(between
10005ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10006
10007Implemented optional support to allow uninitialized LocalX and ArgX
10008variables in a control method.  The variables are initialized to an
10009Integer
10010object with a value of zero.  This support is enabled by setting the
10011AcpiGbl_EnableInterpreterSlack flag to TRUE.
10012
10013Implemented support for Integer objects for the SizeOf operator.  Either
100144
10015or 8 is returned, depending on the current integer size (32-bit or 64-
10016bit,
10017depending on the parent table revision).
10018
10019Fixed a problem in the implementation of the SizeOf and ObjectType
10020operators
10021where the operand was resolved to a value too early, causing incorrect
10022return values for some objects.
10023
10024Fixed some possible memory leaks during exceptional conditions.
10025
10026Code and Data Size: Current and previous core subsystem library sizes are
10027shown below. These are the code and data sizes for the acpica.lib
10028produced
10029by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10030any ACPI driver or OSPM code. The debug version of the code includes the
10031debug output trace mechanism and has a much larger code and data size.
10032Note
10033that these values will vary depending on the efficiency of the compiler
10034and
10035the compiler options used during generation.
10036
10037  Previous Release:
10038    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10039    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10040  Current Release:
10041    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10042    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10043
10044
100452) iASL Compiler/Disassembler:
10046
10047Implemented support for all ACPI 3.0 reserved names and methods.
10048
10049Implemented all ACPI 3.0 grammar elements in the front-end, including
10050support for semicolons.
10051
10052Implemented the ACPI 3.0 Function() and ToUUID() macros
10053
10054Fixed a problem in the disassembler where a Scope() operator would not be
10055emitted properly if the target of the scope was in another table.
10056
10057----------------------------------------
1005815 October 2004.  Summary of changes for version 20041015:
10059
10060Note:  ACPI CA is currently undergoing an in-depth and complete formal
10061evaluation to test/verify the following areas. Other suggestions are
10062welcome. This will result in an increase in the frequency of releases and
10063the number of bug fixes in the next few months.
10064  - Functional tests for all ASL/AML operators
10065  - All implicit/explicit type conversions
10066  - Bit fields and operation regions
10067  - 64-bit math support and 32-bit-only "truncated" math support
10068  - Exceptional conditions, both compiler and interpreter
10069  - Dynamic object deletion and memory leaks
10070  - ACPI 3.0 support when implemented
10071  - External interfaces to the ACPI subsystem
10072
10073
100741) ACPI CA Core Subsystem:
10075
10076Fixed two alignment issues on 64-bit platforms - within debug statements
10077in
10078AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
10079Address
10080field within the non-aligned ACPI generic address structure.
10081
10082Fixed a problem in the Increment and Decrement operators where incorrect
10083operand resolution could result in the inadvertent modification of the
10084original integer when the integer is passed into another method as an
10085argument and the arg is then incremented/decremented.
10086
10087Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10088bit
10089BCD number were truncated during conversion.
10090
10091Fixed a problem in the ToDecimal operator where the length of the
10092resulting
10093string could be set incorrectly too long if the input operand was a
10094Buffer
10095object.
10096
10097Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
10098(0)
10099within a buffer would prematurely terminate a compare between buffer
10100objects.
10101
10102Added a check for string overflow (>200 characters as per the ACPI
10103specification) during the Concatenate operator with two string operands.
10104
10105Code and Data Size: Current and previous core subsystem library sizes are
10106shown below. These are the code and data sizes for the acpica.lib
10107produced
10108by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10109any ACPI driver or OSPM code. The debug version of the code includes the
10110debug output trace mechanism and has a much larger code and data size.
10111Note
10112that these values will vary depending on the efficiency of the compiler
10113and
10114the compiler options used during generation.
10115
10116  Previous Release:
10117    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10118    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10119  Current Release:
10120    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10121    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10122
10123
10124
101252) iASL Compiler/Disassembler:
10126
10127Allow the use of the ObjectType operator on uninitialized Locals and Args
10128(returns 0 as per the ACPI specification).
10129
10130Fixed a problem where the compiler would fault if there was a syntax
10131error
10132in the FieldName of all of the various CreateXXXField operators.
10133
10134Disallow the use of lower case letters within the EISAID macro, as per
10135the
10136ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
10137Where
10138U is an uppercase letter and N is a hex digit.
10139
10140
10141----------------------------------------
1014206 October 2004.  Summary of changes for version 20041006:
10143
101441) ACPI CA Core Subsystem:
10145
10146Implemented support for the ACPI 3.0 Timer operator. This ASL function
10147implements a 64-bit timer with 100 nanosecond granularity.
10148
10149Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
10150implement the ACPI 3.0 Timer operator.  This allows the host OS to
10151implement
10152the timer with the best clock available. Also, it keeps the core
10153subsystem
10154out of the clock handling business, since the host OS (usually) performs
10155this function.
10156
10157Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
10158functions use a 64-bit address which is part of the packed ACPI Generic
10159Address Structure. Since the structure is non-aligned, the alignment
10160macros
10161are now used to extract the address to a local variable before use.
10162
10163Fixed a problem where the ToInteger operator assumed all input strings
10164were
10165hexadecimal. The operator now handles both decimal strings and hex
10166strings
10167(prefixed with "0x").
10168
10169Fixed a problem where the string length in the string object created as a
10170result of the internal ConvertToString procedure could be incorrect. This
10171potentially affected all implicit conversions and also the
10172ToDecimalString
10173and ToHexString operators.
10174
10175Fixed two problems in the ToString operator. If the length parameter was
10176zero, an incorrect string object was created and the value of the input
10177length parameter was inadvertently changed from zero to Ones.
10178
10179Fixed a problem where the optional ResourceSource string in the
10180ExtendedIRQ
10181resource macro was ignored.
10182
10183Simplified the interfaces to the internal division functions, reducing
10184code
10185size and complexity.
10186
10187Code and Data Size: Current and previous core subsystem library sizes are
10188shown below. These are the code and data sizes for the acpica.lib
10189produced
10190by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10191any ACPI driver or OSPM code. The debug version of the code includes the
10192debug output trace mechanism and has a much larger code and data size.
10193Note
10194that these values will vary depending on the efficiency of the compiler
10195and
10196the compiler options used during generation.
10197
10198  Previous Release:
10199    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10200    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10201  Current Release:
10202    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10203    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10204
10205
102062) iASL Compiler/Disassembler:
10207
10208Implemented support for the ACPI 3.0 Timer operator.
10209
10210Fixed a problem where the Default() operator was inadvertently ignored in
10211a
10212Switch/Case block.  This was a problem in the translation of the Switch
10213statement to If...Else pairs.
10214
10215Added support to allow a standalone Return operator, with no parentheses
10216(or
10217operands).
10218
10219Fixed a problem with code generation for the ElseIf operator where the
10220translated Else...If parse tree was improperly constructed leading to the
10221loss of some code.
10222
10223----------------------------------------
1022422 September 2004.  Summary of changes for version 20040922:
10225
102261) ACPI CA Core Subsystem:
10227
10228Fixed a problem with the implementation of the LNot() operator where
10229"Ones"
10230was not returned for the TRUE case. Changed the code to return Ones
10231instead
10232of (!Arg) which was usually 1. This change affects iASL constant folding
10233for
10234this operator also.
10235
10236Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
10237not
10238initialized properly -- Now zero the entire buffer in this case where the
10239buffer already exists.
10240
10241Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
10242Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
10243related code considerably. This will require changes/updates to all OS
10244interface layers (OSLs.)
10245
10246Implemented a new external interface, AcpiInstallExceptionHandler, to
10247allow
10248a system exception handler to be installed. This handler is invoked upon
10249any
10250run-time exception that occurs during control method execution.
10251
10252Added support for the DSDT in AcpiTbFindTable. This allows the
10253DataTableRegion() operator to access the local copy of the DSDT.
10254
10255Code and Data Size: Current and previous core subsystem library sizes are
10256shown below. These are the code and data sizes for the acpica.lib
10257produced
10258by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10259any ACPI driver or OSPM code. The debug version of the code includes the
10260debug output trace mechanism and has a much larger code and data size.
10261Note
10262that these values will vary depending on the efficiency of the compiler
10263and
10264the compiler options used during generation.
10265
10266  Previous Release:
10267    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10268    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10269  Current Release:
10270    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10271    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10272
10273
102742) iASL Compiler/Disassembler:
10275
10276Fixed a problem with constant folding and the LNot operator. LNot was
10277returning 1 in the TRUE case, not Ones as per the ACPI specification.
10278This
10279could result in the generation of an incorrect folded/reduced constant.
10280
10281End-Of-File is now allowed within a "//"-style comment.  A parse error no
10282longer occurs if such a comment is at the very end of the input ASL
10283source
10284file.
10285
10286Implemented the "-r" option to override the Revision in the table header.
10287The initial use of this option will be to simplify the evaluation of the
10288AML
10289interpreter by allowing a single ASL source module to be compiled for
10290either
1029132-bit or 64-bit integers.
10292
10293
10294----------------------------------------
1029527 August 2004.  Summary of changes for version 20040827:
10296
102971) ACPI CA Core Subsystem:
10298
10299- Implemented support for implicit object conversion in the non-numeric
10300logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
10301and
10302LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
10303the second operand is implicitly converted on the fly to match the type
10304of
10305the first operand.  For example:
10306
10307    LEqual (Source1, Source2)
10308
10309Source1 and Source2 must each evaluate to an integer, a string, or a
10310buffer.
10311The data type of Source1 dictates the required type of Source2. Source2
10312is
10313implicitly converted if necessary to match the type of Source1.
10314
10315- Updated and corrected the behavior of the string conversion support.
10316The
10317rules concerning conversion of buffers to strings (according to the ACPI
10318specification) are as follows:
10319
10320ToDecimalString - explicit byte-wise conversion of buffer to string of
10321decimal values (0-255) separated by commas. ToHexString - explicit byte-
10322wise
10323conversion of buffer to string of hex values (0-FF) separated by commas.
10324ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
10325byte
10326copy with no transform except NULL terminated. Any other implicit buffer-
10327to-
10328string conversion - byte-wise conversion of buffer to string of hex
10329values
10330(0-FF) separated by spaces.
10331
10332- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
10333
10334- Fixed a problem in AcpiNsGetPathnameLength where the returned length
10335was
10336one byte too short in the case of a node in the root scope.  This could
10337cause a fault during debug output.
10338
10339- Code and Data Size: Current and previous core subsystem library sizes
10340are
10341shown below.  These are the code and data sizes for the acpica.lib
10342produced
10343by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10344any ACPI driver or OSPM code.  The debug version of the code includes the
10345debug output trace mechanism and has a much larger code and data size.
10346Note
10347that these values will vary depending on the efficiency of the compiler
10348and
10349the compiler options used during generation.
10350
10351  Previous Release:
10352    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10353    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10354  Current Release:
10355    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10356    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10357
10358
103592) iASL Compiler/Disassembler:
10360
10361- Fixed a Linux generation error.
10362
10363
10364----------------------------------------
1036516 August 2004.  Summary of changes for version 20040816:
10366
103671) ACPI CA Core Subsystem:
10368
10369Designed and implemented support within the AML interpreter for the so-
10370called "implicit return".  This support returns the result of the last
10371ASL
10372operation within a control method, in the absence of an explicit Return()
10373operator.  A few machines depend on this behavior, even though it is not
10374explicitly supported by the ASL language.  It is optional support that
10375can
10376be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
10377
10378Removed support for the PCI_Config address space from the internal low
10379level
10380hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
10381support was not used internally, and would not work correctly anyway
10382because
10383the PCI bus number and segment number were not supported.  There are
10384separate interfaces for PCI configuration space access because of the
10385unique
10386interface.
10387
10388Code and Data Size: Current and previous core subsystem library sizes are
10389shown below.  These are the code and data sizes for the acpica.lib
10390produced
10391by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10392any ACPI driver or OSPM code.  The debug version of the code includes the
10393debug output trace mechanism and has a much larger code and data size.
10394Note
10395that these values will vary depending on the efficiency of the compiler
10396and
10397the compiler options used during generation.
10398
10399  Previous Release:
10400    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10401    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10402  Current Release:
10403    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10404    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10405
10406
104072) iASL Compiler/Disassembler:
10408
10409Fixed a problem where constants in ASL expressions at the root level (not
10410within a control method) could be inadvertently truncated during code
10411generation.  This problem was introduced in the 20040715 release.
10412
10413
10414----------------------------------------
1041515 July 2004.  Summary of changes for version 20040715:
10416
104171) ACPI CA Core Subsystem:
10418
10419Restructured the internal HW GPE interfaces to pass/track the current
10420state
10421of interrupts (enabled/disabled) in order to avoid possible deadlock and
10422increase flexibility of the interfaces.
10423
10424Implemented a "lexicographical compare" for String and Buffer objects
10425within
10426the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
10427-
10428as per further clarification to the ACPI specification.  Behavior is
10429similar
10430to C library "strcmp".
10431
10432Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
10433external function.  In the 32-bit non-debug case, the stack use has been
10434reduced from 168 bytes to 32 bytes.
10435
10436Deployed a new run-time configuration flag,
10437AcpiGbl_EnableInterpreterSlack,
10438whose purpose is to allow the AML interpreter to forgive certain bad AML
10439constructs.  Default setting is FALSE.
10440
10441Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
10442IO
10443support code.  If enabled, it allows field access to go beyond the end of
10444a
10445region definition if the field is within the region length rounded up to
10446the
10447next access width boundary (a common coding error.)
10448
10449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
10450ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
10451these
10452symbols are lowercased by the latest version of the AcpiSrc tool.
10453
10454The prototypes for the PCI interfaces in acpiosxf.h have been updated to
10455rename "Register" to simply "Reg" to prevent certain compilers from
10456complaining.
10457
10458Code and Data Size: Current and previous core subsystem library sizes are
10459shown below.  These are the code and data sizes for the acpica.lib
10460produced
10461by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10462any ACPI driver or OSPM code.  The debug version of the code includes the
10463debug output trace mechanism and has a much larger code and data size.
10464Note
10465that these values will vary depending on the efficiency of the compiler
10466and
10467the compiler options used during generation.
10468
10469  Previous Release:
10470    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10471    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10472  Current Release:
10473    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10474    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10475
10476
104772) iASL Compiler/Disassembler:
10478
10479Implemented full support for Package objects within the Case() operator.
10480Note: The Break() operator is currently not supported within Case blocks
10481(TermLists) as there is some question about backward compatibility with
10482ACPI
104831.0 interpreters.
10484
10485
10486Fixed a problem where complex terms were not supported properly within
10487the
10488Switch() operator.
10489
10490Eliminated extraneous warning for compiler-emitted reserved names of the
10491form "_T_x".  (Used in Switch/Case operators.)
10492
10493Eliminated optimization messages for "_T_x" objects and small constants
10494within the DefinitionBlock operator.
10495
10496
10497----------------------------------------
1049815 June 2004.  Summary of changes for version 20040615:
10499
105001) ACPI CA Core Subsystem:
10501
10502Implemented support for Buffer and String objects (as per ACPI 2.0) for
10503the
10504following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10505LLessEqual.
10506
10507All directory names in the entire source package are lower case, as they
10508were in earlier releases.
10509
10510Implemented "Disassemble" command in the AML debugger that will
10511disassemble
10512a single control method.
10513
10514Code and Data Size: Current and previous core subsystem library sizes are
10515shown below.  These are the code and data sizes for the acpica.lib
10516produced
10517by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10518any ACPI driver or OSPM code.  The debug version of the code includes the
10519debug output trace mechanism and has a much larger code and data size.
10520Note
10521that these values will vary depending on the efficiency of the compiler
10522and
10523the compiler options used during generation.
10524
10525  Previous Release:
10526    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10527    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10528
10529  Current Release:
10530    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10531    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10532
10533
105342) iASL Compiler/Disassembler:
10535
10536Implemented support for Buffer and String objects (as per ACPI 2.0) for
10537the
10538following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10539LLessEqual.
10540
10541All directory names in the entire source package are lower case, as they
10542were in earlier releases.
10543
10544Fixed a fault when using the -g or -d<nofilename> options if the FADT was
10545not found.
10546
10547Fixed an issue with the Windows version of the compiler where later
10548versions
10549of Windows place the FADT in the registry under the name "FADT" and not
10550"FACP" as earlier versions did.  This applies when using the -g or -
10551d<nofilename> options.  The compiler now looks for both strings as
10552necessary.
10553
10554Fixed a problem with compiler namepath optimization where a namepath
10555within
10556the Scope() operator could not be optimized if the namepath was a subpath
10557of
10558the current scope path.
10559
10560----------------------------------------
1056127 May 2004.  Summary of changes for version 20040527:
10562
105631) ACPI CA Core Subsystem:
10564
10565Completed a new design and implementation for EBDA (Extended BIOS Data
10566Area)
10567support in the RSDP scan code.  The original code improperly scanned for
10568the
10569EBDA by simply scanning from memory location 0 to 0x400.  The correct
10570method
10571is to first obtain the EBDA pointer from within the BIOS data area, then
10572scan 1K of memory starting at the EBDA pointer.  There appear to be few
10573if
10574any machines that place the RSDP in the EBDA, however.
10575
10576Integrated a fix for a possible fault during evaluation of BufferField
10577arguments.  Obsolete code that was causing the problem was removed.
10578
10579Found and fixed a problem in the Field Support Code where data could be
10580corrupted on a bit field read that starts on an aligned boundary but does
10581not end on an aligned boundary.  Merged the read/write "datum length"
10582calculation code into a common procedure.
10583
10584Rolled in a couple of changes to the FreeBSD-specific header.
10585
10586
10587Code and Data Size: Current and previous core subsystem library sizes are
10588shown below.  These are the code and data sizes for the acpica.lib
10589produced
10590by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10591any ACPI driver or OSPM code.  The debug version of the code includes the
10592debug output trace mechanism and has a much larger code and data size.
10593Note
10594that these values will vary depending on the efficiency of the compiler
10595and
10596the compiler options used during generation.
10597
10598  Previous Release:
10599    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10600    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10601  Current Release:
10602    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10603    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10604
10605
106062) iASL Compiler/Disassembler:
10607
10608Fixed a generation warning produced by some overly-verbose compilers for
10609a
1061064-bit constant.
10611
10612----------------------------------------
1061314 May 2004.  Summary of changes for version 20040514:
10614
106151) ACPI CA Core Subsystem:
10616
10617Fixed a problem where hardware GPE enable bits sometimes not set properly
10618during and after GPE method execution.  Result of 04/27 changes.
10619
10620Removed extra "clear all GPEs" when sleeping/waking.
10621
10622Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
10623AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
10624to
10625the new AcpiEv* calls as appropriate.
10626
10627ACPI_OS_NAME was removed from the OS-specific headers.  The default name
10628is
10629now "Microsoft Windows NT" for maximum compatibility.  However this can
10630be
10631changed by modifying the acconfig.h file.
10632
10633Allow a single invocation of AcpiInstallNotifyHandler for a handler that
10634traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
10635
10636Run _INI methods on ThermalZone objects.  This is against the ACPI
10637specification, but there is apparently ASL code in the field that has
10638these
10639_INI methods, and apparently "other" AML interpreters execute them.
10640
10641Performed a full 16/32/64 bit lint that resulted in some small changes.
10642
10643Added a sleep simulation command to the AML debugger to test sleep code.
10644
10645Code and Data Size: Current and previous core subsystem library sizes are
10646shown below.  These are the code and data sizes for the acpica.lib
10647produced
10648by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10649any ACPI driver or OSPM code.  The debug version of the code includes the
10650debug output trace mechanism and has a much larger code and data size.
10651Note
10652that these values will vary depending on the efficiency of the compiler
10653and
10654the compiler options used during generation.
10655
10656  Previous Release:
10657    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10658    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10659  Current Release:
10660    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10661    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10662
10663----------------------------------------
1066427 April 2004.  Summary of changes for version 20040427:
10665
106661) ACPI CA Core Subsystem:
10667
10668Completed a major overhaul of the GPE handling within ACPI CA.  There are
10669now three types of GPEs:  wake-only, runtime-only, and combination
10670wake/run.
10671The only GPEs allowed to be combination wake/run are for button-style
10672devices such as a control-method power button, control-method sleep
10673button,
10674or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
10675not
10676referenced by any _PRW methods are marked for "runtime" and hardware
10677enabled.  Any GPE that is referenced by a _PRW method is marked for
10678"wake"
10679(and disabled at runtime).  However, at sleep time, only those GPEs that
10680have been specifically enabled for wake via the AcpiEnableGpe interface
10681will
10682actually be hardware enabled.
10683
10684A new external interface has been added, AcpiSetGpeType(), that is meant
10685to
10686be used by device drivers to force a GPE to a particular type.  It will
10687be
10688especially useful for the drivers for the button devices mentioned above.
10689
10690Completed restructuring of the ACPI CA initialization sequence so that
10691default operation region handlers are installed before GPEs are
10692initialized
10693and the _PRW methods are executed.  This will prevent errors when the
10694_PRW
10695methods attempt to access system memory or I/O space.
10696
10697GPE enable/disable no longer reads the GPE enable register.  We now keep
10698the
10699enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
10700thus no longer depend on the hardware to maintain these bits.
10701
10702Always clear the wake status and fixed/GPE status bits before sleep, even
10703for state S5.
10704
10705Improved the AML debugger output for displaying the GPE blocks and their
10706current status.
10707
10708Added new strings for the _OSI method, of the form "Windows 2001 SPx"
10709where
10710x = 0,1,2,3,4.
10711
10712Fixed a problem where the physical address was incorrectly calculated
10713when
10714the Load() operator was used to directly load from an Operation Region
10715(vs.
10716loading from a Field object.)  Also added check for minimum table length
10717for
10718this case.
10719
10720Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
10721mutex release.
10722
10723Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
10724consistency with the other fields returned.
10725
10726Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
10727structure for each GPE in the system, so the size of this structure is
10728important.
10729
10730CPU stack requirement reduction:  Cleaned up the method execution and
10731object
10732evaluation paths so that now a parameter structure is passed, instead of
10733copying the various method parameters over and over again.
10734
10735In evregion.c:  Correctly exit and reenter the interpreter region if and
10736only if dispatching an operation region request to a user-installed
10737handler.
10738Do not exit/reenter when dispatching to a default handler (e.g., default
10739system memory or I/O handlers)
10740
10741
10742Notes for updating drivers for the new GPE support.  The following
10743changes
10744must be made to ACPI-related device drivers that are attached to one or
10745more
10746GPEs: (This information will be added to the ACPI CA Programmer
10747Reference.)
10748
107491) AcpiInstallGpeHandler no longer automatically enables the GPE, you
10750must
10751explicitly call AcpiEnableGpe.
107522) There is a new interface called AcpiSetGpeType. This should be called
10753before enabling the GPE.  Also, this interface will automatically disable
10754the GPE if it is currently enabled.
107553) AcpiEnableGpe no longer supports a GPE type flag.
10756
10757Specific drivers that must be changed:
107581) EC driver:
10759    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
10760AeGpeHandler, NULL);
10761    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
10762    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
10763
107642) Button Drivers (Power, Lid, Sleep):
10765Run _PRW method under parent device
10766If _PRW exists: /* This is a control-method button */
10767    Extract GPE number and possibly GpeDevice
10768    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
10769    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
10770
10771For all other devices that have _PRWs, we automatically set the GPE type
10772to
10773ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
10774This
10775must be done on a selective basis, usually requiring some kind of user
10776app
10777to allow the user to pick the wake devices.
10778
10779
10780Code and Data Size: Current and previous core subsystem library sizes are
10781shown below.  These are the code and data sizes for the acpica.lib
10782produced
10783by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10784any ACPI driver or OSPM code.  The debug version of the code includes the
10785debug output trace mechanism and has a much larger code and data size.
10786Note
10787that these values will vary depending on the efficiency of the compiler
10788and
10789the compiler options used during generation.
10790
10791  Previous Release:
10792    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10793    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10794  Current Release:
10795
10796    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10797    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10798
10799
10800
10801----------------------------------------
1080202 April 2004.  Summary of changes for version 20040402:
10803
108041) ACPI CA Core Subsystem:
10805
10806Fixed an interpreter problem where an indirect store through an ArgX
10807parameter was incorrectly applying the "implicit conversion rules" during
10808the store.  From the ACPI specification: "If the target is a method local
10809or
10810argument (LocalX or ArgX), no conversion is performed and the result is
10811stored directly to the target".  The new behavior is to disable implicit
10812conversion during ALL stores to an ArgX.
10813
10814Changed the behavior of the _PRW method scan to ignore any and all errors
10815returned by a given _PRW.  This prevents the scan from aborting from the
10816failure of any single _PRW.
10817
10818Moved the runtime configuration parameters from the global init procedure
10819to
10820static variables in acglobal.h.  This will allow the host to override the
10821default values easily.
10822
10823Code and Data Size: Current and previous core subsystem library sizes are
10824shown below.  These are the code and data sizes for the acpica.lib
10825produced
10826by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10827any ACPI driver or OSPM code.  The debug version of the code includes the
10828debug output trace mechanism and has a much larger code and data size.
10829Note
10830that these values will vary depending on the efficiency of the compiler
10831and
10832the compiler options used during generation.
10833
10834  Previous 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  Current Release:
10838    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10839    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10840
10841
108422) iASL Compiler/Disassembler:
10843
10844iASL now fully disassembles SSDTs.  However, External() statements are
10845not
10846generated automatically for unresolved symbols at this time.  This is a
10847planned feature for future implementation.
10848
10849Fixed a scoping problem in the disassembler that occurs when the type of
10850the
10851target of a Scope() operator is overridden.  This problem caused an
10852incorrectly nested internal namespace to be constructed.
10853
10854Any warnings or errors that are emitted during disassembly are now
10855commented
10856out automatically so that the resulting file can be recompiled without
10857any
10858hand editing.
10859
10860----------------------------------------
1086126 March 2004.  Summary of changes for version 20040326:
10862
108631) ACPI CA Core Subsystem:
10864
10865Implemented support for "wake" GPEs via interaction between GPEs and the
10866_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
10867identified as a WAKE GPE and by default will no longer be enabled at
10868runtime.  Previously, we were blindly enabling all GPEs with a
10869corresponding
10870_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
10871We
10872believe this has been the cause of thousands of "spurious" GPEs on some
10873systems.
10874
10875This new GPE behavior is can be reverted to the original behavior (enable
10876ALL GPEs at runtime) via a runtime flag.
10877
10878Fixed a problem where aliased control methods could not access objects
10879properly.  The proper scope within the namespace was not initialized
10880(transferred to the target of the aliased method) before executing the
10881target method.
10882
10883Fixed a potential race condition on internal object deletion on the
10884return
10885object in AcpiEvaluateObject.
10886
10887Integrated a fix for resource descriptors where both _MEM and _MTP were
10888being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
10889wide, 0x0F instead of 0x03.)
10890
10891Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
10892preventing
10893a
10894fault in some cases.
10895
10896Updated Notify() values for debug statements in evmisc.c
10897
10898Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
10899
10900Code and Data Size: Current and previous core subsystem library sizes are
10901shown below.  These are the code and data sizes for the acpica.lib
10902produced
10903by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10904any ACPI driver or OSPM code.  The debug version of the code includes the
10905debug output trace mechanism and has a much larger code and data size.
10906Note
10907that these values will vary depending on the efficiency of the compiler
10908and
10909the compiler options used during generation.
10910
10911  Previous Release:
10912
10913    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
10914    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
10915  Current Release:
10916    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
10917    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
10918
10919----------------------------------------
1092011 March 2004.  Summary of changes for version 20040311:
10921
109221) ACPI CA Core Subsystem:
10923
10924Fixed a problem where errors occurring during the parse phase of control
10925method execution did not abort cleanly.  For example, objects created and
10926installed in the namespace were not deleted.  This caused all subsequent
10927invocations of the method to return the AE_ALREADY_EXISTS exception.
10928
10929Implemented a mechanism to force a control method to "Serialized"
10930execution
10931if the method attempts to create namespace objects. (The root of the
10932AE_ALREADY_EXISTS problem.)
10933
10934Implemented support for the predefined _OSI "internal" control method.
10935Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
10936and
10937"Windows 2001.1", and can be easily upgraded for new strings as
10938necessary.
10939This feature will allow "other" operating systems to execute the fully
10940tested, "Windows" code path through the ASL code
10941
10942Global Lock Support:  Now allows multiple acquires and releases with any
10943internal thread.  Removed concept of "owning thread" for this special
10944mutex.
10945
10946Fixed two functions that were inappropriately declaring large objects on
10947the
10948CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
10949during
10950method execution considerably.
10951
10952Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
10953S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
10954
10955Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
10956defined on the machine.
10957
10958Implemented two runtime options:  One to force all control method
10959execution
10960to "Serialized" to mimic Windows behavior, another to disable _OSI
10961support
10962if it causes problems on a given machine.
10963
10964Code and Data Size: Current and previous core subsystem library sizes are
10965shown below.  These are the code and data sizes for the acpica.lib
10966produced
10967by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10968any ACPI driver or OSPM code.  The debug version of the code includes the
10969debug output trace mechanism and has a much larger code and data size.
10970Note
10971that these values will vary depending on the efficiency of the compiler
10972and
10973the compiler options used during generation.
10974
10975  Previous Release:
10976    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
10977    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
10978  Current Release:
10979    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
10980    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
10981
109822) iASL Compiler/Disassembler:
10983
10984Fixed an array size problem for FreeBSD that would cause the compiler to
10985fault.
10986
10987----------------------------------------
1098820 February 2004.  Summary of changes for version 20040220:
10989
10990
109911) ACPI CA Core Subsystem:
10992
10993Implemented execution of _SxD methods for Device objects in the
10994GetObjectInfo interface.
10995
10996Fixed calls to _SST method to pass the correct arguments.
10997
10998Added a call to _SST on wake to restore to "working" state.
10999
11000Check for End-Of-Buffer failure case in the WalkResources interface.
11001
11002Integrated fix for 64-bit alignment issue in acglobal.h by moving two
11003structures to the beginning of the file.
11004
11005After wake, clear GPE status register(s) before enabling GPEs.
11006
11007After wake, clear/enable power button.  (Perhaps we should clear/enable
11008all
11009fixed events upon wake.)
11010
11011Fixed a couple of possible memory leaks in the Namespace manager.
11012
11013Integrated latest acnetbsd.h file.
11014
11015----------------------------------------
1101611 February 2004.  Summary of changes for version 20040211:
11017
11018
110191) ACPI CA Core Subsystem:
11020
11021Completed investigation and implementation of the call-by-reference
11022mechanism for control method arguments.
11023
11024Fixed a problem where a store of an object into an indexed package could
11025fail if the store occurs within a different method than the method that
11026created the package.
11027
11028Fixed a problem where the ToDecimal operator could return incorrect
11029results.
11030
11031Fixed a problem where the CopyObject operator could fail on some of the
11032more
11033obscure objects (e.g., Reference objects.)
11034
11035Improved the output of the Debug object to display buffer, package, and
11036index objects.
11037
11038Fixed a problem where constructs of the form "RefOf (ArgX)" did not
11039return
11040the expected result.
11041
11042Added permanent ACPI_REPORT_ERROR macros for all instances of the
11043ACPI_AML_INTERNAL exception.
11044
11045Integrated latest version of acfreebsd.h
11046
11047----------------------------------------
1104816 January 2004.  Summary of changes for version 20040116:
11049
11050The purpose of this release is primarily to update the copyright years in
11051each module, thus causing a huge number of diffs.  There are a few small
11052functional changes, however.
11053
110541) ACPI CA Core Subsystem:
11055
11056Improved error messages when there is a problem finding one or more of
11057the
11058required base ACPI tables
11059
11060Reintroduced the definition of APIC_HEADER in actbl.h
11061
11062Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
11063
11064Removed extraneous reference to NewObj in dsmthdat.c
11065
110662) iASL compiler
11067
11068Fixed a problem introduced in December that disabled the correct
11069disassembly
11070of Resource Templates
11071
11072
11073----------------------------------------
1107403 December 2003.  Summary of changes for version 20031203:
11075
110761) ACPI CA Core Subsystem:
11077
11078Changed the initialization of Operation Regions during subsystem
11079init to perform two entire walks of the ACPI namespace; The first
11080to initialize the regions themselves, the second to execute the
11081_REG methods.  This fixed some interdependencies across _REG
11082methods found on some machines.
11083
11084Fixed a problem where a Store(Local0, Local1) could simply update
11085the object reference count, and not create a new copy of the
11086object if the Local1 is uninitialized.
11087
11088Implemented support for the _SST reserved method during sleep
11089transitions.
11090
11091Implemented support to clear the SLP_TYP and SLP_EN bits when
11092waking up, this is apparently required by some machines.
11093
11094When sleeping, clear the wake status only if SleepState is not S5.
11095
11096Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11097pointer arithmetic advanced a string pointer too far.
11098
11099Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11100could be returned if the requested table has not been loaded.
11101
11102Within the support for IRQ resources, restructured the handling of
11103the active and edge/level bits.
11104
11105Fixed a few problems in AcpiPsxExecute() where memory could be
11106leaked under certain error conditions.
11107
11108Improved error messages for the cases where the ACPI mode could
11109not be entered.
11110
11111Code and Data Size: Current and previous core subsystem library
11112sizes are shown below.  These are the code and data sizes for the
11113acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11114these values do not include any ACPI driver or OSPM code.  The
11115debug version of the code includes the debug output trace
11116mechanism and has a much larger code and data size.  Note that
11117these values will vary depending on the efficiency of the compiler
11118and the compiler options used during generation.
11119
11120  Previous Release (20031029):
11121    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11122    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11123  Current Release:
11124    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11125    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11126
111272) iASL Compiler/Disassembler:
11128
11129Implemented a fix for the iASL disassembler where a bad index was
11130generated.  This was most noticeable on 64-bit platforms
11131
11132
11133----------------------------------------
1113429 October 2003.  Summary of changes for version 20031029:
11135
111361) ACPI CA Core Subsystem:
11137
11138
11139Fixed a problem where a level-triggered GPE with an associated
11140_Lxx control method was incorrectly cleared twice.
11141
11142Fixed a problem with the Field support code where an access can
11143occur beyond the end-of-region if the field is non-aligned but
11144extends to the very end of the parent region (resulted in an
11145AE_AML_REGION_LIMIT exception.)
11146
11147Fixed a problem with ACPI Fixed Events where an RT Clock handler
11148would not get invoked on an RTC event.  The RTC event bitmasks for
11149the PM1 registers were not being initialized properly.
11150
11151Implemented support for executing _STA and _INI methods for
11152Processor objects.  Although this is currently not part of the
11153ACPI specification, there is existing ASL code that depends on the
11154init-time execution of these methods.
11155
11156Implemented and deployed a GetDescriptorName function to decode
11157the various types of internal descriptors.  Guards against null
11158descriptors during debug output also.
11159
11160Implemented and deployed a GetNodeName function to extract the 4-
11161character namespace node name.  This function simplifies the debug
11162and error output, as well as guarding against null pointers during
11163output.
11164
11165Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11166simplify the debug and error output of 64-bit integers.  This
11167macro replaces the HIDWORD and LODWORD macros for dumping these
11168integers.
11169
11170Updated the implementation of the Stall() operator to only call
11171AcpiOsStall(), and also return an error if the operand is larger
11172than 255.  This preserves the required behavior of not
11173relinquishing the processor, as would happen if AcpiOsSleep() was
11174called for "long stalls".
11175
11176Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11177initialized are now treated as NOOPs.
11178
11179Cleaned up a handful of warnings during 64-bit generation.
11180
11181Fixed a reported error where and incorrect GPE number was passed
11182to the GPE dispatch handler.  This value is only used for error
11183output, however.  Used this opportunity to clean up and streamline
11184the GPE dispatch code.
11185
11186Code and Data Size: Current and previous core subsystem library
11187sizes are shown below.  These are the code and data sizes for the
11188acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11189these values do not include any ACPI driver or OSPM code.  The
11190
11191debug version of the code includes the debug output trace
11192mechanism and has a much larger code and data size.  Note that
11193these values will vary depending on the efficiency of the compiler
11194and the compiler options used during generation.
11195
11196  Previous Release (20031002):
11197    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11198    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11199  Current Release:
11200    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11201    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11202
11203
112042) iASL Compiler/Disassembler:
11205
11206Updated the iASL compiler to return an error if the operand to the
11207Stall() operator is larger than 255.
11208
11209
11210----------------------------------------
1121102 October 2003.  Summary of changes for version 20031002:
11212
11213
112141) ACPI CA Core Subsystem:
11215
11216Fixed a problem with Index Fields where the index was not
11217incremented for fields that require multiple writes to the
11218index/data registers (Fields that are wider than the data
11219register.)
11220
11221Fixed a problem with all Field objects where a write could go
11222beyond the end-of-field if the field was larger than the access
11223granularity and therefore required multiple writes to complete the
11224request.  An extra write beyond the end of the field could happen
11225inadvertently.
11226
11227Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
11228would incorrectly be returned if the width of the Data Register
11229was larger than the specified field access width.
11230
11231Completed fixes for LoadTable() and Unload() and verified their
11232operation.  Implemented full support for the "DdbHandle" object
11233throughout the ACPI CA subsystem.
11234
11235Implemented full support for the MADT and ECDT tables in the ACPI
11236CA header files.  Even though these tables are not directly
11237consumed by ACPI CA, the header definitions are useful for ACPI
11238device drivers.
11239
11240Integrated resource descriptor fixes posted to the Linux ACPI
11241list.  This included checks for minimum descriptor length, and
11242support for trailing NULL strings within descriptors that have
11243optional string elements.
11244
11245Code and Data Size: Current and previous core subsystem library
11246sizes are shown below.  These are the code and data sizes for the
11247acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11248these values do not include any ACPI driver or OSPM code.  The
11249debug version of the code includes the debug output trace
11250mechanism and has a much larger code and data size.  Note that
11251these values will vary depending on the efficiency of the compiler
11252and the compiler options used during generation.
11253
11254  Previous Release (20030918):
11255    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11256    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11257  Current Release:
11258    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11259    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11260
11261
112622) iASL Compiler:
11263
11264Implemented detection of non-ASCII characters within the input
11265source ASL file.  This catches attempts to compile binary (AML)
11266files early in the compile, with an informative error message.
11267
11268Fixed a problem where the disassembler would fault if the output
11269filename could not be generated or if the output file could not be
11270opened.
11271
11272----------------------------------------
1127318 September 2003.  Summary of changes for version 20030918:
11274
11275
112761) ACPI CA Core Subsystem:
11277
11278Found and fixed a longstanding problem with the late execution of
11279the various deferred AML opcodes (such as Operation Regions,
11280Buffer Fields, Buffers, and Packages).  If the name string
11281specified for the name of the new object placed the object in a
11282scope other than the current scope, the initialization/execution
11283of the opcode failed.  The solution to this problem was to
11284implement a mechanism where the late execution of such opcodes
11285does not attempt to lookup/create the name a second time in an
11286incorrect scope.  This fixes the "region size computed
11287incorrectly" problem.
11288
11289Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
11290Global Lock AE_BAD_PARAMETER error.
11291
11292Fixed several 64-bit issues with prototypes, casting and data
11293types.
11294
11295Removed duplicate prototype from acdisasm.h
11296
11297Fixed an issue involving EC Operation Region Detach (Shaohua Li)
11298
11299Code and Data Size: Current and previous core subsystem library
11300sizes are shown below.  These are the code and data sizes for the
11301acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11302these values do not include any ACPI driver or OSPM code.  The
11303debug version of the code includes the debug output trace
11304mechanism and has a much larger code and data size.  Note that
11305these values will vary depending on the efficiency of the compiler
11306and the compiler options used during generation.
11307
11308  Previous Release:
11309
11310    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11311    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11312  Current Release:
11313    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11314    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11315
11316
113172) Linux:
11318
11319Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
11320correct sleep time in seconds.
11321
11322----------------------------------------
1132314 July 2003.  Summary of changes for version 20030619:
11324
113251) ACPI CA Core Subsystem:
11326
11327Parse SSDTs in order discovered, as opposed to reverse order
11328(Hrvoje Habjanic)
11329
11330Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
11331Klausner,
11332   Nate Lawson)
11333
11334
113352) Linux:
11336
11337Dynamically allocate SDT list (suggested by Andi Kleen)
11338
11339proc function return value cleanups (Andi Kleen)
11340
11341Correctly handle NMI watchdog during long stalls (Andrew Morton)
11342
11343Make it so acpismp=force works (reported by Andrew Morton)
11344
11345
11346----------------------------------------
1134719 June 2003.  Summary of changes for version 20030619:
11348
113491) ACPI CA Core Subsystem:
11350
11351Fix To/FromBCD, eliminating the need for an arch-specific #define.
11352
11353Do not acquire a semaphore in the S5 shutdown path.
11354
11355Fix ex_digits_needed for 0. (Takayoshi Kochi)
11356
11357Fix sleep/stall code reversal. (Andi Kleen)
11358
11359Revert a change having to do with control method calling
11360semantics.
11361
113622) Linux:
11363
11364acpiphp update (Takayoshi Kochi)
11365
11366Export acpi_disabled for sonypi (Stelian Pop)
11367
11368Mention acpismp=force in config help
11369
11370Re-add acpitable.c and acpismp=force. This improves backwards
11371
11372compatibility and also cleans up the code to a significant degree.
11373
11374Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
11375
11376----------------------------------------
1137722 May 2003.  Summary of changes for version 20030522:
11378
113791) ACPI CA Core Subsystem:
11380
11381Found and fixed a reported problem where an AE_NOT_FOUND error
11382occurred occasionally during _BST evaluation.  This turned out to
11383be an Owner ID allocation issue where a called method did not get
11384a new ID assigned to it.  Eventually, (after 64k calls), the Owner
11385ID UINT16 would wraparound so that the ID would be the same as the
11386caller's and the called method would delete the caller's
11387namespace.
11388
11389Implemented extended error reporting for control methods that are
11390aborted due to a run-time exception.  Output includes the exact
11391AML instruction that caused the method abort, a dump of the method
11392locals and arguments at the time of the abort, and a trace of all
11393nested control method calls.
11394
11395Modified the interpreter to allow the creation of buffers of zero
11396length from the AML code. Implemented new code to ensure that no
11397attempt is made to actually allocate a memory buffer (of length
11398zero) - instead, a simple buffer object with a NULL buffer pointer
11399and length zero is created.  A warning is no longer issued when
11400the AML attempts to create a zero-length buffer.
11401
11402Implemented a workaround for the "leading asterisk issue" in
11403_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
11404asterisk is automatically removed if present in any HID, UID, or
11405CID strings.  The iASL compiler will still flag this asterisk as
11406an error, however.
11407
11408Implemented full support for _CID methods that return a package of
11409multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
11410now additionally returns a device _CID list if present.  This
11411required a change to the external interface in order to pass an
11412ACPI_BUFFER object as a parameter since the _CID list is of
11413variable length.
11414
11415Fixed a problem with the new AE_SAME_HANDLER exception where
11416handler initialization code did not know about this exception.
11417
11418Code and Data Size: Current and previous core subsystem library
11419sizes are shown below.  These are the code and data sizes for the
11420acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11421these values do not include any ACPI driver or OSPM code.  The
11422debug version of the code includes the debug output trace
11423mechanism and has a much larger code and data size.  Note that
11424these values will vary depending on the efficiency of the compiler
11425and the compiler options used during generation.
11426
11427  Previous Release (20030509):
11428    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11429    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11430  Current Release:
11431    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11432    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11433
11434
114352) Linux:
11436
11437Fixed a bug in which we would reinitialize the ACPI interrupt
11438after it was already working, thus disabling all ACPI and the IRQs
11439for any other device sharing the interrupt. (Thanks to Stian
11440Jordet)
11441
11442Toshiba driver update (John Belmonte)
11443
11444Return only 0 or 1 for our interrupt handler status (Andrew
11445Morton)
11446
11447
114483) iASL Compiler:
11449
11450Fixed a reported problem where multiple (nested) ElseIf()
11451statements were not handled correctly by the compiler, resulting
11452in incorrect warnings and incorrect AML code.  This was a problem
11453in both the ASL parser and the code generator.
11454
11455
114564) Documentation:
11457
11458Added changes to existing interfaces, new exception codes, and new
11459text concerning reference count object management versus garbage
11460collection.
11461
11462----------------------------------------
1146309 May 2003.  Summary of changes for version 20030509.
11464
11465
114661) ACPI CA Core Subsystem:
11467
11468Changed the subsystem initialization sequence to hold off
11469installation of address space handlers until the hardware has been
11470initialized and the system has entered ACPI mode.  This is because
11471the installation of space handlers can cause _REG methods to be
11472run.  Previously, the _REG methods could potentially be run before
11473ACPI mode was enabled.
11474
11475Fixed some memory leak issues related to address space handler and
11476notify handler installation.  There were some problems with the
11477reference count mechanism caused by the fact that the handler
11478objects are shared across several namespace objects.
11479
11480Fixed a reported problem where reference counts within the
11481namespace were not properly updated when named objects created by
11482method execution were deleted.
11483
11484Fixed a reported problem where multiple SSDTs caused a deletion
11485issue during subsystem termination.  Restructured the table data
11486structures to simplify the linked lists and the related code.
11487
11488Fixed a problem where the table ID associated with secondary
11489tables (SSDTs) was not being propagated into the namespace objects
11490created by those tables.  This would only present a problem for
11491tables that are unloaded at run-time, however.
11492
11493Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
11494type as the length parameter (instead of UINT32).
11495
11496Solved a long-standing problem where an ALREADY_EXISTS error
11497appears on various systems.  This problem could happen when there
11498are multiple PCI_Config operation regions under a single PCI root
11499bus.  This doesn't happen very frequently, but there are some
11500systems that do this in the ASL.
11501
11502Fixed a reported problem where the internal DeleteNode function
11503was incorrectly handling the case where a namespace node was the
11504first in the parent's child list, and had additional peers (not
11505the only child, but first in the list of children.)
11506
11507Code and Data Size: Current core subsystem library sizes are shown
11508below.  These are the code and data sizes for the acpica.lib
11509produced by the Microsoft Visual C++ 6.0 compiler, and these
11510values do not include any ACPI driver or OSPM code.  The debug
11511version of the code includes the debug output trace mechanism and
11512has a much larger code and data size.  Note that these values will
11513vary depending on the efficiency of the compiler and the compiler
11514options used during generation.
11515
11516  Previous Release
11517    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11518    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11519  Current Release:
11520    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11521    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11522
11523
115242) Linux:
11525
11526Allow ":" in OS override string (Ducrot Bruno)
11527
11528Kobject fix (Greg KH)
11529
11530
115313 iASL Compiler/Disassembler:
11532
11533Fixed a problem in the generation of the C source code files (AML
11534is emitted in C source statements for BIOS inclusion) where the
11535Ascii dump that appears within a C comment at the end of each line
11536could cause a compile time error if the AML sequence happens to
11537have an open comment or close comment sequence embedded.
11538
11539
11540----------------------------------------
1154124 April 2003.  Summary of changes for version 20030424.
11542
11543
115441) ACPI CA Core Subsystem:
11545
11546Support for big-endian systems has been implemented.  Most of the
11547support has been invisibly added behind big-endian versions of the
11548ACPI_MOVE_* macros.
11549
11550Fixed a problem in AcpiHwDisableGpeBlock() and
11551AcpiHwClearGpeBlock() where an incorrect offset was passed to the
11552low level hardware write routine.  The offset parameter was
11553actually eliminated from the low level read/write routines because
11554they had become obsolete.
11555
11556Fixed a problem where a handler object was deleted twice during
11557the removal of a fixed event handler.
11558
11559
115602) Linux:
11561
11562A fix for SMP systems with link devices was contributed by
11563
11564Compaq's Dan Zink.
11565
11566(2.5) Return whether we handled the interrupt in our IRQ handler.
11567(Linux ISRs no longer return void, so we can propagate the handler
11568return value from the ACPI CA core back to the OS.)
11569
11570
11571
115723) Documentation:
11573
11574The ACPI CA Programmer Reference has been updated to reflect new
11575interfaces and changes to existing interfaces.
11576
11577----------------------------------------
1157828 March 2003.  Summary of changes for version 20030328.
11579
115801) ACPI CA Core Subsystem:
11581
11582The GPE Block Device support has been completed.  New interfaces
11583are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
11584interfaces (enable, disable, clear, getstatus) have been split
11585into separate interfaces for Fixed Events and General Purpose
11586Events (GPEs) in order to support GPE Block Devices properly.
11587
11588Fixed a problem where the error message "Failed to acquire
11589semaphore" would appear during operations on the embedded
11590controller (EC).
11591
11592Code and Data Size: Current core subsystem library sizes are shown
11593below.  These are the code and data sizes for the acpica.lib
11594produced by the Microsoft Visual C++ 6.0 compiler, and these
11595values do not include any ACPI driver or OSPM code.  The debug
11596version of the code includes the debug output trace mechanism and
11597has a much larger code and data size.  Note that these values will
11598vary depending on the efficiency of the compiler and the compiler
11599options used during generation.
11600
11601  Previous Release
11602    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11603    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11604  Current Release:
11605    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11606    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11607
11608
11609----------------------------------------
1161028 February 2003.  Summary of changes for version 20030228.
11611
11612
116131) ACPI CA Core Subsystem:
11614
11615The GPE handling and dispatch code has been completely overhauled
11616in preparation for support of GPE Block Devices (ID ACPI0006).
11617This affects internal data structures and code only; there should
11618be no differences visible externally.  One new file has been
11619added, evgpeblk.c
11620
11621The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
11622fields that are used to determine the GPE block lengths.  The
11623REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
11624structures are ignored.  This is per the ACPI specification but it
11625isn't very clear.  The full 256 Block 0/1 GPEs are now supported
11626(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
11627
11628In the SCI interrupt handler, removed the read of the PM1_CONTROL
11629register to look at the SCI_EN bit.  On some machines, this read
11630causes an SMI event and greatly slows down SCI events.  (This may
11631in fact be the cause of slow battery status response on some
11632systems.)
11633
11634Fixed a problem where a store of a NULL string to a package object
11635could cause the premature deletion of the object.  This was seen
11636during execution of the battery _BIF method on some systems,
11637resulting in no battery data being returned.
11638
11639Added AcpiWalkResources interface to simplify parsing of resource
11640lists.
11641
11642Code and Data Size: Current core subsystem library sizes are shown
11643below.  These are the code and data sizes for the acpica.lib
11644produced by the Microsoft Visual C++ 6.0 compiler, and these
11645values do not include any ACPI driver or OSPM code.  The debug
11646version of the code includes the debug output trace mechanism and
11647has a much larger code and data size.  Note that these values will
11648vary depending on the efficiency of the compiler and the compiler
11649options used during generation.
11650
11651  Previous Release
11652    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11653    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11654  Current Release:
11655    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11656    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11657
11658
116592) Linux
11660
11661S3 fixes (Ole Rohne)
11662
11663Update ACPI PHP driver with to use new acpi_walk_resource API
11664(Bjorn Helgaas)
11665
11666Add S4BIOS support (Pavel Machek)
11667
11668Map in entire table before performing checksum (John Stultz)
11669
11670Expand the mem= cmdline to allow the specification of reserved and
11671ACPI DATA blocks (Pavel Machek)
11672
11673Never use ACPI on VISWS
11674
11675Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
11676
11677Revert a change that allowed P_BLK lengths to be 4 or 5. This is
11678causing us to think that some systems support C2 when they really
11679don't.
11680
11681Do not count processor objects for non-present CPUs (Thanks to
11682Dominik Brodowski)
11683
11684
116853) iASL Compiler:
11686
11687Fixed a problem where ASL include files could not be found and
11688opened.
11689
11690Added support for the _PDC reserved name.
11691
11692
11693----------------------------------------
1169422 January 2003.  Summary of changes for version 20030122.
11695
11696
116971) ACPI CA Core Subsystem:
11698
11699Added a check for constructs of the form:  Store (Local0, Local0)
11700where Local0 is not initialized.  Apparently, some BIOS
11701programmers believe that this is a NOOP.  Since this store doesn't
11702do anything anyway, the new prototype behavior will ignore this
11703error.  This is a case where we can relax the strict checking in
11704the interpreter in the name of compatibility.
11705
11706
117072) Linux
11708
11709The AcpiSrc Source Conversion Utility has been released with the
11710Linux package for the first time.  This is the utility that is
11711used to convert the ACPI CA base source code to the Linux version.
11712
11713(Both) Handle P_BLK lengths shorter than 6 more gracefully
11714
11715(Both) Move more headers to include/acpi, and delete an unused
11716header.
11717
11718(Both) Move drivers/acpi/include directory to include/acpi
11719
11720(Both) Boot functions don't use cmdline, so don't pass it around
11721
11722(Both) Remove include of unused header (Adrian Bunk)
11723
11724(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
11725the
11726former now also includes the latter, acpiphp.h only needs the one,
11727now.
11728
11729(2.5) Make it possible to select method of bios restoring after S3
11730resume. [=> no more ugly ifdefs] (Pavel Machek)
11731
11732(2.5) Make proc write interfaces work (Pavel Machek)
11733
11734(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
11735
11736(2.5) Break out ACPI Perf code into its own module, under cpufreq
11737(Dominik Brodowski)
11738
11739(2.4) S4BIOS support (Ducrot Bruno)
11740
11741(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
11742Visinoni)
11743
11744
117453) iASL Compiler:
11746
11747Added support to disassemble SSDT and PSDTs.
11748
11749Implemented support to obtain SSDTs from the Windows registry if
11750available.
11751
11752
11753----------------------------------------
1175409 January 2003.  Summary of changes for version 20030109.
11755
117561) ACPI CA Core Subsystem:
11757
11758Changed the behavior of the internal Buffer-to-String conversion
11759function.  The current ACPI specification states that the contents
11760of the buffer are "converted to a string of two-character
11761hexadecimal numbers, each separated by a space".  Unfortunately,
11762this definition is not backwards compatible with existing ACPI 1.0
11763implementations (although the behavior was not defined in the ACPI
117641.0 specification).  The new behavior simply copies data from the
11765buffer to the string until a null character is found or the end of
11766the buffer is reached.  The new String object is always null
11767terminated.  This problem was seen during the generation of _BIF
11768battery data where incorrect strings were returned for battery
11769type, etc.  This will also require an errata to the ACPI
11770specification.
11771
11772Renamed all instances of NATIVE_UINT and NATIVE_INT to
11773ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
11774
11775Copyright in all module headers (both Linux and non-Linux) has be
11776updated to 2003.
11777
11778Code and Data Size: Current core subsystem library sizes are shown
11779below.  These are the code and data sizes for the acpica.lib
11780produced by the Microsoft Visual C++ 6.0 compiler, and these
11781values do not include any ACPI driver or OSPM code.  The debug
11782version of the code includes the debug output trace mechanism and
11783has a much larger code and data size.  Note that these values will
11784vary depending on the efficiency of the compiler and the compiler
11785options used during generation.
11786
11787  Previous Release
11788    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11789    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11790  Current Release:
11791    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11792    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11793
11794
117952) Linux
11796
11797Fixed an oops on module insertion/removal (Matthew Tippett)
11798
11799(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
11800
11801(2.5) Replace pr_debug (Randy Dunlap)
11802
11803(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
11804
11805(Both) Eliminate spawning of thread from timer callback, in favor
11806of schedule_work()
11807
11808(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
11809
11810(Both) Added define for Fixed Function HW region (Matthew Wilcox)
11811
11812(Both) Add missing statics to button.c (Pavel Machek)
11813
11814Several changes have been made to the source code translation
11815utility that generates the Linux Code in order to make the code
11816more "Linux-like":
11817
11818All typedefs on structs and unions have been removed in keeping
11819with the Linux coding style.
11820
11821Removed the non-Linux SourceSafe module revision number from each
11822module header.
11823
11824Completed major overhaul of symbols to be lowercased for linux.
11825Doubled the number of symbols that are lowercased.
11826
11827Fixed a problem where identifiers within procedure headers and
11828within quotes were not fully lower cased (they were left with a
11829starting capital.)
11830
11831Some C macros whose only purpose is to allow the generation of 16-
11832bit code are now completely removed in the Linux code, increasing
11833readability and maintainability.
11834
11835----------------------------------------
11836
1183712 December 2002.  Summary of changes for version 20021212.
11838
11839
118401) ACPI CA Core Subsystem:
11841
11842Fixed a problem where the creation of a zero-length AML Buffer
11843would cause a fault.
11844
11845Fixed a problem where a Buffer object that pointed to a static AML
11846buffer (in an ACPI table) could inadvertently be deleted, causing
11847memory corruption.
11848
11849Fixed a problem where a user buffer (passed in to the external
11850ACPI CA interfaces) could be overwritten if the buffer was too
11851small to complete the operation, causing memory corruption.
11852
11853Fixed a problem in the Buffer-to-String conversion code where a
11854string of length one was always returned, regardless of the size
11855of the input Buffer object.
11856
11857Removed the NATIVE_CHAR data type across the entire source due to
11858lack of need and lack of consistent use.
11859
11860Code and Data Size: Current core subsystem library sizes are shown
11861below.  These are the code and data sizes for the acpica.lib
11862produced by the Microsoft Visual C++ 6.0 compiler, and these
11863values do not include any ACPI driver or OSPM code.  The debug
11864version of the code includes the debug output trace mechanism and
11865has a much larger code and data size.  Note that these values will
11866vary depending on the efficiency of the compiler and the compiler
11867options used during generation.
11868
11869  Previous Release
11870    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
11871    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
11872  Current Release:
11873    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11874    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11875
11876
11877----------------------------------------
1187805 December 2002.  Summary of changes for version 20021205.
11879
118801) ACPI CA Core Subsystem:
11881
11882Fixed a problem where a store to a String or Buffer object could
11883cause corruption of the DSDT if the object type being stored was
11884the same as the target object type and the length of the object
11885being stored was equal to or smaller than the original (existing)
11886target object.  This was seen to cause corruption of battery _BIF
11887buffers if the _BIF method modified the buffer on the fly.
11888
11889Fixed a problem where an internal error was generated if a control
11890method invocation was used in an OperationRegion, Buffer, or
11891Package declaration.  This was caused by the deferred parsing of
11892the control method and thus the deferred creation of the internal
11893method object.  The solution to this problem was to create the
11894internal method object at the moment the method is encountered in
11895the first pass - so that subsequent references to the method will
11896able to obtain the required parameter count and thus properly
11897parse the method invocation.  This problem presented itself as an
11898AE_AML_INTERNAL during the pass 1 parse phase during table load.
11899
11900Fixed a problem where the internal String object copy routine did
11901not always allocate sufficient memory for the target String object
11902and caused memory corruption.  This problem was seen to cause
11903"Allocation already present in list!" errors as memory allocation
11904became corrupted.
11905
11906Implemented a new function for the evaluation of namespace objects
11907that allows the specification of the allowable return object
11908types.  This simplifies a lot of code that checks for a return
11909object of one or more specific objects returned from the
11910evaluation (such as _STA, etc.)  This may become and external
11911function if it would be useful to ACPI-related drivers.
11912
11913Completed another round of prefixing #defines with "ACPI_" for
11914clarity.
11915
11916Completed additional code restructuring to allow more modular
11917linking for iASL compiler and AcpiExec.  Several files were split
11918creating new files.  New files:  nsparse.c dsinit.c evgpe.c
11919
11920Implemented an abort mechanism to terminate an executing control
11921method via the AML debugger.  This feature is useful for debugging
11922control methods that depend (wait) for specific hardware
11923responses.
11924
11925Code and Data Size: Current core subsystem library sizes are shown
11926below.  These are the code and data sizes for the acpica.lib
11927produced by the Microsoft Visual C++ 6.0 compiler, and these
11928values do not include any ACPI driver or OSPM code.  The debug
11929version of the code includes the debug output trace mechanism and
11930has a much larger code and data size.  Note that these values will
11931vary depending on the efficiency of the compiler and the compiler
11932options used during generation.
11933
11934  Previous Release
11935    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
11936    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
11937  Current Release:
11938    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
11939    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
11940
11941
119422) iASL Compiler/Disassembler
11943
11944Fixed a compiler code generation problem for "Interrupt" Resource
11945Descriptors.  If specified in the ASL, the optional "Resource
11946Source Index" and "Resource Source" fields were not inserted into
11947the correct location within the AML resource descriptor, creating
11948an invalid descriptor.
11949
11950Fixed a disassembler problem for "Interrupt" resource descriptors.
11951The optional "Resource Source Index" and "Resource Source" fields
11952were ignored.
11953
11954
11955----------------------------------------
1195622 November 2002.  Summary of changes for version 20021122.
11957
11958
119591) ACPI CA Core Subsystem:
11960
11961Fixed a reported problem where an object stored to a Method Local
11962or Arg was not copied to a new object during the store - the
11963object pointer was simply copied to the Local/Arg.  This caused
11964all subsequent operations on the Local/Arg to also affect the
11965original source of the store operation.
11966
11967Fixed a problem where a store operation to a Method Local or Arg
11968was not completed properly if the Local/Arg contained a reference
11969(from RefOf) to a named field.  The general-purpose store-to-
11970namespace-node code is now used so that this case is handled
11971automatically.
11972
11973Fixed a problem where the internal object copy routine would cause
11974a protection fault if the object being copied was a Package and
11975contained either 1) a NULL package element or 2) a nested sub-
11976package.
11977
11978Fixed a problem with the GPE initialization that resulted from an
11979ambiguity in the ACPI specification.  One section of the
11980specification states that both the address and length of the GPE
11981block must be zero if the block is not supported.  Another section
11982implies that only the address need be zero if the block is not
11983supported.  The code has been changed so that both the address and
11984the length must be non-zero to indicate a valid GPE block (i.e.,
11985if either the address or the length is zero, the GPE block is
11986invalid.)
11987
11988Code and Data Size: Current core subsystem library sizes are shown
11989below.  These are the code and data sizes for the acpica.lib
11990produced by the Microsoft Visual C++ 6.0 compiler, and these
11991values do not include any ACPI driver or OSPM code.  The debug
11992version of the code includes the debug output trace mechanism and
11993has a much larger code and data size.  Note that these values will
11994vary depending on the efficiency of the compiler and the compiler
11995options used during generation.
11996
11997  Previous Release
11998    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
11999    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12000  Current Release:
12001    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12002    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12003
12004
120052) Linux
12006
12007Cleaned up EC driver. Exported an external EC read/write
12008interface. By going through this, other drivers (most notably
12009sonypi) will be able to serialize access to the EC.
12010
12011
120123) iASL Compiler/Disassembler
12013
12014Implemented support to optionally generate include files for both
12015ASM and C (the -i switch).  This simplifies BIOS development by
12016automatically creating include files that contain external
12017declarations for the symbols that are created within the
12018
12019(optionally generated) ASM and C AML source files.
12020
12021
12022----------------------------------------
1202315 November 2002.  Summary of changes for version 20021115.
12024
120251) ACPI CA Core Subsystem:
12026
12027Fixed a memory leak problem where an error during resolution of
12028
12029method arguments during a method invocation from another method
12030failed to cleanup properly by deleting all successfully resolved
12031argument objects.
12032
12033Fixed a problem where the target of the Index() operator was not
12034correctly constructed if the source object was a package.  This
12035problem has not been detected because the use of a target operand
12036with Index() is very rare.
12037
12038Fixed a problem with the Index() operator where an attempt was
12039made to delete the operand objects twice.
12040
12041Fixed a problem where an attempt was made to delete an operand
12042twice during execution of the CondRefOf() operator if the target
12043did not exist.
12044
12045Implemented the first of perhaps several internal create object
12046functions that create and initialize a specific object type.  This
12047consolidates duplicated code wherever the object is created, thus
12048shrinking the size of the subsystem.
12049
12050Implemented improved debug/error messages for errors that occur
12051during nested method invocations.  All executing method pathnames
12052are displayed (with the error) as the call stack is unwound - thus
12053simplifying debug.
12054
12055Fixed a problem introduced in the 10/02 release that caused
12056premature deletion of a buffer object if a buffer was used as an
12057ASL operand where an integer operand is required (Thus causing an
12058implicit object conversion from Buffer to Integer.)  The change in
12059the 10/02 release was attempting to fix a memory leak (albeit
12060incorrectly.)
12061
12062Code and Data Size: Current core subsystem library sizes are shown
12063below.  These are the code and data sizes for the acpica.lib
12064produced by the Microsoft Visual C++ 6.0 compiler, and these
12065values do not include any ACPI driver or OSPM code.  The debug
12066version of the code includes the debug output trace mechanism and
12067has a much larger code and data size.  Note that these values will
12068vary depending on the efficiency of the compiler and the compiler
12069options used during generation.
12070
12071  Previous Release
12072    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12073    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12074  Current Release:
12075    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12076    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12077
12078
120792) Linux
12080
12081Changed the implementation of the ACPI semaphores to use down()
12082instead of down_interruptable().  It is important that the
12083execution of ACPI control methods not be interrupted by signals.
12084Methods must run to completion, or the system may be left in an
12085unknown/unstable state.
12086
12087Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12088(Shawn Starr)
12089
12090
120913) iASL Compiler/Disassembler
12092
12093
12094Changed the default location of output files.  All output files
12095are now placed in the current directory by default instead of in
12096the directory of the source file.  This change may affect some
12097existing makefiles, but it brings the behavior of the compiler in
12098line with other similar tools.  The location of the output files
12099can be overridden with the -p command line switch.
12100
12101
12102----------------------------------------
1210311 November 2002.  Summary of changes for version 20021111.
12104
12105
121060) ACPI Specification 2.0B is released and is now available at:
12107http://www.acpi.info/index.html
12108
12109
121101) ACPI CA Core Subsystem:
12111
12112Implemented support for the ACPI 2.0 SMBus Operation Regions.
12113This includes the early detection and handoff of the request to
12114the SMBus region handler (avoiding all of the complex field
12115support code), and support for the bidirectional return packet
12116from an SMBus write operation.  This paves the way for the
12117development of SMBus drivers in each host operating system.
12118
12119Fixed a problem where the semaphore WAIT_FOREVER constant was
12120defined as 32 bits, but must be 16 bits according to the ACPI
12121specification.  This had the side effect of causing ASL
12122Mutex/Event timeouts even though the ASL code requested a wait
12123forever.  Changed all internal references to the ACPI timeout
12124parameter to 16 bits to prevent future problems.  Changed the name
12125of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12126
12127Code and Data Size: Current core subsystem library sizes are shown
12128below.  These are the code and data sizes for the acpica.lib
12129produced by the Microsoft Visual C++ 6.0 compiler, and these
12130values do not include any ACPI driver or OSPM code.  The debug
12131version of the code includes the debug output trace mechanism and
12132has a much larger code and data size.  Note that these values will
12133vary depending on the efficiency of the compiler and the compiler
12134options used during generation.
12135
12136  Previous Release
12137    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12138    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12139  Current Release:
12140    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12141    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12142
12143
121442) Linux
12145
12146Module loading/unloading fixes (John Cagle)
12147
12148
121493) iASL Compiler/Disassembler
12150
12151Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12152
12153Implemented support for the disassembly of all SMBus protocol
12154keywords (SMBQuick, SMBWord, etc.)
12155
12156----------------------------------------
1215701 November 2002.  Summary of changes for version 20021101.
12158
12159
121601) ACPI CA Core Subsystem:
12161
12162Fixed a problem where platforms that have a GPE1 block but no GPE0
12163block were not handled correctly.  This resulted in a "GPE
12164overlap" error message.  GPE0 is no longer required.
12165
12166Removed code added in the previous release that inserted nodes
12167into the namespace in alphabetical order.  This caused some side-
12168effects on various machines.  The root cause of the problem is
12169still under investigation since in theory, the internal ordering
12170of the namespace nodes should not matter.
12171
12172
12173Enhanced error reporting for the case where a named object is not
12174found during control method execution.  The full ACPI namepath
12175(name reference) of the object that was not found is displayed in
12176this case.
12177
12178Note: as a result of the overhaul of the namespace object types in
12179the previous release, the namespace nodes for the predefined
12180scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12181instead of ACPI_TYPE_ANY.  This simplifies the namespace
12182management code but may affect code that walks the namespace tree
12183looking for specific object types.
12184
12185Code and Data Size: Current core subsystem library sizes are shown
12186below.  These are the code and data sizes for the acpica.lib
12187produced by the Microsoft Visual C++ 6.0 compiler, and these
12188values do not include any ACPI driver or OSPM code.  The debug
12189version of the code includes the debug output trace mechanism and
12190has a much larger code and data size.  Note that these values will
12191vary depending on the efficiency of the compiler and the compiler
12192options used during generation.
12193
12194  Previous Release
12195    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12196    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12197  Current Release:
12198    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12199    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12200
12201
122022) Linux
12203
12204Fixed a problem introduced in the previous release where the
12205Processor and Thermal objects were not recognized and installed in
12206/proc.  This was related to the scope type change described above.
12207
12208
122093) iASL Compiler/Disassembler
12210
12211Implemented the -g option to get all of the required ACPI tables
12212from the registry and save them to files (Windows version of the
12213compiler only.)  The required tables are the FADT, FACS, and DSDT.
12214
12215Added ACPI table checksum validation during table disassembly in
12216order to catch corrupted tables.
12217
12218
12219----------------------------------------
1222022 October 2002.  Summary of changes for version 20021022.
12221
122221) ACPI CA Core Subsystem:
12223
12224Implemented a restriction on the Scope operator that the target
12225must already exist in the namespace at the time the operator is
12226encountered (during table load or method execution).  In other
12227words, forward references are not allowed and Scope() cannot
12228create a new object. This changes the previous behavior where the
12229interpreter would create the name if not found.  This new behavior
12230correctly enables the search-to-root algorithm during namespace
12231lookup of the target name.  Because of this upsearch, this fixes
12232the known Compaq _SB_.OKEC problem and makes both the AML
12233interpreter and iASL compiler compatible with other ACPI
12234implementations.
12235
12236Completed a major overhaul of the internal ACPI object types for
12237the ACPI Namespace and the associated operand objects.  Many of
12238these types had become obsolete with the introduction of the two-
12239pass namespace load.  This cleanup simplifies the code and makes
12240the entire namespace load mechanism much clearer and easier to
12241understand.
12242
12243Improved debug output for tracking scope opening/closing to help
12244diagnose scoping issues.  The old scope name as well as the new
12245scope name are displayed.  Also improved error messages for
12246problems with ASL Mutex objects and error messages for GPE
12247problems.
12248
12249Cleaned up the namespace dump code, removed obsolete code.
12250
12251All string output (for all namespace/object dumps) now uses the
12252common ACPI string output procedure which handles escapes properly
12253and does not emit non-printable characters.
12254
12255Fixed some issues with constants in the 64-bit version of the
12256local C library (utclib.c)
12257
12258
122592) Linux
12260
12261EC Driver:  No longer attempts to acquire the Global Lock at
12262interrupt level.
12263
12264
122653) iASL Compiler/Disassembler
12266
12267Implemented ACPI 2.0B grammar change that disallows all Type 1 and
122682 opcodes outside of a control method.  This means that the
12269"executable" operators (versus the "namespace" operators) cannot
12270be used at the table level; they can only be used within a control
12271method.
12272
12273Implemented the restriction on the Scope() operator where the
12274target must already exist in the namespace at the time the
12275operator is encountered (during ASL compilation). In other words,
12276forward references are not allowed and Scope() cannot create a new
12277object.  This makes the iASL compiler compatible with other ACPI
12278implementations and makes the Scope() implementation adhere to the
12279ACPI specification.
12280
12281Fixed a problem where namepath optimization for the Alias operator
12282was optimizing the wrong path (of the two namepaths.)  This caused
12283a "Missing alias link" error message.
12284
12285Fixed a problem where an "unknown reserved name" warning could be
12286incorrectly generated for names like "_SB" when the trailing
12287underscore is not used in the original ASL.
12288
12289Fixed a problem where the reserved name check did not handle
12290NamePaths with multiple NameSegs correctly.  The first nameseg of
12291the NamePath was examined instead of the last NameSeg.
12292
12293
12294----------------------------------------
12295
1229602 October 2002.  Summary of changes for this release.
12297
12298
122991) ACPI CA Core Subsystem version 20021002:
12300
12301Fixed a problem where a store/copy of a string to an existing
12302string did not always set the string length properly in the String
12303object.
12304
12305Fixed a reported problem with the ToString operator where the
12306behavior was identical to the ToHexString operator instead of just
12307simply converting a raw buffer to a string data type.
12308
12309Fixed a problem where CopyObject and the other "explicit"
12310conversion operators were not updating the internal namespace node
12311type as part of the store operation.
12312
12313Fixed a memory leak during implicit source operand conversion
12314where the original object was not deleted if it was converted to a
12315new object of a different type.
12316
12317Enhanced error messages for all problems associated with namespace
12318lookups.  Common procedure generates and prints the lookup name as
12319well as the formatted status.
12320
12321Completed implementation of a new design for the Alias support
12322within the namespace.  The existing design did not handle the case
12323where a new object was assigned to one of the two names due to the
12324use of an explicit conversion operator, resulting in the two names
12325pointing to two different objects.  The new design simply points
12326the Alias name to the original name node - not to the object.
12327This results in a level of indirection that must be handled in the
12328name resolution mechanism.
12329
12330Code and Data Size: Current core subsystem library sizes are shown
12331below.  These are the code and data sizes for the acpica.lib
12332produced by the Microsoft Visual C++ 6.0 compiler, and these
12333values do not include any ACPI driver or OSPM code.  The debug
12334version of the code includes the debug output trace mechanism and
12335has a larger code and data size.  Note that these values will vary
12336depending on the efficiency of the compiler and the compiler
12337options used during generation.
12338
12339  Previous Release
12340    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12341    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12342  Current Release:
12343    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12344    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12345
12346
123472) Linux
12348
12349Initialize thermal driver's timer before it is used. (Knut
12350Neumann)
12351
12352Allow handling negative celsius values. (Kochi Takayoshi)
12353
12354Fix thermal management and make trip points. R/W (Pavel Machek)
12355
12356Fix /proc/acpi/sleep. (P. Christeas)
12357
12358IA64 fixes. (David Mosberger)
12359
12360Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
12361
12362Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
12363Brodowski)
12364
12365
123663) iASL Compiler/Disassembler
12367
12368Clarified some warning/error messages.
12369
12370
12371----------------------------------------
1237218 September 2002.  Summary of changes for this release.
12373
12374
123751) ACPI CA Core Subsystem version 20020918:
12376
12377Fixed a reported problem with reference chaining (via the Index()
12378and RefOf() operators) in the ObjectType() and SizeOf() operators.
12379The definition of these operators includes the dereferencing of
12380all chained references to return information on the base object.
12381
12382Fixed a problem with stores to indexed package elements - the
12383existing code would not complete the store if an "implicit
12384conversion" was not performed.  In other words, if the existing
12385object (package element) was to be replaced completely, the code
12386didn't handle this case.
12387
12388Relaxed typechecking on the ASL "Scope" operator to allow the
12389target name to refer to an object of type Integer, String, or
12390Buffer, in addition to the scoping object types (Device,
12391predefined Scopes, Processor, PowerResource, and ThermalZone.)
12392This allows existing AML code that has workarounds for a bug in
12393Windows to function properly.  A warning is issued, however.  This
12394affects both the AML interpreter and the iASL compiler. Below is
12395an example of this type of ASL code:
12396
12397      Name(DEB,0x00)
12398      Scope(DEB)
12399      {
12400
12401Fixed some reported problems with 64-bit integer support in the
12402local implementation of C library functions (clib.c)
12403
12404
124052) Linux
12406
12407Use ACPI fix map region instead of IOAPIC region, since it is
12408undefined in non-SMP.
12409
12410Ensure that the SCI has the proper polarity and trigger, even on
12411systems that do not have an interrupt override entry in the MADT.
12412
124132.5 big driver reorganization (Pat Mochel)
12414
12415Use early table mapping code from acpitable.c (Andi Kleen)
12416
12417New blacklist entries (Andi Kleen)
12418
12419Blacklist improvements. Split blacklist code out into a separate
12420file. Move checking the blacklist to very early. Previously, we
12421would use ACPI tables, and then halfway through init, check the
12422blacklist -- too late. Now, it's early enough to completely fall-
12423back to non-ACPI.
12424
12425
124263) iASL Compiler/Disassembler version 20020918:
12427
12428Fixed a problem where the typechecking code didn't know that an
12429alias could point to a method.  In other words, aliases were not
12430being dereferenced during typechecking.
12431
12432
12433----------------------------------------
1243429 August 2002.  Summary of changes for this release.
12435
124361) ACPI CA Core Subsystem Version 20020829:
12437
12438If the target of a Scope() operator already exists, it must be an
12439object type that actually opens a scope -- such as a Device,
12440Method, Scope, etc.  This is a fatal runtime error.  Similar error
12441check has been added to the iASL compiler also.
12442
12443Tightened up the namespace load to disallow multiple names in the
12444same scope.  This previously was allowed if both objects were of
12445the same type.  (i.e., a lookup was the same as entering a new
12446name).
12447
12448
124492) Linux
12450
12451Ensure that the ACPI interrupt has the proper trigger and
12452polarity.
12453
12454local_irq_disable is extraneous. (Matthew Wilcox)
12455
12456Make "acpi=off" actually do what it says, and not use the ACPI
12457interpreter *or* the tables.
12458
12459Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
12460Takayoshi)
12461
12462
124633) iASL Compiler/Disassembler  Version 20020829:
12464
12465Implemented namepath optimization for name declarations.  For
12466example, a declaration like "Method (\_SB_.ABCD)" would get
12467optimized to "Method (ABCD)" if the declaration is within the
12468\_SB_ scope.  This optimization is in addition to the named
12469reference path optimization first released in the previous
12470version. This would seem to complete all possible optimizations
12471for namepaths within the ASL/AML.
12472
12473If the target of a Scope() operator already exists, it must be an
12474object type that actually opens a scope -- such as a Device,
12475Method, Scope, etc.
12476
12477Implemented a check and warning for unreachable code in the same
12478block below a Return() statement.
12479
12480Fixed a problem where the listing file was not generated if the
12481compiler aborted if the maximum error count was exceeded (200).
12482
12483Fixed a problem where the typechecking of method return values was
12484broken.  This includes the check for a return value when the
12485method is invoked as a TermArg (a return value is expected.)
12486
12487Fixed a reported problem where EOF conditions during a quoted
12488string or comment caused a fault.
12489
12490
12491----------------------------------------
1249215 August 2002.  Summary of changes for this release.
12493
124941) ACPI CA Core Subsystem Version 20020815:
12495
12496Fixed a reported problem where a Store to a method argument that
12497contains a reference did not perform the indirect store correctly.
12498This problem was created during the conversion to the new
12499reference object model - the indirect store to a method argument
12500code was not updated to reflect the new model.
12501
12502Reworked the ACPI mode change code to better conform to ACPI 2.0,
12503handle corner cases, and improve code legibility (Kochi Takayoshi)
12504
12505Fixed a problem with the pathname parsing for the carat (^)
12506prefix.  The heavy use of the carat operator by the new namepath
12507optimization in the iASL compiler uncovered a problem with the AML
12508interpreter handling of this prefix.  In the case where one or
12509more carats precede a single nameseg, the nameseg was treated as
12510standalone and the search rule (to root) was inadvertently
12511applied.  This could cause both the iASL compiler and the
12512interpreter to find the wrong object or to miss the error that
12513should occur if the object does not exist at that exact pathname.
12514
12515Found and fixed the problem where the HP Pavilion DSDT would not
12516load.  This was a relatively minor tweak to the table loading code
12517(a problem caused by the unexpected encounter with a method
12518invocation not within a control method), but it does not solve the
12519overall issue of the execution of AML code at the table level.
12520This investigation is still ongoing.
12521
12522Code and Data Size: Current core subsystem library sizes are shown
12523below.  These are the code and data sizes for the acpica.lib
12524produced by the Microsoft Visual C++ 6.0 compiler, and these
12525values do not include any ACPI driver or OSPM code.  The debug
12526version of the code includes the debug output trace mechanism and
12527has a larger code and data size.  Note that these values will vary
12528depending on the efficiency of the compiler and the compiler
12529options used during generation.
12530
12531  Previous Release
12532    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12533    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12534  Current Release:
12535    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12536    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12537
12538
125392) Linux
12540
12541Remove redundant slab.h include (Brad Hards)
12542
12543Fix several bugs in thermal.c (Herbert Nachtnebel)
12544
12545Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
12546
12547Change acpi_system_suspend to use updated irq functions (Pavel
12548Machek)
12549
12550Export acpi_get_firmware_table (Matthew Wilcox)
12551
12552Use proper root proc entry for ACPI (Kochi Takayoshi)
12553
12554Fix early-boot table parsing (Bjorn Helgaas)
12555
12556
125573) iASL Compiler/Disassembler
12558
12559Reworked the compiler options to make them more consistent and to
12560use two-letter options where appropriate.  We were running out of
12561sensible letters.   This may break some makefiles, so check the
12562current options list by invoking the compiler with no parameters.
12563
12564Completed the design and implementation of the ASL namepath
12565optimization option for the compiler.  This option optimizes all
12566references to named objects to the shortest possible path.  The
12567first attempt tries to utilize a single nameseg (4 characters) and
12568the "search-to-root" algorithm used by the interpreter.  If that
12569cannot be used (because either the name is not in the search path
12570or there is a conflict with another object with the same name),
12571the pathname is optimized using the carat prefix (usually a
12572shorter string than specifying the entire path from the root.)
12573
12574Implemented support to obtain the DSDT from the Windows registry
12575(when the disassembly option is specified with no input file).
12576Added this code as the implementation for AcpiOsTableOverride in
12577the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
12578utility) to scan memory for the DSDT to the AcpiOsTableOverride
12579function in the DOS OSL to make the disassembler truly OS
12580independent.
12581
12582Implemented a new option to disassemble and compile in one step.
12583When used without an input filename, this option will grab the
12584DSDT from the local machine, disassemble it, and compile it in one
12585step.
12586
12587Added a warning message for invalid escapes (a backslash followed
12588by any character other than the allowable escapes).  This catches
12589the quoted string error "\_SB_" (which should be "\\_SB_" ).
12590
12591Also, there are numerous instances in the ACPI specification where
12592this error occurs.
12593
12594Added a compiler option to disable all optimizations.  This is
12595basically the "compatibility mode" because by using this option,
12596the AML code will come out exactly the same as other ASL
12597compilers.
12598
12599Added error messages for incorrectly ordered dependent resource
12600functions.  This includes: missing EndDependentFn macro at end of
12601dependent resource list, nested dependent function macros (both
12602start and end), and missing StartDependentFn macro.  These are
12603common errors that should be caught at compile time.
12604
12605Implemented _OSI support for the disassembler and compiler.  _OSI
12606must be included in the namespace for proper disassembly (because
12607the disassembler must know the number of arguments.)
12608
12609Added an "optimization" message type that is optional (off by
12610default).  This message is used for all optimizations - including
12611constant folding, integer optimization, and namepath optimization.
12612
12613----------------------------------------
1261425 July 2002.  Summary of changes for this release.
12615
12616
126171) ACPI CA Core Subsystem Version 20020725:
12618
12619The AML Disassembler has been enhanced to produce compilable ASL
12620code and has been integrated into the iASL compiler (see below) as
12621well as the single-step disassembly for the AML debugger and the
12622disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
12623resource templates and macros are fully supported.  The
12624disassembler has been tested on over 30 different AML files,
12625producing identical AML when the resulting disassembled ASL file
12626is recompiled with the same ASL compiler.
12627
12628Modified the Resource Manager to allow zero interrupts and zero
12629dma channels during the GetCurrentResources call.  This was
12630causing problems on some platforms.
12631
12632Added the AcpiOsRedirectOutput interface to the OSL to simplify
12633output redirection for the AcpiOsPrintf and AcpiOsVprintf
12634interfaces.
12635
12636Code and Data Size: Current core subsystem library sizes are shown
12637below.  These are the code and data sizes for the acpica.lib
12638produced by the Microsoft Visual C++ 6.0 compiler, and these
12639values do not include any ACPI driver or OSPM code.  The debug
12640version of the code includes the debug output trace mechanism and
12641has a larger code and data size.  Note that these values will vary
12642depending on the efficiency of the compiler and the compiler
12643options used during generation.
12644
12645  Previous Release
12646    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12647    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12648  Current Release:
12649    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12650    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12651
12652
126532) Linux
12654
12655Fixed a panic in the EC driver (Dominik Brodowski)
12656
12657Implemented checksum of the R/XSDT itself during Linux table scan
12658(Richard Schaal)
12659
12660
126613) iASL compiler
12662
12663The AML disassembler is integrated into the compiler.  The "-d"
12664option invokes the disassembler  to completely disassemble an
12665input AML file, producing as output a text ASL file with the
12666extension ".dsl" (to avoid name collisions with existing .asl
12667source files.)  A future enhancement will allow the disassembler
12668to obtain the BIOS DSDT from the registry under Windows.
12669
12670Fixed a problem with the VendorShort and VendorLong resource
12671descriptors where an invalid AML sequence was created.
12672
12673Implemented a fix for BufferData term in the ASL parser.  It was
12674inadvertently defined twice, allowing invalid syntax to pass and
12675causing reduction conflicts.
12676
12677Fixed a problem where the Ones opcode could get converted to a
12678value of zero if "Ones" was used where a byte, word or dword value
12679was expected.  The 64-bit value is now truncated to the correct
12680size with the correct value.
12681
12682
12683
12684----------------------------------------
1268502 July 2002.  Summary of changes for this release.
12686
12687
126881) ACPI CA Core Subsystem Version 20020702:
12689
12690The Table Manager code has been restructured to add several new
12691features.  Tables that are not required by the core subsystem
12692(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
12693validated in any way and are returned from AcpiGetFirmwareTable if
12694requested.  The AcpiOsTableOverride interface is now called for
12695each table that is loaded by the subsystem in order to allow the
12696host to override any table it chooses.  Previously, only the DSDT
12697could be overridden.  Added one new files, tbrsdt.c and
12698tbgetall.c.
12699
12700Fixed a problem with the conversion of internal package objects to
12701external objects (when a package is returned from a control
12702method.)  The return buffer length was set to zero instead of the
12703proper length of the package object.
12704
12705Fixed a reported problem with the use of the RefOf and DeRefOf
12706operators when passing reference arguments to control methods.  A
12707new type of Reference object is used internally for references
12708produced by the RefOf operator.
12709
12710Added additional error messages in the Resource Manager to explain
12711AE_BAD_DATA errors when they occur during resource parsing.
12712
12713Split the AcpiEnableSubsystem into two primitives to enable a
12714finer granularity initialization sequence.  These two calls should
12715be called in this order: AcpiEnableSubsystem (flags),
12716AcpiInitializeObjects (flags).  The flags parameter remains the
12717same.
12718
12719
127202) Linux
12721
12722Updated the ACPI utilities module to understand the new style of
12723fully resolved package objects that are now returned from the core
12724subsystem.  This eliminates errors of the form:
12725
12726    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
12727    acpi_utils-0430 [145] acpi_evaluate_reference:
12728        Invalid element in package (not a device reference)
12729
12730The method evaluation utility uses the new buffer allocation
12731scheme instead of calling AcpiEvaluate Object twice.
12732
12733Added support for ECDT. This allows the use of the Embedded
12734
12735Controller before the namespace has been fully initialized, which
12736is necessary for ACPI 2.0 support, and for some laptops to
12737initialize properly. (Laptops using ECDT are still rare, so only
12738limited testing was performed of the added functionality.)
12739
12740Fixed memory leaks in the EC driver.
12741
12742Eliminated a brittle code structure in acpi_bus_init().
12743
12744Eliminated the acpi_evaluate() helper function in utils.c. It is
12745no longer needed since acpi_evaluate_object can optionally
12746allocate memory for the return object.
12747
12748Implemented fix for keyboard hang when getting battery readings on
12749some systems (Stephen White)
12750
12751PCI IRQ routing update (Dominik Brodowski)
12752
12753Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
12754support
12755
12756----------------------------------------
1275711 June 2002.  Summary of changes for this release.
12758
12759
127601) ACPI CA Core Subsystem Version 20020611:
12761
12762Fixed a reported problem where constants such as Zero and One
12763appearing within _PRT packages were not handled correctly within
12764the resource manager code.  Originally reported against the ASL
12765compiler because the code generator now optimizes integers to
12766their minimal AML representation (i.e. AML constants if possible.)
12767The _PRT code now handles all AML constant opcodes correctly
12768(Zero, One, Ones, Revision).
12769
12770Fixed a problem with the Concatenate operator in the AML
12771interpreter where a buffer result object was incorrectly marked as
12772not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
12773
12774All package sub-objects are now fully resolved before they are
12775returned from the external ACPI interfaces.  This means that name
12776strings are resolved to object handles, and constant operators
12777(Zero, One, Ones, Revision) are resolved to Integers.
12778
12779Implemented immediate resolution of the AML Constant opcodes
12780(Zero, One, Ones, Revision) to Integer objects upon detection
12781within the AML stream. This has simplified and reduced the
12782generated code size of the subsystem by eliminating about 10
12783switch statements for these constants (which previously were
12784contained in Reference objects.)  The complicating issues are that
12785the Zero opcode is used as a "placeholder" for unspecified
12786optional target operands and stores to constants are defined to be
12787no-ops.
12788
12789Code and Data Size: Current core subsystem library sizes are shown
12790below. These are the code and data sizes for the acpica.lib
12791produced by the Microsoft Visual C++ 6.0 compiler, and these
12792values do not include any ACPI driver or OSPM code.  The debug
12793version of the code includes the debug output trace mechanism and
12794has a larger code and data size.  Note that these values will vary
12795depending on the efficiency of the compiler and the compiler
12796options used during generation.
12797
12798  Previous Release
12799    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
12800    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
12801  Current Release:
12802    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12803    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12804
12805
128062) Linux
12807
12808
12809Added preliminary support for obtaining _TRA data for PCI root
12810bridges (Bjorn Helgaas).
12811
12812
128133) iASL Compiler Version X2046:
12814
12815Fixed a problem where the "_DDN" reserved name was defined to be a
12816control method with one argument.  There are no arguments, and
12817_DDN does not have to be a control method.
12818
12819Fixed a problem with the Linux version of the compiler where the
12820source lines printed with error messages were the wrong lines.
12821This turned out to be the "LF versus CR/LF" difference between
12822Windows and Unix.  This appears to be the longstanding issue
12823concerning listing output and error messages.
12824
12825Fixed a problem with the Linux version of compiler where opcode
12826names within error messages were wrong.  This was caused by a
12827slight difference in the output of the Flex tool on Linux versus
12828Windows.
12829
12830Fixed a problem with the Linux compiler where the hex output files
12831contained some garbage data caused by an internal buffer overrun.
12832
12833
12834----------------------------------------
1283517 May 2002.  Summary of changes for this release.
12836
12837
128381) ACPI CA Core Subsystem Version 20020517:
12839
12840Implemented a workaround to an BIOS bug discovered on the HP
12841OmniBook where the FADT revision number and the table size are
12842inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
12843behavior is to fallback to using only the ACPI 1.0 fields of the
12844FADT if the table is too small to be a ACPI 2.0 table as claimed
12845by the revision number.  Although this is a BIOS bug, this is a
12846case where the workaround is simple enough and with no side
12847effects, so it seemed prudent to add it.  A warning message is
12848issued, however.
12849
12850Implemented minimum size checks for the fixed-length ACPI tables -
12851- the FADT and FACS, as well as consistency checks between the
12852revision number and the table size.
12853
12854Fixed a reported problem in the table override support where the
12855new table pointer was incorrectly treated as a physical address
12856instead of a logical address.
12857
12858Eliminated the use of the AE_AML_ERROR exception and replaced it
12859with more descriptive codes.
12860
12861Fixed a problem where an exception would occur if an ASL Field was
12862defined with no named Field Units underneath it (used by some
12863index fields).
12864
12865Code and Data Size: Current core subsystem library sizes are shown
12866below.  These are the code and data sizes for the acpica.lib
12867produced by the Microsoft Visual C++ 6.0 compiler, and these
12868values do not include any ACPI driver or OSPM code.  The debug
12869version of the code includes the debug output trace mechanism and
12870has a larger code and data size.  Note that these values will vary
12871depending on the efficiency of the compiler and the compiler
12872options used during generation.
12873
12874  Previous Release
12875    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
12876    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
12877  Current Release:
12878    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
12879    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
12880
12881
12882
128832) Linux
12884
12885Much work done on ACPI init (MADT and PCI IRQ routing support).
12886(Paul D. and Dominik Brodowski)
12887
12888Fix PCI IRQ-related panic on boot (Sam Revitch)
12889
12890Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
12891
12892Fix "MHz" typo (Dominik Brodowski)
12893
12894Fix RTC year 2000 issue (Dominik Brodowski)
12895
12896Preclude multiple button proc entries (Eric Brunet)
12897
12898Moved arch-specific code out of include/platform/aclinux.h
12899
129003) iASL Compiler Version X2044:
12901
12902Implemented error checking for the string used in the EISAID macro
12903(Usually used in the definition of the _HID object.)  The code now
12904strictly enforces the PnP format - exactly 7 characters, 3
12905uppercase letters and 4 hex digits.
12906
12907If a raw string is used in the definition of the _HID object
12908(instead of the EISAID macro), the string must contain all
12909alphanumeric characters (e.g., "*PNP0011" is not allowed because
12910of the asterisk.)
12911
12912Implemented checking for invalid use of ACPI reserved names for
12913most of the name creation operators (Name, Device, Event, Mutex,
12914OperationRegion, PowerResource, Processor, and ThermalZone.)
12915Previously, this check was only performed for control methods.
12916
12917Implemented an additional check on the Name operator to emit an
12918error if a reserved name that must be implemented in ASL as a
12919control method is used.  We know that a reserved name must be a
12920method if it is defined with input arguments.
12921
12922The warning emitted when a namespace object reference is not found
12923during the cross reference phase has been changed into an error.
12924The "External" directive should be used for names defined in other
12925modules.
12926
12927
129284) Tools and Utilities
12929
12930The 16-bit tools (adump16 and aexec16) have been regenerated and
12931tested.
12932
12933Fixed a problem with the output of both acpidump and adump16 where
12934the indentation of closing parentheses and brackets was not
12935
12936aligned properly with the parent block.
12937
12938
12939----------------------------------------
1294003 May 2002.  Summary of changes for this release.
12941
12942
129431) ACPI CA Core Subsystem Version 20020503:
12944
12945Added support a new OSL interface that allows the host operating
12946
12947system software to override the DSDT found in the firmware -
12948AcpiOsTableOverride.  With this interface, the OSL can examine the
12949version of the firmware DSDT and replace it with a different one
12950if desired.
12951
12952Added new external interfaces for accessing ACPI registers from
12953device drivers and other system software - AcpiGetRegister and
12954AcpiSetRegister.  This was simply an externalization of the
12955existing AcpiHwBitRegister interfaces.
12956
12957Fixed a regression introduced in the previous build where the
12958ASL/AML CreateField operator always returned an error,
12959"destination must be a NS Node".
12960
12961Extended the maximum time (before failure) to successfully enable
12962ACPI mode to 3 seconds.
12963
12964Code and Data Size: Current core subsystem library sizes are shown
12965below.  These are the code and data sizes for the acpica.lib
12966produced by the Microsoft Visual C++ 6.0 compiler, and these
12967values do not include any ACPI driver or OSPM code.  The debug
12968version of the code includes the debug output trace mechanism and
12969has a larger code and data size.  Note that these values will vary
12970depending on the efficiency of the compiler and the compiler
12971options used during generation.
12972
12973  Previous Release
12974    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
12975    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
12976  Current Release:
12977    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
12978    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
12979
12980
129812) Linux
12982
12983Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
12984free. While 3 out of 4 of our in-house systems work fine, the last
12985one still hangs when testing the LAPIC timer.
12986
12987Renamed many files in 2.5 kernel release to omit "acpi_" from the
12988name.
12989
12990Added warning on boot for Presario 711FR.
12991
12992Sleep improvements (Pavel Machek)
12993
12994ACPI can now be built without CONFIG_PCI enabled.
12995
12996IA64: Fixed memory map functions (JI Lee)
12997
12998
129993) iASL Compiler Version X2043:
13000
13001Added support to allow the compiler to be integrated into the MS
13002VC++ development environment for one-button compilation of single
13003files or entire projects -- with error-to-source-line mapping.
13004
13005Implemented support for compile-time constant folding for the
13006Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13007specification.  This allows the ASL writer to use expressions
13008instead of Integer/Buffer/String constants in terms that must
13009evaluate to constants at compile time and will also simplify the
13010emitted AML in any such sub-expressions that can be folded
13011(evaluated at compile-time.)  This increases the size of the
13012compiler significantly because a portion of the ACPI CA AML
13013interpreter is included within the compiler in order to pre-
13014evaluate constant expressions.
13015
13016
13017Fixed a problem with the "Unicode" ASL macro that caused the
13018compiler to fault.  (This macro is used in conjunction with the
13019_STR reserved name.)
13020
13021Implemented an AML opcode optimization to use the Zero, One, and
13022Ones opcodes where possible to further reduce the size of integer
13023constants and thus reduce the overall size of the generated AML
13024code.
13025
13026Implemented error checking for new reserved terms for ACPI version
130272.0A.
13028
13029Implemented the -qr option to display the current list of ACPI
13030reserved names known to the compiler.
13031
13032Implemented the -qc option to display the current list of ASL
13033operators that are allowed within constant expressions and can
13034therefore be folded at compile time if the operands are constants.
13035
13036
130374) Documentation
13038
13039Updated the Programmer's Reference for new interfaces, data types,
13040and memory allocation model options.
13041
13042Updated the iASL Compiler User Reference to apply new format and
13043add information about new features and options.
13044
13045----------------------------------------
1304619 April 2002.  Summary of changes for this release.
13047
130481) ACPI CA Core Subsystem Version 20020419:
13049
13050The source code base for the Core Subsystem has been completely
13051cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
13052versions.  The Lint option files used are included in the
13053/acpi/generate/lint directory.
13054
13055Implemented enhanced status/error checking across the entire
13056Hardware manager subsystem.  Any hardware errors (reported from
13057the OSL) are now bubbled up and will abort a running control
13058method.
13059
13060
13061Fixed a problem where the per-ACPI-table integer width (32 or 64)
13062was stored only with control method nodes, causing a fault when
13063non-control method code was executed during table loading.  The
13064solution implemented uses a global variable to indicate table
13065width across the entire ACPI subsystem.  Therefore, ACPI CA does
13066not support mixed integer widths across different ACPI tables
13067(DSDT, SSDT).
13068
13069Fixed a problem where NULL extended fields (X fields) in an ACPI
130702.0 ACPI FADT caused the table load to fail.  Although the
13071existing ACPI specification is a bit fuzzy on this topic, the new
13072behavior is to fall back on a ACPI 1.0 field if the corresponding
13073ACPI 2.0 X field is zero (even though the table revision indicates
13074a full ACPI 2.0 table.)  The ACPI specification will be updated to
13075clarify this issue.
13076
13077Fixed a problem with the SystemMemory operation region handler
13078where memory was always accessed byte-wise even if the AML-
13079specified access width was larger than a byte.  This caused
13080problems on systems with memory-mapped I/O.  Memory is now
13081accessed with the width specified.  On systems that do not support
13082non-aligned transfers, a check is made to guarantee proper address
13083alignment before proceeding in order to avoid an AML-caused
13084alignment fault within the kernel.
13085
13086
13087Fixed a problem with the ExtendedIrq resource where only one byte
13088of the 4-byte Irq field was extracted.
13089
13090Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13091function was out of date and required a rewrite.
13092
13093Code and Data Size: Current core subsystem library sizes are shown
13094below.  These are the code and data sizes for the acpica.lib
13095produced by the Microsoft Visual C++ 6.0 compiler, and these
13096values do not include any ACPI driver or OSPM code.  The debug
13097version of the code includes the debug output trace mechanism and
13098has a larger code and data size.  Note that these values will vary
13099depending on the efficiency of the compiler and the compiler
13100options used during generation.
13101
13102  Previous Release
13103    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13104    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13105  Current Release:
13106    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13107    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13108
13109
131102) Linux
13111
13112PCI IRQ routing fixes (Dominik Brodowski)
13113
13114
131153) iASL Compiler Version X2042:
13116
13117Implemented an additional compile-time error check for a field
13118unit whose size + minimum access width would cause a run-time
13119access beyond the end-of-region.  Previously, only the field size
13120itself was checked.
13121
13122The Core subsystem and iASL compiler now share a common parse
13123object in preparation for compile-time evaluation of the type
131243/4/5 ASL operators.
13125
13126
13127----------------------------------------
13128Summary of changes for this release: 03_29_02
13129
131301) ACPI CA Core Subsystem Version 20020329:
13131
13132Implemented support for late evaluation of TermArg operands to
13133Buffer and Package objects.  This allows complex expressions to be
13134used in the declarations of these object types.
13135
13136Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
131371.0, if the field was larger than 32 bits, it was returned as a
13138buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13139the field is returned as a buffer only if the field is larger than
1314064 bits.  The TableRevision is now considered when making this
13141conversion to avoid incompatibility with existing ASL code.
13142
13143Implemented logical addressing for AcpiOsGetRootPointer.  This
13144allows an RSDP with either a logical or physical address.  With
13145this support, the host OS can now override all ACPI tables with
13146one logical RSDP.  Includes implementation of  "typed" pointer
13147support to allow a common data type for both physical and logical
13148pointers internally.  This required a change to the
13149AcpiOsGetRootPointer interface.
13150
13151Implemented the use of ACPI 2.0 Generic Address Structures for all
13152GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13153mapped I/O for these ACPI features.
13154
13155Initialization now ignores not only non-required tables (All
13156tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13157not validate the table headers of unrecognized tables.
13158
13159Fixed a problem where a notify handler could only be
13160installed/removed on an object of type Device.  All "notify"
13161
13162objects are now supported -- Devices, Processor, Power, and
13163Thermal.
13164
13165Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13166critical information is returned when this debug level is enabled.
13167
13168Code and Data Size: Current core subsystem library sizes are shown
13169below.  These are the code and data sizes for the acpica.lib
13170produced by the Microsoft Visual C++ 6.0 compiler, and these
13171values do not include any ACPI driver or OSPM code.  The debug
13172version of the code includes the debug output trace mechanism and
13173has a larger code and data size.  Note that these values will vary
13174depending on the efficiency of the compiler and the compiler
13175options used during generation.
13176
13177  Previous Release
13178    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13179    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13180  Current Release:
13181    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13182    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13183
13184
131852) Linux:
13186
13187The processor driver (acpi_processor.c) now fully supports ACPI
131882.0-based processor performance control (e.g. Intel(R)
13189SpeedStep(TM) technology) Note that older laptops that only have
13190the Intel "applet" interface are not supported through this.  The
13191'limit' and 'performance' interface (/proc) are fully functional.
13192[Note that basic policy for controlling performance state
13193transitions will be included in the next version of ospmd.]  The
13194idle handler was modified to more aggressively use C2, and PIIX4
13195errata handling underwent a complete overhaul (big thanks to
13196Dominik Brodowski).
13197
13198Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13199based devices in the ACPI namespace are now dynamically bound
13200(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13201This allows, among other things, ACPI to resolve bus numbers for
13202subordinate PCI bridges.
13203
13204Enhanced PCI IRQ routing to get the proper bus number for _PRT
13205entries defined underneath PCI bridges.
13206
13207Added IBM 600E to bad bios list due to invalid _ADR value for
13208PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13209
13210In the process of adding full MADT support (e.g. IOAPIC) for IA32
13211(acpi.c, mpparse.c) -- stay tuned.
13212
13213Added back visual differentiation between fixed-feature and
13214control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13215button/power/PWRF) to simplify button identification.
13216
13217We no longer use -Wno-unused when compiling debug. Please ignore
13218any "_THIS_MODULE defined but not used" messages.
13219
13220Can now shut down the system using "magic sysrq" key.
13221
13222
132233) iASL Compiler version 2041:
13224
13225Fixed a problem where conversion errors for hex/octal/decimal
13226constants were not reported.
13227
13228Implemented a fix for the General Register template Address field.
13229This field was 8 bits when it should be 64.
13230
13231Fixed a problem where errors/warnings were no longer being emitted
13232within the listing output file.
13233
13234Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
13235exactly 4 characters, alphanumeric only.
13236
13237
13238
13239
13240----------------------------------------
13241Summary of changes for this release: 03_08_02
13242
13243
132441) ACPI CA Core Subsystem Version 20020308:
13245
13246Fixed a problem with AML Fields where the use of the "AccessAny"
13247keyword could cause an interpreter error due to attempting to read
13248or write beyond the end of the parent Operation Region.
13249
13250Fixed a problem in the SystemMemory Operation Region handler where
13251an attempt was made to map memory beyond the end of the region.
13252This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
13253errors on some Linux systems.
13254
13255Fixed a problem where the interpreter/namespace "search to root"
13256algorithm was not functioning for some object types.  Relaxed the
13257internal restriction on the search to allow upsearches for all
13258external object types as well as most internal types.
13259
13260
132612) Linux:
13262
13263We now use safe_halt() macro versus individual calls to sti | hlt.
13264
13265Writing to the processor limit interface should now work. "echo 1"
13266will increase the limit, 2 will decrease, and 0 will reset to the
13267
13268default.
13269
13270
132713) ASL compiler:
13272
13273Fixed segfault on Linux version.
13274
13275
13276----------------------------------------
13277Summary of changes for this release: 02_25_02
13278
132791) ACPI CA Core Subsystem:
13280
13281
13282Fixed a problem where the GPE bit masks were not initialized
13283properly, causing erratic GPE behavior.
13284
13285Implemented limited support for multiple calling conventions.  The
13286code can be generated with either the VPL (variable parameter
13287list, or "C") convention, or the FPL (fixed parameter list, or
13288"Pascal") convention.  The core subsystem is about 3.4% smaller
13289when generated with FPL.
13290
13291
132922) Linux
13293
13294Re-add some /proc/acpi/event functionality that was lost during
13295the rewrite
13296
13297Resolved issue with /proc events for fixed-feature buttons showing
13298up as the system device.
13299
13300Fixed checks on C2/C3 latencies to be inclusive of maximum values.
13301
13302Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
13303
13304Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
13305
13306Fixed limit interface & usage to fix bugs with passive cooling
13307hysterisis.
13308
13309Restructured PRT support.
13310
13311
13312----------------------------------------
13313Summary of changes for this label: 02_14_02
13314
13315
133161) ACPI CA Core Subsystem:
13317
13318Implemented support in AcpiLoadTable to allow loading of FACS and
13319FADT tables.
13320
13321Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
13322been removed.  All 64-bit platforms should be migrated to the ACPI
133232.0 tables.  The actbl71.h header has been removed from the source
13324tree.
13325
13326All C macros defined within the subsystem have been prefixed with
13327"ACPI_" to avoid collision with other system include files.
13328
13329Removed the return value for the two AcpiOsPrint interfaces, since
13330it is never used and causes lint warnings for ignoring the return
13331value.
13332
13333Added error checking to all internal mutex acquire and release
13334calls.  Although a failure from one of these interfaces is
13335probably a fatal system error, these checks will cause the
13336immediate abort of the currently executing method or interface.
13337
13338Fixed a problem where the AcpiSetCurrentResources interface could
13339fault.  This was a side effect of the deployment of the new memory
13340allocation model.
13341
13342Fixed a couple of problems with the Global Lock support introduced
13343in the last major build.  The "common" (1.0/2.0) internal FACS was
13344being overwritten with the FACS signature and clobbering the
13345Global Lock pointer.  Also, the actual firmware FACS was being
13346unmapped after construction of the "common" FACS, preventing
13347access to the actual Global Lock field within it.  The "common"
13348internal FACS is no longer installed as an actual ACPI table; it
13349is used simply as a global.
13350
13351Code and Data Size: Current core subsystem library sizes are shown
13352below.  These are the code and data sizes for the acpica.lib
13353produced by the Microsoft Visual C++ 6.0 compiler, and these
13354values do not include any ACPI driver or OSPM code.  The debug
13355version of the code includes the debug output trace mechanism and
13356has a larger code and data size.  Note that these values will vary
13357depending on the efficiency of the compiler and the compiler
13358options used during generation.
13359
13360  Previous Release (02_07_01)
13361    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13362    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13363  Current Release:
13364    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13365    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13366
13367
133682) Linux
13369
13370Updated Linux-specific code for core macro and OSL interface
13371changes described above.
13372
13373Improved /proc/acpi/event. It now can be opened only once and has
13374proper poll functionality.
13375
13376Fixed and restructured power management (acpi_bus).
13377
13378Only create /proc "view by type" when devices of that class exist.
13379
13380Fixed "charging/discharging" bug (and others) in acpi_battery.
13381
13382Improved thermal zone code.
13383
13384
133853) ASL Compiler, version X2039:
13386
13387
13388Implemented the new compiler restriction on ASL String hex/octal
13389escapes to non-null, ASCII values.  An error results if an invalid
13390value is used.  (This will require an ACPI 2.0 specification
13391change.)
13392
13393AML object labels that are output to the optional C and ASM source
13394are now prefixed with both the ACPI table signature and table ID
13395to help guarantee uniqueness within a large BIOS project.
13396
13397
13398----------------------------------------
13399Summary of changes for this label: 02_01_02
13400
134011) ACPI CA Core Subsystem:
13402
13403ACPI 2.0 support is complete in the entire Core Subsystem and the
13404ASL compiler. All new ACPI 2.0 operators are implemented and all
13405other changes for ACPI 2.0 support are complete.  With
13406simultaneous code and data optimizations throughout the subsystem,
13407ACPI 2.0 support has been implemented with almost no additional
13408cost in terms of code and data size.
13409
13410Implemented a new mechanism for allocation of return buffers.  If
13411the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
13412be allocated on behalf of the caller.  Consolidated all return
13413buffer validation and allocation to a common procedure.  Return
13414buffers will be allocated via the primary OSL allocation interface
13415since it appears that a separate pool is not needed by most users.
13416If a separate pool is required for these buffers, the caller can
13417still use the original mechanism and pre-allocate the buffer(s).
13418
13419Implemented support for string operands within the DerefOf
13420operator.
13421
13422Restructured the Hardware and Event managers to be table driven,
13423simplifying the source code and reducing the amount of generated
13424code.
13425
13426Split the common read/write low-level ACPI register bitfield
13427procedure into a separate read and write, simplifying the code
13428considerably.
13429
13430Obsoleted the AcpiOsCallocate OSL interface.  This interface was
13431used only a handful of times and didn't have enough critical mass
13432for a separate interface.  Replaced with a common calloc procedure
13433in the core.
13434
13435Fixed a reported problem with the GPE number mapping mechanism
13436that allows GPE1 numbers to be non-contiguous with GPE0.
13437Reorganized the GPE information and shrunk a large array that was
13438originally large enough to hold info for all possible GPEs (256)
13439to simply large enough to hold all GPEs up to the largest GPE
13440number on the machine.
13441
13442Fixed a reported problem with resource structure alignment on 64-
13443bit platforms.
13444
13445Changed the AcpiEnableEvent and AcpiDisableEvent external
13446interfaces to not require any flags for the common case of
13447enabling/disabling a GPE.
13448
13449Implemented support to allow a "Notify" on a Processor object.
13450
13451Most TBDs in comments within the source code have been resolved
13452and eliminated.
13453
13454
13455Fixed a problem in the interpreter where a standalone parent
13456prefix (^) was not handled correctly in the interpreter and
13457debugger.
13458
13459Removed obsolete and unnecessary GPE save/restore code.
13460
13461Implemented Field support in the ASL Load operator.  This allows a
13462table to be loaded from a named field, in addition to loading a
13463table directly from an Operation Region.
13464
13465Implemented timeout and handle support in the external Global Lock
13466interfaces.
13467
13468Fixed a problem in the AcpiDump utility where pathnames were no
13469longer being generated correctly during the dump of named objects.
13470
13471Modified the AML debugger to give a full display of if/while
13472predicates instead of just one AML opcode at a time.  (The
13473predicate can have several nested ASL statements.)  The old method
13474was confusing during single stepping.
13475
13476Code and Data Size: Current core subsystem library sizes are shown
13477below. These are the code and data sizes for the acpica.lib
13478produced by the Microsoft Visual C++ 6.0 compiler, and these
13479values do not include any ACPI driver or OSPM code.  The debug
13480version of the code includes the debug output trace mechanism and
13481has a larger code and data size.  Note that these values will vary
13482depending on the efficiency of the compiler and the compiler
13483options used during generation.
13484
13485  Previous Release (12_18_01)
13486     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13487     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13488   Current Release:
13489     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13490     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13491
134922) Linux
13493
13494 Implemented fix for PIIX reverse throttling errata (Processor
13495driver)
13496
13497Added new Limit interface (Processor and Thermal drivers)
13498
13499New thermal policy (Thermal driver)
13500
13501Many updates to /proc
13502
13503Battery "low" event support (Battery driver)
13504
13505Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
13506
13507IA32 - IA64 initialization unification, no longer experimental
13508
13509Menuconfig options redesigned
13510
135113) ASL Compiler, version X2037:
13512
13513Implemented several new output features to simplify integration of
13514AML code into  firmware: 1) Output the AML in C source code with
13515labels for each named ASL object.  The    original ASL source code
13516is interleaved as C comments. 2) Output the AML in ASM source code
13517with labels and interleaved ASL    source. 3) Output the AML in
13518raw hex table form, in either C or ASM.
13519
13520Implemented support for optional string parameters to the
13521LoadTable operator.
13522
13523Completed support for embedded escape sequences within string
13524literals.  The compiler now supports all single character escapes
13525as well as the Octal and Hex escapes.  Note: the insertion of a
13526null byte into a string literal (via the hex/octal escape) causes
13527the string to be immediately terminated.  A warning is issued.
13528
13529Fixed a problem where incorrect AML was generated for the case
13530where an ASL namepath consists of a single parent prefix (
13531
13532) with no trailing name segments.
13533
13534The compiler has been successfully generated with a 64-bit C
13535compiler.
13536
13537
13538
13539
13540----------------------------------------
13541Summary of changes for this label: 12_18_01
13542
135431) Linux
13544
13545Enhanced blacklist with reason and severity fields. Any table's
13546signature may now be used to identify a blacklisted system.
13547
13548Call _PIC control method to inform the firmware which interrupt
13549model the OS is using. Turn on any disabled link devices.
13550
13551Cleaned up busmgr /proc error handling (Andreas Dilger)
13552
13553 2) ACPI CA Core Subsystem:
13554
13555Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
13556while loop)
13557
13558Completed implementation of the ACPI 2.0 "Continue",
13559"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
13560operators.  All new ACPI 2.0 operators are now implemented in both
13561the ASL compiler and the AML interpreter.  The only remaining ACPI
135622.0 task is support for the String data type in the DerefOf
13563operator.  Fixed a problem with AcquireMutex where the status code
13564was lost if the caller had to actually wait for the mutex.
13565
13566Increased the maximum ASL Field size from 64K bits to 4G bits.
13567
13568Completed implementation of the external Global Lock interfaces --
13569AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
13570Handler parameters were added.
13571
13572Completed another pass at removing warnings and issues when
13573compiling with 64-bit compilers.  The code now compiles cleanly
13574with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
13575add and subtract (diff) macros have changed considerably.
13576
13577
13578Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1357964-bit platforms, 32-bits on all others.  This type is used
13580wherever memory allocation and/or the C sizeof() operator is used,
13581and affects the OSL memory allocation interfaces AcpiOsAllocate
13582and AcpiOsCallocate.
13583
13584Implemented sticky user breakpoints in the AML debugger.
13585
13586Code and Data Size: Current core subsystem library sizes are shown
13587below. These are the code and data sizes for the acpica.lib
13588produced by the Microsoft Visual C++ 6.0 compiler, and these
13589values do not include any ACPI driver or OSPM code.  The debug
13590version of the code includes the debug output trace mechanism and
13591has a larger code and data size. Note that these values will vary
13592depending on the efficiency of the compiler and the compiler
13593options used during generation.
13594
13595  Previous Release (12_05_01)
13596     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13597     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13598   Current Release:
13599     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13600     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13601
13602 3) ASL Compiler, version X2034:
13603
13604Now checks for (and generates an error if detected) the use of a
13605Break or Continue statement without an enclosing While statement.
13606
13607
13608Successfully generated the compiler with the Intel 64-bit C
13609compiler.
13610
13611 ----------------------------------------
13612Summary of changes for this label: 12_05_01
13613
13614 1) ACPI CA Core Subsystem:
13615
13616The ACPI 2.0 CopyObject operator is fully implemented.  This
13617operator creates a new copy of an object (and is also used to
13618bypass the "implicit conversion" mechanism of the Store operator.)
13619
13620The ACPI 2.0 semantics for the SizeOf operator are fully
13621implemented.  The change is that performing a SizeOf on a
13622reference object causes an automatic dereference of the object to
13623tha actual value before the size is evaluated. This behavior was
13624undefined in ACPI 1.0.
13625
13626The ACPI 2.0 semantics for the Extended IRQ resource descriptor
13627have been implemented.  The interrupt polarity and mode are now
13628independently set.
13629
13630Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
13631appearing in Package objects were not properly converted to
13632integers when the internal Package was converted to an external
13633object (via the AcpiEvaluateObject interface.)
13634
13635Fixed a problem with the namespace object deletion mechanism for
13636objects created by control methods.  There were two parts to this
13637problem: 1) Objects created during the initialization phase method
13638parse were not being deleted, and 2) The object owner ID mechanism
13639to track objects was broken.
13640
13641Fixed a problem where the use of the ASL Scope operator within a
13642control method would result in an invalid opcode exception.
13643
13644Fixed a problem introduced in the previous label where the buffer
13645length required for the _PRT structure was not being returned
13646correctly.
13647
13648Code and Data Size: Current core subsystem library sizes are shown
13649below. These are the code and data sizes for the acpica.lib
13650produced by the Microsoft Visual C++ 6.0 compiler, and these
13651values do not include any ACPI driver or OSPM code.  The debug
13652version of the code includes the debug output trace mechanism and
13653has a larger code and data size.  Note that these values will vary
13654depending on the efficiency of the compiler and the compiler
13655options used during generation.
13656
13657  Previous Release (11_20_01)
13658     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13659     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13660
13661  Current Release:
13662     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13663     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13664
13665 2) Linux:
13666
13667Updated all files to apply cleanly against 2.4.16.
13668
13669Added basic PCI Interrupt Routing Table (PRT) support for IA32
13670(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
13671version supports both static and dyanmic PRT entries, but dynamic
13672entries are treated as if they were static (not yet
13673reconfigurable).  Architecture- specific code to use this data is
13674absent on IA32 but should be available shortly.
13675
13676Changed the initialization sequence to start the ACPI interpreter
13677(acpi_init) prior to initialization of the PCI driver (pci_init)
13678in init/main.c.  This ordering is required to support PRT and
13679facilitate other (future) enhancement.  A side effect is that the
13680ACPI bus driver and certain device drivers can no longer be loaded
13681as modules.
13682
13683Modified the 'make menuconfig' options to allow PCI Interrupt
13684Routing support to be included without the ACPI Bus and other
13685device drivers.
13686
13687 3) ASL Compiler, version X2033:
13688
13689Fixed some issues with the use of the new CopyObject and
13690DataTableRegion operators.  Both are fully functional.
13691
13692 ----------------------------------------
13693Summary of changes for this label: 11_20_01
13694
13695 20 November 2001.  Summary of changes for this release.
13696
13697 1) ACPI CA Core Subsystem:
13698
13699Updated Index support to match ACPI 2.0 semantics.  Storing a
13700Integer, String, or Buffer to an Index of a Buffer will store only
13701the least-significant byte of the source to the Indexed buffer
13702byte.  Multiple writes are not performed.
13703
13704Fixed a problem where the access type used in an AccessAs ASL
13705operator was not recorded correctly into the field object.
13706
13707Fixed a problem where ASL Event objects were created in a
13708signalled state. Events are now created in an unsignalled state.
13709
13710The internal object cache is now purged after table loading and
13711initialization to reduce the use of dynamic kernel memory -- on
13712the assumption that object use is greatest during the parse phase
13713of the entire table (versus the run-time use of individual control
13714methods.)
13715
13716ACPI 2.0 variable-length packages are now fully operational.
13717
13718Code and Data Size: Code and Data optimizations have permitted new
13719feature development with an actual reduction in the library size.
13720Current core subsystem library sizes are shown below.  These are
13721the code and data sizes for the acpica.lib produced by the
13722Microsoft Visual C++ 6.0 compiler, and these values do not include
13723any ACPI driver or OSPM code.  The debug version of the code
13724includes the debug output trace mechanism and has a larger code
13725and data size.  Note that these values will vary depending on the
13726efficiency of the compiler and the compiler options used during
13727generation.
13728
13729  Previous Release (11_09_01):
13730     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
13731     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
13732
13733  Current Release:
13734     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13735     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13736
13737 2) Linux:
13738
13739Enhanced the ACPI boot-time initialization code to allow the use
13740of Local APIC tables for processor enumeration on IA-32, and to
13741pave the way for a fully MPS-free boot (on SMP systems) in the
13742near future.  This functionality replaces
13743arch/i386/kernel/acpitables.c, which was introduced in an earlier
137442.4.15-preX release.  To enable this feature you must add
13745"acpi_boot=on" to the kernel command line -- see the help entry
13746for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
13747the works...
13748
13749Restructured the configuration options to allow boot-time table
13750parsing support without inclusion of the ACPI Interpreter (and
13751other) code.
13752
13753NOTE: This release does not include fixes for the reported events,
13754power-down, and thermal passive cooling issues (coming soon).
13755
13756 3) ASL Compiler:
13757
13758Added additional typechecking for Fields within restricted access
13759Operation Regions.  All fields within EC and CMOS regions must be
13760declared with ByteAcc. All fields withing SMBus regions must be
13761declared with the BufferAcc access type.
13762
13763Fixed a problem where the listing file output of control methods
13764no longer interleaved the actual AML code with the ASL source
13765code.
13766
13767
13768
13769
13770----------------------------------------
13771Summary of changes for this label: 11_09_01
13772
137731) ACPI CA Core Subsystem:
13774
13775Implemented ACPI 2.0-defined support for writes to fields with a
13776Buffer, String, or Integer source operand that is smaller than the
13777target field. In these cases, the source operand is zero-extended
13778to fill the target field.
13779
13780Fixed a problem where a Field starting bit offset (within the
13781parent operation region) was calculated incorrectly if the
13782
13783alignment of the field differed from the access width.  This
13784affected CreateWordField, CreateDwordField, CreateQwordField, and
13785possibly other fields that use the "AccessAny" keyword.
13786
13787Fixed a problem introduced in the 11_02_01 release where indirect
13788stores through method arguments did not operate correctly.
13789
137902) Linux:
13791
13792Implemented boot-time ACPI table parsing support
13793(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
13794facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
13795legacy BIOS interfaces (e.g. MPS) for the configuration of system
13796processors, memory, and interrupts during setup_arch().  Note that
13797this patch does not include the required architecture-specific
13798changes required to apply this information -- subsequent patches
13799will be posted for both IA32 and IA64 to achieve this.
13800
13801Added low-level sleep support for IA32 platforms, courtesy of Pat
13802Mochel. This allows IA32 systems to transition to/from various
13803sleeping states (e.g. S1, S3), although the lack of a centralized
13804driver model and power-manageable drivers will prevent its
13805(successful) use on most systems.
13806
13807Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
13808submenu, unified IA32 and IA64 options, added new "Boot using ACPI
13809tables" option, etc.
13810
13811Increased the default timeout for the EC driver from 1ms to 10ms
13812(1000 cycles of 10us) to try to address AE_TIME errors during EC
13813transactions.
13814
13815 ----------------------------------------
13816Summary of changes for this label: 11_02_01
13817
138181) ACPI CA Core Subsystem:
13819
13820ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
13821(QWordAcc keyword). All ACPI 2.0 64-bit support is now
13822implemented.
13823
13824OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
13825changes to support ACPI 2.0 Qword field access.  Read/Write
13826PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
13827accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
13828the value parameter for the address space handler interface is now
13829an ACPI_INTEGER.  OSL implementations of these interfaces must now
13830handle the case where the Width parameter is 64.
13831
13832Index Fields: Fixed a problem where unaligned bit assembly and
13833disassembly for IndexFields was not supported correctly.
13834
13835Index and Bank Fields:  Nested Index and Bank Fields are now
13836supported. During field access, a check is performed to ensure
13837that the value written to an Index or Bank register is not out of
13838the range of the register.  The Index (or Bank) register is
13839written before each access to the field data. Future support will
13840include allowing individual IndexFields to be wider than the
13841DataRegister width.
13842
13843Fields: Fixed a problem where the AML interpreter was incorrectly
13844attempting to write beyond the end of a Field/OpRegion.  This was
13845a boundary case that occurred when a DWORD field was written to a
13846BYTE access OpRegion, forcing multiple writes and causing the
13847interpreter to write one datum too many.
13848
13849Fields: Fixed a problem with Field/OpRegion access where the
13850starting bit address of a field was incorrectly calculated if the
13851current access type was wider than a byte (WordAcc, DwordAcc, or
13852QwordAcc).
13853
13854Fields: Fixed a problem where forward references to individual
13855FieldUnits (individual Field names within a Field definition) were
13856not resolved during the AML table load.
13857
13858Fields: Fixed a problem where forward references from a Field
13859definition to the parent Operation Region definition were not
13860resolved during the AML table load.
13861
13862Fields: Duplicate FieldUnit names within a scope are now detected
13863during AML table load.
13864
13865Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
13866returned an incorrect name for the root node.
13867
13868Code and Data Size: Code and Data optimizations have permitted new
13869feature development with an actual reduction in the library size.
13870Current core subsystem library sizes are shown below.  These are
13871the code and data sizes for the acpica.lib produced by the
13872Microsoft Visual C++ 6.0 compiler, and these values do not include
13873any ACPI driver or OSPM code.  The debug version of the code
13874includes the debug output trace mechanism and has a larger code
13875and data size.  Note that these values will vary depending on the
13876efficiency of the compiler and the compiler options used during
13877generation.
13878
13879  Previous Release (10_18_01):
13880     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
13881     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
13882
13883  Current Release:
13884     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
13885     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
13886
13887 2) Linux:
13888
13889Improved /proc processor output (Pavel Machek) Re-added
13890MODULE_LICENSE("GPL") to all modules.
13891
13892 3) ASL Compiler version X2030:
13893
13894Duplicate FieldUnit names within a scope are now detected and
13895flagged as errors.
13896
13897 4) Documentation:
13898
13899Programmer Reference updated to reflect OSL and address space
13900handler interface changes described above.
13901
13902----------------------------------------
13903Summary of changes for this label: 10_18_01
13904
13905ACPI CA Core Subsystem:
13906
13907Fixed a problem with the internal object reference count mechanism
13908that occasionally caused premature object deletion. This resolves
13909all of the outstanding problem reports where an object is deleted
13910in the middle of an interpreter evaluation.  Although this problem
13911only showed up in rather obscure cases, the solution to the
13912problem involved an adjustment of all reference counts involving
13913objects attached to namespace nodes.
13914
13915Fixed a problem with Field support in the interpreter where
13916writing to an aligned field whose length is an exact multiple (2
13917or greater) of the field access granularity would cause an attempt
13918to write beyond the end of the field.
13919
13920The top level AML opcode execution functions within the
13921interpreter have been renamed with a more meaningful and
13922consistent naming convention.  The modules exmonad.c and
13923exdyadic.c were eliminated.  New modules are exoparg1.c,
13924exoparg2.c, exoparg3.c, and exoparg6.c.
13925
13926Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
13927
13928Fixed a problem where the AML debugger was causing some internal
13929objects to not be deleted during subsystem termination.
13930
13931Fixed a problem with the external AcpiEvaluateObject interface
13932where the subsystem would fault if the named object to be
13933evaluated refered to a constant such as Zero, Ones, etc.
13934
13935Fixed a problem with IndexFields and BankFields where the
13936subsystem would fault if the index, data, or bank registers were
13937not defined in the same scope as the field itself.
13938
13939Added printf format string checking for compilers that support
13940this feature.  Corrected more than 50 instances of issues with
13941format specifiers within invocations of ACPI_DEBUG_PRINT
13942throughout the core subsystem code.
13943
13944The ASL "Revision" operator now returns the ACPI support level
13945implemented in the core - the value "2" since the ACPI 2.0 support
13946is more than 50% implemented.
13947
13948Enhanced the output of the AML debugger "dump namespace" command
13949to output in a more human-readable form.
13950
13951Current core subsystem library code sizes are shown below.  These
13952
13953are the code and data sizes for the acpica.lib produced by the
13954Microsoft Visual C++ 6.0 compiler, and these values do not include
13955any ACPI driver or OSPM code.  The debug version of the code
13956includes the full debug trace mechanism -- leading to a much
13957
13958larger code and data size.  Note that these values will vary
13959depending on the efficiency of the compiler and the compiler
13960options used during generation.
13961
13962     Previous Label (09_20_01):
13963     Non-Debug Version:    65K Code,     5K Data,     70K Total
13964     Debug Version:       138K Code,    58K Data,    196K Total
13965
13966     This Label:
13967
13968     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
13969     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
13970
13971Linux:
13972
13973Implemented a "Bad BIOS Blacklist" to track machines that have
13974known ASL/AML problems.
13975
13976Enhanced the /proc interface for the thermal zone driver and added
13977support for _HOT (the critical suspend trip point).  The 'info'
13978file now includes threshold/policy information, and allows setting
13979of _SCP (cooling preference) and _TZP (polling frequency) values
13980to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
13981frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
13982preference to the passive/quiet mode (if supported by the ASL).
13983
13984Implemented a workaround for a gcc bug that resuted in an OOPs
13985when loading the control method battery driver.
13986
13987 ----------------------------------------
13988Summary of changes for this label: 09_20_01
13989
13990 ACPI CA Core Subsystem:
13991
13992The AcpiEnableEvent and AcpiDisableEvent interfaces have been
13993modified to allow individual GPE levels to be flagged as wake-
13994enabled (i.e., these GPEs are to remain enabled when the platform
13995sleeps.)
13996
13997The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
13998support wake-enabled GPEs.  This means that upon entering the
13999sleep state, all GPEs that are not wake-enabled are disabled.
14000When leaving the sleep state, these GPEs are reenabled.
14001
14002A local double-precision divide/modulo module has been added to
14003enhance portability to OS kernels where a 64-bit math library is
14004not available.  The new module is "utmath.c".
14005
14006Several optimizations have been made to reduce the use of CPU
14007stack.  Originally over 2K, the maximum stack usage is now below
140082K at 1860  bytes (1.82k)
14009
14010Fixed a problem with the AcpiGetFirmwareTable interface where the
14011root table pointer was not mapped into a logical address properly.
14012
14013Fixed a problem where a NULL pointer was being dereferenced in the
14014interpreter code for the ASL Notify operator.
14015
14016Fixed a problem where the use of the ASL Revision operator
14017returned an error. This operator now returns the current version
14018of the ACPI CA core subsystem.
14019
14020Fixed a problem where objects passed as control method parameters
14021to AcpiEvaluateObject were always deleted at method termination.
14022However, these objects may end up being stored into the namespace
14023by the called method.  The object reference count mechanism was
14024applied to these objects instead of a force delete.
14025
14026Fixed a problem where static strings or buffers (contained in the
14027AML code) that are declared as package elements within the ASL
14028code could cause a fault because the interpreter would attempt to
14029delete them.  These objects are now marked with the "static
14030object" flag to prevent any attempt to delete them.
14031
14032Implemented an interpreter optimization to use operands directly
14033from the state object instead of extracting the operands to local
14034variables.  This reduces stack use and code size, and improves
14035performance.
14036
14037The module exxface.c was eliminated as it was an unnecessary extra
14038layer of code.
14039
14040Current core subsystem library code sizes are shown below.  These
14041are the code and data sizes for the acpica.lib produced by the
14042Microsoft Visual C++ 6.0 compiler, and these values do not include
14043any ACPI driver or OSPM code.  The debug version of the code
14044includes the full debug trace mechanism -- leading to a much
14045larger code and data size.  Note that these values will vary
14046depending on the efficiency of the compiler and the compiler
14047options used during generation.
14048
14049  Non-Debug Version:  65K Code,   5K Data,   70K Total
14050(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
14051Total  (Previously 195K)
14052
14053Linux:
14054
14055Support for ACPI 2.0 64-bit integers has been added.   All ACPI
14056Integer objects are now 64 bits wide
14057
14058All Acpi data types and structures are now in lower case.  Only
14059Acpi macros are upper case for differentiation.
14060
14061 Documentation:
14062
14063Changes to the external interfaces as described above.
14064
14065 ----------------------------------------
14066Summary of changes for this label: 08_31_01
14067
14068 ACPI CA Core Subsystem:
14069
14070A bug with interpreter implementation of the ASL Divide operator
14071was found and fixed.  The implicit function return value (not the
14072explicit store operands) was returning the remainder instead of
14073the quotient.  This was a longstanding bug and it fixes several
14074known outstanding issues on various platforms.
14075
14076The ACPI_DEBUG_PRINT and function trace entry/exit macros have
14077been further optimized for size.  There are 700 invocations of the
14078DEBUG_PRINT macro alone, so each optimization reduces the size of
14079the debug version of the subsystem significantly.
14080
14081A stack trace mechanism has been implemented.  The maximum stack
14082usage is about 2K on 32-bit platforms.  The debugger command "stat
14083stack" will display the current maximum stack usage.
14084
14085All public symbols and global variables within the subsystem are
14086now prefixed with the string "Acpi".  This keeps all of the
14087symbols grouped together in a kernel map, and avoids conflicts
14088with other kernel subsystems.
14089
14090Most of the internal fixed lookup tables have been moved into the
14091code segment via the const operator.
14092
14093Several enhancements have been made to the interpreter to both
14094reduce the code size and improve performance.
14095
14096Current core subsystem library code sizes are shown below.  These
14097are the code and data sizes for the acpica.lib produced by the
14098Microsoft Visual C++ 6.0 compiler, and these values do not include
14099any ACPI driver or OSPM code.  The debug version of the code
14100includes the full debug trace mechanism which contains over 700
14101invocations of the DEBUG_PRINT macro, 500 function entry macro
14102invocations, and over 900 function exit macro invocations --
14103leading to a much larger code and data size.  Note that these
14104values will vary depending on the efficiency of the compiler and
14105the compiler options used during generation.
14106
14107        Non-Debug Version:  64K Code,   5K Data,   69K Total
14108Debug Version:     137K Code,  58K Data,  195K Total
14109
14110 Linux:
14111
14112Implemented wbinvd() macro, pending a kernel-wide definition.
14113
14114Fixed /proc/acpi/event to handle poll() and short reads.
14115
14116 ASL Compiler, version X2026:
14117
14118Fixed a problem introduced in the previous label where the AML
14119
14120code emitted for package objects produced packages with zero
14121length.
14122
14123 ----------------------------------------
14124Summary of changes for this label: 08_16_01
14125
14126ACPI CA Core Subsystem:
14127
14128The following ACPI 2.0 ASL operators have been implemented in the
14129AML interpreter (These are already supported by the Intel ASL
14130compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14131ToBuffer.  Support for 64-bit AML constants is implemented in the
14132AML parser, debugger, and disassembler.
14133
14134The internal memory tracking mechanism (leak detection code) has
14135been upgraded to reduce the memory overhead (a separate tracking
14136block is no longer allocated for each memory allocation), and now
14137supports all of the internal object caches.
14138
14139The data structures and code for the internal object caches have
14140been coelesced and optimized so that there is a single cache and
14141memory list data structure and a single group of functions that
14142implement generic cache management.  This has reduced the code
14143size in both the debug and release versions of the subsystem.
14144
14145The DEBUG_PRINT macro(s) have been optimized for size and replaced
14146by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14147different, because it generates a single call to an internal
14148function.  This results in a savings of about 90 bytes per
14149invocation, resulting in an overall code and data savings of about
1415016% in the debug version of the subsystem.
14151
14152 Linux:
14153
14154Fixed C3 disk corruption problems and re-enabled C3 on supporting
14155machines.
14156
14157Integrated low-level sleep code by Patrick Mochel.
14158
14159Further tweaked source code Linuxization.
14160
14161Other minor fixes.
14162
14163 ASL Compiler:
14164
14165Support for ACPI 2.0 variable length packages is fixed/completed.
14166
14167Fixed a problem where the optional length parameter for the ACPI
141682.0 ToString operator.
14169
14170Fixed multiple extraneous error messages when a syntax error is
14171detected within the declaration line of a control method.
14172
14173 ----------------------------------------
14174Summary of changes for this label: 07_17_01
14175
14176ACPI CA Core Subsystem:
14177
14178Added a new interface named AcpiGetFirmwareTable to obtain any
14179ACPI table via the ACPI signature.  The interface can be called at
14180any time during kernel initialization, even before the kernel
14181virtual memory manager is initialized and paging is enabled.  This
14182allows kernel subsystems to obtain ACPI tables very early, even
14183before the ACPI CA subsystem is initialized.
14184
14185Fixed a problem where Fields defined with the AnyAcc attribute
14186could be resolved to the incorrect address under the following
14187conditions: 1) the field width is larger than 8 bits and 2) the
14188parent operation region is not defined on a DWORD boundary.
14189
14190Fixed a problem where the interpreter is not being locked during
14191namespace initialization (during execution of the _INI control
14192methods), causing an error when an attempt is made to release it
14193later.
14194
14195ACPI 2.0 support in the AML Interpreter has begun and will be
14196ongoing throughout the rest of this year.  In this label, The Mod
14197operator is implemented.
14198
14199Added a new data type to contain full PCI addresses named
14200ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14201and Function values.
14202
14203 Linux:
14204
14205Enhanced the Linux version of the source code to change most
14206capitalized ACPI type names to lowercase. For example, all
14207instances of ACPI_STATUS are changed to acpi_status.  This will
14208result in a large diff, but the change is strictly cosmetic and
14209aligns the CA code closer to the Linux coding standard.
14210
14211OSL Interfaces:
14212
14213The interfaces to the PCI configuration space have been changed to
14214add the PCI Segment number and to split the single 32-bit combined
14215DeviceFunction field into two 16-bit fields.  This was
14216accomplished by moving the four values that define an address in
14217PCI configuration space (segment, bus, device, and function) to
14218the new ACPI_PCI_ID structure.
14219
14220The changes to the PCI configuration space interfaces led to a
14221reexamination of the complete set of address space access
14222interfaces for PCI, I/O, and Memory.  The previously existing 18
14223interfaces have proven difficult to maintain (any small change
14224must be propagated across at least 6 interfaces) and do not easily
14225allow for future expansion to 64 bits if necessary.  Also, on some
14226systems, it would not be appropriate to demultiplex the access
14227width (8, 16, 32,or 64) before calling the OSL if the
14228corresponding native OS interfaces contain a similar access width
14229parameter.  For these reasons, the 18 address space interfaces
14230have been replaced by these 6 new ones:
14231
14232AcpiOsReadPciConfiguration
14233AcpiOsWritePciConfiguration
14234AcpiOsReadMemory
14235AcpiOsWriteMemory
14236AcpiOsReadPort
14237AcpiOsWritePort
14238
14239Added a new interface named AcpiOsGetRootPointer to allow the OSL
14240to perform the platform and/or OS-specific actions necessary to
14241obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
14242interface will simply call down to the CA core to perform the low-
14243memory search for the table.  On IA-64, the RSDP is obtained from
14244EFI.  Migrating this interface to the OSL allows the CA core to
14245
14246remain OS and platform independent.
14247
14248Added a new interface named AcpiOsSignal to provide a generic
14249"function code and pointer" interface for various miscellaneous
14250signals and notifications that must be made to the host OS.   The
14251first such signals are intended to support the ASL Fatal and
14252Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
14253interface has been obsoleted.
14254
14255The definition of the AcpiFormatException interface has been
14256changed to simplify its use.  The caller no longer must supply a
14257buffer to the call; A pointer to a const string is now returned
14258directly.  This allows the call to be easily used in printf
14259statements, etc. since the caller does not have to manage a local
14260buffer.
14261
14262
14263 ASL Compiler, Version X2025:
14264
14265The ACPI 2.0 Switch/Case/Default operators have been implemented
14266and are fully functional.  They will work with all ACPI 1.0
14267interpreters, since the operators are simply translated to If/Else
14268pairs.
14269
14270The ACPI 2.0 ElseIf operator is implemented and will also work
14271with 1.0 interpreters, for the same reason.
14272
14273Implemented support for ACPI 2.0 variable-length packages.  These
14274packages have a separate opcode, and their size is determined by
14275the interpreter at run-time.
14276
14277Documentation The ACPI CA Programmer Reference has been updated to
14278reflect the new interfaces and changes to existing interfaces.
14279
14280 ------------------------------------------
14281Summary of changes for this label: 06_15_01
14282
14283 ACPI CA Core Subsystem:
14284
14285Fixed a problem where a DWORD-accessed field within a Buffer
14286object would get its byte address inadvertently rounded down to
14287the nearest DWORD.  Buffers are always Byte-accessible.
14288
14289 ASL Compiler, version X2024:
14290
14291Fixed a problem where the Switch() operator would either fault or
14292hang the compiler.  Note however, that the AML code for this ACPI
142932.0 operator is not yet implemented.
14294
14295Compiler uses the new AcpiOsGetTimer interface to obtain compile
14296timings.
14297
14298Implementation of the CreateField operator automatically converts
14299a reference to a named field within a resource descriptor from a
14300byte offset to a bit offset if required.
14301
14302Added some missing named fields from the resource descriptor
14303support. These are the names that are automatically created by the
14304compiler to reference fields within a descriptor.  They are only
14305valid at compile time and are not passed through to the AML
14306interpreter.
14307
14308Resource descriptor named fields are now typed as Integers and
14309subject to compile-time typechecking when used in expressions.
14310
14311 ------------------------------------------
14312Summary of changes for this label: 05_18_01
14313
14314 ACPI CA Core Subsystem:
14315
14316Fixed a couple of problems in the Field support code where bits
14317from adjacent fields could be returned along with the proper field
14318bits. Restructured the field support code to improve performance,
14319readability and maintainability.
14320
14321New DEBUG_PRINTP macro automatically inserts the procedure name
14322into the output, saving hundreds of copies of procedure name
14323strings within the source, shrinking the memory footprint of the
14324debug version of the core subsystem.
14325
14326 Source Code Structure:
14327
14328The source code directory tree was restructured to reflect the
14329current organization of the component architecture.  Some files
14330and directories have been moved and/or renamed.
14331
14332 Linux:
14333
14334Fixed leaking kacpidpc processes.
14335
14336Fixed queueing event data even when /proc/acpi/event is not
14337opened.
14338
14339 ASL Compiler, version X2020:
14340
14341Memory allocation performance enhancement - over 24X compile time
14342improvement on large ASL files.  Parse nodes and namestring
14343buffers are now allocated from a large internal compiler buffer.
14344
14345The temporary .SRC file is deleted unless the "-s" option is
14346specified
14347
14348The "-d" debug output option now sends all output to the .DBG file
14349instead of the console.
14350
14351"External" second parameter is now optional
14352
14353"ElseIf" syntax now properly allows the predicate
14354
14355Last operand to "Load" now recognized as a Target operand
14356
14357Debug object can now be used anywhere as a normal object.
14358
14359ResourceTemplate now returns an object of type BUFFER
14360
14361EISAID now returns an object of type INTEGER
14362
14363"Index" now works with a STRING operand
14364
14365"LoadTable" now accepts optional parameters
14366
14367"ToString" length parameter is now optional
14368
14369"Interrupt (ResourceType," parse error fixed.
14370
14371"Register" with a user-defined region space parse error fixed
14372
14373Escaped backslash at the end of a string ("\\") scan/parse error
14374fixed
14375
14376"Revision" is now an object of type INTEGER.
14377
14378
14379
14380------------------------------------------
14381Summary of changes for this label: 05_02_01
14382
14383Linux:
14384
14385/proc/acpi/event now blocks properly.
14386
14387Removed /proc/sys/acpi. You can still dump your DSDT from
14388/proc/acpi/dsdt.
14389
14390 ACPI CA Core Subsystem:
14391
14392Fixed a problem introduced in the previous label where some of the
14393"small" resource descriptor types were not recognized.
14394
14395Improved error messages for the case where an ASL Field is outside
14396the range of the parent operation region.
14397
14398 ASL Compiler, version X2018:
14399
14400
14401Added error detection for ASL Fields that extend beyond the length
14402of the parent operation region (only if the length of the region
14403is known at compile time.)  This includes fields that have a
14404minimum access width that is smaller than the parent region, and
14405individual field units that are partially or entirely beyond the
14406extent of the parent.
14407
14408
14409
14410------------------------------------------
14411Summary of changes for this label: 04_27_01
14412
14413 ACPI CA Core Subsystem:
14414
14415Fixed a problem where the namespace mutex could be released at the
14416wrong time during execution of AcpiRemoveAddressSpaceHandler.
14417
14418Added optional thread ID output for debug traces, to simplify
14419debugging of multiple threads.  Added context switch notification
14420when the debug code realizes that a different thread is now
14421executing ACPI code.
14422
14423Some additional external data types have been prefixed with the
14424string "ACPI_" for consistency.  This may effect existing code.
14425The data types affected are the external callback typedefs - e.g.,
14426
14427WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
14428
14429 Linux:
14430
14431Fixed an issue with the OSL semaphore implementation where a
14432thread was waking up with an error from receiving a SIGCHLD
14433signal.
14434
14435Linux version of ACPI CA now uses the system C library for string
14436manipulation routines instead of a local implementation.
14437
14438Cleaned up comments and removed TBDs.
14439
14440 ASL Compiler, version X2017:
14441
14442Enhanced error detection and reporting for all file I/O
14443operations.
14444
14445 Documentation:
14446
14447Programmer Reference updated to version 1.06.
14448
14449
14450
14451------------------------------------------
14452Summary of changes for this label: 04_13_01
14453
14454 ACPI CA Core Subsystem:
14455
14456Restructured support for BufferFields and RegionFields.
14457BankFields support is now fully operational.  All known 32-bit
14458limitations on field sizes have been removed.  Both BufferFields
14459and (Operation) RegionFields are now supported by the same field
14460management code.
14461
14462Resource support now supports QWORD address and IO resources. The
1446316/32/64 bit address structures and the Extended IRQ structure
14464have been changed to properly handle Source Resource strings.
14465
14466A ThreadId of -1 is now used to indicate a "mutex not acquired"
14467condition internally and must never be returned by AcpiOsThreadId.
14468This reserved value was changed from 0 since Unix systems allow a
14469thread ID of 0.
14470
14471Linux:
14472
14473Driver code reorganized to enhance portability
14474
14475Added a kernel configuration option to control ACPI_DEBUG
14476
14477Fixed the EC driver to honor _GLK.
14478
14479ASL Compiler, version X2016:
14480
14481Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
14482address space was set to 0, not 0x7f as it should be.
14483
14484 ------------------------------------------
14485Summary of changes for this label: 03_13_01
14486
14487 ACPI CA Core Subsystem:
14488
14489During ACPI initialization, the _SB_._INI method is now run if
14490present.
14491
14492Notify handler fix - notifies are deferred until the parent method
14493completes execution.  This fixes the "mutex already acquired"
14494issue seen occasionally.
14495
14496Part of the "implicit conversion" rules in ACPI 2.0 have been
14497found to cause compatibility problems with existing ASL/AML.  The
14498convert "result-to-target-type" implementation has been removed
14499for stores to method Args and Locals.  Source operand conversion
14500is still fully implemented.  Possible changes to ACPI 2.0
14501specification pending.
14502
14503Fix to AcpiRsCalculatePciRoutingTableLength to return correct
14504length.
14505
14506Fix for compiler warnings for 64-bit compiles.
14507
14508 Linux:
14509
14510/proc output aligned for easier parsing.
14511
14512Release-version compile problem fixed.
14513
14514New kernel configuration options documented in Configure.help.
14515
14516IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
14517context" message.
14518
14519 OSPM:
14520
14521Power resource driver integrated with bus manager.
14522
14523Fixed kernel fault during active cooling for thermal zones.
14524
14525Source Code:
14526
14527The source code tree has been restructured.
14528
14529
14530
14531------------------------------------------
14532Summary of changes for this label: 03_02_01
14533
14534 Linux OS Services Layer (OSL):
14535
14536Major revision of all Linux-specific code.
14537
14538Modularized all ACPI-specific drivers.
14539
14540Added new thermal zone and power resource drivers.
14541
14542Revamped /proc interface (new functionality is under /proc/acpi).
14543
14544New kernel configuration options.
14545
14546 Linux known issues:
14547
14548New kernel configuration options not documented in Configure.help
14549yet.
14550
14551
14552Module dependencies not currently implemented. If used, they
14553should be loaded in this order: busmgr, power, ec, system,
14554processor, battery, ac_adapter, button, thermal.
14555
14556Modules will not load if CONFIG_MODVERSION is set.
14557
14558IBM 600E - entering S5 may reboot instead of shutting down.
14559
14560IBM 600E - Sleep button may generate "Invalid <NULL> context"
14561message.
14562
14563Some systems may fail with "execution mutex already acquired"
14564message.
14565
14566 ACPI CA Core Subsystem:
14567
14568Added a new OSL Interface, AcpiOsGetThreadId.  This was required
14569for the  deadlock detection code. Defined to return a non-zero, 32-
14570bit thread ID for the currently executing thread.  May be a non-
14571zero constant integer on single-thread systems.
14572
14573Implemented deadlock detection for internal subsystem mutexes.  We
14574may add conditional compilation for this code (debug only) later.
14575
14576ASL/AML Mutex object semantics are now fully supported.  This
14577includes multiple acquires/releases by owner and support for the
14578
14579Mutex SyncLevel parameter.
14580
14581A new "Force Release" mechanism automatically frees all ASL
14582Mutexes that have been acquired but not released when a thread
14583exits the interpreter.  This forces conformance to the ACPI spec
14584("All mutexes must be released when an invocation exits") and
14585prevents deadlocked ASL threads.  This mechanism can be expanded
14586(later) to monitor other resource acquisitions if OEM ASL code
14587continues to misbehave (which it will).
14588
14589Several new ACPI exception codes have been added for the Mutex
14590support.
14591
14592Recursive method calls are now allowed and supported (the ACPI
14593spec does in fact allow recursive method calls.)  The number of
14594recursive calls is subject to the restrictions imposed by the
14595SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
14596parameter.
14597
14598Implemented support for the SyncLevel parameter for control
14599methods (ACPI 2.0 feature)
14600
14601Fixed a deadlock problem when multiple threads attempted to use
14602the interpreter.
14603
14604Fixed a problem where the string length of a String package
14605element was not always set in a package returned from
14606AcpiEvaluateObject.
14607
14608Fixed a problem where the length of a String package element was
14609not always included in the length of the overall package returned
14610from AcpiEvaluateObject.
14611
14612Added external interfaces (Acpi*) to the ACPI debug memory
14613manager.  This manager keeps a list of all outstanding
14614allocations, and can therefore detect memory leaks and attempts to
14615free memory blocks more than once. Useful for code such as the
14616power manager, etc.  May not be appropriate for device drivers.
14617Performance with the debug code enabled is slow.
14618
14619The ACPI Global Lock is now an optional hardware element.
14620
14621 ASL Compiler Version X2015:
14622
14623Integrated changes to allow the compiler to be generated on
14624multiple platforms.
14625
14626Linux makefile added to generate the compiler on Linux
14627
14628 Source Code:
14629
14630All platform-specific headers have been moved to their own
14631subdirectory, Include/Platform.
14632
14633New source file added, Interpreter/ammutex.c
14634
14635New header file, Include/acstruct.h
14636
14637 Documentation:
14638
14639The programmer reference has been updated for the following new
14640interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
14641
14642 ------------------------------------------
14643Summary of changes for this label: 02_08_01
14644
14645Core ACPI CA Subsystem: Fixed a problem where an error was
14646incorrectly returned if the return resource buffer was larger than
14647the actual data (in the resource interfaces).
14648
14649References to named objects within packages are resolved to the
14650
14651full pathname string before packages are returned directly (via
14652the AcpiEvaluateObject interface) or indirectly via the resource
14653interfaces.
14654
14655Linux OS Services Layer (OSL):
14656
14657Improved /proc battery interface.
14658
14659
14660Added C-state debugging output and other miscellaneous fixes.
14661
14662ASL Compiler Version X2014:
14663
14664All defined method arguments can now be used as local variables,
14665including the ones that are not actually passed in as parameters.
14666The compiler tracks initialization of the arguments and issues an
14667exception if they are used without prior assignment (just like
14668locals).
14669
14670The -o option now specifies a filename prefix that is used for all
14671output files, including the AML output file.  Otherwise, the
14672default behavior is as follows:  1) the AML goes to the file
14673specified in the DSDT.  2) all other output files use the input
14674source filename as the base.
14675
14676 ------------------------------------------
14677Summary of changes for this label: 01_25_01
14678
14679Core ACPI CA Subsystem: Restructured the implementation of object
14680store support within the  interpreter.  This includes support for
14681the Store operator as well  as any ASL operators that include a
14682target operand.
14683
14684Partially implemented support for Implicit Result-to-Target
14685conversion. This is when a result object is converted on the fly
14686to the type of  an existing target object.  Completion of this
14687support is pending  further analysis of the ACPI specification
14688concerning this matter.
14689
14690CPU-specific code has been removed from the subsystem (hardware
14691directory).
14692
14693New Power Management Timer functions added
14694
14695Linux OS Services Layer (OSL): Moved system state transition code
14696to the core, fixed it, and modified  Linux OSL accordingly.
14697
14698Fixed C2 and C3 latency calculations.
14699
14700
14701We no longer use the compilation date for the version message on
14702initialization, but retrieve the version from AcpiGetSystemInfo().
14703
14704Incorporated for fix Sony VAIO machines.
14705
14706Documentation:  The Programmer Reference has been updated and
14707reformatted.
14708
14709
14710ASL Compiler:  Version X2013: Fixed a problem where the line
14711numbering and error reporting could get out  of sync in the
14712presence of multiple include files.
14713
14714 ------------------------------------------
14715Summary of changes for this label: 01_15_01
14716
14717Core ACPI CA Subsystem:
14718
14719Implemented support for type conversions in the execution of the
14720ASL  Concatenate operator (The second operand is converted to
14721match the type  of the first operand before concatenation.)
14722
14723Support for implicit source operand conversion is partially
14724implemented.   The ASL source operand types Integer, Buffer, and
14725String are freely  interchangeable for most ASL operators and are
14726converted by the interpreter  on the fly as required.  Implicit
14727Target operand conversion (where the  result is converted to the
14728target type before storing) is not yet implemented.
14729
14730Support for 32-bit and 64-bit BCD integers is implemented.
14731
14732Problem fixed where a field read on an aligned field could cause a
14733read  past the end of the field.
14734
14735New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
14736does not return a value, but the caller expects one.  (The ASL
14737compiler flags this as a warning.)
14738
14739ASL Compiler:
14740
14741Version X2011:
147421. Static typechecking of all operands is implemented. This
14743prevents the use of invalid objects (such as using a Package where
14744an Integer is required) at compile time instead of at interpreter
14745run-time.
147462. The ASL source line is printed with ALL errors and warnings.
147473. Bug fix for source EOF without final linefeed.
147484. Debug option is split into a parse trace and a namespace trace.
147495. Namespace output option (-n) includes initial values for
14750integers and strings.
147516. Parse-only option added for quick syntax checking.
147527. Compiler checks for duplicate ACPI name declarations
14753
14754Version X2012:
147551. Relaxed typechecking to allow interchangeability between
14756strings, integers, and buffers.  These types are now converted by
14757the interpreter at runtime.
147582. Compiler reports time taken by each internal subsystem in the
14759debug         output file.
14760
14761
14762 ------------------------------------------
14763Summary of changes for this label: 12_14_00
14764
14765ASL Compiler:
14766
14767This is the first official release of the compiler. Since the
14768compiler requires elements of the Core Subsystem, this label
14769synchronizes everything.
14770
14771------------------------------------------
14772Summary of changes for this label: 12_08_00
14773
14774
14775Fixed a problem where named references within the ASL definition
14776of both OperationRegions and CreateXXXFields did not work
14777properly.  The symptom was an AE_AML_OPERAND_TYPE during
14778initialization of the region/field. This is similar (but not
14779related internally) to the problem that was fixed in the last
14780label.
14781
14782Implemented both 32-bit and 64-bit support for the BCD ASL
14783functions ToBCD and FromBCD.
14784
14785Updated all legal headers to include "2000" in the copyright
14786years.
14787
14788 ------------------------------------------
14789Summary of changes for this label: 12_01_00
14790
14791Fixed a problem where method invocations within the ASL definition
14792of both OperationRegions and CreateXXXFields did not work
14793properly.  The symptom was an AE_AML_OPERAND_TYPE during
14794initialization of the region/field:
14795
14796  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
14797[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
14798(0x3005)
14799
14800Fixed a problem where operators with more than one nested
14801subexpression would fail.  The symptoms were varied, by mostly
14802AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
14803problem that has gone unnoticed until now.
14804
14805  Subtract (Add (1,2), Multiply (3,4))
14806
14807Fixed a problem where AcpiGetHandle didn't quite get fixed in the
14808previous build (The prefix part of a relative path was handled
14809incorrectly).
14810
14811Fixed a problem where Operation Region initialization failed if
14812the operation region name was a "namepath" instead of a simple
14813"nameseg". Symptom was an AE_NO_OPERAND error.
14814
14815Fixed a problem where an assignment to a local variable via the
14816indirect RefOf mechanism only worked for the first such
14817assignment.  Subsequent assignments were ignored.
14818
14819 ------------------------------------------
14820Summary of changes for this label: 11_15_00
14821
14822ACPI 2.0 table support with backwards support for ACPI 1.0 and the
148230.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
14824the AML  interpreter does NOT have support for the new 2.0 ASL
14825grammar terms at this time.
14826
14827All ACPI hardware access is via the GAS structures in the ACPI 2.0
14828FADT.
14829
14830All physical memory addresses across all platforms are now 64 bits
14831wide. Logical address width remains dependent on the platform
14832(i.e., "void *").
14833
14834AcpiOsMapMemory interface changed to a 64-bit physical address.
14835
14836The AML interpreter integer size is now 64 bits, as per the ACPI
148372.0 specification.
14838
14839For backwards compatibility with ACPI 1.0, ACPI tables with a
14840revision number less than 2 use 32-bit integers only.
14841
14842Fixed a problem where the evaluation of OpRegion operands did not
14843always resolve them to numbers properly.
14844
14845------------------------------------------
14846Summary of changes for this label: 10_20_00
14847
14848Fix for CBN_._STA issue.  This fix will allow correct access to
14849CBN_ OpRegions when the _STA returns 0x8.
14850
14851Support to convert ACPI constants (Ones, Zeros, One) to actual
14852values before a package object is returned
14853
14854Fix for method call as predicate to if/while construct causing
14855incorrect if/while behavior
14856
14857Fix for Else block package lengths sometimes calculated wrong (if
14858block > 63 bytes)
14859
14860Fix for Processor object length field, was always zero
14861
14862Table load abort if FACP sanity check fails
14863
14864Fix for problem with Scope(name) if name already exists
14865
14866Warning emitted if a named object referenced cannot be found
14867(resolved) during method execution.
14868
14869
14870
14871
14872
14873------------------------------------------
14874Summary of changes for this label: 9_29_00
14875
14876New table initialization interfaces: AcpiInitializeSubsystem no
14877longer has any parameters AcpiFindRootPointer - Find the RSDP (if
14878necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
14879>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
14880AcpiLoadTables
14881
14882Note: These interface changes require changes to all existing OSDs
14883
14884The PCI_Config default address space handler is always installed
14885at the root namespace object.
14886
14887-------------------------------------------
14888Summary of changes for this label: 09_15_00
14889
14890The new initialization architecture is implemented.  New
14891interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
14892AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
14893
14894(Namespace is automatically loaded when a table is loaded)
14895
14896The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1489752 bytes to 32 bytes.  There is usually one of these for every
14898namespace object, so the memory savings is significant.
14899
14900Implemented just-in-time evaluation of the CreateField operators.
14901
14902Bug fixes for IA-64 support have been integrated.
14903
14904Additional code review comments have been implemented
14905
14906The so-called "third pass parse" has been replaced by a final walk
14907through the namespace to initialize all operation regions (address
14908spaces) and fields that have not yet been initialized during the
14909execution of the various _INI and REG methods.
14910
14911New file - namespace/nsinit.c
14912
14913-------------------------------------------
14914Summary of changes for this label: 09_01_00
14915
14916Namespace manager data structures have been reworked to change the
14917primary  object from a table to a single object.  This has
14918resulted in dynamic memory  savings of 3X within the namespace and
149192X overall in the ACPI CA subsystem.
14920
14921Fixed problem where the call to AcpiEvFindPciRootBuses was
14922inadvertently left  commented out.
14923
14924Reduced the warning count when generating the source with the GCC
14925compiler.
14926
14927Revision numbers added to each module header showing the
14928SourceSafe version of the file.  Please refer to this version
14929number when giving us feedback or comments on individual modules.
14930
14931The main object types within the subsystem have been renamed to
14932clarify their  purpose:
14933
14934ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
14935ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
14936ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
14937
14938NOTE: no changes to the initialization sequence are included in
14939this label.
14940
14941-------------------------------------------
14942Summary of changes for this label: 08_23_00
14943
14944Fixed problem where TerminateControlMethod was being called
14945multiple times per  method
14946
14947Fixed debugger problem where single stepping caused a semaphore to
14948be  oversignalled
14949
14950Improved performance through additional parse object caching -
14951added  ACPI_EXTENDED_OP type
14952
14953-------------------------------------------
14954Summary of changes for this label: 08_10_00
14955
14956Parser/Interpreter integration:  Eliminated the creation of
14957complete parse trees  for ACPI tables and control methods.
14958Instead, parse subtrees are created and  then deleted as soon as
14959they are processed (Either entered into the namespace or  executed
14960by the interpreter).  This reduces the use of dynamic kernel
14961memory  significantly. (about 10X)
14962
14963Exception codes broken into classes and renumbered.  Be sure to
14964recompile all  code that includes acexcep.h.  Hopefully we won't
14965have to renumber the codes  again now that they are split into
14966classes (environment, programmer, AML code,  ACPI table, and
14967internal).
14968
14969Fixed some additional alignment issues in the Resource Manager
14970subcomponent
14971
14972Implemented semaphore tracking in the AcpiExec utility, and fixed
14973several places  where mutexes/semaphores were being unlocked
14974without a corresponding lock  operation.  There are no known
14975semaphore or mutex "leaks" at this time.
14976
14977Fixed the case where an ASL Return operator is used to return an
14978unnamed  package.
14979
14980-------------------------------------------
14981Summary of changes for this label: 07_28_00
14982
14983Fixed a problem with the way addresses were calculated in
14984AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
14985manifested itself when a Field was  created with WordAccess or
14986DwordAccess, but the field unit defined within the  Field was less
14987
14988than a Word or Dword.
14989
14990Fixed a problem in AmlDumpOperands() module's loop to pull
14991operands off of the  operand stack to display information. The
14992problem manifested itself as a TLB  error on 64-bit systems when
14993accessing an operand stack with two or more  operands.
14994
14995Fixed a problem with the PCI configuration space handlers where
14996context was  getting confused between accesses. This required a
14997change to the generic address  space handler and address space
14998setup definitions. Handlers now get both a  global handler context
14999(this is the one passed in by the user when executing
15000AcpiInstallAddressSpaceHandler() and a specific region context
15001that is unique to  each region (For example, the _ADR, _SEG and
15002_BBN values associated with a  specific region). The generic
15003function definitions have changed to the  following:
15004
15005typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15006UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15007*HandlerContext, // This used to be void *Context void
15008*RegionContext); // This is an additional parameter
15009
15010typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15011RegionHandle, UINT32 Function, void *HandlerContext,  void
15012**RegionContext); // This used to be **ReturnContext
15013
15014-------------------------------------------
15015Summary of changes for this label: 07_21_00
15016
15017Major file consolidation and rename.  All files within the
15018interpreter have been  renamed as well as most header files.  This
15019was done to prevent collisions with  existing files in the host
15020OSs -- filenames such as "config.h" and "global.h"  seem to be
15021quite common.  The VC project files have been updated.  All
15022makefiles  will require modification.
15023
15024The parser/interpreter integration continues in Phase 5 with the
15025implementation  of a complete 2-pass parse (the AML is parsed
15026twice) for each table;  This  avoids the construction of a huge
15027parse tree and therefore reduces the amount of  dynamic memory
15028required by the subsystem.  Greater use of the parse object cache
15029means that performance is unaffected.
15030
15031Many comments from the two code reviews have been rolled in.
15032
15033The 64-bit alignment support is complete.
15034
15035-------------------------------------------
15036Summary of changes for this label: 06_30_00
15037
15038With a nod and a tip of the hat to the technology of yesteryear,
15039we've added  support in the source code for 80 column output
15040devices.  The code is now mostly  constrained to 80 columns or
15041less to support environments and editors that 1)  cannot display
15042or print more than 80 characters on a single line, and 2) cannot
15043disable line wrapping.
15044
15045A major restructuring of the namespace data structure has been
15046completed.  The  result is 1) cleaner and more
15047understandable/maintainable code, and 2) a  significant reduction
15048in the dynamic memory requirement for each named ACPI  object
15049(almost half).
15050
15051-------------------------------------------
15052Summary of changes for this label: 06_23_00
15053
15054Linux support has been added.  In order to obtain approval to get
15055the ACPI CA  subsystem into the Linux kernel, we've had to make
15056quite a few changes to the  base subsystem that will affect all
15057users (all the changes are generic and OS- independent).  The
15058effects of these global changes have been somewhat far  reaching.
15059Files have been merged and/or renamed and interfaces have been
15060renamed.   The major changes are described below.
15061
15062Osd* interfaces renamed to AcpiOs* to eliminate namespace
15063pollution/confusion  within our target kernels.  All OSD
15064interfaces must be modified to match the new  naming convention.
15065
15066Files merged across the subsystem.  A number of the smaller source
15067and header  files have been merged to reduce the file count and
15068increase the density of the  existing files.  There are too many
15069to list here.  In general, makefiles that  call out individual
15070files will require rebuilding.
15071
15072Interpreter files renamed.  All interpreter files now have the
15073prefix am*  instead of ie* and is*.
15074
15075Header files renamed:  The acapi.h file is now acpixf.h.  The
15076acpiosd.h file is  now acpiosxf.h.  We are removing references to
15077the acronym "API" since it is  somewhat windowsy. The new name is
15078"external interface" or xface or xf in the  filenames.j
15079
15080
15081All manifest constants have been forced to upper case (some were
15082mixed case.)   Also, the string "ACPI_" has been prepended to many
15083(not all) of the constants,  typedefs, and structs.
15084
15085The globals "DebugLevel" and "DebugLayer" have been renamed
15086"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15087
15088All other globals within the subsystem are now prefixed with
15089"AcpiGbl_" Internal procedures within the subsystem are now
15090prefixed with "Acpi" (with only  a few exceptions).  The original
15091two-letter abbreviation for the subcomponent  remains after "Acpi"
15092- for example, CmCallocate became AcpiCmCallocate.
15093
15094Added a source code translation/conversion utility.  Used to
15095generate the Linux  source code, it can be modified to generate
15096other types of source as well. Can  also be used to cleanup
15097existing source by removing extraneous spaces and blank  lines.
15098Found in tools/acpisrc/*
15099
15100OsdUnMapMemory was renamed to OsdUnmapMemory and then
15101AcpiOsUnmapMemory.  (UnMap  became Unmap).
15102
15103A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15104When set to  one, this indicates that the caller wants to use the
15105
15106semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15107both types.  However, implementers of this  call may want to use
15108different OS primitives depending on the type of semaphore
15109requested.  For example, some operating systems provide separate
15110
15111"mutex" and  "semaphore" interfaces - where the mutex interface is
15112much faster because it  doesn't have all the overhead of a full
15113semaphore implementation.
15114
15115Fixed a deadlock problem where a method that accesses the PCI
15116address space can  block forever if it is the first access to the
15117space.
15118
15119-------------------------------------------
15120Summary of changes for this label: 06_02_00
15121
15122Support for environments that cannot handle unaligned data
15123accesses (e.g.  firmware and OS environments devoid of alignment
15124handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15125been added (via configurable macros) in  these three areas: -
15126Transfer of data from the raw AML byte stream is done via byte
15127moves instead of    word/dword/qword moves. - External objects are
15128aligned within the user buffer, including package   elements (sub-
15129objects). - Conversion of name strings to UINT32 Acpi Names is now
15130done byte-wise.
15131
15132The Store operator was modified to mimic Microsoft's
15133implementation when storing  to a Buffer Field.
15134
15135Added a check of the BM_STS bit before entering C3.
15136
15137The methods subdirectory has been obsoleted and removed.  A new
15138file, cmeval.c  subsumes the functionality.
15139
15140A 16-bit (DOS) version of AcpiExec has been developed.  The
15141makefile is under  the acpiexec directory.
15142