xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 3e11bd9e2a2b1cbd4283c87c93e3cc75e3f2dacb)
1----------------------------------------
226 September 2014. Summary of changes for version 20140926:
3
41) ACPICA kernel-resident subsystem:
5
6Updated the GPIO operation region handler interface (GeneralPurposeIo).
7In order to support GPIO Connection objects with multiple pins, along
8with the related Field objects, the following changes to the interface
9have been made: The Address is now defined to be the offset in bits of
10the field unit from the previous invocation of a Connection. It can be
11viewed as a "Pin Number Index" into the connection resource descriptor.
12The BitWidth is the exact bit width of the field. It is usually one bit,
13but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
14additional information and examples.
15
16GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
17corresponding _Lxx/_Exx methods are disabled (they may have been enabled
18by the firmware), so that they cannot fire until they are enabled via
19AcpiUpdateAllGpes. Rafael J. Wysocki.
20
21Added a new return flag for the Event/GPE status interfaces --
22AcpiGetEventStatus and AcpiGetGpeStatus. The new
23ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
24GPE currently has a handler associated with it, and can thus actually
25affect the system. Lv Zheng.
26
27Example Code and Data Size: These are the sizes for the OS-independent
28acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
29debug version of the code includes the debug output trace mechanism and
30has a much larger code and data size.
31
32  Current Release:
33    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
34    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
35  Previous Release:
36    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
37    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
38
392) iASL Compiler/Disassembler and Tools:
40
41iASL: Fixed a memory allocation/free regression introduced in 20140828
42that could cause the compiler to crash. This was introduced inadvertently
43during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
441113.
45
46iASL: Removed two error messages that have been found to create false
47positives, until they can be fixed and fully validated (ACPICA BZ 1112):
481) Illegal forward reference within a method
492) Illegal reference across two methods
50
51iASL: Implemented a new option (-lm) to create a hardware mapping file
52that summarizes all GPIO, I2C, SPI, and UART connections. This option
53works for both the compiler and disassembler. See the iASL compiler user
54guide for additional information and examples (section 6.4.6).
55
56AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
57version 2. This corrects the AE_BAD_HEADER exception seen on systems with
58a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
59
60AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
61unless STDIN is actually a terminal. Assists with batch-mode processing.
62ACPICA BZ 1114.
63
64Disassembler/AcpiHelp: Added another large group of recognized _HID
65values.
66
67
68----------------------------------------
6928 August 2014. Summary of changes for version 20140828:
70
711) ACPICA kernel-resident subsystem:
72
73Fixed a problem related to the internal use of the Timer() operator where
74a 64-bit divide could cause an attempted link to a double-precision math
75library. This divide is not actually necessary, so the code was
76restructured to eliminate it. Lv Zheng.
77
78ACPI 5.1: Added support for the runtime validation of the _DSD package
79(similar to the iASL support).
80
81ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
82SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
83
84Example Code and Data Size: These are the sizes for the OS-independent
85acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
86debug version of the code includes the debug output trace mechanism and
87has a much larger code and data size.
88
89  Current Release:
90    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
91    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
92  Previous Release:
93    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
94    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
95
962) iASL Compiler/Disassembler and Tools:
97
98AcpiExec: Fixed a problem on unix systems where the original terminal
99state was not always properly restored upon exit. Seen when using the -v
100option. ACPICA BZ 1104.
101
102iASL: Fixed a problem with the validation of the ranges/length within the
103Memory24 resource descriptor. There was a boundary condition when the
104range was equal to the (length -1) caused by the fact that these values
105are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
106
107Disassembler: Fixed a problem with the GpioInt descriptor interrupt
108polarity
109flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
110is
111now supported properly.
112
113ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
114in the disassembler, data table compiler, and table template generator.
115
116iASL: Added a requirement for Device() objects that one of either a _HID
117or _ADR must exist within the scope of a Device, as per the ACPI
118specification. Remove a similar requirement that was incorrectly in place
119for the _DSD object.
120
121iASL: Added error detection for illegal named references within control
122methods that would cause runtime failures. Now trapped as errors are: 1)
123References to objects within a non-parent control method. 2) Forward
124references (within a method) -- for control methods, AML interpreters use
125a one-pass parse of control methods. ACPICA BZ 1008.
126
127iASL: Added error checking for dependencies related to the _PSx power
128methods. ACPICA BZ 1029.
1291) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
130_PS3.
1312) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
132scope.
133
134iASL and table compiler: Cleanup miscellaneous memory leaks by fully
135deploying the existing object and string caches and adding new caches for
136the table compiler.
137
138iASL: Split the huge parser source file into multiple subfiles to improve
139manageability. Generation now requires the M4 macro preprocessor, which
140is part of the Bison distribution on both unix and windows platforms.
141
142AcpiSrc: Fixed and removed all extraneous warnings generated during
143entire ACPICA source code scan and/or conversion.
144
145
146----------------------------------------
147
14824 July 2014. Summary of changes for version 20140724:
149
150The ACPI 5.1 specification has been released and is available at:
151http://uefi.org/specs/access
152
153
1540) ACPI 5.1 support in ACPICA:
155
156ACPI 5.1 is fully supported in ACPICA as of this release.
157
158New predefined names. Support includes iASL and runtime ACPICA
159validation.
160    _CCA (Cache Coherency Attribute).
161    _DSD (Device-Specific Data). David Box.
162
163Modifications to existing ACPI tables. Support includes headers, iASL
164Data Table compiler, disassembler, and the template generator.
165    FADT - New fields and flags. Graeme Gregory.
166    GTDT - One new subtable and new fields. Tomasz Nowicki.
167    MADT - Two new subtables. Tomasz Nowicki.
168    PCCT - One new subtable.
169
170Miscellaneous.
171    New notification type for System Resource Affinity change events.
172
173
1741) ACPICA kernel-resident subsystem:
175
176Fixed a regression introduced in 20140627 where a fault can happen during
177the deletion of Alias AML namespace objects. The problem affected both
178the core ACPICA and the ACPICA tools including iASL and AcpiExec.
179
180Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
181simple mechanism to enable wake GPEs that have no associated handler or
182control method. Rafael Wysocki.
183
184Updated the AcpiEnableGpe interface to disallow the enable if there is no
185handler or control method associated with the particular GPE. This will
186help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
187
188Updated GPE handling and dispatch by disabling the GPE before clearing
189the status bit for edge-triggered GPEs. Lv Zheng.
190
191Added Timer() support to the AML Debug object. The current timer value is
192now displayed with each invocation of (Store to) the debug object to
193enable simple generation of execution times for AML code (method
194execution for example.) ACPICA BZ 1093.
195
196Example Code and Data Size: These are the sizes for the OS-independent
197acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
198debug version of the code includes the debug output trace mechanism and
199has a much larger code and data size.
200
201  Current Release:
202    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
203    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
204  Previous Release:
205    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
206    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
207
208
2092) iASL Compiler/Disassembler and Tools:
210
211Fixed an issue with the recently added local printf implementation,
212concerning width/precision specifiers that could cause incorrect output.
213Lv Zheng. ACPICA BZ 1094.
214
215Disassembler: Added support to detect buffers that contain UUIDs and
216disassemble them to an invocation of the ToUUID operator. Also emit
217commented descriptions of known ACPI-related UUIDs.
218
219AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
220-u. Adds three new files.
221
222iASL: Update table compiler and disassembler for DMAR table changes that
223were introduced in September 2013. With assistance by David Woodhouse.
224
225----------------------------------------
22627 June 2014. Summary of changes for version 20140627:
227
2281) ACPICA kernel-resident subsystem:
229
230Formatted Output: Implemented local versions of standard formatted output
231utilities such as printf, etc. Over time, it has been discovered that
232there are in fact many portability issues with printf, and the addition
233of this feature will fix/prevent these issues once and for all. Some
234known issues are summarized below:
235
2361) Output of 64-bit values is not portable. For example, UINT64 is %ull
237for the Linux kernel and is %uI64 for some MSVC versions.
2382) Invoking printf consistently in a manner that is portable across both
23932-bit and 64-bit platforms is difficult at best in many situations.
2403) The output format for pointers varies from system to system (leading
241zeros especially), and leads to inconsistent output from ACPICA across
242platforms.
2434) Certain platform-specific printf formats may conflict with ACPICA use.
2445) If there is no local C library available, ACPICA now has local support
245for printf.
246
247-- To address these printf issues in a complete manner, ACPICA now
248directly implements a small subset of printf format specifiers, only
249those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
250
251Implemented support for ACPICA generation within the EFI environment.
252Initially, the AcpiDump utility is supported in the UEFI shell
253environment. Lv Zheng.
254
255Added a new external interface, AcpiLogError, to improve ACPICA
256portability. This allows the host to redirect error messages from the
257ACPICA utilities. Lv Zheng.
258
259Added and deployed new OSL file I/O interfaces to improve ACPICA
260portability:
261  AcpiOsOpenFile
262  AcpiOsCloseFile
263  AcpiOsReadFile
264  AcpiOsWriteFile
265  AcpiOsGetFileOffset
266  AcpiOsSetFileOffset
267There are C library implementations of these functions in the new file
268service_layers/oslibcfs.c -- however, the functions can be implemented by
269the local host in any way necessary. Lv Zheng.
270
271Implemented a mechanism to disable/enable ACPI table checksum validation
272at runtime. This can be useful when loading tables very early during OS
273initialization when it may not be possible to map the entire table in
274order to compute the checksum. Lv Zheng.
275
276Fixed a buffer allocation issue for the Generic Serial Bus support.
277Originally, a fixed buffer length was used. This change allows for
278variable-length buffers based upon the protocol indicated by the field
279access attributes. Reported by Lan Tianyu. Lv Zheng.
280
281Fixed a problem where an object detached from a namespace node was not
282properly terminated/cleared and could cause a circular list problem if
283reattached. ACPICA BZ 1063. David Box.
284
285Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
286
287Fixed a possible memory leak in an error return path within the function
288AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
289
290Example Code and Data Size: These are the sizes for the OS-independent
291acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
292debug version of the code includes the debug output trace mechanism and
293has a much larger code and data size.
294
295  Current Release:
296    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
297    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
298  Previous Release:
299    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
300    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
301
302
3032) iASL Compiler/Disassembler and Tools:
304
305Disassembler: Add dump of ASCII equivalent text within a comment at the
306end of each line of the output for the Buffer() ASL operator.
307
308AcpiDump: Miscellaneous changes:
309  Fixed repetitive table dump in -n mode.
310  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
311the ACPI 2.0 GUID fails.
312
313iASL: Fixed a problem where the compiler could fault if incorrectly given
314an acpidump output file as input. ACPICA BZ 1088. David Box.
315
316AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
317they are invoked without any arguments.
318
319Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
3201086. Colin Ian King.
321
322Disassembler: Cleaned up a block of code that extracts a parent Op
323object. Added a comment that explains that the parent is guaranteed to be
324valid in this case. ACPICA BZ 1069.
325
326----------------------------------------
32724 April 2014. Summary of changes for version 20140424:
328
3291) ACPICA kernel-resident subsystem:
330
331Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
332Some of these tables are known to contain a trailing NULL entry. Lv
333Zheng.
334
335Removed an extraneous error message for the case where there are a large
336number of system GPEs (> 124). This was the "32-bit FADT register is too
337long to convert to GAS struct" message, which is irrelevant for GPEs
338since the GPEx_BLK_LEN fields of the FADT are always used instead of the
339(limited capacity) GAS bit length. Also, several changes to ensure proper
340support for GPE numbers > 255, where some "GPE number" fields were 8-bits
341internally.
342
343Implemented and deployed additional configuration support for the public
344ACPICA external interfaces. Entire classes of interfaces can now be
345easily modified or configured out, replaced by stubbed inline functions
346by default. Lv Zheng.
347
348Moved all public ACPICA runtime configuration globals to the public
349ACPICA external interface file for convenience. Also, removed some
350obsolete/unused globals. See the file acpixf.h. Lv Zheng.
351
352Documentation: Added a new section to the ACPICA reference describing the
353maximum number of GPEs that can be supported by the FADT-defined GPEs in
354block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
355reference.
356
357Example Code and Data Size: These are the sizes for the OS-independent
358acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
359debug version of the code includes the debug output trace mechanism and
360has a much larger code and data size.
361
362  Current Release:
363    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
364    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
365  Previous Release:
366    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
367    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
368
369
3702) iASL Compiler/Disassembler and Tools:
371
372iASL and disassembler: Add full support for the LPIT table (Low Power
373Idle Table). Includes support in the disassembler, data table compiler,
374and template generator.
375
376AcpiDump utility:
3771) Add option to force the use of the RSDT (over the XSDT).
3782) Improve validation of the RSDP signature (use 8 chars instead of 4).
379
380iASL: Add check for predefined packages that are too large.  For
381predefined names that contain subpackages, check if each subpackage is
382too large. (Check for too small already exists.)
383
384Debugger: Updated the GPE command (which simulates a GPE by executing the
385GPE code paths in ACPICA). The GPE device is now optional, and defaults
386to the GPE 0/1 FADT-defined blocks.
387
388Unix application OSL: Update line-editing support. Add additional error
389checking and take care not to reset terminal attributes on exit if they
390were never set. This should help guarantee that the terminal is always
391left in the previous state on program exit.
392
393----------------------------------------
39425 March 2014. Summary of changes for version 20140325:
395
3961) ACPICA kernel-resident subsystem:
397
398Updated the auto-serialize feature for control methods. This feature
399automatically serializes all methods that create named objects in order
400to prevent runtime errors. The update adds support to ignore the
401currently executing AML SyncLevel when invoking such a method, in order
402to prevent disruption of any existing SyncLevel priorities that may exist
403in the AML code. Although the use of SyncLevels is relatively rare, this
404change fixes a regression where an AE_AML_MUTEX_ORDER exception can
405appear on some machines starting with the 20140214 release.
406
407Added a new external interface to allow the host to install ACPI tables
408very early, before the namespace is even created. AcpiInstallTable gives
409the host additional flexibility for ACPI table management. Tables can be
410installed directly by the host as if they had originally appeared in the
411XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
412(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
413with additional internal restructuring and cleanup. See the ACPICA
414Reference for interface details. Lv Zheng.
415
416Added validation of the checksum for all incoming dynamically loaded
417tables (via external interfaces or via AML Load/LoadTable operators). Lv
418Zheng.
419
420Updated the use of the AcpiOsWaitEventsComplete interface during Notify
421and GPE handler removal. Restructured calls to eliminate possible race
422conditions. Lv Zheng.
423
424Added a warning for the use/execution of the ASL/AML Unload (table)
425operator. This will help detect and identify machines that use this
426operator if and when it is ever used. This operator has never been seen
427in the field and the usage model and possible side-effects of the drastic
428runtime action of a full table removal are unknown.
429
430Reverted the use of #pragma push/pop which was introduced in the 20140214
431release. It appears that push and pop are not implemented by enough
432compilers to make the use of this feature feasible for ACPICA at this
433time. However, these operators may be deployed in a future ACPICA
434release.
435
436Added the missing EXPORT_SYMBOL macros for the install and remove SCI
437handler interfaces.
438
439Source code generation:
4401) Disabled the use of the "strchr" macro for the gcc-specific
441generation. For some versions of gcc, this macro can periodically expose
442a compiler bug which in turn causes compile-time error(s).
4432) Added support for PPC64 compilation. Colin Ian King.
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:  97.0K Code, 27.2K Data, 124.2K Total
452    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
453  Previous Release:
454    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
455    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
456
457
4582) iASL Compiler/Disassembler and Tools:
459
460Disassembler: Added several new features to improve the readability of
461the resulting ASL code. Extra information is emitted within comment
462fields in the ASL code:
4631) Known _HID/_CID values are decoded to descriptive text.
4642) Standard values for the Notify() operator are decoded to descriptive
465text.
4663) Target operands are expanded to full pathnames (in a comment) when
467possible.
468
469Disassembler: Miscellaneous updates for extern() handling:
4701) Abort compiler if file specified by -fe option does not exist.
4712) Silence unnecessary warnings about argument count mismatches.
4723) Update warning messages concerning unresolved method externals.
4734) Emit "UnknownObj" keyword for externals whose type cannot be
474determined.
475
476AcpiHelp utility:
4771) Added the -a option to display both the ASL syntax and the AML
478encoding for an input ASL operator. This effectively displays all known
479information about an ASL operator with one AcpiHelp invocation.
4802) Added substring match support (similar to a wildcard) for the -i
481(_HID/PNP IDs) option.
482
483iASL/Disassembler: Since this tool does not yet support execution on big-
484endian machines, added detection of endianness and an error message if
485execution is attempted on big-endian. Support for big-endian within iASL
486is a feature that is on the ACPICA to-be-done list.
487
488AcpiBin utility:
4891) Remove option to extract binary files from an acpidump; this function
490is made obsolete by the AcpiXtract utility.
4912) General cleanup of open files and allocated buffers.
492
493----------------------------------------
49414 February 2014. Summary of changes for version 20140214:
495
4961) ACPICA kernel-resident subsystem:
497
498Implemented a new mechanism to proactively prevent problems with ill-
499behaved reentrant control methods that create named ACPI objects. This
500behavior is illegal as per the ACPI specification, but is nonetheless
501frequently seen in the field. Previously, this could lead to an
502AE_ALREADY_EXISTS exception if the method was actually entered by more
503than one thread. This new mechanism detects such methods at table load
504time and marks them "serialized" to prevent reentrancy. A new global
505option, AcpiGbl_AutoSerializeMethods, has been added to disable this
506feature if desired. This mechanism and global option obsoletes and
507supersedes the previous AcpiGbl_SerializeAllMethods option.
508
509Added the "Windows 2013" string to the _OSI support. ACPICA will now
510respond TRUE to _OSI queries with this string. It is the stated policy of
511ACPICA to add new strings to the _OSI support as soon as possible after
512they are defined. See the full ACPICA _OSI policy which has been added to
513the utilities/utosi.c file.
514
515Hardened/updated the _PRT return value auto-repair code:
5161) Do not abort the repair on a single subpackage failure, continue to
517check all subpackages.
5182) Add check for the minimum subpackage length (4).
5193) Properly handle extraneous NULL package elements.
520
521Added support to avoid the possibility of infinite loops when traversing
522object linked lists. Never allow an infinite loop, even in the face of
523corrupted object lists.
524
525ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
526pack(pop) directives to ensure that the ACPICA headers are independent of
527compiler settings or other host headers.
528
529Example Code and Data Size: These are the sizes for the OS-independent
530acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
531debug version of the code includes the debug output trace mechanism and
532has a much larger code and data size.
533
534  Current Release:
535    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
536    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
537  Previous Release:
538    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
539    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
540
541
5422) iASL Compiler/Disassembler and Tools:
543
544iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
545first reserved field was incorrectly forced to have a value of zero. This
546change correctly forces the field to have a value of one. ACPICA BZ 1081.
547
548Debugger: Added missing support for the "Extra" and "Data" subobjects
549when displaying object data.
550
551Debugger: Added support to display entire object linked lists when
552displaying object data.
553
554iASL: Removed the obsolete -g option to obtain ACPI tables from the
555Windows registry. This feature has been superseded by the acpidump
556utility.
557
558----------------------------------------
55914 January 2014. Summary of changes for version 20140114:
560
5611) ACPICA kernel-resident subsystem:
562
563Updated all ACPICA copyrights and signons to 2014. Added the 2014
564copyright to all module headers and signons, including the standard Linux
565header. This affects virtually every file in the ACPICA core subsystem,
566iASL compiler, all ACPICA utilities, and the test suites.
567
568Improved parameter validation for AcpiInstallGpeBlock. Added the
569following checks:
5701) The incoming device handle refers to type ACPI_TYPE_DEVICE.
5712) There is not already a GPE block attached to the device.
572Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
573device.
574
575Correctly support "references" in the ACPI_OBJECT. This change fixes the
576support to allow references (namespace nodes) to be passed as arguments
577to control methods via the evaluate object interface. This is probably
578most useful for testing purposes, however.
579
580Improved support for 32/64 bit physical addresses in printf()-like
581output. This change improves the support for physical addresses in printf
582debug statements and other output on both 32-bit and 64-bit hosts. It
583consistently outputs the appropriate number of bytes for each host. The
584%p specifier is unsatisfactory since it does not emit uniform output on
585all hosts/clib implementations (on some, leading zeros are not supported,
586leading to difficult-to-read output).
587
588Example Code and Data Size: These are the sizes for the OS-independent
589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
590debug version of the code includes the debug output trace mechanism and
591has a much larger code and data size.
592
593  Current Release:
594    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
595    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
596  Previous Release:
597    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
598    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
599
600
6012) iASL Compiler/Disassembler and Tools:
602
603iASL: Fix a possible fault when using the Connection() operator. Fixes a
604problem if the parent Field definition for the Connection operator refers
605to an operation region that does not exist. ACPICA BZ 1064.
606
607AcpiExec: Load of local test tables is now optional. The utility has the
608capability to load some various tables to test features of ACPICA.
609However, there are enough of them that the output of the utility became
610confusing. With this change, only the required local tables are displayed
611(RSDP, XSDT, etc.) along with the actual tables loaded via the command
612line specification. This makes the default output simler and easier to
613understand. The -el command line option restores the original behavior
614for testing purposes.
615
616AcpiExec: Added support for overlapping operation regions. This change
617expands the simulation of operation regions by supporting regions that
618overlap within the given address space. Supports SystemMemory and
619SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
620
621AcpiExec: Added region handler support for PCI_Config and EC spaces. This
622allows AcpiExec to simulate these address spaces, similar to the current
623support for SystemMemory and SystemIO.
624
625Debugger: Added new command to read/write/compare all namespace objects.
626The command "test objects" will exercise the entire namespace by writing
627new values to each data object, and ensuring that the write was
628successful. The original value is then restored and verified.
629
630Debugger: Added the "test predefined" command. This change makes this
631test public and puts it under the new "test" command. The test executes
632each and every predefined name within the current namespace.
633
634----------------------------------------
63518 December 2013. Summary of changes for version 20131218:
636
637Global note: The ACPI 5.0A specification was released this month. There
638are no changes needed for ACPICA since this release of ACPI is an
639errata/clarification release. The specification is available at
640acpi.info.
641
642
6431) ACPICA kernel-resident subsystem:
644
645Added validation of the XSDT root table if it is present. Some older
646platforms contain an XSDT that is ill-formed or otherwise invalid (such
647as containing some or all entries that are NULL pointers). This change
648adds a new function to validate the XSDT before actually using it. If the
649XSDT is found to be invalid, ACPICA will now automatically fall back to
650using the RSDT instead. Original implementation by Zhao Yakui. Ported to
651ACPICA and enhanced by Lv Zheng and Bob Moore.
652
653Added a runtime option to ignore the XSDT and force the use of the RSDT.
654This change adds a runtime option that will force ACPICA to use the RSDT
655instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
656requires that an XSDT be used instead of the RSDT, the XSDT has been
657found to be corrupt or ill-formed on some machines. Lv Zheng.
658
659Added a runtime option to favor 32-bit FADT register addresses over the
66064-bit addresses. This change adds an option to favor 32-bit FADT
661addresses when there is a conflict between the 32-bit and 64-bit versions
662of the same register. The default behavior is to use the 64-bit version
663in accordance with the ACPI specification. This can now be overridden via
664the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
665
666During the change above, the internal "Convert FADT" and "Verify FADT"
667functions have been merged to simplify the code, making it easier to
668understand and maintain. ACPICA BZ 933.
669
670Improve exception reporting and handling for GPE block installation.
671Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
672status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
673
674Added helper macros to extract bus/segment numbers from the HEST table.
675This change adds two macros to extract the encoded bus and segment
676numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
677Betty Dall <betty.dall@hp.com>
678
679Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
680by ACPICA. It is not a public macro, so it should have no effect on
681existing OSV code. Lv Zheng.
682
683Example Code and Data Size: These are the sizes for the OS-independent
684acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
685debug version of the code includes the debug output trace mechanism and
686has a much larger code and data size.
687
688  Current Release:
689    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
690    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
691  Previous Release:
692    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
693    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
694
695
6962) iASL Compiler/Disassembler and Tools:
697
698Disassembler: Improved pathname support for emitted External()
699statements. This change adds full pathname support for external names
700that have been resolved internally by the inclusion of additional ACPI
701tables (via the iASL -e option). Without this change, the disassembler
702can emit multiple externals for the same object, or it become confused
703when the Scope() operator is used on an external object. Overall, greatly
704improves the ability to actually recompile the emitted ASL code when
705objects a referenced across multiple ACPI tables. Reported by Michael
706Tsirkin (mst@redhat.com).
707
708Tests/ASLTS: Updated functional control suite to execute with no errors.
709David Box. Fixed several errors related to the testing of the interpreter
710slack mode. Lv Zheng.
711
712iASL: Added support to detect names that are declared within a control
713method, but are unused (these are temporary names that are only valid
714during the time the method is executing). A remark is issued for these
715cases. ACPICA BZ 1022.
716
717iASL: Added full support for the DBG2 table. Adds full disassembler,
718table compiler, and template generator support for the DBG2 table (Debug
719Port 2 table).
720
721iASL: Added full support for the PCCT table, update the table definition.
722Updates the PCCT table definition in the actbl3.h header and adds table
723compiler and template generator support.
724
725iASL: Added an option to emit only error messages (no warnings/remarks).
726The -ve option will enable only error messages, warnings and remarks are
727suppressed. This can simplify debugging when only the errors are
728important, such as when an ACPI table is disassembled and there are many
729warnings and remarks -- but only the actual errors are of real interest.
730
731Example ACPICA code (source/tools/examples): Updated the example code so
732that it builds to an actual working program, not just example code. Added
733ACPI tables and execution of an example control method in the DSDT. Added
734makefile support for Unix generation.
735
736----------------------------------------
73715 November 2013. Summary of changes for version 20131115:
738
739This release is available at https://acpica.org/downloads
740
741
7421) ACPICA kernel-resident subsystem:
743
744Resource Manager: Fixed loop termination for the "get AML length"
745function. The loop previously had an error termination on a NULL resource
746pointer, which can never happen since the loop simply increments a valid
747resource pointer. This fix changes the loop to terminate with an error on
748an invalid end-of-buffer condition. The problem can be seen as an
749infinite loop by callers to AcpiSetCurrentResources with an invalid or
750corrupted resource descriptor, or a resource descriptor that is missing
751an END_TAG descriptor. Reported by Dan Carpenter
752<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
753
754Table unload and ACPICA termination: Delete all attached data objects
755during namespace node deletion. This fix updates namespace node deletion
756to delete the entire list of attached objects (attached via
757AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
7581024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
759
760ACPICA termination: Added support to delete all objects attached to the
761root namespace node. This fix deletes any and all objects that have been
762attached to the root node via AcpiAttachData. Previously, none of these
763objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
764
765Debug output: Do not emit the function nesting level for the in-kernel
766build. The nesting level is really only useful during a single-thread
767execution. Therefore, only enable this output for the AcpiExec utility.
768Also, only emit the thread ID when executing under AcpiExec (Context
769switches are still always detected and a message is emitted). ACPICA BZ
770972.
771
772Example Code and Data Size: These are the sizes for the OS-independent
773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
774debug version of the code includes the debug output trace mechanism and
775has a much larger code and data size.
776
777  Current Release:
778    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
779    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
780  Previous Release:
781    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
782    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
783
784
7852) iASL Compiler/Disassembler and Tools:
786
787AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
788correct portable POSIX header for terminal control functions.
789
790Disassembler: Fixed control method invocation issues related to the use
791of the CondRefOf() operator. The problem is seen in the disassembly where
792control method invocations may not be disassembled properly if the
793control method name has been used previously as an argument to CondRefOf.
794The solution is to not attempt to emit an external declaration for the
795CondRefOf target (it is not necessary in the first place). This prevents
796disassembler object type confusion. ACPICA BZ 988.
797
798Unix Makefiles: Added an option to disable compiler optimizations and the
799_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
800with optimizations (reportedly, gcc 4.4 for example). This change adds a
801command line option for make (NOOPT) that disables all compiler
802optimizations and the _FORTIFY_SOURCE compiler flag. The default
803optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
8041034. Lv Zheng, Bob Moore.
805
806Tests/ASLTS: Added options to specify individual test cases and modes.
807This allows testers running aslts.sh to optionally specify individual
808test modes and test cases. Also added an option to disable the forced
809generation of the ACPICA tools from source if desired. Lv Zheng.
810
811----------------------------------------
81227 September 2013. Summary of changes for version 20130927:
813
814This release is available at https://acpica.org/downloads
815
816
8171) ACPICA kernel-resident subsystem:
818
819Fixed a problem with store operations to reference objects. This change
820fixes a problem where a Store operation to an ArgX object that contained
821a
822reference to a field object did not complete the automatic dereference
823and
824then write to the actual field object. Instead, the object type of the
825field object was inadvertently changed to match the type of the source
826operand. The new behavior will actually write to the field object (buffer
827field or field unit), thus matching the correct ACPI-defined behavior.
828
829Implemented support to allow the host to redefine individual OSL
830prototypes. This change enables the host to redefine OSL prototypes found
831in the acpiosxf.h file. This allows the host to implement OSL interfaces
832with a macro or inlined function. Further, it allows the host to add any
833additional required modifiers such as __iomem, __init, __exit, etc., as
834necessary on a per-interface basis. Enables maximum flexibility for the
835OSL interfaces. Lv Zheng.
836
837Hardcoded the access width for the FADT-defined reset register. The ACPI
838specification requires the reset register width to be 8 bits. ACPICA now
839hardcodes the width to 8 and ignores the FADT width value. This provides
840compatibility with other ACPI implementations that have allowed BIOS code
841with bad register width values to go unnoticed. Matthew Garett, Bob
842Moore,
843Lv Zheng.
844
845Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
846used
847in the OSL header (acpiosxf). The change modifies the position of this
848macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
849build issues if the OSL defines the implementation of the interface to be
850an inline stub function. Lv Zheng.
851
852Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
853initialization interfaces. This change adds a new macro for the main init
854and terminate external interfaces in order to support hosts that require
855additional or different processing for these functions. Changed from
856ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
857Zheng, Bob Moore.
858
859Cleaned up the memory allocation macros for configurability. In the
860common
861case, the ACPI_ALLOCATE and related macros now resolve directly to their
862respective AcpiOs* OSL interfaces. Two options:
8631) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
864default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
8652) For AcpiExec (and for debugging), the macros can optionally be
866resolved
867to the local ACPICA interfaces that track each allocation (local tracking
868is used to immediately detect memory leaks).
869Lv Zheng.
870
871Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
872to predefine this macro to either TRUE or FALSE during the system build.
873
874Replaced __FUNCTION_ with __func__ in the gcc-specific header.
875
876Example Code and Data Size: These are the sizes for the OS-independent
877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
878debug version of the code includes the debug output trace mechanism and
879has a much larger code and data size.
880
881  Current Release:
882    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
883    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
884  Previous Release:
885    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
886    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
887
888
8892) iASL Compiler/Disassembler and Tools:
890
891iASL: Implemented wildcard support for the -e option. This simplifies use
892when there are many SSDTs that must be included to resolve external
893method
894declarations. ACPICA BZ 1041. Example:
895    iasl -e ssdt*.dat -d dsdt.dat
896
897AcpiExec: Add history/line-editing for Unix/Linux systems. This change
898adds a portable module that implements full history and limited line
899editing for Unix and Linux systems. It does not use readline() due to
900portability issues. Instead it uses the POSIX termio interface to put the
901terminal in raw input mode so that the various special keys can be
902trapped
903(such as up/down-arrow for history support and left/right-arrow for line
904editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
905
906AcpiXtract: Add support to handle (ignore) "empty" lines containing only
907one or more spaces. This provides compatible with early or different
908versions of the AcpiDump utility. ACPICA BZ 1044.
909
910AcpiDump: Do not ignore tables that contain only an ACPI table header.
911Apparently, some BIOSs create SSDTs that contain an ACPI table header but
912no other data. This change adds support to dump these tables. Any tables
913shorter than the length of an ACPI table header remain in error (an error
914message is emitted). Reported by Yi Li.
915
916Debugger: Echo actual command along with the "unknown command" message.
917
918----------------------------------------
91923 August 2013. Summary of changes for version 20130823:
920
9211) ACPICA kernel-resident subsystem:
922
923Implemented support for host-installed System Control Interrupt (SCI)
924handlers. Certain ACPI functionality requires the host to handle raw
925SCIs. For example, the "SCI Doorbell" that is defined for memory power
926state support requires the host device driver to handle SCIs to examine
927if the doorbell has been activated. Multiple SCI handlers can be
928installed to allow for future expansion. New external interfaces are
929AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
930details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
931
932Operation region support: Never locally free the handler "context"
933pointer. This change removes some dangerous code that attempts to free
934the handler context pointer in some (rare) circumstances. The owner of
935the handler owns this pointer and the ACPICA code should never touch it.
936Although not seen to be an issue in any kernel, it did show up as a
937problem (fault) under AcpiExec. Also, set the internal storage field for
938the context pointer to zero when the region is deactivated, simply for
939sanity. David Box. ACPICA BZ 1039.
940
941AcpiRead: On error, do not modify the return value target location. If an
942error happens in the middle of a split 32/32 64-bit I/O operation, do not
943modify the target of the return value pointer. Makes the code consistent
944with the rest of ACPICA. Bjorn Helgaas.
945
946Example Code and Data Size: These are the sizes for the OS-independent
947acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
948debug version of the code includes the debug output trace mechanism and
949has a much larger code and data size.
950
951  Current Release:
952    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
953    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
954  Previous Release:
955    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
956    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
957
958
9592) iASL Compiler/Disassembler and Tools:
960
961AcpiDump: Implemented several new features and fixed some problems:
9621) Added support to dump the RSDP, RSDT, and XSDT tables.
9632) Added support for multiple table instances (SSDT, UEFI).
9643) Added option to dump "customized" (overridden) tables (-c).
9654) Fixed a problem where some table filenames were improperly
966constructed.
9675) Improved some error messages, removed some unnecessary messages.
968
969iASL: Implemented additional support for disassembly of ACPI tables that
970contain invocations of external control methods. The -fe<file> option
971allows the import of a file that specifies the external methods along
972with the required number of arguments for each -- allowing for the
973correct disassembly of the table. This is a workaround for a limitation
974of AML code where the disassembler often cannot determine the number of
975arguments required for an external control method and generates incorrect
976ASL code. See the iASL reference for details. ACPICA BZ 1030.
977
978Debugger: Implemented a new command (paths) that displays the full
979pathnames (namepaths) and object types of all objects in the namespace.
980This is an alternative to the namespace command.
981
982Debugger: Implemented a new command (sci) that invokes the SCI dispatch
983mechanism and any installed handlers.
984
985iASL: Fixed a possible segfault for "too many parent prefixes" condition.
986This can occur if there are too many parent prefixes in a namepath (for
987example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
988
989Application OSLs: Set the return value for the PCI read functions. These
990functions simply return AE_OK, but should set the return value to zero
991also. This change implements this. ACPICA BZ 1038.
992
993Debugger: Prevent possible command line buffer overflow. Increase the
994size of a couple of the debugger line buffers, and ensure that overflow
995cannot happen. ACPICA BZ 1037.
996
997iASL: Changed to abort immediately on serious errors during the parsing
998phase. Due to the nature of ASL, there is no point in attempting to
999compile these types of errors, and they typically end up causing a
1000cascade of hundreds of errors which obscure the original problem.
1001
1002----------------------------------------
100325 July 2013. Summary of changes for version 20130725:
1004
10051) ACPICA kernel-resident subsystem:
1006
1007Fixed a problem with the DerefOf operator where references to FieldUnits
1008and BufferFields incorrectly returned the parent object, not the actual
1009value of the object. After this change, a dereference of a FieldUnit
1010reference results in a read operation on the field to get the value, and
1011likewise, the appropriate BufferField value is extracted from the target
1012buffer.
1013
1014Fixed a problem where the _WAK method could cause a fault under these
1015circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
1016method returned no value. The problem is rarely seen because most kernels
1017run ACPICA in slack mode.
1018
1019For the DerefOf operator, a fatal error now results if an attempt is made
1020to dereference a reference (created by the Index operator) to a NULL
1021package element. Provides compatibility with other ACPI implementations,
1022and this behavior will be added to a future version of the ACPI
1023specification.
1024
1025The ACPI Power Management Timer (defined in the FADT) is now optional.
1026This provides compatibility with other ACPI implementations and will
1027appear in the next version of the ACPI specification. If there is no PM
1028Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
1029zero in the FADT indicates no PM timer.
1030
1031Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
1032allows the host to globally enable/disable all vendor strings, all
1033feature strings, or both. Intended to be primarily used for debugging
1034purposes only. Lv Zheng.
1035
1036Expose the collected _OSI data to the host via a global variable. This
1037data tracks the highest level vendor ID that has been invoked by the BIOS
1038so that the host (and potentially ACPICA itself) can change behaviors
1039based upon the age of the BIOS.
1040
1041Example Code and Data Size: These are the sizes for the OS-independent
1042acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1043debug version of the code includes the debug output trace mechanism and
1044has a much larger code and data size.
1045
1046  Current Release:
1047    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1048    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1049  Previous Release:
1050    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1051    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1052
1053
10542) iASL Compiler/Disassembler and Tools:
1055
1056iASL: Created the following enhancements for the -so option (create
1057offset table):
10581)Add offsets for the last nameseg in each namepath for every supported
1059object type
10602)Add support for Processor, Device, Thermal Zone, and Scope objects
10613)Add the actual AML opcode for the parent object of every supported
1062object type
10634)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1064
1065Disassembler: Emit all unresolved external symbols in a single block.
1066These are external references to control methods that could not be
1067resolved, and thus, the disassembler had to make a guess at the number of
1068arguments to parse.
1069
1070iASL: The argument to the -T option (create table template) is now
1071optional. If not specified, the default table is a DSDT, typically the
1072most common case.
1073
1074----------------------------------------
107526 June 2013. Summary of changes for version 20130626:
1076
10771) ACPICA kernel-resident subsystem:
1078
1079Fixed an issue with runtime repair of the _CST object. Null or invalid
1080elements were not always removed properly. Lv Zheng.
1081
1082Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
1083FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
1084the maximum number of GPEs is 1016. Use of multiple GPE block devices
1085makes the system-wide number of GPEs essentially unlimited.
1086
1087Example Code and Data Size: These are the sizes for the OS-independent
1088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1089debug version of the code includes the debug output trace mechanism and
1090has a much larger code and data size.
1091
1092  Current Release:
1093    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1094    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1095  Previous Release:
1096    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1097    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1098
1099
11002) iASL Compiler/Disassembler and Tools:
1101
1102Portable AcpiDump: Implemented full support for the Linux and FreeBSD
1103hosts. Now supports Linux, FreeBSD, and Windows.
1104
1105Disassembler: Added some missing types for the HEST and EINJ tables: "Set
1106Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1107
1108iASL/Preprocessor: Implemented full support for nested
1109#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1110
1111Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
1112max. The original purpose of this constraint was to limit the amount of
1113debug output. However, the string function in question (UtPrintString) is
1114now used for the disassembler also, where 256 bytes is insufficient.
1115Reported by RehabMan@GitHub.
1116
1117iASL/DataTables: Fixed some problems and issues with compilation of DMAR
1118tables. ACPICA BZ 999. Lv Zheng.
1119
1120iASL: Fixed a couple of error exit issues that could result in a "Could
1121not delete <file>" message during ASL compilation.
1122
1123AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
1124the actual signatures for these tables are "FACP" and "APIC",
1125respectively.
1126
1127AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
1128tables are allowed to have multiple instances.
1129
1130----------------------------------------
113117 May 2013. Summary of changes for version 20130517:
1132
11331) ACPICA kernel-resident subsystem:
1134
1135Fixed a regression introduced in version 20130328 for _INI methods. This
1136change fixes a problem introduced in 20130328 where _INI methods are no
1137longer executed properly because of a memory block that was not
1138initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
1139<tomasz.nowicki@linaro.org>.
1140
1141Fixed a possible problem with the new extended sleep registers in the
1142ACPI
11435.0 FADT. Do not use these registers (even if populated) unless the HW-
1144reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
11451020. Lv Zheng.
1146
1147Implemented return value repair code for _CST predefined objects: Sort
1148the
1149list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1150
1151Implemented a debug-only option to disable loading of SSDTs from the
1152RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1153ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1154acglobal.h - ACPICA BZ 1005. Lv Zheng.
1155
1156Fixed some issues in the ACPICA initialization and termination code:
1157Tomasz Nowicki <tomasz.nowicki@linaro.org>
11581) Clear events initialized flag upon event component termination. ACPICA
1159BZ 1013.
11602) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
11613) Delete global lock pending lock during termination. ACPICA BZ 1012.
11624) Clear debug buffer global on termination to prevent possible multiple
1163delete. ACPICA BZ 1010.
1164
1165Standardized all switch() blocks across the entire source base. After
1166many
1167years, different formatting for switch() had crept in. This change makes
1168the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1169
1170Split some files to enhance ACPICA modularity and configurability:
11711) Split buffer dump routines into utilities/utbuffer.c
11722) Split internal error message routines into utilities/uterror.c
11733) Split table print utilities into tables/tbprint.c
11744) Split iASL command-line option processing into asloptions.c
1175
1176Makefile enhancements:
11771) Support for all new files above.
11782) Abort make on errors from any subcomponent. Chao Guan.
11793) Add build support for Apple Mac OS X. Liang Qi.
1180
1181Example Code and Data Size: These are the sizes for the OS-independent
1182acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1183debug version of the code includes the debug output trace mechanism and
1184has a much larger code and data size.
1185
1186  Current Release:
1187    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1188    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1189  Previous Release:
1190    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1191    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1192
1193
11942) iASL Compiler/Disassembler and Tools:
1195
1196New utility: Implemented an easily portable version of the acpidump
1197utility to extract ACPI tables from the system (or a file) in an ASCII
1198hex
1199dump format. The top-level code implements the various command line
1200options, file I/O, and table dump routines. To port to a new host, only
1201three functions need to be implemented to get tables -- since this
1202functionality is OS-dependent. See the tools/acpidump/apmain.c module and
1203the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
12041) The Windows version obtains the ACPI tables from the Registry.
12052) The Linux version is under development.
12063) Other hosts - If an OS-dependent module is submitted, it will be
1207distributed with ACPICA.
1208
1209iASL: Fixed a regression for -D preprocessor option (define symbol). A
1210restructuring/change to the initialization sequence caused this option to
1211no longer work properly.
1212
1213iASL: Implemented a mechanism to disable specific warnings and remarks.
1214Adds a new command line option, "-vw <messageid> as well as "#pragma
1215disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1216
1217iASL: Fix for too-strict package object validation. The package object
1218validation for return values from the predefined names is a bit too
1219strict, it does not allow names references within the package (which will
1220be resolved at runtime.) These types of references cannot be validated at
1221compile time. This change ignores named references within package objects
1222for names that return or define static packages.
1223
1224Debugger: Fixed the 80-character command line limitation for the History
1225command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1226
1227iASL: Added control method and package support for the -so option
1228(generates AML offset table for BIOS support.)
1229
1230iASL: issue a remark if a non-serialized method creates named objects. If
1231a thread blocks within the method for any reason, and another thread
1232enters the method, the method will fail because an attempt will be made
1233to
1234create the same (named) object twice. In this case, issue a remark that
1235the method should be marked serialized. NOTE: may become a warning later.
1236ACPICA BZ 909.
1237
1238----------------------------------------
123918 April 2013. Summary of changes for version 20130418:
1240
12411) ACPICA kernel-resident subsystem:
1242
1243Fixed a possible buffer overrun during some rare but specific field unit
1244read operations. This overrun can only happen if the DSDT version is 1 --
1245meaning that all AML integers are 32 bits -- and the field length is
1246between 33 and 55 bits long. During the read, an internal buffer object
1247is
1248created for the field unit because the field is larger than an integer
1249(32
1250bits). However, in this case, the buffer will be incorrectly written
1251beyond the end because the buffer length is less than the internal
1252minimum
1253of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1254long, but a full 8 bytes will be written.
1255
1256Updated the Embedded Controller "orphan" _REG method support. This refers
1257to _REG methods under the EC device that have no corresponding operation
1258region. This is allowed by the ACPI specification. This update removes a
1259dependency on the existence an ECDT table. It will execute an orphan _REG
1260method as long as the operation region handler for the EC is installed at
1261the EC device node and not the namespace root. Rui Zhang (original
1262update), Bob Moore (update/integrate).
1263
1264Implemented run-time argument typechecking for all predefined ACPI names
1265(_STA, _BIF, etc.) This change performs object typechecking on all
1266incoming arguments for all predefined names executed via
1267AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1268passing correct object types as well as the correct number of arguments
1269(therefore identifying any issues immediately). Also, the ASL/namespace
1270definition of the predefined name is checked against the ACPI
1271specification for the proper argument count. Adds one new file,
1272nsarguments.c
1273
1274Changed an exception code for the ASL UnLoad() operator. Changed the
1275exception code for the case where the input DdbHandle is invalid, from
1276AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1277
1278Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
1279global makefile. The use of this flag causes compiler errors on earlier
1280versions of GCC, so it has been removed for compatibility.
1281
1282Miscellaneous cleanup:
12831) Removed some unused/obsolete macros
12842) Fixed a possible memory leak in the _OSI support
12853) Removed an unused variable in the predefined name support
12864) Windows OSL: remove obsolete reference to a memory list field
1287
1288Example Code and Data Size: These are the sizes for the OS-independent
1289acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1290debug version of the code includes the debug output trace mechanism and
1291has a much larger code and data size.
1292
1293  Current Release:
1294    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1295    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1296  Previous Release:
1297    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1298    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1299
1300
13012) iASL Compiler/Disassembler and Tools:
1302
1303AcpiExec: Added installation of a handler for the SystemCMOS address
1304space. This prevents control method abort if a method accesses this
1305space.
1306
1307AcpiExec: Added support for multiple EC devices, and now install EC
1308operation region handler(s) at the actual EC device instead of the
1309namespace root. This reflects the typical behavior of host operating
1310systems.
1311
1312AcpiExec: Updated to ensure that all operation region handlers are
1313installed before the _REG methods are executed. This prevents a _REG
1314method from aborting if it accesses an address space has no handler.
1315AcpiExec installs a handler for every possible address space.
1316
1317Debugger: Enhanced the "handlers" command to display non-root handlers.
1318This change enhances the handlers command to display handlers associated
1319with individual devices throughout the namespace, in addition to the
1320currently supported display of handlers associated with the root
1321namespace
1322node.
1323
1324ASL Test Suite: Several test suite errors have been identified and
1325resolved, reducing the total error count during execution. Chao Guan.
1326
1327----------------------------------------
132828 March 2013. Summary of changes for version 20130328:
1329
13301) ACPICA kernel-resident subsystem:
1331
1332Fixed several possible race conditions with the internal object reference
1333counting mechanism. Some of the external ACPICA interfaces update object
1334reference counts without holding the interpreter or namespace lock. This
1335change adds a spinlock to protect reference count updates on the internal
1336ACPICA objects. Reported by and with assistance from Andriy Gapon
1337(avg@FreeBSD.org).
1338
1339FADT support: Removed an extraneous warning for very large GPE register
1340sets. This change removes a size mismatch warning if the legacy length
1341field for a GPE register set is larger than the 64-bit GAS structure can
1342accommodate. GPE register sets can be larger than the 255-bit width
1343limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1344
1345_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1346return from this interface. Handles a possible timeout case if
1347ACPI_WAIT_FOREVER is modified by the host to be a value less than
1348"forever". Jung-uk Kim.
1349
1350Predefined name support: Add allowed/required argument type information
1351to
1352the master predefined info table. This change adds the infrastructure to
1353enable typechecking on incoming arguments for all predefined
1354methods/objects. It does not actually contain the code that will fully
1355utilize this information, this is still under development. Also condenses
1356some duplicate code for the predefined names into a new module,
1357utilities/utpredef.c
1358
1359Example Code and Data Size: These are the sizes for the OS-independent
1360acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1361debug version of the code includes the debug output trace mechanism and
1362has a much larger code and data size.
1363
1364  Previous Release:
1365    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1366    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1367  Current Release:
1368    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1369    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1370
1371
13722) iASL Compiler/Disassembler and Tools:
1373
1374iASL: Implemented a new option to simplify the development of ACPI-
1375related
1376BIOS code. Adds support for a new "offset table" output file. The -so
1377option will create a C table containing the AML table offsets of various
1378named objects in the namespace so that BIOS code can modify them easily
1379at
1380boot time. This can simplify BIOS runtime code by eliminating expensive
1381searches for "magic values", enhancing boot times and adding greater
1382reliability. With assistance from Lee Hamel.
1383
1384iASL: Allow additional predefined names to return zero-length packages.
1385Now, all predefined names that are defined by the ACPI specification to
1386return a "variable-length package of packages" are allowed to return a
1387zero length top-level package. This allows the BIOS to tell the host that
1388the requested feature is not supported, and supports existing BIOS/ASL
1389code and practices.
1390
1391iASL: Changed the "result not used" warning to an error. This is the case
1392where an ASL operator is effectively a NOOP because the result of the
1393operation is not stored anywhere. For example:
1394    Add (4, Local0)
1395There is no target (missing 3rd argument), nor is the function return
1396value used. This is potentially a very serious problem -- since the code
1397was probably intended to do something, but for whatever reason, the value
1398was not stored. Therefore, this issue has been upgraded from a warning to
1399an error.
1400
1401AcpiHelp: Added allowable/required argument types to the predefined names
1402info display. This feature utilizes the recent update to the predefined
1403names table (above).
1404
1405----------------------------------------
140614 February 2013. Summary of changes for version 20130214:
1407
14081) ACPICA Kernel-resident Subsystem:
1409
1410Fixed a possible regression on some hosts: Reinstated the safe return
1411macros (return_ACPI_STATUS, etc.) that ensure that the argument is
1412evaluated only once. Although these macros are not needed for the ACPICA
1413code itself, they are often used by ACPI-related host device drivers
1414where
1415the safe feature may be necessary.
1416
1417Fixed several issues related to the ACPI 5.0 reduced hardware support
1418(SOC): Now ensure that if the platform declares itself as hardware-
1419reduced
1420via the FADT, the following functions become NOOPs (and always return
1421AE_OK) because ACPI is always enabled by definition on these machines:
1422  AcpiEnable
1423  AcpiDisable
1424  AcpiHwGetMode
1425  AcpiHwSetMode
1426
1427Dynamic Object Repair: Implemented additional runtime repairs for
1428predefined name return values. Both of these repairs can simplify code in
1429the related device drivers that invoke these methods:
14301) For the _STR and _MLS names, automatically repair/convert an ASCII
1431string to a Unicode buffer.
14322) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
1433a
1434lone end tag descriptor in the following cases: A Return(0) was executed,
1435a null buffer was returned, or no object at all was returned (non-slack
1436mode only). Adds a new file, nsconvert.c
1437ACPICA BZ 998. Bob Moore, Lv Zheng.
1438
1439Resource Manager: Added additional code to prevent possible infinite
1440loops
1441while traversing corrupted or ill-formed resource template buffers. Check
1442for zero-length resource descriptors in all code that loops through
1443resource templates (the length field is used to index through the
1444template). This change also hardens the external AcpiWalkResources and
1445AcpiWalkResourceBuffer interfaces.
1446
1447Local Cache Manager: Enhanced the main data structure to eliminate an
1448unnecessary mechanism to access the next object in the list. Actually
1449provides a small performance enhancement for hosts that use the local
1450ACPICA cache manager. Jung-uk Kim.
1451
1452Example Code and Data Size: These are the sizes for the OS-independent
1453acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1454debug version of the code includes the debug output trace mechanism and
1455has a much larger code and data size.
1456
1457  Previous Release:
1458    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1459    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1460  Current Release:
1461    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1462    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1463
1464
14652) iASL Compiler/Disassembler and Tools:
1466
1467iASL/Disassembler: Fixed several issues with the definition of the ACPI
14685.0 RASF table (RAS Feature Table). This change incorporates late changes
1469that were made to the ACPI 5.0 specification.
1470
1471iASL/Disassembler: Added full support for the following new ACPI tables:
1472  1) The MTMR table (MID Timer Table)
1473  2) The VRTC table (Virtual Real Time Clock Table).
1474Includes header file, disassembler, table compiler, and template support
1475for both tables.
1476
1477iASL: Implemented compile-time validation of package objects returned by
1478predefined names. This new feature validates static package objects
1479returned by the various predefined names defined to return packages. Both
1480object types and package lengths are validated, for both parent packages
1481and sub-packages, if any. The code is similar in structure and behavior
1482to
1483the runtime repair mechanism within the AML interpreter and uses the
1484existing predefined name information table. Adds a new file, aslprepkg.c.
1485ACPICA BZ 938.
1486
1487iASL: Implemented auto-detection of binary ACPI tables for disassembly.
1488This feature detects a binary file with a valid ACPI table header and
1489invokes the disassembler automatically. Eliminates the need to
1490specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1491
1492iASL/Disassembler: Added several warnings for the case where there are
1493unresolved control methods during the disassembly. This can potentially
1494cause errors when the output file is compiled, because the disassembler
1495assumes zero method arguments in these cases (it cannot determine the
1496actual number of arguments without resolution/definition of the method).
1497
1498Debugger: Added support to display all resources with a single command.
1499Invocation of the resources command with no arguments will now display
1500all
1501resources within the current namespace.
1502
1503AcpiHelp: Added descriptive text for each ACPICA exception code displayed
1504via the -e option.
1505
1506----------------------------------------
150717 January 2013. Summary of changes for version 20130117:
1508
15091) ACPICA Kernel-resident Subsystem:
1510
1511Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
1512return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
1513objects to return a package containing one integer, most BIOS code
1514returns
1515two integers and the previous code reflects that. However, we also need
1516to
1517support BIOS code that actually implements to the ACPI spec, and this
1518change reflects this.
1519
1520Fixed two issues with the ACPI_DEBUG_PRINT macros:
15211) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
1522C compilers that require this support.
15232) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
1524ACPI_DEBUG is already used by many of the various hosts.
1525
1526Updated all ACPICA copyrights and signons to 2013. Added the 2013
1527copyright to all module headers and signons, including the standard Linux
1528header. This affects virtually every file in the ACPICA core subsystem,
1529iASL compiler, all ACPICA utilities, and the test suites.
1530
1531Example Code and Data Size: These are the sizes for the OS-independent
1532acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1533debug version of the code includes the debug output trace mechanism and
1534has a much larger code and data size.
1535
1536  Previous Release:
1537    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1538    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1539  Current Release:
1540    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1541    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1542
1543
15442) iASL Compiler/Disassembler and Tools:
1545
1546Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
1547prevent a possible fault on some hosts. Some C libraries modify the arg
1548pointer parameter to vfprintf making it difficult to call it twice in the
1549AcpiOsVprintf function. Use a local buffer to workaround this issue. This
1550does not affect the Windows OSL since the Win C library does not modify
1551the arg pointer. Chao Guan, Bob Moore.
1552
1553iASL: Fixed a possible infinite loop when the maximum error count is
1554reached. If an output file other than the .AML file is specified (such as
1555a listing file), and the maximum number of errors is reached, do not
1556attempt to flush data to the output file(s) as the compiler is aborting.
1557This can cause an infinite loop as the max error count code essentially
1558keeps calling itself.
1559
1560iASL/Disassembler: Added an option (-in) to ignore NOOP
1561opcodes/operators.
1562Implemented for both the compiler and the disassembler. Often, the NOOP
1563opcode is used as padding for packages that are changed dynamically by
1564the
1565BIOS. When disassembled and recompiled, these NOOPs will cause syntax
1566errors. This option causes the disassembler to ignore all NOOP opcodes
1567(0xA3), and it also causes the compiler to ignore all ASL source code
1568NOOP
1569statements as well.
1570
1571Debugger: Enhanced the Sleep command to execute all sleep states. This
1572change allows Sleep to be invoked with no arguments and causes the
1573debugger to execute all of the sleep states, 0-5, automatically.
1574
1575----------------------------------------
157620 December 2012. Summary of changes for version 20121220:
1577
15781) ACPICA Kernel-resident Subsystem:
1579
1580Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
1581alternate entry point for AcpiWalkResources and improves the usability of
1582the resource manager by accepting as input a buffer containing the output
1583of either a _CRS, _PRS, or _AEI method. The key functionality is that the
1584input buffer is not deleted by this interface so that it can be used by
1585the host later. See the ACPICA reference for details.
1586
1587Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
1588(DSDT version < 2). The constant will be truncated and this warning
1589reflects that behavior.
1590
1591Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
1592ExtendedInterrupt, and GpioInt descriptors. This change adds support to
1593both get and set the new wake bit in these descriptors, separately from
1594the existing share bit. Reported by Aaron Lu.
1595
1596Interpreter: Fix Store() when an implicit conversion is not possible. For
1597example, in the cases such as a store of a string to an existing package
1598object, implement the store as a CopyObject(). This is a small departure
1599from the ACPI specification which states that the control method should
1600be
1601aborted in this case. However, the ASLTS suite depends on this behavior.
1602
1603Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
1604macros: check if debug output is currently enabled as soon as possible to
1605minimize performance impact if debug is in fact not enabled.
1606
1607Source code restructuring: Cleanup to improve modularity. The following
1608new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
1609psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
1610Associated makefiles and project files have been updated.
1611
1612Changed an exception code for LoadTable operator. For the case where one
1613of the input strings is too long, change the returned exception code from
1614AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1615
1616Fixed a possible memory leak in dispatcher error path. On error, delete
1617the mutex object created during method mutex creation. Reported by
1618tim.gardner@canonical.com.
1619
1620Example Code and Data Size: These are the sizes for the OS-independent
1621acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1622debug version of the code includes the debug output trace mechanism and
1623has a much larger code and data size.
1624
1625  Previous Release:
1626    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1627    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1628  Current Release:
1629    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1630    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1631
1632
16332) iASL Compiler/Disassembler and Tools:
1634
1635iASL: Disallow a method call as argument to the ObjectType ASL operator.
1636This change tracks an errata to the ACPI 5.0 document. The AML grammar
1637will not allow the interpreter to differentiate between a method and a
1638method invocation when these are used as an argument to the ObjectType
1639operator. The ACPI specification change is to disallow a method
1640invocation
1641(UserTerm) for the ObjectType operator.
1642
1643Finish support for the TPM2 and CSRT tables in the headers, table
1644compiler, and disassembler.
1645
1646Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
1647always expires immediately if the semaphore is not available. The
1648original
1649code was using a relative-time timeout, but sem_timedwait requires the
1650use
1651of an absolute time.
1652
1653iASL: Added a remark if the Timer() operator is used within a 32-bit
1654table. This operator returns a 64-bit time value that will be truncated
1655within a 32-bit table.
1656
1657iASL Source code restructuring: Cleanup to improve modularity. The
1658following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
1659aslmethod.c, and aslfileio.c. Associated makefiles and project files have
1660been updated.
1661
1662
1663----------------------------------------
166414 November 2012. Summary of changes for version 20121114:
1665
16661) ACPICA Kernel-resident Subsystem:
1667
1668Implemented a performance enhancement for ACPI/AML Package objects. This
1669change greatly increases the performance of Package objects within the
1670interpreter. It changes the processing of reference counts for packages
1671by
1672optimizing for the most common case where the package sub-objects are
1673either Integers, Strings, or Buffers. Increases the overall performance
1674of
1675the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
16762X.)
1677Chao Guan. ACPICA BZ 943.
1678
1679Implemented and deployed common macros to extract flag bits from resource
1680descriptors. Improves readability and maintainability of the code. Fixes
1681a
1682problem with the UART serial bus descriptor for the number of data bits
1683flags (was incorrectly 2 bits, should be 3).
1684
1685Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
1686of the macros and changed the SETx macros to the style of (destination,
1687source). Also added ACPI_CASTx companion macros. Lv Zheng.
1688
1689Example Code and Data Size: These are the sizes for the OS-independent
1690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1691debug version of the code includes the debug output trace mechanism and
1692has a much larger code and data size.
1693
1694  Previous Release:
1695    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1696    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1697  Current Release:
1698    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1699    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1700
1701
17022) iASL Compiler/Disassembler and Tools:
1703
1704Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
1705adds the ShareAndWake and ExclusiveAndWake flags which were added to the
1706Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1707
1708Disassembler: Fixed a problem with external declaration generation. Fixes
1709a problem where an incorrect pathname could be generated for an external
1710declaration if the original reference to the object includes leading
1711carats (^). ACPICA BZ 984.
1712
1713Debugger: Completed a major update for the Disassemble<method> command.
1714This command was out-of-date and did not properly disassemble control
1715methods that had any reasonable complexity. This fix brings the command
1716up
1717to the same level as the rest of the disassembler. Adds one new file,
1718dmdeferred.c, which is existing code that is now common with the main
1719disassembler and the debugger disassemble command. ACPICA MZ 978.
1720
1721iASL: Moved the parser entry prototype to avoid a duplicate declaration.
1722Newer versions of Bison emit this prototype, so moved the prototype out
1723of
1724the iASL header to where it is actually used in order to avoid a
1725duplicate
1726declaration.
1727
1728iASL/Tools: Standardized use of the stream I/O functions:
1729  1) Ensure check for I/O error after every fopen/fread/fwrite
1730  2) Ensure proper order of size/count arguments for fread/fwrite
1731  3) Use test of (Actual != Requested) after all fwrite, and most fread
1732  4) Standardize I/O error messages
1733Improves reliability and maintainability of the code. Bob Moore, Lv
1734Zheng.
1735ACPICA BZ 981.
1736
1737Disassembler: Prevent duplicate External() statements. During generation
1738of external statements, detect similar pathnames that are actually
1739duplicates such as these:
1740  External (\ABCD)
1741  External (ABCD)
1742Remove all leading '\' characters from pathnames during the external
1743statement generation so that duplicates will be detected and tossed.
1744ACPICA BZ 985.
1745
1746Tools: Replace low-level I/O with stream I/O functions. Replace
1747open/read/write/close with the stream I/O equivalents
1748fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
1749Moore.
1750
1751AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
1752name header so that AcpiXtract recognizes the output file/table.
1753
1754iASL: Remove obsolete -2 option flag. Originally intended to force the
1755compiler/disassembler into an ACPI 2.0 mode, this was never implemented
1756and the entire concept is now obsolete.
1757
1758----------------------------------------
175918 October 2012. Summary of changes for version 20121018:
1760
1761
17621) ACPICA Kernel-resident Subsystem:
1763
1764Updated support for the ACPI 5.0 MPST table. Fixes some problems
1765introduced by late changes to the table as it was added to the ACPI 5.0
1766specification. Includes header, disassembler, and data table compiler
1767support as well as a new version of the MPST template.
1768
1769AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
17705.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
1771methods: _HID, _CID, and _UID.
1772
1773Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
1774ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
1775name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
1776names for their various drivers. Affects the AcpiGetObjectInfo external
1777interface, and other internal interfaces as well.
1778
1779Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
1780This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
1781on machines that support non-aligned transfers. Optimizes for this case
1782rather than using a strncpy. With assistance from Zheng Lv.
1783
1784Resource Manager: Small fix for buffer size calculation. Fixed a one byte
1785error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
1786
1787Added a new debug print message for AML mutex objects that are force-
1788released. At control method termination, any currently acquired mutex
1789objects are force-released. Adds a new debug-only message for each one
1790that is released.
1791
1792Audited/updated all ACPICA return macros and the function debug depth
1793counter: 1) Ensure that all functions that use the various TRACE macros
1794also use the appropriate ACPICA return macros. 2) Ensure that all normal
1795return statements surround the return expression (value) with parens to
1796ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
1797Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
1798
1799Global source code changes/maintenance: All extra lines at the start and
1800end of each source file have been removed for consistency. Also, within
1801comments, all new sentences start with a single space instead of a double
1802space, again for consistency across the code base.
1803
1804Example Code and Data Size: These are the sizes for the OS-independent
1805acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1806debug version of the code includes the debug output trace mechanism and
1807has a much larger code and data size.
1808
1809  Previous Release:
1810    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1811    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1812  Current Release:
1813    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1814    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1815
1816
18172) iASL Compiler/Disassembler and Tools:
1818
1819AcpiExec: Improved the algorithm used for memory leak/corruption
1820detection. Added some intelligence to the code that maintains the global
1821list of allocated memory. The list is now ordered by allocated memory
1822address, significantly improving performance. When running AcpiExec on
1823the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
1824on the platform and/or the environment. Note, this performance
1825enhancement affects the AcpiExec utility only, not the kernel-resident
1826ACPICA code.
1827
1828Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
1829the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
1830incorrect table offset reported for invalid opcodes. Report the original
183132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
1832
1833Disassembler: Enhanced the -vt option to emit the binary table data in
1834hex format to assist with debugging.
1835
1836Fixed a potential filename buffer overflow in osunixdir.c. Increased the
1837size of file structure. Colin Ian King.
1838
1839----------------------------------------
184013 September 2012. Summary of changes for version 20120913:
1841
1842
18431) ACPICA Kernel-resident Subsystem:
1844
1845ACPI 5.0: Added two new notify types for the Hardware Error Notification
1846Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
1847and
1848MCE(6).
1849
1850Table Manager: Merged/removed duplicate code in the root table resize
1851functions. One function is external, the other is internal. Lv Zheng,
1852ACPICA
1853BZ 846.
1854
1855Makefiles: Completely removed the obsolete "Linux" makefiles under
1856acpica/generate/linux. These makefiles are obsolete and have been
1857replaced
1858by
1859the generic unix makefiles under acpica/generate/unix.
1860
1861Makefiles: Ensure that binary files always copied properly. Minor rule
1862change
1863to ensure that the final binary output files are always copied up to the
1864appropriate binary directory (bin32 or bin64.)
1865
1866Example Code and Data Size: These are the sizes for the OS-independent
1867acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1868debug
1869version of the code includes the debug output trace mechanism and has a
1870much
1871larger code and data size.
1872
1873  Previous Release:
1874    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
1875    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
1876  Current Release:
1877    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
1878    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
1879
1880
18812) iASL Compiler/Disassembler and Tools:
1882
1883Disassembler: Fixed a possible fault during the disassembly of resource
1884descriptors when a second parse is required because of the invocation of
1885external control methods within the table. With assistance from
1886adq@lidskialf.net. ACPICA BZ 976.
1887
1888iASL: Fixed a namepath optimization problem. An error can occur if the
1889parse
1890node that contains the namepath to be optimized does not have a parent
1891node
1892that is a named object. This change fixes the problem.
1893
1894iASL: Fixed a regression where the AML file is not deleted on errors. The
1895AML
1896output file should be deleted if there are any errors during the
1897compiler.
1898The
1899only exception is if the -f (force output) option is used. ACPICA BZ 974.
1900
1901iASL: Added a feature to automatically increase internal line buffer
1902sizes.
1903Via realloc(), automatically increase the internal line buffer sizes as
1904necessary to support very long source code lines. The current version of
1905the
1906preprocessor requires a buffer long enough to contain full source code
1907lines.
1908This change increases the line buffer(s) if the input lines go beyond the
1909current buffer size. This eliminates errors that occurred when a source
1910code
1911line was longer than the buffer.
1912
1913iASL: Fixed a problem with constant folding in method declarations. The
1914SyncLevel term is a ByteConstExpr, and incorrect code would be generated
1915if a
1916Type3 opcode was used.
1917
1918Debugger: Improved command help support. For incorrect argument count,
1919display
1920full help for the command. For help command itself, allow an argument to
1921specify a command.
1922
1923Test Suites: Several bug fixes for the ASLTS suite reduces the number of
1924errors during execution of the suite. Guan Chao.
1925
1926----------------------------------------
192716 August 2012. Summary of changes for version 20120816:
1928
1929
19301) ACPICA Kernel-resident Subsystem:
1931
1932Removed all use of the deprecated _GTS and _BFS predefined methods. The
1933_GTS
1934(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
1935deprecated and will probably be removed from the ACPI specification.
1936Windows
1937does not invoke them, and reportedly never will. The final nail in the
1938coffin
1939is that the ACPI specification states that these methods must be run with
1940interrupts off, which is not going to happen in a kernel interpreter.
1941Note:
1942Linux has removed all use of the methods also. It was discovered that
1943invoking these functions caused failures on some machines, probably
1944because
1945they were never tested since Windows does not call them. Affects two
1946external
1947interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
1948ACPICA BZ 969.
1949
1950Implemented support for complex bit-packed buffers returned from the _PLD
1951(Physical Location of Device) predefined method. Adds a new external
1952interface, AcpiDecodePldBuffer that parses the buffer into a more usable
1953C
1954structure. Note: C Bitfields cannot be used for this type of predefined
1955structure since the memory layout of individual bitfields is not defined
1956by
1957the C language. In addition, there are endian concerns where a compiler
1958will
1959change the bitfield ordering based on the machine type. The new ACPICA
1960interface eliminates these issues, and should be called after _PLD is
1961executed. ACPICA BZ 954.
1962
1963Implemented a change to allow a scope change to root (via "Scope (\)")
1964during
1965execution of module-level ASL code (code that is executed at table load
1966time.) Lin Ming.
1967
1968Added the Windows8/Server2012 string for the _OSI method. This change
1969adds
1970a
1971new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
19722012.
1973
1974Added header support for the new ACPI tables DBG2 (Debug Port Table Type
19752)
1976and CSRT (Core System Resource Table).
1977
1978Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
1979names. This simplifies access to the buffers returned by these predefined
1980names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
1981
1982GPE support: Removed an extraneous parameter from the various low-level
1983internal GPE functions. Tang Feng.
1984
1985Removed the linux makefiles from the unix packages. The generate/linux
1986makefiles are obsolete and have been removed from the unix tarball
1987release
1988packages. The replacement makefiles are under generate/unix, and there is
1989a
1990top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
1991
1992Updates for Unix makefiles:
19931) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
19942) Update linker flags (move to end of command line) for AcpiExec
1995utility.
1996Guan Chao.
1997
1998Split ACPICA initialization functions to new file, utxfinit.c. Split from
1999utxface.c to improve modularity and reduce file size.
2000
2001Example Code and Data Size: These are the sizes for the OS-independent
2002acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2003debug version of the code includes the debug output trace mechanism and
2004has a
2005much larger code and data size.
2006
2007  Previous Release:
2008    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2009    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2010  Current Release:
2011    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2012    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2013
2014
20152) iASL Compiler/Disassembler and Tools:
2016
2017iASL: Fixed a problem with constant folding for fixed-length constant
2018expressions. The constant-folding code was not being invoked for constant
2019expressions that allow the use of type 3/4/5 opcodes to generate
2020constants
2021for expressions such as ByteConstExpr, WordConstExpr, etc. This could
2022result
2023in the generation of invalid AML bytecode. ACPICA BZ 970.
2024
2025iASL: Fixed a generation issue on newer versions of Bison. Newer versions
2026apparently automatically emit some of the necessary externals. This
2027change
2028handles these versions in order to eliminate generation warnings.
2029
2030Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2031
2032Disassembler: Add support to decode _PLD buffers. The decoded buffer
2033appears
2034within comments in the output file.
2035
2036Debugger: Fixed a regression with the "Threads" command where
2037AE_BAD_PARAMETER was always returned.
2038
2039----------------------------------------
204011 July 2012. Summary of changes for version 20120711:
2041
20421) ACPICA Kernel-resident Subsystem:
2043
2044Fixed a possible fault in the return package object repair code. Fixes a
2045problem that can occur when a lone package object is wrapped with an
2046outer
2047package object in order to force conformance to the ACPI specification.
2048Can
2049affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
2050_DLM,
2051_CSD, _PSD, _TSD.
2052
2053Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
2054PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
2055ARB_DIS bit must be implemented in the host-dependent C3 processor power
2056state
2057support. Note, ARB_DIS is obsolete and only applies to older chipsets,
2058both
2059Intel and other vendors. (for Intel: ICH4-M and earlier)
2060
2061This change removes the code to disable/enable bus master arbitration
2062during
2063suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
2064causes
2065resume problems on some machines. The change has been in use for over
2066seven
2067years within Linux.
2068
2069Implemented two new external interfaces to support host-directed dynamic
2070ACPI
2071table load and unload. They are intended to simplify the host
2072implementation
2073of hot-plug support:
2074  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2075  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
2076table.
2077See the ACPICA reference for additional details. Adds one new file,
2078components/tables/tbxfload.c
2079
2080Implemented and deployed two new interfaces for errors and warnings that
2081are
2082known to be caused by BIOS/firmware issues:
2083  AcpiBiosError: Prints "ACPI Firmware Error" message.
2084  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2085Deployed these new interfaces in the ACPICA Table Manager code for ACPI
2086table
2087and FADT errors. Additional deployment to be completed as appropriate in
2088the
2089future. The associated conditional macros are ACPI_BIOS_ERROR and
2090ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
2091ACPICA
2092BZ
2093843.
2094
2095Implicit notify support: ensure that no memory allocation occurs within a
2096critical region. This fix moves a memory allocation outside of the time
2097that a
2098spinlock is held. Fixes issues on systems that do not allow this
2099behavior.
2100Jung-uk Kim.
2101
2102Split exception code utilities and tables into a new file,
2103utilities/utexcep.c
2104
2105Example Code and Data Size: These are the sizes for the OS-independent
2106acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2107debug
2108version of the code includes the debug output trace mechanism and has a
2109much
2110larger code and data size.
2111
2112  Previous Release:
2113    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2114    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2115  Current Release:
2116    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2117    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2118
2119
21202) iASL Compiler/Disassembler and Tools:
2121
2122iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
2123of
21240. Jung-uk Kim.
2125
2126Debugger: Enhanced the "tables" command to emit additional information
2127about
2128the current set of ACPI tables, including the owner ID and flags decode.
2129
2130Debugger: Reimplemented the "unload" command to use the new
2131AcpiUnloadParentTable external interface. This command was disable
2132previously
2133due to need for an unload interface.
2134
2135AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
2136option
2137will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2138
2139----------------------------------------
214020 June 2012. Summary of changes for version 20120620:
2141
2142
21431) ACPICA Kernel-resident Subsystem:
2144
2145Implemented support to expand the "implicit notify" feature to allow
2146multiple
2147devices to be notified by a single GPE. This feature automatically
2148generates a
2149runtime device notification in the absence of a BIOS-provided GPE control
2150method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2151notify is
2152provided by ACPICA for Windows compatibility, and is a workaround for
2153BIOS
2154AML
2155code errors. See the description of the AcpiSetupGpeForWake interface in
2156the
2157APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2158
2159Changed some comments and internal function names to simplify and ensure
2160correctness of the Linux code translation. No functional changes.
2161
2162Example Code and Data Size: These are the sizes for the OS-independent
2163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2164debug
2165version of the code includes the debug output trace mechanism and has a
2166much
2167larger code and data size.
2168
2169  Previous Release:
2170    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2171    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2172  Current Release:
2173    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2174    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2175
2176
21772) iASL Compiler/Disassembler and Tools:
2178
2179Disassembler: Added support to emit short, commented descriptions for the
2180ACPI
2181predefined names in order to improve the readability of the disassembled
2182output. ACPICA BZ 959. Changes include:
2183  1) Emit descriptions for all standard predefined names (_INI, _STA,
2184_PRW,
2185etc.)
2186  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2187  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2188etc.)
2189
2190AcpiSrc: Fixed several long-standing Linux code translation issues.
2191Argument
2192descriptions in function headers are now translated properly to lower
2193case
2194and
2195underscores. ACPICA BZ 961. Also fixes translation problems such as
2196these:
2197(old -> new)
2198  i_aSL -> iASL
2199  00-7_f -> 00-7F
2200  16_k -> 16K
2201  local_fADT -> local_FADT
2202  execute_oSI -> execute_OSI
2203
2204iASL: Fixed a problem where null bytes were inadvertently emitted into
2205some
2206listing files.
2207
2208iASL: Added the existing debug options to the standard help screen. There
2209are
2210no longer two different help screens. ACPICA BZ 957.
2211
2212AcpiHelp: Fixed some typos in the various predefined name descriptions.
2213Also
2214expand some of the descriptions where appropriate.
2215
2216iASL: Fixed the -ot option (display compile times/statistics). Was not
2217working
2218properly for standard output; only worked for the debug file case.
2219
2220----------------------------------------
222118 May 2012. Summary of changes for version 20120518:
2222
2223
22241) ACPICA Core Subsystem:
2225
2226Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2227defined
2228to block until asynchronous events such as notifies and GPEs have
2229completed.
2230Within ACPICA, it is only called before a notify or GPE handler is
2231removed/uninstalled. It also may be useful for the host OS within related
2232drivers such as the Embedded Controller driver. See the ACPICA reference
2233for
2234additional information. ACPICA BZ 868.
2235
2236ACPI Tables: Added a new error message for a possible overflow failure
2237during
2238the conversion of FADT 32-bit legacy register addresses to internal
2239common
224064-
2241bit GAS structure representation. The GAS has a one-byte "bit length"
2242field,
2243thus limiting the register length to 255 bits. ACPICA BZ 953.
2244
2245Example Code and Data Size: These are the sizes for the OS-independent
2246acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2247debug
2248version of the code includes the debug output trace mechanism and has a
2249much
2250larger code and data size.
2251
2252  Previous Release:
2253    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2254    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2255  Current Release:
2256    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2257    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2258
2259
22602) iASL Compiler/Disassembler and Tools:
2261
2262iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2263macro.
2264This keyword was added late in the ACPI 5.0 release cycle and was not
2265implemented until now.
2266
2267Disassembler: Added support for Operation Region externals. Adds missing
2268support for operation regions that are defined in another table, and
2269referenced locally via a Field or BankField ASL operator. Now generates
2270the
2271correct External statement.
2272
2273Disassembler: Several additional fixes for the External() statement
2274generation
2275related to some ASL operators. Also, order the External() statements
2276alphabetically in the disassembler output. Fixes the External()
2277generation
2278for
2279the Create* field, Alias, and Scope operators:
2280 1) Create* buffer field operators - fix type mismatch warning on
2281disassembly
2282 2) Alias - implement missing External support
2283 3) Scope - fix to make sure all necessary externals are emitted.
2284
2285iASL: Improved pathname support. For include files, merge the prefix
2286pathname
2287with the file pathname and eliminate unnecessary components. Convert
2288backslashes in all pathnames to forward slashes, for readability. Include
2289file
2290pathname changes affect both #include and Include() type operators.
2291
2292iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
2293end
2294of a valid line by inserting a newline and then returning the EOF during
2295the
2296next call to GetNextLine. Prevents the line from being ignored due to EOF
2297condition.
2298
2299iASL: Implemented some changes to enhance the IDE support (-vi option.)
2300Error
2301and Warning messages are now correctly recognized for both the source
2302code
2303browser and the global error and warning counts.
2304
2305----------------------------------------
230620 April 2012. Summary of changes for version 20120420:
2307
2308
23091) ACPICA Core Subsystem:
2310
2311Implemented support for multiple notify handlers. This change adds
2312support
2313to
2314allow multiple system and device notify handlers on Device, Thermal Zone,
2315and
2316Processor objects. This can simplify the host OS notification
2317implementation.
2318Also re-worked and restructured the entire notify support code to
2319simplify
2320handler installation, handler removal, notify event queuing, and notify
2321dispatch to handler(s). Note: there can still only be two global notify
2322handlers - one for system notifies and one for device notifies. There are
2323no
2324changes to the existing handler install/remove interfaces. Lin Ming, Bob
2325Moore, Rafael Wysocki.
2326
2327Fixed a regression in the package repair code where the object reference
2328count was calculated incorrectly. Regression was introduced in the commit
2329"Support to add Package wrappers".
2330
2331Fixed a couple possible memory leaks in the AML parser, in the error
2332recovery
2333path. Jesper Juhl, Lin Ming.
2334
2335Example Code and Data Size: These are the sizes for the OS-independent
2336acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2337debug version of the code includes the debug output trace mechanism and
2338has a
2339much larger code and data size.
2340
2341  Previous Release:
2342    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2343    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2344  Current Release:
2345    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2346    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2347
2348
23492) iASL Compiler/Disassembler and Tools:
2350
2351iASL: Fixed a problem with the resource descriptor support where the
2352length
2353of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2354included in cumulative descriptor offset, resulting in incorrect values
2355for
2356resource tags within resource descriptors appearing after a
2357StartDependent*
2358descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2359
2360iASL and Preprocessor: Implemented full support for the #line directive
2361to
2362correctly track original source file line numbers through the .i
2363preprocessor
2364output file - for error and warning messages.
2365
2366iASL: Expand the allowable byte constants for address space IDs.
2367Previously,
2368the allowable range was 0x80-0xFF (user-defined spaces), now the range is
23690x0A-0xFF to allow for custom and new IDs without changing the compiler.
2370
2371iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2372
2373iASL: Add option to completely disable the preprocessor (-Pn).
2374
2375iASL: Now emit all error/warning messages to standard error (stderr) by
2376default (instead of the previous stdout).
2377
2378ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
2379Update
2380for resource descriptor offset fix above. Update/cleanup error output
2381routines. Enable and send iASL errors/warnings to an error logfile
2382(error.txt). Send all other iASL output to a logfile (compiler.txt).
2383Fixed
2384several extraneous "unrecognized operator" messages.
2385
2386----------------------------------------
238720 March 2012. Summary of changes for version 20120320:
2388
2389
23901) ACPICA Core Subsystem:
2391
2392Enhanced the sleep/wake interfaces to optionally execute the _GTS method
2393(Going To Sleep) and the _BFS method (Back From Sleep). Windows
2394apparently
2395does not execute these methods, and therefore these methods are often
2396untested. It has been seen on some systems where the execution of these
2397methods causes errors and also prevents the machine from entering S5. It
2398is
2399therefore suggested that host operating systems do not execute these
2400methods
2401by default. In the future, perhaps these methods can be optionally
2402executed
2403based on the age of the system and/or what is the newest version of
2404Windows
2405that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
2406and
2407AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
2408Ming.
2409
2410Fixed a problem where the length of the local/common FADT was set too
2411early.
2412The local FADT table length cannot be set to the common length until the
2413original length has been examined. There is code that checks the table
2414length
2415and sets various fields appropriately. This can affect older machines
2416with
2417early FADT versions. For example, this can cause inadvertent writes to
2418the
2419CST_CNT register. Julian Anastasov.
2420
2421Fixed a mapping issue related to a physical table override. Use the
2422deferred
2423mapping mechanism for tables loaded via the physical override OSL
2424interface.
2425This allows for early mapping before the virtual memory manager is
2426available.
2427Thomas Renninger, Bob Moore.
2428
2429Enhanced the automatic return-object repair code: Repair a common problem
2430with
2431predefined methods that are defined to return a variable-length Package
2432of
2433sub-objects. If there is only one sub-object, some BIOS ASL code
2434mistakenly
2435simply returns the single object instead of a Package with one sub-
2436object.
2437This new support will repair this error by wrapping a Package object
2438around
2439the original object, creating the correct and expected Package with one
2440sub-
2441object. Names that can be repaired in this manner include: _ALR, _CSD,
2442_HPX,
2443_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
2444939.
2445
2446Changed the exception code returned for invalid ACPI paths passed as
2447parameters to external interfaces such as AcpiEvaluateObject. Was
2448AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
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:  93.0K Code, 25.0K Data, 118.0K Total
2459    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2460  Current Release:
2461    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2462    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2463
2464
24652) iASL Compiler/Disassembler and Tools:
2466
2467iASL: Added the infrastructure and initial implementation of a integrated
2468C-
2469like preprocessor. This will simplify BIOS development process by
2470eliminating
2471the need for a separate preprocessing step during builds. On Windows, it
2472also
2473eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
2474features including full #define() macro support are still under
2475development.
2476These preprocessor directives are supported:
2477    #define
2478    #elif
2479    #else
2480    #endif
2481    #error
2482    #if
2483    #ifdef
2484    #ifndef
2485    #include
2486    #pragma message
2487    #undef
2488    #warning
2489In addition, these new command line options are supported:
2490    -D <symbol> Define symbol for preprocessor use
2491    -li         Create preprocessed output file (*.i)
2492    -P          Preprocess only and create preprocessor output file (*.i)
2493
2494Table Compiler: Fixed a problem where the equals operator within an
2495expression
2496did not work properly.
2497
2498Updated iASL to use the current versions of Bison/Flex. Updated the
2499Windows
2500project file to invoke these tools from the standard location. ACPICA BZ
2501904.
2502Versions supported:
2503    Flex for Windows:  V2.5.4
2504    Bison for Windows: V2.4.1
2505
2506----------------------------------------
250715 February 2012. Summary of changes for version 20120215:
2508
2509
25101) ACPICA Core Subsystem:
2511
2512There have been some major changes to the sleep/wake support code, as
2513described below (a - e).
2514
2515a) The AcpiLeaveSleepState has been split into two interfaces, similar to
2516AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
2517AcpiLeaveSleepStatePrep. This allows the host to perform actions between
2518the
2519time the _BFS method is called and the _WAK method is called. NOTE: all
2520hosts
2521must update their wake/resume code or else sleep/wake will not work
2522properly.
2523Rafael Wysocki.
2524
2525b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
2526_WAK
2527method. Some machines require that the GPEs are enabled before the _WAK
2528method
2529is executed. Thomas Renninger.
2530
2531c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
2532bit.
2533Some BIOS code assumes that WAK_STS will be cleared on resume and use it
2534to
2535determine whether the system is rebooting or resuming. Matthew Garrett.
2536
2537d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
2538Sleep) to
2539match the ACPI specification requirement. Rafael Wysocki.
2540
2541e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
2542registers within the V5 FADT. This support adds two new files:
2543hardware/hwesleep.c implements the support for the new registers. Moved
2544all
2545sleep/wake external interfaces to hardware/hwxfsleep.c.
2546
2547
2548Added a new OSL interface for ACPI table overrides,
2549AcpiOsPhysicalTableOverride. This interface allows the host to override a
2550table via a physical address, instead of the logical address required by
2551AcpiOsTableOverride. This simplifies the host implementation. Initial
2552implementation by Thomas Renninger. The ACPICA implementation creates a
2553single
2554shared function for table overrides that attempts both a logical and a
2555physical override.
2556
2557Expanded the OSL memory read/write interfaces to 64-bit data
2558(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
2559transfer support for GAS register structures passed to AcpiRead and
2560AcpiWrite.
2561
2562Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
2563custom
2564build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
2565model.
2566See the ACPICA reference for details. ACPICA BZ 942. This option removes
2567about
256810% of the code and 5% of the static data, and the following hardware
2569ACPI
2570features become unavailable:
2571    PM Event and Control registers
2572    SCI interrupt (and handler)
2573    Fixed Events
2574    General Purpose Events (GPEs)
2575    Global Lock
2576    ACPI PM timer
2577    FACS table (Waking vectors and Global Lock)
2578
2579Updated the unix tarball directory structure to match the ACPICA git
2580source
2581tree. This ensures that the generic unix makefiles work properly (in
2582generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
2583867.
2584
2585Updated the return value of the _REV predefined method to integer value 5
2586to
2587reflect ACPI 5.0 support.
2588
2589Moved the external ACPI PM timer interface prototypes to the public
2590acpixf.h
2591file where they belong.
2592
2593Example Code and Data Size: These are the sizes for the OS-independent
2594acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2595debug
2596version of the code includes the debug output trace mechanism and has a
2597much
2598larger code and data size.
2599
2600  Previous Release:
2601    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2602    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2603  Current Release:
2604    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2605    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2606
2607
26082) iASL Compiler/Disassembler and Tools:
2609
2610Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
2611descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
2612incorrectly displayed.
2613
2614AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
2615specification.
2616
2617----------------------------------------
261811 January 2012. Summary of changes for version 20120111:
2619
2620
26211) ACPICA Core Subsystem:
2622
2623Implemented a new mechanism to allow host device drivers to check for
2624address
2625range conflicts with ACPI Operation Regions. Both SystemMemory and
2626SystemIO
2627address spaces are supported. A new external interface,
2628AcpiCheckAddressRange,
2629allows drivers to check an address range against the ACPI namespace. See
2630the
2631ACPICA reference for additional details. Adds one new file,
2632utilities/utaddress.c. Lin Ming, Bob Moore.
2633
2634Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
2635Control
2636and
2637Status registers, update the ACPI 5.0 flags, and update internal data
2638structures to handle an FADT larger than 256 bytes. The size of the ACPI
26395.0
2640FADT is 268 bytes.
2641
2642Updated all ACPICA copyrights and signons to 2012. Added the 2012
2643copyright to
2644all module headers and signons, including the standard Linux header. This
2645affects virtually every file in the ACPICA core subsystem, iASL compiler,
2646and
2647all ACPICA utilities.
2648
2649Example Code and Data Size: These are the sizes for the OS-independent
2650acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2651debug
2652version of the code includes the debug output trace mechanism and has a
2653much
2654larger code and data size.
2655
2656  Previous Release:
2657    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2658    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2659  Current Release:
2660    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2661    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2662
2663
26642) iASL Compiler/Disassembler and Tools:
2665
2666Disassembler: fixed a problem with the automatic resource tag generation
2667support. Fixes a problem where the resource tags are inadvertently not
2668constructed if the table being disassembled contains external references
2669to
2670control methods. Moved the actual construction of the tags to after the
2671final
2672namespace is constructed (after 2nd parse is invoked due to external
2673control
2674method references.) ACPICA BZ 941.
2675
2676Table Compiler: Make all "generic" operators caseless. These are the
2677operators
2678like UINT8, String, etc. Making these caseless improves ease-of-use.
2679ACPICA BZ
2680934.
2681
2682----------------------------------------
268323 November 2011. Summary of changes for version 20111123:
2684
26850) ACPI 5.0 Support:
2686
2687This release contains full support for the ACPI 5.0 specification, as
2688summarized below.
2689
2690Reduced Hardware Support:
2691-------------------------
2692
2693This support allows for ACPI systems without the usual ACPI hardware.
2694This
2695support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
2696will
2697not attempt to initialize or use any of the usual ACPI hardware. Note,
2698when
2699this flag is set, all of the following ACPI hardware is assumed to be not
2700present and is not initialized or accessed:
2701
2702    General Purpose Events (GPEs)
2703    Fixed Events (PM1a/PM1b and PM Control)
2704    Power Management Timer and Console Buttons (power/sleep)
2705    Real-time Clock Alarm
2706    Global Lock
2707    System Control Interrupt (SCI)
2708    The FACS is assumed to be non-existent
2709
2710ACPI Tables:
2711------------
2712
2713All new tables and updates to existing tables are fully supported in the
2714ACPICA headers (for use by device drivers), the disassembler, and the
2715iASL
2716Data Table Compiler. ACPI 5.0 defines these new tables:
2717
2718    BGRT        /* Boot Graphics Resource Table */
2719    DRTM        /* Dynamic Root of Trust for Measurement table */
2720    FPDT        /* Firmware Performance Data Table */
2721    GTDT        /* Generic Timer Description Table */
2722    MPST        /* Memory Power State Table */
2723    PCCT        /* Platform Communications Channel Table */
2724    PMTT        /* Platform Memory Topology Table */
2725    RASF        /* RAS Feature table */
2726
2727Operation Regions/SpaceIDs:
2728---------------------------
2729
2730All new operation regions are fully supported by the iASL compiler, the
2731disassembler, and the ACPICA runtime code (for dispatch to region
2732handlers.)
2733The new operation region Space IDs are:
2734
2735    GeneralPurposeIo
2736    GenericSerialBus
2737
2738Resource Descriptors:
2739---------------------
2740
2741All new ASL resource descriptors are fully supported by the iASL
2742compiler,
2743the
2744ASL/AML disassembler, and the ACPICA runtime Resource Manager code
2745(including
2746all new predefined resource tags). New descriptors are:
2747
2748    FixedDma
2749    GpioIo
2750    GpioInt
2751    I2cSerialBus
2752    SpiSerialBus
2753    UartSerialBus
2754
2755ASL/AML Operators, New and Modified:
2756------------------------------------
2757
2758One new operator is added, the Connection operator, which is used to
2759associate
2760a GeneralPurposeIo or GenericSerialBus resource descriptor with
2761individual
2762field objects within an operation region. Several new protocols are
2763associated
2764with the AccessAs operator. All are fully supported by the iASL compiler,
2765disassembler, and runtime ACPICA AML interpreter:
2766
2767    Connection                      // Declare Field Connection
2768attributes
2769    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2770    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
2771Protocol
2772    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2773    RawDataBuffer                       // Data type for Vendor Data
2774fields
2775
2776Predefined ASL/AML Objects:
2777---------------------------
2778
2779All new predefined objects/control-methods are supported by the iASL
2780compiler
2781and the ACPICA runtime validation/repair (arguments and return values.)
2782New
2783predefined names include the following:
2784
2785Standard Predefined Names (Objects or Control Methods):
2786    _AEI, _CLS, _CPC, _CWS, _DEP,
2787    _DLM, _EVT, _GCP, _CRT, _GWS,
2788    _HRV, _PRE, _PSE, _SRT, _SUB.
2789
2790Resource Tags (Names used to access individual fields within resource
2791descriptors):
2792    _DBT, _DPL, _DRS, _END, _FLC,
2793    _IOR, _LIN, _MOD, _PAR, _PHA,
2794    _PIN, _PPI, _POL, _RXL, _SLV,
2795    _SPE, _STB, _TXL, _VEN.
2796
2797ACPICA External Interfaces:
2798---------------------------
2799
2800Several new interfaces have been defined for use by ACPI-related device
2801drivers and other host OS services:
2802
2803AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
2804to
2805acquire and release AML mutexes that are defined in the DSDT/SSDT tables
2806provided by the BIOS. They are intended to be used in conjunction with
2807the
2808ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
2809mutual exclusion with the AML code/interpreter.
2810
2811AcpiGetEventResources: Returns the (formatted) resource descriptors as
2812defined
2813by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
2814provides
2815resource descriptors associated with hardware-reduced platform events,
2816similar
2817to the AcpiGetCurrentResources interface.
2818
2819Operation Region Handlers: For General Purpose IO and Generic Serial Bus
2820operation regions, information about the Connection() object and any
2821optional
2822length information is passed to the region handler within the Context
2823parameter.
2824
2825AcpiBufferToResource: This interface converts a raw AML buffer containing
2826a
2827resource template or resource descriptor to the ACPI_RESOURCE internal
2828format
2829suitable for use by device drivers. Can be used by an operation region
2830handler
2831to convert the Connection() buffer object into a ACPI_RESOURCE.
2832
2833Miscellaneous/Tools/TestSuites:
2834-------------------------------
2835
2836Support for extended _HID names (Four alpha characters instead of three).
2837Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
2838Support for ACPI 5.0 features in the ASLTS test suite.
2839Fully updated documentation (ACPICA and iASL reference documents.)
2840
2841ACPI Table Definition Language:
2842-------------------------------
2843
2844Support for this language was implemented and released as a subsystem of
2845the
2846iASL compiler in 2010. (See the iASL compiler User Guide.)
2847
2848
2849Non-ACPI 5.0 changes for this release:
2850--------------------------------------
2851
28521) ACPICA Core Subsystem:
2853
2854Fix a problem with operation region declarations where a failure can
2855occur
2856if
2857the region name and an argument that evaluates to an object (such as the
2858region address) are in different namespace scopes. Lin Ming, ACPICA BZ
2859937.
2860
2861Do not abort an ACPI table load if an invalid space ID is found within.
2862This
2863will be caught later if the offending method is executed. ACPICA BZ 925.
2864
2865Fixed an issue with the FFixedHW space ID where the ID was not always
2866recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
2867
2868Fixed a problem with the 32-bit generation of the unix-specific OSL
2869(osunixxf.c). Lin Ming, ACPICA BZ 936.
2870
2871Several changes made to enable generation with the GCC 4.6 compiler.
2872ACPICA BZ
2873935.
2874
2875New error messages: Unsupported I/O requests (not 8/16/32 bit), and
2876Index/Bank
2877field registers out-of-range.
2878
28792) iASL Compiler/Disassembler and Tools:
2880
2881iASL: Implemented the __PATH__ operator, which returns the full pathname
2882of
2883the current source file.
2884
2885AcpiHelp: Automatically display expanded keyword information for all ASL
2886operators.
2887
2888Debugger: Add "Template" command to disassemble/dump resource template
2889buffers.
2890
2891Added a new master script to generate and execute the ASLTS test suite.
2892Automatically handles 32- and 64-bit generation. See tests/aslts.sh
2893
2894iASL: Fix problem with listing generation during processing of the
2895Switch()
2896operator where AML listing was disabled until the entire Switch block was
2897completed.
2898
2899iASL: Improve support for semicolon statement terminators. Fix "invalid
2900character" message for some cases when the semicolon is used. Semicolons
2901are
2902now allowed after every <Term> grammar element. ACPICA BZ 927.
2903
2904iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
2905923.
2906
2907Disassembler: Fix problem with disassembly of the DataTableRegion
2908operator
2909where an inadvertent "Unhandled deferred opcode" message could be
2910generated.
2911
29123) Example Code and Data Size
2913
2914These are the sizes for the OS-independent acpica.lib produced by the
2915Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
2916includes the debug output trace mechanism and has a much larger code and
2917data
2918size.
2919
2920  Previous Release:
2921    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
2922    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
2923  Current Release:
2924    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2925    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2926
2927----------------------------------------
292822 September 2011. Summary of changes for version 20110922:
2929
29300) ACPI 5.0 News:
2931
2932Support for ACPI 5.0 in ACPICA has been underway for several months and
2933will
2934be released at the same time that ACPI 5.0 is officially released.
2935
2936The ACPI 5.0 specification is on track for release in the next few
2937months.
2938
29391) ACPICA Core Subsystem:
2940
2941Fixed a problem where the maximum sleep time for the Sleep() operator was
2942intended to be limited to two seconds, but was inadvertently limited to
294320
2944seconds instead.
2945
2946Linux and Unix makefiles: Added header file dependencies to ensure
2947correct
2948generation of ACPICA core code and utilities. Also simplified the
2949makefiles
2950considerably through the use of the vpath variable to specify search
2951paths.
2952ACPICA BZ 924.
2953
29542) iASL Compiler/Disassembler and Tools:
2955
2956iASL: Implemented support to check the access length for all fields
2957created to
2958access named Resource Descriptor fields. For example, if a resource field
2959is
2960defined to be two bits, a warning is issued if a CreateXxxxField() is
2961used
2962with an incorrect bit length. This is implemented for all current
2963resource
2964descriptor names. ACPICA BZ 930.
2965
2966Disassembler: Fixed a byte ordering problem with the output of 24-bit and
296756-
2968bit integers.
2969
2970iASL: Fixed a couple of issues associated with variable-length package
2971objects. 1) properly handle constants like One, Ones, Zero -- do not make
2972a
2973VAR_PACKAGE when these are used as a package length. 2) Allow the
2974VAR_PACKAGE
2975opcode (in addition to PACKAGE) when validating object types for
2976predefined
2977names.
2978
2979iASL: Emit statistics for all output files (instead of just the ASL input
2980and
2981AML output). Includes listings, hex files, etc.
2982
2983iASL: Added -G option to the table compiler to allow the compilation of
2984custom
2985ACPI tables. The only part of a table that is required is the standard
298636-
2987byte
2988ACPI header.
2989
2990AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
2991headers),
2992which also adds correct 64-bit support. Also, now all output filenames
2993are
2994completely lower case.
2995
2996AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
2997loading table files. A warning is issued for any such tables. The only
2998exception is an FADT. This also fixes a possible fault when attempting to
2999load
3000non-AML tables. ACPICA BZ 932.
3001
3002AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
3003a
3004missing table terminator could cause a fault when using the -p option.
3005
3006AcpiSrc: Fixed a possible divide-by-zero fault when generating file
3007statistics.
3008
30093) Example Code and Data Size
3010
3011These are the sizes for the OS-independent acpica.lib produced by the
3012Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3013includes the debug output trace mechanism and has a much larger code and
3014data
3015size.
3016
3017  Previous Release (VC 9.0):
3018    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3019    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3020  Current Release (VC 9.0):
3021    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3022    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3023
3024
3025----------------------------------------
302623 June 2011. Summary of changes for version 20110623:
3027
30281) ACPI CA Core Subsystem:
3029
3030Updated the predefined name repair mechanism to not attempt repair of a
3031_TSS
3032return object if a _PSS object is present. We can only sort the _TSS
3033return
3034package if there is no _PSS within the same scope. This is because if
3035_PSS
3036is
3037present, the ACPI specification dictates that the _TSS Power Dissipation
3038field
3039is to be ignored, and therefore some BIOSs leave garbage values in the
3040_TSS
3041Power field(s). In this case, it is best to just return the _TSS package
3042as-
3043is. Reported by, and fixed with assistance from Fenghua Yu.
3044
3045Added an option to globally disable the control method return value
3046validation
3047and repair. This runtime option can be used to disable return value
3048repair
3049if
3050this is causing a problem on a particular machine. Also added an option
3051to
3052AcpiExec (-dr) to set this disable flag.
3053
3054All makefiles and project files: Major changes to improve generation of
3055ACPICA
3056tools. ACPICA BZ 912:
3057    Reduce default optimization levels to improve compatibility
3058    For Linux, add strict-aliasing=0 for gcc 4
3059    Cleanup and simplify use of command line defines
3060    Cleanup multithread library support
3061    Improve usage messages
3062
3063Linux-specific header: update handling of THREAD_ID and pthread. For the
306432-
3065bit case, improve casting to eliminate possible warnings, especially with
3066the
3067acpica tools.
3068
3069Example Code and Data Size: These are the sizes for the OS-independent
3070acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3071debug
3072version of the code includes the debug output trace mechanism and has a
3073much
3074larger code and data size.
3075
3076  Previous Release (VC 9.0):
3077    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3078    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3079  Current Release (VC 9.0):
3080    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3081    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3082
30832) iASL Compiler/Disassembler and Tools:
3084
3085With this release, a new utility named "acpihelp" has been added to the
3086ACPICA
3087package. This utility summarizes the ACPI specification chapters for the
3088ASL
3089and AML languages. It generates under Linux/Unix as well as Windows, and
3090provides the following functionality:
3091    Find/display ASL operator(s) -- with description and syntax.
3092    Find/display ASL keyword(s) -- with exact spelling and descriptions.
3093    Find/display ACPI predefined name(s) -- with description, number
3094        of arguments, and the return value data type.
3095    Find/display AML opcode name(s) -- with opcode, arguments, and
3096grammar.
3097    Decode/display AML opcode -- with opcode name, arguments, and
3098grammar.
3099
3100Service Layers: Make multi-thread support configurable. Conditionally
3101compile
3102the multi-thread support so that threading libraries will not be linked
3103if
3104not
3105necessary. The only tool that requires multi-thread support is AcpiExec.
3106
3107iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
3108of
3109Bison appear to want the interface to yyerror to be a const char * (or at
3110least this is a problem when generating iASL on some systems.) ACPICA BZ
3111923
3112Pierre Lejeune.
3113
3114Tools: Fix for systems where O_BINARY is not defined. Only used for
3115Windows
3116versions of the tools.
3117
3118----------------------------------------
311927 May 2011. Summary of changes for version 20110527:
3120
31211) ACPI CA Core Subsystem:
3122
3123ASL Load() operator: Reinstate most restrictions on the incoming ACPI
3124table
3125signature. Now, only allow SSDT, OEMx, and a null signature. History:
3126    1) Originally, we checked the table signature for "SSDT" or "PSDT".
3127       (PSDT is now obsolete.)
3128    2) We added support for OEMx tables, signature "OEM" plus a fourth
3129       "don't care" character.
3130    3) Valid tables were encountered with a null signature, so we just
3131       gave up on validating the signature, (05/2008).
3132    4) We encountered non-AML tables such as the MADT, which caused
3133       interpreter errors and kernel faults. So now, we once again allow
3134       only SSDT, OEMx, and now, also a null signature. (05/2011).
3135
3136Added the missing _TDL predefined name to the global name list in order
3137to
3138enable validation. Affects both the core ACPICA code and the iASL
3139compiler.
3140
3141Example Code and Data Size: These are the sizes for the OS-independent
3142acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3143debug
3144version of the code includes the debug output trace mechanism and has a
3145much
3146larger code and data size.
3147
3148  Previous Release (VC 9.0):
3149    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3150    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3151  Current Release (VC 9.0):
3152    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3153    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3154
31552) iASL Compiler/Disassembler and Tools:
3156
3157Debugger/AcpiExec: Implemented support for "complex" method arguments on
3158the
3159debugger command line. This adds support beyond simple integers --
3160including
3161Strings, Buffers, and Packages. Includes support for nested packages.
3162Increased the default command line buffer size to accommodate these
3163arguments.
3164See the ACPICA reference for details and syntax. ACPICA BZ 917.
3165
3166Debugger/AcpiExec: Implemented support for "default" method arguments for
3167the
3168Execute/Debug command. Now, the debugger will always invoke a control
3169method
3170with the required number of arguments -- even if the command line
3171specifies
3172none or insufficient arguments. It uses default integer values for any
3173missing
3174arguments. Also fixes a bug where only six method arguments maximum were
3175supported instead of the required seven.
3176
3177Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
3178and
3179also return status in order to prevent buffer overruns. See the ACPICA
3180reference for details and syntax. ACPICA BZ 921
3181
3182iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
3183makefiles to simplify support for the two different but similar parser
3184generators, bison and yacc.
3185
3186Updated the generic unix makefile for gcc 4. The default gcc version is
3187now
3188expected to be 4 or greater, since options specific to gcc 4 are used.
3189
3190----------------------------------------
319113 April 2011. Summary of changes for version 20110413:
3192
31931) ACPI CA Core Subsystem:
3194
3195Implemented support to execute a so-called "orphan" _REG method under the
3196EC
3197device. This change will force the execution of a _REG method underneath
3198the
3199EC
3200device even if there is no corresponding operation region of type
3201EmbeddedControl. Fixes a problem seen on some machines and apparently is
3202compatible with Windows behavior. ACPICA BZ 875.
3203
3204Added more predefined methods that are eligible for automatic NULL
3205package
3206element removal. This change adds another group of predefined names to
3207the
3208list
3209of names that can be repaired by having NULL package elements dynamically
3210removed. This group are those methods that return a single variable-
3211length
3212package containing simple data types such as integers, buffers, strings.
3213This
3214includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
3215_PSL,
3216_Sx,
3217and _TZD. ACPICA BZ 914.
3218
3219Split and segregated all internal global lock functions to a new file,
3220evglock.c.
3221
3222Updated internal address SpaceID for DataTable regions. Moved this
3223internal
3224space
3225id in preparation for ACPI 5.0 changes that will include some new space
3226IDs.
3227This
3228change should not affect user/host code.
3229
3230Example Code and Data Size: These are the sizes for the OS-independent
3231acpica.lib
3232produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3233version of
3234the code includes the debug output trace mechanism and has a much larger
3235code
3236and
3237data size.
3238
3239  Previous Release (VC 9.0):
3240    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3241    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3242  Current Release (VC 9.0):
3243    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3244    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3245
32462) iASL Compiler/Disassembler and Tools:
3247
3248iASL/DTC: Major update for new grammar features. Allow generic data types
3249in
3250custom ACPI tables. Field names are now optional. Any line can be split
3251to
3252multiple lines using the continuation char (\). Large buffers now use
3253line-
3254continuation character(s) and no colon on the continuation lines. See the
3255grammar
3256update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
3257Moore.
3258
3259iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
3260statements.
3261Since the parser stuffs a "zero" as the return value for these statements
3262(due
3263to
3264the underlying AML grammar), they were seen as "return with value" by the
3265iASL
3266semantic checking. They are now seen correctly as "null" return
3267statements.
3268
3269iASL: Check if a_REG declaration has a corresponding Operation Region.
3270Adds a
3271check for each _REG to ensure that there is in fact a corresponding
3272operation
3273region declaration in the same scope. If not, the _REG method is not very
3274useful
3275since it probably won't be executed. ACPICA BZ 915.
3276
3277iASL/DTC: Finish support for expression evaluation. Added a new
3278expression
3279parser
3280that implements c-style operator precedence and parenthesization. ACPICA
3281bugzilla
3282908.
3283
3284Disassembler/DTC: Remove support for () and <> style comments in data
3285tables.
3286Now
3287that DTC has full expression support, we don't want to have comment
3288strings
3289that
3290start with a parentheses or a less-than symbol. Now, only the standard /*
3291and
3292//
3293comments are supported, as well as the bracket [] comments.
3294
3295AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
3296"unusual"
3297headers in the acpidump file. Update the header validation to support
3298these
3299tables. Problem introduced in previous AcpiXtract version in the change
3300to
3301support "wrong checksum" error messages emitted by acpidump utility.
3302
3303iASL: Add a * option to generate all template files (as a synonym for
3304ALL)
3305as
3306in
3307"iasl -T *" or "iasl -T ALL".
3308
3309iASL/DTC: Do not abort compiler on fatal errors. We do not want to
3310completely
3311abort the compiler on "fatal" errors, simply should abort the current
3312compile.
3313This allows multiple compiles with a single (possibly wildcard) compiler
3314invocation.
3315
3316----------------------------------------
331716 March 2011. Summary of changes for version 20110316:
3318
33191) ACPI CA Core Subsystem:
3320
3321Fixed a problem caused by a _PRW method appearing at the namespace root
3322scope
3323during the setup of wake GPEs. A fault could occur if a _PRW directly
3324under
3325the
3326root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3327
3328Implemented support for "spurious" Global Lock interrupts. On some
3329systems, a
3330global lock interrupt can occur without the pending flag being set. Upon
3331a
3332GL
3333interrupt, we now ensure that a thread is actually waiting for the lock
3334before
3335signaling GL availability. Rafael Wysocki, Bob Moore.
3336
3337Example Code and Data Size: These are the sizes for the OS-independent
3338acpica.lib
3339produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3340version of
3341the code includes the debug output trace mechanism and has a much larger
3342code
3343and
3344data size.
3345
3346  Previous Release (VC 9.0):
3347    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3348    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3349  Current Release (VC 9.0):
3350    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3351    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3352
33532) iASL Compiler/Disassembler and Tools:
3354
3355Implemented full support for the "SLIC" ACPI table. Includes support in
3356the
3357header files, disassembler, table compiler, and template generator. Bob
3358Moore,
3359Lin Ming.
3360
3361AcpiXtract: Correctly handle embedded comments and messages from
3362AcpiDump.
3363Apparently some or all versions of acpidump will occasionally emit a
3364comment
3365like
3366"Wrong checksum", etc., into the dump file. This was causing problems for
3367AcpiXtract. ACPICA BZ 905.
3368
3369iASL: Fix the Linux makefile by removing an inadvertent double file
3370inclusion.
3371ACPICA BZ 913.
3372
3373AcpiExec: Update installation of operation region handlers. Install one
3374handler
3375for a user-defined address space. This is used by the ASL test suite
3376(ASLTS).
3377
3378----------------------------------------
337911 February 2011. Summary of changes for version 20110211:
3380
33811) ACPI CA Core Subsystem:
3382
3383Added a mechanism to defer _REG methods for some early-installed
3384handlers.
3385Most user handlers should be installed before call to
3386AcpiEnableSubsystem.
3387However, Event handlers and region handlers should be installed after
3388AcpiInitializeObjects. Override handlers for the "default" regions should
3389be
3390installed early, however. This change executes all _REG methods for the
3391default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
3392chicken/egg issues between them. ACPICA BZ 848.
3393
3394Implemented an optimization for GPE detection. This optimization will
3395simply
3396ignore GPE registers that contain no enabled GPEs -- there is no need to
3397read the register since this information is available internally. This
3398becomes more important on machines with a large GPE space. ACPICA
3399bugzilla
3400884. Lin Ming. Suggestion from Joe Liu.
3401
3402Removed all use of the highly unreliable FADT revision field. The
3403revision
3404number in the FADT has been found to be completely unreliable and cannot
3405be
3406trusted. Only the actual table length can be used to infer the version.
3407This
3408change updates the ACPICA core and the disassembler so that both no
3409longer
3410even look at the FADT version and instead depend solely upon the FADT
3411length.
3412
3413Fix an unresolved name issue for the no-debug and no-error-message source
3414generation cases. The _AcpiModuleName was left undefined in these cases,
3415but
3416it is actually needed as a parameter to some interfaces. Define
3417_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3418
3419Split several large files (makefiles and project files updated)
3420  utglobal.c   -> utdecode.c
3421  dbcomds.c    -> dbmethod.c dbnames.c
3422  dsopcode.c   -> dsargs.c dscontrol.c
3423  dsload.c     -> dsload2.c
3424  aslanalyze.c -> aslbtypes.c aslwalks.c
3425
3426Example Code and Data Size: These are the sizes for the OS-independent
3427acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3428debug version of the code includes the debug output trace mechanism and
3429has
3430a much larger code and data size.
3431
3432  Previous Release (VC 9.0):
3433    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3434    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3435  Current Release (VC 9.0):
3436    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3437    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3438
34392) iASL Compiler/Disassembler and Tools:
3440
3441iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
3442These are useful C-style macros with the standard definitions. ACPICA
3443bugzilla 898.
3444
3445iASL/DTC: Added support for integer expressions and labels. Support for
3446full
3447expressions for all integer fields in all ACPI tables. Support for labels
3448in
3449"generic" portions of tables such as UEFI. See the iASL reference manual.
3450
3451Debugger: Added a command to display the status of global handlers. The
3452"handlers" command will display op region, fixed event, and miscellaneous
3453global handlers. installation status -- and for op regions, whether
3454default
3455or user-installed handler will be used.
3456
3457iASL: Warn if reserved method incorrectly returns a value. Many
3458predefined
3459names are defined such that they do not return a value. If implemented as
3460a
3461method, issue a warning if such a name explicitly returns a value. ACPICA
3462Bugzilla 855.
3463
3464iASL: Added detection of GPE method name conflicts. Detects a conflict
3465where
3466there are two GPE methods of the form _Lxy and _Exy in the same scope.
3467(For
3468example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3469
3470iASL/DTC: Fixed a couple input scanner issues with comments and line
3471numbers. Comment remover could get confused and miss a comment ending.
3472Fixed
3473a problem with line counter maintenance.
3474
3475iASL/DTC: Reduced the severity of some errors from fatal to error. There
3476is
3477no need to abort on simple errors within a field definition.
3478
3479Debugger: Simplified the output of the help command. All help output now
3480in
3481a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3482
3483----------------------------------------
348412 January 2011. Summary of changes for version 20110112:
3485
34861) ACPI CA Core Subsystem:
3487
3488Fixed a race condition between method execution and namespace walks that
3489can
3490possibly cause a fault. The problem was apparently introduced in version
349120100528 as a result of a performance optimization that reduces the
3492number
3493of
3494namespace walks upon method exit by using the delete_namespace_subtree
3495function instead of the delete_namespace_by_owner function used
3496previously.
3497Bug is a missing namespace lock in the delete_namespace_subtree function.
3498dana.myers@oracle.com
3499
3500Fixed several issues and a possible fault with the automatic "serialized"
3501method support. History: This support changes a method to "serialized" on
3502the
3503fly if the method generates an AE_ALREADY_EXISTS error, indicating the
3504possibility that it cannot handle reentrancy. This fix repairs a couple
3505of
3506issues seen in the field, especially on machines with many cores:
3507
3508    1) Delete method children only upon the exit of the last thread,
3509       so as to not delete objects out from under other running threads
3510      (and possibly causing a fault.)
3511    2) Set the "serialized" bit for the method only upon the exit of the
3512       Last thread, so as to not cause deadlock when running threads
3513       attempt to exit.
3514    3) Cleanup the use of the AML "MethodFlags" and internal method flags
3515       so that there is no longer any confusion between the two.
3516
3517    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3518
3519Debugger: Now lock the namespace for duration of a namespace dump.
3520Prevents
3521issues if the namespace is changing dynamically underneath the debugger.
3522Especially affects temporary namespace nodes, since the debugger displays
3523these also.
3524
3525Updated the ordering of include files. The ACPICA headers should appear
3526before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
3527set
3528any necessary compiler-specific defines, etc. Affects the ACPI-related
3529tools
3530and utilities.
3531
3532Updated all ACPICA copyrights and signons to 2011. Added the 2011
3533copyright
3534to all module headers and signons, including the Linux header. This
3535affects
3536virtually every file in the ACPICA core subsystem, iASL compiler, and all
3537utilities.
3538
3539Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
3540project files for VC++ 6.0 are now obsolete. New project files can be
3541found
3542under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
3543details.
3544
3545Example Code and Data Size: These are the sizes for the OS-independent
3546acpica.lib produced by the Microsoft Visual C++ 9.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 (VC 6.0):
3552    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3553    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3554  Current Release (VC 9.0):
3555    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3556    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3557
35582) iASL Compiler/Disassembler and Tools:
3559
3560iASL: Added generic data types to the Data Table compiler. Add "generic"
3561data
3562types such as UINT32, String, Unicode, etc., to simplify the generation
3563of
3564platform-defined tables such as UEFI. Lin Ming.
3565
3566iASL: Added listing support for the Data Table Compiler. Adds listing
3567support
3568(-l) to display actual binary output for each line of input code.
3569
3570----------------------------------------
357109 December 2010. Summary of changes for version 20101209:
3572
35731) ACPI CA Core Subsystem:
3574
3575Completed the major overhaul of the GPE support code that was begun in
3576July
35772010. Major features include: removal of _PRW execution in ACPICA (host
3578executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
3579changes to existing interfaces, simplification of GPE handler operation,
3580and
3581a handful of new interfaces:
3582
3583    AcpiUpdateAllGpes
3584    AcpiFinishGpe
3585    AcpiSetupGpeForWake
3586    AcpiSetGpeWakeMask
3587    One new file, evxfgpe.c to consolidate all external GPE interfaces.
3588
3589See the ACPICA Programmer Reference for full details and programming
3590information. See the new section 4.4 "General Purpose Event (GPE)
3591Support"
3592for a full overview, and section 8.7 "ACPI General Purpose Event
3593Management"
3594for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
3595Ming,
3596Bob Moore, Rafael Wysocki.
3597
3598Implemented a new GPE feature for Windows compatibility, the "Implicit
3599Wake
3600GPE Notify". This feature will automatically issue a Notify(2) on a
3601device
3602when a Wake GPE is received if there is no corresponding GPE method or
3603handler. ACPICA BZ 870.
3604
3605Fixed a problem with the Scope() operator during table parse and load
3606phase.
3607During load phase (table load or method execution), the scope operator
3608should
3609not enter the target into the namespace. Instead, it should open a new
3610scope
3611at the target location. Linux BZ 19462, ACPICA BZ 882.
3612
3613Example Code and Data Size: These are the sizes for the OS-independent
3614acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3615debug version of the code includes the debug output trace mechanism and
3616has a
3617much larger code and data size.
3618
3619  Previous Release:
3620    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3621    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3622  Current Release:
3623    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3624    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3625
36262) iASL Compiler/Disassembler and Tools:
3627
3628iASL: Relax the alphanumeric restriction on _CID strings. These strings
3629are
3630"bus-specific" per the ACPI specification, and therefore any characters
3631are
3632acceptable. The only checks that can be performed are for a null string
3633and
3634perhaps for a leading asterisk. ACPICA BZ 886.
3635
3636iASL: Fixed a problem where a syntax error that caused a premature EOF
3637condition on the source file emitted a very confusing error message. The
3638premature EOF is now detected correctly. ACPICA BZ 891.
3639
3640Disassembler: Decode the AccessSize within a Generic Address Structure
3641(byte
3642access, word access, etc.) Note, this field does not allow arbitrary bit
3643access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3644
3645New: AcpiNames utility - Example namespace dump utility. Shows an example
3646of
3647ACPICA configuration for a minimal namespace dump utility. Uses table and
3648namespace managers, but no AML interpreter. Does not add any
3649functionality
3650over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
3651partition and configure ACPICA. ACPICA BZ 883.
3652
3653AML Debugger: Increased the debugger buffer size for method return
3654objects.
3655Was 4K, increased to 16K. Also enhanced error messages for debugger
3656method
3657execution, including the buffer overflow case.
3658
3659----------------------------------------
366013 October 2010. Summary of changes for version 20101013:
3661
36621) ACPI CA Core Subsystem:
3663
3664Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
3665now
3666clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
3667HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3668
3669Changed the type of the predefined namespace object _TZ from ThermalZone
3670to
3671Device. This was found to be confusing to the host software that
3672processes
3673the various thermal zones, since _TZ is not really a ThermalZone.
3674However,
3675a
3676Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
3677Zhang.
3678
3679Added Windows Vista SP2 to the list of supported _OSI strings. The actual
3680string is "Windows 2006 SP2".
3681
3682Eliminated duplicate code in AcpiUtExecute* functions. Now that the
3683nsrepair
3684code automatically repairs _HID-related strings, this type of code is no
3685longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
3686878.
3687
3688Example Code and Data Size: These are the sizes for the OS-independent
3689acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3690debug version of the code includes the debug output trace mechanism and
3691has a
3692much larger code and data size.
3693
3694  Previous Release:
3695    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3696    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3697  Current Release:
3698    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3699    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3700
37012) iASL Compiler/Disassembler and Tools:
3702
3703iASL: Implemented additional compile-time validation for _HID strings.
3704The
3705non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
3706length
3707of
3708the string must be exactly seven or eight characters. For both _HID and
3709_CID
3710strings, all characters must be alphanumeric. ACPICA BZ 874.
3711
3712iASL: Allow certain "null" resource descriptors. Some BIOS code creates
3713descriptors that are mostly or all zeros, with the expectation that they
3714will
3715be filled in at runtime. iASL now allows this as long as there is a
3716"resource
3717tag" (name) associated with the descriptor, which gives the ASL a handle
3718needed to modify the descriptor. ACPICA BZ 873.
3719
3720Added single-thread support to the generic Unix application OSL.
3721Primarily
3722for iASL support, this change removes the use of semaphores in the
3723single-
3724threaded ACPICA tools/applications - increasing performance. The
3725_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
3726option. ACPICA BZ 879.
3727
3728AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
3729support
3730for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3731
3732iASL: Moved all compiler messages to a new file, aslmessages.h.
3733
3734----------------------------------------
373515 September 2010. Summary of changes for version 20100915:
3736
37371) ACPI CA Core Subsystem:
3738
3739Removed the AcpiOsDerivePciId OSL interface. The various host
3740implementations
3741of this function were not OS-dependent and are now obsolete and can be
3742removed from all host OSLs. This function has been replaced by
3743AcpiHwDerivePciId, which is now part of the ACPICA core code.
3744AcpiHwDerivePciId has been implemented without recursion. Adds one new
3745module, hwpci.c. ACPICA BZ 857.
3746
3747Implemented a dynamic repair for _HID and _CID strings. The following
3748problems are now repaired at runtime: 1) Remove a leading asterisk in the
3749string, and 2) the entire string is uppercased. Both repairs are in
3750accordance with the ACPI specification and will simplify host driver
3751code.
3752ACPICA BZ 871.
3753
3754The ACPI_THREAD_ID type is no longer configurable, internally it is now
3755always UINT64. This simplifies the ACPICA code, especially any printf
3756output.
3757UINT64 is the only common data type for all thread_id types across all
3758operating systems. It is now up to the host OSL to cast the native
3759thread_id
3760type to UINT64 before returning the value to ACPICA (via
3761AcpiOsGetThreadId).
3762Lin Ming, Bob Moore.
3763
3764Added the ACPI_INLINE type to enhance the ACPICA configuration. The
3765"inline"
3766keyword is not standard across compilers, and this type allows inline to
3767be
3768configured on a per-compiler basis. Lin Ming.
3769
3770Made the system global AcpiGbl_SystemAwakeAndRunning publically
3771available.
3772Added an extern for this boolean in acpixf.h. Some hosts utilize this
3773value
3774during suspend/restore operations. ACPICA BZ 869.
3775
3776All code that implements error/warning messages with the "ACPI:" prefix
3777has
3778been moved to a new module, utxferror.c.
3779
3780The UINT64_OVERLAY was moved to utmath.c, which is the only module where
3781it
3782is used. ACPICA BZ 829. Lin Ming, Bob Moore.
3783
3784Example Code and Data Size: These are the sizes for the OS-independent
3785acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3786debug version of the code includes the debug output trace mechanism and
3787has a
3788much larger code and data size.
3789
3790  Previous Release:
3791    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3792    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3793  Current Release:
3794    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3795    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3796
37972) iASL Compiler/Disassembler and Tools:
3798
3799iASL/Disassembler: Write ACPI errors to stderr instead of the output
3800file.
3801This keeps the output files free of random error messages that may
3802originate
3803from within the namespace/interpreter code. Used this opportunity to
3804merge
3805all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
3806866. Lin Ming, Bob Moore.
3807
3808Tools: update some printfs for ansi warnings on size_t. Handle width
3809change
3810of size_t on 32-bit versus 64-bit generations. Lin Ming.
3811
3812----------------------------------------
381306 August 2010. Summary of changes for version 20100806:
3814
38151) ACPI CA Core Subsystem:
3816
3817Designed and implemented a new host interface to the _OSI support code.
3818This
3819will allow the host to dynamically add or remove multiple _OSI strings,
3820as
3821well as install an optional handler that is called for each _OSI
3822invocation.
3823Also added a new AML debugger command, 'osi' to display and modify the
3824global
3825_OSI string table, and test support in the AcpiExec utility. See the
3826ACPICA
3827reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
3828New Functions:
3829    AcpiInstallInterface - Add an _OSI string.
3830    AcpiRemoveInterface - Delete an _OSI string.
3831    AcpiInstallInterfaceHandler - Install optional _OSI handler.
3832Obsolete Functions:
3833    AcpiOsValidateInterface - no longer used.
3834New Files:
3835    source/components/utilities/utosi.c
3836
3837Re-introduced the support to enable multi-byte transfers for Embedded
3838Controller (EC) operation regions. A reported problem was found to be a
3839bug
3840in the host OS, not in the multi-byte support. Previously, the maximum
3841data
3842size passed to the EC operation region handler was a single byte. There
3843are
3844often EC Fields larger than one byte that need to be transferred, and it
3845is
3846useful for the EC driver to lock these as a single transaction. This
3847change
3848enables single transfers larger than 8 bits. This effectively changes the
3849access to the EC space from ByteAcc to AnyAcc, and will probably require
3850changes to the host OS Embedded Controller driver to enable 16/32/64/256-
3851bit
3852transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
3853
3854Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
3855prototype in acpiosxf.h had the output value pointer as a (void *).
3856It should be a (UINT64 *). This may affect some host OSL code.
3857
3858Fixed a couple problems with the recently modified Linux makefiles for
3859iASL
3860and AcpiExec. These new makefiles place the generated object files in the
3861local directory so that there can be no collisions between the files that
3862are
3863shared between them that are compiled with different options.
3864
3865Example Code and Data Size: These are the sizes for the OS-independent
3866acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3867debug version of the code includes the debug output trace mechanism and
3868has a
3869much larger code and data size.
3870
3871  Previous Release:
3872    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3873    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3874  Current Release:
3875    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
3876    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
3877
38782) iASL Compiler/Disassembler and Tools:
3879
3880iASL/Disassembler: Added a new option (-da, "disassemble all") to load
3881the
3882namespace from and disassemble an entire group of AML files. Useful for
3883loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
3884and
3885disassembling with one simple command. ACPICA BZ 865. Lin Ming.
3886
3887iASL: Allow multiple invocations of -e option. This change allows
3888multiple
3889uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
3890834.
3891Lin Ming.
3892
3893----------------------------------------
389402 July 2010. Summary of changes for version 20100702:
3895
38961) ACPI CA Core Subsystem:
3897
3898Implemented several updates to the recently added GPE reference count
3899support. The model for "wake" GPEs is changing to give the host OS
3900complete
3901control of these GPEs. Eventually, the ACPICA core will not execute any
3902_PRW
3903methods, since the host already must execute them. Also, additional
3904changes
3905were made to help ensure that the reference counts are kept in proper
3906synchronization with reality. Rafael J. Wysocki.
3907
39081) Ensure that GPEs are not enabled twice during initialization.
39092) Ensure that GPE enable masks stay in sync with the reference count.
39103) Do not inadvertently enable GPEs when writing GPE registers.
39114) Remove the internal wake reference counter and add new AcpiGpeWakeup
3912interface. This interface will set or clear individual GPEs for wakeup.
39135) Remove GpeType argument from AcpiEnable and AcpiDisable. These
3914interfaces
3915are now used for "runtime" GPEs only.
3916
3917Changed the behavior of the GPE install/remove handler interfaces. The
3918GPE
3919is
3920no longer disabled during this process, as it was found to cause problems
3921on
3922some machines. Rafael J. Wysocki.
3923
3924Reverted a change introduced in version 20100528 to enable Embedded
3925Controller multi-byte transfers. This change was found to cause problems
3926with
3927Index Fields and possibly Bank Fields. It will be reintroduced when these
3928problems have been resolved.
3929
3930Fixed a problem with references to Alias objects within Package Objects.
3931A
3932reference to an Alias within the definition of a Package was not always
3933resolved properly. Aliases to objects like Processors, Thermal zones,
3934etc.
3935were resolved to the actual object instead of a reference to the object
3936as
3937it
3938should be. Package objects are only allowed to contain integer, string,
3939buffer, package, and reference objects. Redhat bugzilla 608648.
3940
3941Example Code and Data Size: These are the sizes for the OS-independent
3942acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3943debug version of the code includes the debug output trace mechanism and
3944has a
3945much larger code and data size.
3946
3947  Previous Release:
3948    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3949    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
3950  Current Release:
3951    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
3952    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
3953
39542) iASL Compiler/Disassembler and Tools:
3955
3956iASL: Implemented a new compiler subsystem to allow definition and
3957compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
3958These
3959are called "ACPI Data Tables", and the new compiler is the "Data Table
3960Compiler". This compiler is intended to simplify the existing error-prone
3961process of creating these tables for the BIOS, as well as allowing the
3962disassembly, modification, recompilation, and override of existing ACPI
3963data
3964tables. See the iASL User Guide for detailed information.
3965
3966iASL: Implemented a new Template Generator option in support of the new
3967Data
3968Table Compiler. This option will create examples of all known ACPI tables
3969that can be used as the basis for table development. See the iASL
3970documentation and the -T option.
3971
3972Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
3973Descriptor Table).
3974
3975Updated the Linux makefiles for iASL and AcpiExec to place the generated
3976object files in the local directory so that there can be no collisions
3977between the shared files between them that are generated with different
3978options.
3979
3980Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
3981Use
3982the #define __APPLE__ to enable this support.
3983
3984----------------------------------------
398528 May 2010. Summary of changes for version 20100528:
3986
3987Note: The ACPI 4.0a specification was released on April 5, 2010 and is
3988available at www.acpi.info. This is primarily an errata release.
3989
39901) ACPI CA Core Subsystem:
3991
3992Undefined ACPI tables: We are looking for the definitions for the
3993following
3994ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
3995
3996Implemented support to enable multi-byte transfers for Embedded
3997Controller
3998(EC) operation regions. Previously, the maximum data size passed to the
3999EC
4000operation region handler was a single byte. There are often EC Fields
4001larger
4002than one byte that need to be transferred, and it is useful for the EC
4003driver
4004to lock these as a single transaction. This change enables single
4005transfers
4006larger than 8 bits. This effectively changes the access to the EC space
4007from
4008ByteAcc to AnyAcc, and will probably require changes to the host OS
4009Embedded
4010Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
4011bit
4012transfers. Alexey Starikovskiy, Lin Ming
4013
4014Implemented a performance enhancement for namespace search and access.
4015This
4016change enhances the performance of namespace searches and walks by adding
4017a
4018backpointer to the parent in each namespace node. On large namespaces,
4019this
4020change can improve overall ACPI performance by up to 9X. Adding a pointer
4021to
4022each namespace node increases the overall size of the internal namespace
4023by
4024about 5%, since each namespace entry usually consists of both a namespace
4025node and an ACPI operand object. However, this is the first growth of the
4026namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
4027
4028Implemented a performance optimization that reduces the number of
4029namespace
4030walks. On control method exit, only walk the namespace if the method is
4031known
4032to have created namespace objects outside of its local scope. Previously,
4033the
4034entire namespace was traversed on each control method exit. This change
4035can
4036improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
4037Moore.
4038
4039Added support to truncate I/O addresses to 16 bits for Windows
4040compatibility.
4041Some ASL code has been seen in the field that inadvertently has bits set
4042above bit 15. This feature is optional and is enabled if the BIOS
4043requests
4044any Windows OSI strings. It can also be enabled by the host OS. Matthew
4045Garrett, Bob Moore.
4046
4047Added support to limit the maximum time for the ASL Sleep() operator. To
4048prevent accidental deep sleeps, limit the maximum time that Sleep() will
4049actually sleep. Configurable, the default maximum is two seconds. ACPICA
4050bugzilla 854.
4051
4052Added run-time validation support for the _WDG and_WED Microsoft
4053predefined
4054methods. These objects are defined by "Windows Instrumentation", and are
4055not
4056part of the ACPI spec. ACPICA BZ 860.
4057
4058Expanded all statistic counters used during namespace and device
4059initialization from 16 to 32 bits in order to support very large
4060namespaces.
4061
4062Replaced all instances of %d in printf format specifiers with %u since
4063nearly
4064all integers in ACPICA are unsigned.
4065
4066Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
4067returned
4068as AE_NO_HANDLER.
4069
4070Example Code and Data Size: These are the sizes for the OS-independent
4071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4072debug version of the code includes the debug output trace mechanism and
4073has a
4074much larger code and data size.
4075
4076  Previous Release:
4077    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4078    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4079  Current Release:
4080    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4081    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4082
40832) iASL Compiler/Disassembler and Tools:
4084
4085iASL: Added compiler support for the _WDG and_WED Microsoft predefined
4086methods. These objects are defined by "Windows Instrumentation", and are
4087not
4088part of the ACPI spec. ACPICA BZ 860.
4089
4090AcpiExec: added option to disable the memory tracking mechanism. The -dt
4091option will disable the tracking mechanism, which improves performance
4092considerably.
4093
4094AcpiExec: Restructured the command line options into -d (disable) and -e
4095(enable) options.
4096
4097----------------------------------------
409828 April 2010. Summary of changes for version 20100428:
4099
41001) ACPI CA Core Subsystem:
4101
4102Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
4103including FADT-based and GPE Block Devices, execute any _PRW methods in
4104the
4105new table, and process any _Lxx/_Exx GPE methods in the new table. Any
4106runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
4107immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
4108Devices. Provides compatibility with other ACPI implementations. Two new
4109files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
4110Moore.
4111
4112Fixed a regression introduced in version 20100331 within the table
4113manager
4114where initial table loading could fail. This was introduced in the fix
4115for
4116AcpiReallocateRootTable. Also, renamed some of fields in the table
4117manager
4118data structures to clarify their meaning and use.
4119
4120Fixed a possible allocation overrun during internal object copy in
4121AcpiUtCopySimpleObject. The original code did not correctly handle the
4122case
4123where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
4124847.
4125
4126Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
4127possible access beyond end-of-allocation. Also, now fully validate
4128descriptor
4129(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
4130
4131Example Code and Data Size: These are the sizes for the OS-independent
4132acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4133debug version of the code includes the debug output trace mechanism and
4134has a
4135much larger code and data size.
4136
4137  Previous Release:
4138    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4139    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4140  Current Release:
4141    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4142    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4143
41442) iASL Compiler/Disassembler and Tools:
4145
4146iASL: Implemented Min/Max/Len/Gran validation for address resource
4147descriptors. This change implements validation for the address fields
4148that
4149are common to all address-type resource descriptors. These checks are
4150implemented: Checks for valid Min/Max, length within the Min/Max window,
4151valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
4152per
4153table 6-40 in the ACPI 4.0a specification. Also split the large
4154aslrestype1.c
4155and aslrestype2.c files into five new files. ACPICA BZ 840.
4156
4157iASL: Added support for the _Wxx predefined names. This support was
4158missing
4159and these names were not recognized by the compiler as valid predefined
4160names. ACPICA BZ 851.
4161
4162iASL: Added an error for all predefined names that are defined to return
4163no
4164value and thus must be implemented as Control Methods. These include all
4165of
4166the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
4167names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4168
4169iASL: Implemented the -ts option to emit hex AML data in ASL format, as
4170an
4171ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
4172be
4173dynamically loaded via the Load() operator. Also cleaned up output for
4174the
4175-
4176ta and -tc options. ACPICA BZ 853.
4177
4178Tests: Added a new file with examples of extended iASL error checking.
4179Demonstrates the advanced error checking ability of the iASL compiler.
4180Available at tests/misc/badcode.asl.
4181
4182----------------------------------------
418331 March 2010. Summary of changes for version 20100331:
4184
41851) ACPI CA Core Subsystem:
4186
4187Completed a major update for the GPE support in order to improve support
4188for
4189shared GPEs and to simplify both host OS and ACPICA code. Added a
4190reference
4191count mechanism to support shared GPEs that require multiple device
4192drivers.
4193Several external interfaces have changed. One external interface has been
4194removed. One new external interface was added. Most of the GPE external
4195interfaces now use the GPE spinlock instead of the events mutex (and the
4196Flags parameter for many GPE interfaces has been removed.) See the
4197updated
4198ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
4199Rafael
4200Wysocki. ACPICA BZ 831.
4201
4202Changed:
4203    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
4204Removed:
4205    AcpiSetGpeType
4206New:
4207    AcpiSetGpe
4208
4209Implemented write support for DataTable operation regions. These regions
4210are
4211defined via the DataTableRegion() operator. Previously, only read support
4212was
4213implemented. The ACPI specification allows DataTableRegions to be
4214read/write,
4215however.
4216
4217Implemented a new subsystem option to force a copy of the DSDT to local
4218memory. Optionally copy the entire DSDT to local memory (instead of
4219simply
4220mapping it.) There are some (albeit very rare) BIOSs that corrupt or
4221replace
4222the original DSDT, creating the need for this option. Default is FALSE,
4223do
4224not copy the DSDT.
4225
4226Implemented detection of a corrupted or replaced DSDT. This change adds
4227support to detect a DSDT that has been corrupted and/or replaced from
4228outside
4229the OS (by firmware). This is typically catastrophic for the system, but
4230has
4231been seen on some machines. Once this problem has been detected, the DSDT
4232copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4233
4234Fixed two problems with AcpiReallocateRootTable during the root table
4235copy.
4236When copying the root table to the new allocation, the length used was
4237incorrect. The new size was used instead of the current table size,
4238meaning
4239too much data was copied. Also, the count of available slots for ACPI
4240tables
4241was not set correctly. Alexey Starikovskiy, Bob Moore.
4242
4243Example Code and Data Size: These are the sizes for the OS-independent
4244acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4245debug version of the code includes the debug output trace mechanism and
4246has a
4247much larger code and data size.
4248
4249  Previous Release:
4250    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4251    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4252  Current Release:
4253    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4254    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4255
42562) iASL Compiler/Disassembler and Tools:
4257
4258iASL: Implement limited typechecking for values returned from predefined
4259control methods. The type of any returned static (unnamed) object is now
4260validated. For example, Return(1). ACPICA BZ 786.
4261
4262iASL: Fixed a predefined name object verification regression. Fixes a
4263problem
4264introduced in version 20100304. An error is incorrectly generated if a
4265predefined name is declared as a static named object with a value defined
4266using the keywords "Zero", "One", or "Ones". Lin Ming.
4267
4268iASL: Added Windows 7 support for the -g option (get local ACPI tables)
4269by
4270reducing the requested registry access rights. ACPICA BZ 842.
4271
4272Disassembler: fixed a possible fault when generating External()
4273statements.
4274Introduced in commit ae7d6fd: Properly handle externals with parent-
4275prefix
4276(carat). Fixes a string length allocation calculation. Lin Ming.
4277
4278----------------------------------------
427904 March 2010. Summary of changes for version 20100304:
4280
42811) ACPI CA Core Subsystem:
4282
4283Fixed a possible problem with the AML Mutex handling function
4284AcpiExReleaseMutex where the function could fault under the very rare
4285condition when the interpreter has blocked, the interpreter lock is
4286released,
4287the interpreter is then reentered via the same thread, and attempts to
4288acquire an AML mutex that was previously acquired. FreeBSD report 140979.
4289Lin
4290Ming.
4291
4292Implemented additional configuration support for the AML "Debug Object".
4293Output from the debug object can now be enabled via a global variable,
4294AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
4295debugging.
4296This debug output is now available in the release version of ACPICA
4297instead
4298of just the debug version. Also, the entire debug output module can now
4299be
4300configured out of the ACPICA build if desired. One new file added,
4301executer/exdebug.c. Lin Ming, Bob Moore.
4302
4303Added header support for the ACPI MCHI table (Management Controller Host
4304Interface Table). This table was added in ACPI 4.0, but the defining
4305document
4306has only recently become available.
4307
4308Standardized output of integer values for ACPICA warnings/errors. Always
4309use
43100x prefix for hex output, always use %u for unsigned integer decimal
4311output.
4312Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
4313400
4314invocations.) These invocations were converted from the original
4315ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4316
4317Example Code and Data Size: These are the sizes for the OS-independent
4318acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4319debug version of the code includes the debug output trace mechanism and
4320has a
4321much larger code and data size.
4322
4323  Previous Release:
4324    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4325    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4326  Current Release:
4327    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4328    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4329
43302) iASL Compiler/Disassembler and Tools:
4331
4332iASL: Implemented typechecking support for static (non-control method)
4333predefined named objects that are declared with the Name() operator. For
4334example, the type of this object is now validated to be of type Integer:
4335Name(_BBN, 1). This change migrates the compiler to using the core
4336predefined
4337name table instead of maintaining a local version. Added a new file,
4338aslpredef.c. ACPICA BZ 832.
4339
4340Disassembler: Added support for the ACPI 4.0 MCHI table.
4341
4342----------------------------------------
434321 January 2010. Summary of changes for version 20100121:
4344
43451) ACPI CA Core Subsystem:
4346
4347Added the 2010 copyright to all module headers and signons. This affects
4348virtually every file in the ACPICA core subsystem, the iASL compiler, the
4349tools/utilities, and the test suites.
4350
4351Implemented a change to the AcpiGetDevices interface to eliminate
4352unnecessary
4353invocations of the _STA method. In the case where a specific _HID is
4354requested, do not run _STA until a _HID match is found. This eliminates
4355potentially dozens of _STA calls during a search for a particular
4356device/HID,
4357which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4358
4359Implemented an additional repair for predefined method return values.
4360Attempt
4361to repair unexpected NULL elements within returned Package objects.
4362Create
4363an
4364Integer of value zero, a NULL String, or a zero-length Buffer as
4365appropriate.
4366ACPICA BZ 818. Lin Ming, Bob Moore.
4367
4368Removed the obsolete ACPI_INTEGER data type. This type was introduced as
4369the
4370code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
4371(with
437264-bit AML integers). It is now obsolete and this change removes it from
4373the
4374ACPICA code base, replaced by UINT64. The original typedef has been
4375retained
4376for now for compatibility with existing device driver code. ACPICA BZ
4377824.
4378
4379Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
4380in
4381the parse tree object.
4382
4383Added additional warning options for the gcc-4 generation. Updated the
4384source
4385accordingly. This includes some code restructuring to eliminate
4386unreachable
4387code, elimination of some gotos, elimination of unused return values,
4388some
4389additional casting, and removal of redundant declarations.
4390
4391Example Code and Data Size: These are the sizes for the OS-independent
4392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4393debug version of the code includes the debug output trace mechanism and
4394has a
4395much larger code and data size.
4396
4397  Previous Release:
4398    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4399    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4400  Current Release:
4401    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4402    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4403
44042) iASL Compiler/Disassembler and Tools:
4405
4406No functional changes for this release.
4407
4408----------------------------------------
440914 December 2009. Summary of changes for version 20091214:
4410
44111) ACPI CA Core Subsystem:
4412
4413Enhanced automatic data type conversions for predefined name repairs.
4414This
4415change expands the automatic repairs/conversions for predefined name
4416return
4417values to make Integers, Strings, and Buffers fully interchangeable.
4418Also,
4419a
4420Buffer can be converted to a Package of Integers if necessary. The
4421nsrepair.c
4422module was completely restructured. Lin Ming, Bob Moore.
4423
4424Implemented automatic removal of null package elements during predefined
4425name
4426repairs. This change will automatically remove embedded and trailing NULL
4427package elements from returned package objects that are defined to
4428contain
4429a
4430variable number of sub-packages. The driver is then presented with a
4431package
4432with no null elements to deal with. ACPICA BZ 819.
4433
4434Implemented a repair for the predefined _FDE and _GTM names. The expected
4435return value for both names is a Buffer of 5 DWORDs. This repair fixes
4436two
4437possible problems (both seen in the field), where a package of integers
4438is
4439returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
4440Kim.
4441
4442Implemented additional module-level code support. This change will
4443properly
4444execute module-level code that is not at the root of the namespace (under
4445a
4446Device object, etc.). Now executes the code within the current scope
4447instead
4448of the root. ACPICA BZ 762. Lin Ming.
4449
4450Fixed possible mutex acquisition errors when running _REG methods. Fixes
4451a
4452problem where mutex errors can occur when running a _REG method that is
4453in
4454the same scope as a method-defined operation region or an operation
4455region
4456under a module-level IF block. This type of code is rare, so the problem
4457has
4458not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4459
4460Fixed a possible memory leak during module-level code execution. An
4461object
4462could be leaked for each block of executed module-level code if the
4463interpreter slack mode is enabled This change deletes any implicitly
4464returned
4465object from the module-level code block. Lin Ming.
4466
4467Removed messages for successful predefined repair(s). The repair
4468mechanism
4469was considered too wordy. Now, messages are only unconditionally emitted
4470if
4471the return object cannot be repaired. Existing messages for successful
4472repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
4473827.
4474
4475Example Code and Data Size: These are the sizes for the OS-independent
4476acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4477debug version of the code includes the debug output trace mechanism and
4478has a
4479much larger code and data size.
4480
4481  Previous Release:
4482    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4483    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4484  Current Release:
4485    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4486    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4487
44882) iASL Compiler/Disassembler and Tools:
4489
4490iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
4491files
4492were no longer automatically removed at the termination of the compile.
4493
4494acpiexec: Implemented the -f option to specify default region fill value.
4495This option specifies the value used to initialize buffers that simulate
4496operation regions. Default value is zero. Useful for debugging problems
4497that
4498depend on a specific initial value for a region or field.
4499
4500----------------------------------------
450112 November 2009. Summary of changes for version 20091112:
4502
45031) ACPI CA Core Subsystem:
4504
4505Implemented a post-order callback to AcpiWalkNamespace. The existing
4506interface only has a pre-order callback. This change adds an additional
4507parameter for a post-order callback which will be more useful for bus
4508scans.
4509ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4510
4511Modified the behavior of the operation region memory mapping cache for
4512SystemMemory. Ensure that the memory mappings created for operation
4513regions
4514do not cross 4K page boundaries. Crossing a page boundary while mapping
4515regions can cause kernel warnings on some hosts if the pages have
4516different
4517attributes. Such regions are probably BIOS bugs, and this is the
4518workaround.
4519Linux BZ 14445. Lin Ming.
4520
4521Implemented an automatic repair for predefined methods that must return
4522sorted lists. This change will repair (by sorting) packages returned by
4523_ALR,
4524_PSS, and _TSS. Drivers can now assume that the packages are correctly
4525sorted
4526and do not contain NULL package elements. Adds one new file,
4527namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4528
4529Fixed a possible fault during predefined name validation if a return
4530Package
4531object contains NULL elements. Also adds a warning if a NULL element is
4532followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
4533may
4534include repair or removal of all such NULL elements where possible.
4535
4536Implemented additional module-level executable AML code support. This
4537change
4538will execute module-level code that is not at the root of the namespace
4539(under a Device object, etc.) at table load time. Module-level executable
4540AML
4541code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4542
4543Implemented a new internal function to create Integer objects. This
4544function
4545simplifies miscellaneous object creation code. ACPICA BZ 823.
4546
4547Reduced the severity of predefined repair messages, Warning to Info.
4548Since
4549the object was successfully repaired, a warning is too severe. Reduced to
4550an
4551info message for now. These messages may eventually be changed to debug-
4552only.
4553ACPICA BZ 812.
4554
4555Example Code and Data Size: These are the sizes for the OS-independent
4556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4557debug version of the code includes the debug output trace mechanism and
4558has a
4559much larger code and data size.
4560
4561  Previous Release:
4562    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4563    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4564  Current Release:
4565    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4566    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4567
45682) iASL Compiler/Disassembler and Tools:
4569
4570iASL: Implemented Switch() with While(1) so that Break works correctly.
4571This
4572change correctly implements the Switch operator with a surrounding
4573While(1)
4574so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4575
4576iASL: Added a message if a package initializer list is shorter than
4577package
4578length. Adds a new remark for a Package() declaration if an initializer
4579list
4580exists, but is shorter than the declared length of the package. Although
4581technically legal, this is probably a coding error and it is seen in the
4582field. ACPICA BZ 815. Lin Ming, Bob Moore.
4583
4584iASL: Fixed a problem where the compiler could fault after the maximum
4585number
4586of errors was reached (200).
4587
4588acpixtract: Fixed a possible warning for pointer cast if the compiler
4589warning
4590level set very high.
4591
4592----------------------------------------
459313 October 2009. Summary of changes for version 20091013:
4594
45951) ACPI CA Core Subsystem:
4596
4597Fixed a problem where an Operation Region _REG method could be executed
4598more
4599than once. If a custom address space handler is installed by the host
4600before
4601the "initialize operation regions" phase of the ACPICA initialization,
4602any
4603_REG methods for that address space could be executed twice. This change
4604fixes the problem. ACPICA BZ 427. Lin Ming.
4605
4606Fixed a possible memory leak for the Scope() ASL operator. When the exact
4607invocation of "Scope(\)" is executed (change scope to root), one internal
4608operand object was leaked. Lin Ming.
4609
4610Implemented a run-time repair for the _MAT predefined method. If the _MAT
4611return value is defined as a Field object in the AML, and the field
4612size is less than or equal to the default width of an integer (32 or
461364),_MAT
4614can incorrectly return an Integer instead of a Buffer. ACPICA now
4615automatically repairs this problem. ACPICA BZ 810.
4616
4617Implemented a run-time repair for the _BIF and _BIX predefined methods.
4618The
4619"OEM Information" field is often incorrectly returned as an Integer with
4620value zero if the field is not supported by the platform. This is due to
4621an
4622ambiguity in the ACPI specification. The field should always be a string.
4623ACPICA now automatically repairs this problem by returning a NULL string
4624within the returned Package. ACPICA BZ 807.
4625
4626Example Code and Data Size: These are the sizes for the OS-independent
4627acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4628debug version of the code includes the debug output trace mechanism and
4629has a
4630much larger code and data size.
4631
4632  Previous Release:
4633    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4634    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4635  Current Release:
4636    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4637    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4638
46392) iASL Compiler/Disassembler and Tools:
4640
4641Disassembler: Fixed a problem where references to external symbols that
4642contained one or more parent-prefixes (carats) were not handled
4643correctly,
4644possibly causing a fault. ACPICA BZ 806. Lin Ming.
4645
4646Disassembler: Restructured the code so that all functions that handle
4647external symbols are in a single module. One new file is added,
4648common/dmextern.c.
4649
4650AML Debugger: Added a max count argument for the Batch command (which
4651executes multiple predefined methods within the namespace.)
4652
4653iASL: Updated the compiler documentation (User Reference.) Available at
4654http://www.acpica.org/documentation/. ACPICA BZ 750.
4655
4656AcpiXtract: Updated for Lint and other formatting changes. Close all open
4657files.
4658
4659----------------------------------------
466003 September 2009. Summary of changes for version 20090903:
4661
46621) ACPI CA Core Subsystem:
4663
4664For Windows Vista compatibility, added the automatic execution of an _INI
4665method located at the namespace root (\_INI). This method is executed at
4666table load time. This support is in addition to the automatic execution
4667of
4668\_SB._INI. Lin Ming.
4669
4670Fixed a possible memory leak in the interpreter for AML package objects
4671if
4672the package initializer list is longer than the defined size of the
4673package.
4674This apparently can only happen if the BIOS changes the package size on
4675the
4676fly (seen in a _PSS object), as ASL compilers do not allow this. The
4677interpreter will truncate the package to the defined size (and issue an
4678error
4679message), but previously could leave the extra objects undeleted if they
4680were
4681pre-created during the argument processing (such is the case if the
4682package
4683consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
4684
4685Fixed a problem seen when a Buffer or String is stored to itself via ASL.
4686This has been reported in the field. Previously, ACPICA would zero out
4687the
4688buffer/string. Now, the operation is treated as a noop. Provides Windows
4689compatibility. ACPICA BZ 803. Lin Ming.
4690
4691Removed an extraneous error message for ASL constructs of the form
4692Store(LocalX,LocalX) when LocalX is uninitialized. These curious
4693statements
4694are seen in many BIOSs and are once again treated as NOOPs and no error
4695is
4696emitted when they are encountered. ACPICA BZ 785.
4697
4698Fixed an extraneous warning message if a _DSM reserved method returns a
4699Package object. _DSM can return any type of object, so validation on the
4700return type cannot be performed. ACPICA BZ 802.
4701
4702Example Code and Data Size: These are the sizes for the OS-independent
4703acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4704debug version of the code includes the debug output trace mechanism and
4705has a
4706much larger code and data size.
4707
4708  Previous Release:
4709    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4710    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4711  Current Release:
4712    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4713    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4714
47152) iASL Compiler/Disassembler and Tools:
4716
4717iASL: Fixed a problem with the use of the Alias operator and Resource
4718Templates. The correct alias is now constructed and no error is emitted.
4719ACPICA BZ 738.
4720
4721iASL: Implemented the -I option to specify additional search directories
4722for
4723include files. Allows multiple additional search paths for include files.
4724Directories are searched in the order specified on the command line
4725(after
4726the local directory is searched.) ACPICA BZ 800.
4727
4728iASL: Fixed a problem where the full pathname for include files was not
4729emitted for warnings/errors. This caused the IDE support to not work
4730properly. ACPICA BZ 765.
4731
4732iASL: Implemented the -@ option to specify a Windows-style response file
4733containing additional command line options. ACPICA BZ 801.
4734
4735AcpiExec: Added support to load multiple AML files simultaneously (such
4736as
4737a
4738DSDT and multiple SSDTs). Also added support for wildcards within the AML
4739pathname. These features allow all machine tables to be easily loaded and
4740debugged together. ACPICA BZ 804.
4741
4742Disassembler: Added missing support for disassembly of HEST table Error
4743Bank
4744subtables.
4745
4746----------------------------------------
474730 July 2009. Summary of changes for version 20090730:
4748
4749The ACPI 4.0 implementation for ACPICA is complete with this release.
4750
47511) ACPI CA Core Subsystem:
4752
4753ACPI 4.0: Added header file support for all new and changed ACPI tables.
4754Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
4755new
4756for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
4757BERT,
4758EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
4759There
4760have been some ACPI 4.0 changes to other existing tables. Split the large
4761actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
4762
4763ACPI 4.0: Implemented predefined name validation for all new names. There
4764are
476531 new names in ACPI 4.0. The predefined validation module was split into
4766two
4767files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
4768
4769Implemented support for so-called "module-level executable code". This is
4770executable AML code that exists outside of any control method and is
4771intended
4772to be executed at table load time. Although illegal since ACPI 2.0, this
4773type
4774of code still exists and is apparently still being created. Blocks of
4775this
4776code are now detected and executed as intended. Currently, the code
4777blocks
4778must exist under either an If, Else, or While construct; these are the
4779typical cases seen in the field. ACPICA BZ 762. Lin Ming.
4780
4781Implemented an automatic dynamic repair for predefined names that return
4782nested Package objects. This applies to predefined names that are defined
4783to
4784return a variable-length Package of sub-packages. If the number of sub-
4785packages is one, BIOS code is occasionally seen that creates a simple
4786single
4787package with no sub-packages. This code attempts to fix the problem by
4788wrapping a new package object around the existing package. These methods
4789can
4790be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
4791BZ
4792790.
4793
4794Fixed a regression introduced in 20090625 for the AcpiGetDevices
4795interface.
4796The _HID/_CID matching was broken and no longer matched IDs correctly.
4797ACPICA
4798BZ 793.
4799
4800Fixed a problem with AcpiReset where the reset would silently fail if the
4801register was one of the protected I/O ports. AcpiReset now bypasses the
4802port
4803validation mechanism. This may eventually be driven into the
4804AcpiRead/Write
4805interfaces.
4806
4807Fixed a regression related to the recent update of the AcpiRead/Write
4808interfaces. A sleep/suspend could fail if the optional PM2 Control
4809register
4810does not exist during an attempt to write the Bus Master Arbitration bit.
4811(However, some hosts already delete the code that writes this bit, and
4812the
4813code may in fact be obsolete at this date.) ACPICA BZ 799.
4814
4815Fixed a problem where AcpiTerminate could fault if inadvertently called
4816twice
4817in succession. ACPICA BZ 795.
4818
4819Example Code and Data Size: These are the sizes for the OS-independent
4820acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4821debug version of the code includes the debug output trace mechanism and
4822has a
4823much larger code and data size.
4824
4825  Previous Release:
4826    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4827    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4828  Current Release:
4829    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4830    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4831
48322) iASL Compiler/Disassembler and Tools:
4833
4834ACPI 4.0: Implemented disassembler support for all new ACPI tables and
4835changes to existing tables. ACPICA BZ 775.
4836
4837----------------------------------------
483825 June 2009. Summary of changes for version 20090625:
4839
4840The ACPI 4.0 Specification was released on June 16 and is available at
4841www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
4842continue for the next few releases.
4843
48441) ACPI CA Core Subsystem:
4845
4846ACPI 4.0: Implemented interpreter support for the IPMI operation region
4847address space. Includes support for bi-directional data buffers and an
4848IPMI
4849address space handler (to be installed by an IPMI device driver.) ACPICA
4850BZ
4851773. Lin Ming.
4852
4853ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
4854Includes
4855support in both the header files and the disassembler.
4856
4857Completed a major update for the AcpiGetObjectInfo external interface.
4858Changes include:
4859 - Support for variable, unlimited length HID, UID, and CID strings.
4860 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
4861etc.)
4862 - Call the _SxW power methods on behalf of a device object.
4863 - Determine if a device is a PCI root bridge.
4864 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
4865These changes will require an update to all callers of this interface.
4866See
4867the updated ACPICA Programmer Reference for details. One new source file
4868has
4869been added - utilities/utids.c. ACPICA BZ 368, 780.
4870
4871Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
4872transfers. The Value parameter has been extended from 32 bits to 64 bits
4873in
4874order to support new ACPI 4.0 tables. These changes will require an
4875update
4876to
4877all callers of these interfaces. See the ACPICA Programmer Reference for
4878details. ACPICA BZ 768.
4879
4880Fixed several problems with AcpiAttachData. The handler was not invoked
4881when
4882the host node was deleted. The data sub-object was not automatically
4883deleted
4884when the host node was deleted. The interface to the handler had an
4885unused
4886parameter, this was removed. ACPICA BZ 778.
4887
4888Enhanced the function that dumps ACPI table headers. All non-printable
4889characters in the string fields are now replaced with '?' (Signature,
4890OemId,
4891OemTableId, and CompilerId.) ACPI tables with non-printable characters in
4892these fields are occasionally seen in the field. ACPICA BZ 788.
4893
4894Fixed a problem with predefined method repair code where the code that
4895attempts to repair/convert an object of incorrect type is only executed
4896on
4897the first time the predefined method is called. The mechanism that
4898disables
4899warnings on subsequent calls was interfering with the repair mechanism.
4900ACPICA BZ 781.
4901
4902Fixed a possible memory leak in the predefined validation/repair code
4903when
4904a
4905buffer is automatically converted to an expected string object.
4906
4907Removed obsolete 16-bit files from the distribution and from the current
4908git
4909tree head. ACPICA BZ 776.
4910
4911Example Code and Data Size: These are the sizes for the OS-independent
4912acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4913debug version of the code includes the debug output trace mechanism and
4914has a
4915much larger code and data size.
4916
4917  Previous Release:
4918    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
4919    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
4920  Current Release:
4921    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
4922    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
4923
49242) iASL Compiler/Disassembler and Tools:
4925
4926ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
4927operation region keyword. ACPICA BZ 771, 772. Lin Ming.
4928
4929ACPI 4.0: iASL - implemented compile-time validation support for all new
4930predefined names and control methods (31 total). ACPICA BZ 769.
4931
4932----------------------------------------
493321 May 2009. Summary of changes for version 20090521:
4934
49351) ACPI CA Core Subsystem:
4936
4937Disabled the preservation of the SCI enable bit in the PM1 control
4938register.
4939The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
4940to
4941be
4942a "preserved" bit - "OSPM always preserves this bit position", section
49434.7.3.2.1. However, some machines fail if this bit is in fact preserved
4944because the bit needs to be explicitly set by the OS as a workaround. No
4945machines fail if the bit is not preserved. Therefore, ACPICA no longer
4946attempts to preserve this bit.
4947
4948Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
4949incorrectly formed _PRT package could cause a fault. Added validation to
4950ensure that each package element is actually a sub-package.
4951
4952Implemented a new interface to install or override a single control
4953method,
4954AcpiInstallMethod. This interface is useful when debugging in order to
4955repair
4956an existing method or to install a missing method without having to
4957override
4958the entire ACPI table. See the ACPICA Programmer Reference for use and
4959examples. Lin Ming, Bob Moore.
4960
4961Fixed several reference count issues with the DdbHandle object that is
4962created from a Load or LoadTable operator. Prevent premature deletion of
4963the
4964object. Also, mark the object as invalid once the table has been
4965unloaded.
4966This is needed because the handle itself may not be deleted after the
4967table
4968unload, depending on whether it has been stored in a named object by the
4969caller. Lin Ming.
4970
4971Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
4972mutexes of the same sync level are acquired but then not released in
4973strict
4974opposite order, the internally maintained Current Sync Level becomes
4975confused
4976and can cause subsequent execution errors. ACPICA BZ 471.
4977
4978Changed the allowable release order for ASL mutex objects. The ACPI 4.0
4979specification has been changed to make the SyncLevel for mutex objects
4980more
4981useful. When releasing a mutex, the SyncLevel of the mutex must now be
4982the
4983same as the current sync level. This makes more sense than the previous
4984rule
4985(SyncLevel less than or equal). This change updates the code to match the
4986specification.
4987
4988Fixed a problem with the local version of the AcpiOsPurgeCache function.
4989The
4990(local) cache must be locked during all cache object deletions. Andrew
4991Baumann.
4992
4993Updated the Load operator to use operation region interfaces. This
4994replaces
4995direct memory mapping with region access calls. Now, all region accesses
4996go
4997through the installed region handler as they should.
4998
4999Simplified and optimized the NsGetNextNode function. Reduced parameter
5000count
5001and reduced code for this frequently used function.
5002
5003Example Code and Data Size: These are the sizes for the OS-independent
5004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5005debug version of the code includes the debug output trace mechanism and
5006has a
5007much larger code and data size.
5008
5009  Previous Release:
5010    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5011    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5012  Current Release:
5013    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5014    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5015
50162) iASL Compiler/Disassembler and Tools:
5017
5018Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
5019problems
5020with sub-table disassembly and handling invalid sub-tables. Attempt
5021recovery
5022after an invalid sub-table ID.
5023
5024----------------------------------------
502522 April 2009. Summary of changes for version 20090422:
5026
50271) ACPI CA Core Subsystem:
5028
5029Fixed a compatibility issue with the recently released I/O port
5030protection
5031mechanism. For windows compatibility, 1) On a port protection violation,
5032simply ignore the request and do not return an exception (allow the
5033control
5034method to continue execution.) 2) If only part of the request overlaps a
5035protected port, read/write the individual ports that are not protected.
5036Linux
5037BZ 13036. Lin Ming
5038
5039Enhanced the execution of the ASL/AML BreakPoint operator so that it
5040actually
5041breaks into the AML debugger if the debugger is present. This matches the
5042ACPI-defined behavior.
5043
5044Fixed several possible warnings related to the use of the configurable
5045ACPI_THREAD_ID. This type can now be configured as either an integer or a
5046pointer with no warnings. Also fixes several warnings in printf-like
5047statements for the 64-bit build when the type is configured as a pointer.
5048ACPICA BZ 766, 767.
5049
5050Fixed a number of possible warnings when compiling with gcc 4+ (depending
5051on
5052warning options.) Examples include printf formats, aliasing, unused
5053globals,
5054missing prototypes, missing switch default statements, use of non-ANSI
5055library functions, use of non-ANSI constructs. See generate/unix/Makefile
5056for
5057a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
5058
5059Example Code and Data Size: These are the sizes for the OS-independent
5060acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5061debug version of the code includes the debug output trace mechanism and
5062has a
5063much larger code and data size.
5064
5065  Previous Release:
5066    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5067    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5068  Current Release:
5069    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5070    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5071
50722) iASL Compiler/Disassembler and Tools:
5073
5074iASL: Fixed a generation warning from Bison 2.3 and fixed several
5075warnings
5076on
5077the 64-bit build.
5078
5079iASL: Fixed a problem where the Unix/Linux versions of the compiler could
5080not
5081correctly digest Windows/DOS formatted files (with CR/LF).
5082
5083iASL: Added a new option for "quiet mode" (-va) that produces only the
5084compilation summary, not individual errors and warnings. Useful for large
5085batch compilations.
5086
5087AcpiExec: Implemented a new option (-z) to enable a forced
5088semaphore/mutex
5089timeout that can be used to detect hang conditions during execution of
5090AML
5091code (includes both internal semaphores and AML-defined mutexes and
5092events.)
5093
5094Added new makefiles for the generation of acpica in a generic unix-like
5095environment. These makefiles are intended to generate the acpica tools
5096and
5097utilities from the original acpica git source tree structure.
5098
5099Test Suites: Updated and cleaned up the documentation files. Updated the
5100copyrights to 2009, affecting all source files. Use the new version of
5101iASL
5102with quiet mode. Increased the number of available semaphores in the
5103Windows
5104OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
5105added
5106an alternate implementation of the semaphore timeout to allow aslts to
5107execute fully on Cygwin.
5108
5109----------------------------------------
511020 March 2009. Summary of changes for version 20090320:
5111
51121) ACPI CA Core Subsystem:
5113
5114Fixed a possible race condition between AcpiWalkNamespace and dynamic
5115table
5116unloads. Added a reader/writer locking mechanism to allow multiple
5117concurrent
5118namespace walks (readers), but block a dynamic table unload until it can
5119gain
5120exclusive write access to the namespace. This fixes a problem where a
5121table
5122unload could (possibly catastrophically) delete the portion of the
5123namespace
5124that is currently being examined by a walk. Adds a new file, utlock.c,
5125that
5126implements the reader/writer lock mechanism. ACPICA BZ 749.
5127
5128Fixed a regression introduced in version 20090220 where a change to the
5129FADT
5130handling could cause the ACPICA subsystem to access non-existent I/O
5131ports.
5132
5133Modified the handling of FADT register and table (FACS/DSDT) addresses.
5134The
5135FADT can contain both 32-bit and 64-bit versions of these addresses.
5136Previously, the 64-bit versions were favored, meaning that if both 32 and
513764
5138versions were valid, but not equal, the 64-bit version was used. This was
5139found to cause some machines to fail. Now, in this case, the 32-bit
5140version
5141is used instead. This now matches the Windows behavior.
5142
5143Implemented a new mechanism to protect certain I/O ports. Provides
5144Microsoft
5145compatibility and protects the standard PC I/O ports from access via AML
5146code. Adds a new file, hwvalid.c
5147
5148Fixed a possible extraneous warning message from the FADT support. The
5149message warns of a 32/64 length mismatch between the legacy and GAS
5150definitions for a register.
5151
5152Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
5153is
5154made obsolete by the port protection mechanism above. It was previously
5155used
5156to validate the entire address range of an operation region, which could
5157be
5158incorrect if the range included illegal ports, but fields within the
5159operation region did not actually access those ports. Validation is now
5160performed on a per-field basis instead of the entire region.
5161
5162Modified the handling of the PM1 Status Register ignored bit (bit 11.)
5163Ignored bits must be "preserved" according to the ACPI spec. Usually,
5164this
5165means a read/modify/write when writing to the register. However, for
5166status
5167registers, writing a one means clear the event. Writing a zero means
5168preserve
5169the event (do not clear.) This behavior is clarified in the ACPI 4.0
5170spec,
5171and the ACPICA code now simply always writes a zero to the ignored bit.
5172
5173Modified the handling of ignored bits for the PM1 A/B Control Registers.
5174As
5175per the ACPI specification, for the control registers, preserve
5176(read/modify/write) all bits that are defined as either reserved or
5177ignored.
5178
5179Updated the handling of write-only bits in the PM1 A/B Control Registers.
5180When reading the register, zero the write-only bits as per the ACPI spec.
5181ACPICA BZ 443. Lin Ming.
5182
5183Removed "Linux" from the list of supported _OSI strings. Linux no longer
5184wants to reply true to this request. The Windows strings are the only
5185paths
5186through the AML that are tested and known to work properly.
5187
5188  Previous Release:
5189    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5190    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5191  Current Release:
5192    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5193    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5194
51952) iASL Compiler/Disassembler and Tools:
5196
5197Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
5198and
5199aetables.c
5200
5201----------------------------------------
520220 February 2009. Summary of changes for version 20090220:
5203
52041) ACPI CA Core Subsystem:
5205
5206Optimized the ACPI register locking. Removed locking for reads from the
5207ACPI
5208bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
5209is
5210not required when reading the single-bit registers. The
5211AcpiGetRegisterUnlocked function is no longer needed and has been
5212removed.
5213This will improve performance for reads on these registers. ACPICA BZ
5214760.
5215
5216Fixed the parameter validation for AcpiRead/Write. Now return
5217AE_BAD_PARAMETER if the input register pointer is null, and
5218AE_BAD_ADDRESS
5219if
5220the register has an address of zero. Previously, these cases simply
5221returned
5222AE_OK. For optional registers such as PM1B status/enable/control, the
5223caller
5224should check for a valid register address before calling. ACPICA BZ 748.
5225
5226Renamed the external ACPI bit register access functions. Renamed
5227AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
5228functions. The new names are AcpiReadBitRegister and
5229AcpiWriteBitRegister.
5230Also, restructured the code for these functions by simplifying the code
5231path
5232and condensing duplicate code to reduce code size.
5233
5234Added new functions to transparently handle the possibly split PM1 A/B
5235registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
5236functions
5237now handle the split registers for PM1 Status, Enable, and Control.
5238ACPICA
5239BZ
5240746.
5241
5242Added a function to handle the PM1 control registers,
5243AcpiHwWritePm1Control.
5244This function writes both of the PM1 control registers (A/B). These
5245registers
5246are different than the PM1 A/B status and enable registers in that
5247different
5248values can be written to the A/B registers. Most notably, the SLP_TYP
5249bits
5250can be different, as per the values returned from the _Sx predefined
5251methods.
5252
5253Removed an extra register write within AcpiHwClearAcpiStatus. This
5254function
5255was writing an optional PM1B status register twice. The existing call to
5256the
5257low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
5258A/B
5259register. ACPICA BZ 751.
5260
5261Split out the PM1 Status registers from the FADT. Added new globals for
5262these
5263registers (A/B), similar to the way the PM1 Enable registers are handled.
5264Instead of overloading the FADT Event Register blocks. This makes the
5265code
5266clearer and less prone to error.
5267
5268Fixed the warning message for when the platform contains too many ACPI
5269tables
5270for the default size of the global root table data structure. The
5271calculation
5272for the truncation value was incorrect.
5273
5274Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
5275obsolete macro, since it is now a simple reference to ->common.type.
5276There
5277were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5278
5279Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
5280TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
5281simply SLEEP_TYPE. ACPICA BZ 754.
5282
5283Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
5284function is only needed on 64-bit host operating systems and is thus not
5285included for 32-bit hosts.
5286
5287Debug output: print the input and result for invocations of the _OSI
5288reserved
5289control method via the ACPI_LV_INFO debug level. Also, reduced some of
5290the
5291verbosity of this debug level. Len Brown.
5292
5293Example Code and Data Size: These are the sizes for the OS-independent
5294acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5295debug version of the code includes the debug output trace mechanism and
5296has a
5297much larger code and data size.
5298
5299  Previous Release:
5300    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5301    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5302  Current Release:
5303    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5304    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5305
53062) iASL Compiler/Disassembler and Tools:
5307
5308Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
5309various legal performance profiles.
5310
5311----------------------------------------
531223 January 2009. Summary of changes for version 20090123:
5313
53141) ACPI CA Core Subsystem:
5315
5316Added the 2009 copyright to all module headers and signons. This affects
5317virtually every file in the ACPICA core subsystem, the iASL compiler, and
5318the tools/utilities.
5319
5320Implemented a change to allow the host to override any ACPI table,
5321including
5322dynamically loaded tables. Previously, only the DSDT could be replaced by
5323the
5324host. With this change, the AcpiOsTableOverride interface is called for
5325each
5326table found in the RSDT/XSDT during ACPICA initialization, and also
5327whenever
5328a table is dynamically loaded via the AML Load operator.
5329
5330Updated FADT flag definitions, especially the Boot Architecture flags.
5331
5332Debugger: For the Find command, automatically pad the input ACPI name
5333with
5334underscores if the name is shorter than 4 characters. This enables a
5335match
5336with the actual namespace entry which is itself padded with underscores.
5337
5338Example Code and Data Size: These are the sizes for the OS-independent
5339acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5340debug version of the code includes the debug output trace mechanism and
5341has a
5342much larger code and data size.
5343
5344  Previous Release:
5345    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5346    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5347  Current Release:
5348    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5349    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5350
53512) iASL Compiler/Disassembler and Tools:
5352
5353Fix build error under Bison-2.4.
5354
5355Dissasembler: Enhanced FADT support. Added decoding of the Boot
5356Architecture
5357flags. Now decode all flags, regardless of the FADT version. Flag output
5358includes the FADT version which first defined each flag.
5359
5360The iASL -g option now dumps the RSDT to a file (in addition to the FADT
5361and
5362DSDT). Windows only.
5363
5364----------------------------------------
536504 December 2008. Summary of changes for version 20081204:
5366
53671) ACPI CA Core Subsystem:
5368
5369The ACPICA Programmer Reference has been completely updated and revamped
5370for
5371this release. This includes updates to the external interfaces, OSL
5372interfaces, the overview sections, and the debugger reference.
5373
5374Several new ACPICA interfaces have been implemented and documented in the
5375programmer reference:
5376AcpiReset - Writes the reset value to the FADT-defined reset register.
5377AcpiDisableAllGpes - Disable all available GPEs.
5378AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
5379AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
5380AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
5381AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
5382AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
5383
5384Most of the public ACPI hardware-related interfaces have been moved to a
5385new
5386file, components/hardware/hwxface.c
5387
5388Enhanced the FADT parsing and low-level ACPI register access: The ACPI
5389register lengths within the FADT are now used, and the low level ACPI
5390register access no longer hardcodes the ACPI register lengths. Given that
5391there may be some risk in actually trusting the FADT register lengths, a
5392run-
5393time option was added to fall back to the default hardcoded lengths if
5394the
5395FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
5396option is set to true for now, and a warning is issued if a suspicious
5397FADT
5398register length is overridden with the default value.
5399
5400Fixed a reference count issue in NsRepairObject. This problem was
5401introduced
5402in version 20081031 as part of a fix to repair Buffer objects within
5403Packages. Lin Ming.
5404
5405Added semaphore support to the Linux/Unix application OS-services layer
5406(OSL). ACPICA BZ 448. Lin Ming.
5407
5408Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
5409will
5410be implemented in the OSL, or will binary semaphores be used instead.
5411
5412Example Code and Data Size: These are the sizes for the OS-independent
5413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5414debug version of the code includes the debug output trace mechanism and
5415has a
5416much larger code and data size.
5417
5418  Previous Release:
5419    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5420    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5421  Current Release:
5422    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5423    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5424
54252) iASL Compiler/Disassembler and Tools:
5426
5427iASL: Completed the '-e' option to include additional ACPI tables in
5428order
5429to
5430aid with disassembly and External statement generation. ACPICA BZ 742.
5431Lin
5432Ming.
5433
5434iASL: Removed the "named object in while loop" error. The compiler cannot
5435determine how many times a loop will execute. ACPICA BZ 730.
5436
5437Disassembler: Implemented support for FADT revision 2 (MS extension).
5438ACPICA
5439BZ 743.
5440
5441Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
5442MCFG).
5443
5444----------------------------------------
544531 October 2008. Summary of changes for version 20081031:
5446
54471) ACPI CA Core Subsystem:
5448
5449Restructured the ACPICA header files into public/private. acpi.h now
5450includes
5451only the "public" acpica headers. All other acpica headers are "private"
5452and
5453should not be included by acpica users. One new file, accommon.h is used
5454to
5455include the commonly used private headers for acpica code generation.
5456Future
5457plans include moving all private headers to a new subdirectory.
5458
5459Implemented an automatic Buffer->String return value conversion for
5460predefined ACPI methods. For these methods (such as _BIF), added
5461automatic
5462conversion for return objects that are required to be a String, but a
5463Buffer
5464was found instead. This can happen when reading string battery data from
5465an
5466operation region, because it used to be difficult to convert the data
5467from
5468buffer to string from within the ASL. Ensures that the host OS is
5469provided
5470with a valid null-terminated string. Linux BZ 11822.
5471
5472Updated the FACS waking vector interfaces. Split
5473AcpiSetFirmwareWakingVector
5474into two: one for the 32-bit vector, another for the 64-bit vector. This
5475is
5476required because the host OS must setup the wake much differently for
5477each
5478vector (real vs. protected mode, etc.) and the interface itself should
5479not
5480be
5481deciding which vector to use. Also, eliminated the
5482GetFirmwareWakingVector
5483interface, as it served no purpose (only the firmware reads the vector,
5484OS
5485only writes the vector.) ACPICA BZ 731.
5486
5487Implemented a mechanism to escape infinite AML While() loops. Added a
5488loop
5489counter to force exit from AML While loops if the count becomes too
5490large.
5491This can occur in poorly written AML when the hardware does not respond
5492within a while loop and the loop does not implement a timeout. The
5493maximum
5494loop count is configurable. A new exception code is returned when a loop
5495is
5496broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
5497
5498Optimized the execution of AML While loops. Previously, a control state
5499object was allocated and freed for each execution of the loop. The
5500optimization is to simply reuse the control state for each iteration.
5501This
5502speeds up the raw loop execution time by about 5%.
5503
5504Enhanced the implicit return mechanism. For Windows compatibility, return
5505an
5506implicit integer of value zero for methods that contain no executable
5507code.
5508Such methods are seen in the field as stubs (presumably), and can cause
5509drivers to fail if they expect a return value. Lin Ming.
5510
5511Allow multiple backslashes as root prefixes in namepaths. In a fully
5512qualified namepath, allow multiple backslash prefixes. This can happen
5513(and
5514is seen in the field) because of the use of a double-backslash in strings
5515(since backslash is the escape character) causing confusion. ACPICA BZ
5516739
5517Lin Ming.
5518
5519Emit a warning if two different FACS or DSDT tables are discovered in the
5520FADT. Checks if there are two valid but different addresses for the FACS
5521and
5522DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
5523
5524Consolidated the method argument count validation code. Merged the code
5525that
5526validates control method argument counts into the predefined validation
5527module. Eliminates possible multiple warnings for incorrect argument
5528counts.
5529
5530Implemented ACPICA example code. Includes code for ACPICA initialization,
5531handler installation, and calling a control method. Available at
5532source/tools/examples.
5533
5534Added a global pointer for FACS table to simplify internal FACS access.
5535Use
5536the global pointer instead of using AcpiGetTableByIndex for each FACS
5537access.
5538This simplifies the code for the Global Lock and the Firmware Waking
5539Vector(s).
5540
5541Example Code and Data Size: These are the sizes for the OS-independent
5542acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5543debug version of the code includes the debug output trace mechanism and
5544has a
5545much larger code and data size.
5546
5547  Previous Release:
5548    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5549    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5550  Current Release:
5551    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5552    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5553
55542) iASL Compiler/Disassembler and Tools:
5555
5556iASL: Improved disassembly of external method calls. Added the -e option
5557to
5558allow the inclusion of additional ACPI tables to help with the
5559disassembly
5560of
5561method invocations and the generation of external declarations during the
5562disassembly. Certain external method invocations cannot be disassembled
5563properly without the actual declaration of the method. Use the -e option
5564to
5565include the table where the external method(s) are actually declared.
5566Most
5567useful for disassembling SSDTs that make method calls back to the master
5568DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
5569-d
5570-e dsdt.aml ssdt1.aml
5571
5572iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
5573problem where the use of an alias within a namepath would result in a not
5574found error or cause the compiler to fault. Also now allows forward
5575references from the Alias operator itself. ACPICA BZ 738.
5576
5577----------------------------------------
557826 September 2008. Summary of changes for version 20080926:
5579
55801) ACPI CA Core Subsystem:
5581
5582Designed and implemented a mechanism to validate predefined ACPI methods
5583and
5584objects. This code validates the predefined ACPI objects (objects whose
5585names
5586start with underscore) that appear in the namespace, at the time they are
5587evaluated. The argument count and the type of the returned object are
5588validated against the ACPI specification. The purpose of this validation
5589is
5590to detect problems with the BIOS-implemented predefined ACPI objects
5591before
5592the results are returned to the ACPI-related drivers. Future enhancements
5593may
5594include actual repair of incorrect return objects where possible. Two new
5595files are nspredef.c and acpredef.h.
5596
5597Fixed a fault in the AML parser if a memory allocation fails during the
5598Op
5599completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
5600
5601Fixed an issue with implicit return compatibility. This change improves
5602the
5603implicit return mechanism to be more compatible with the MS interpreter.
5604Lin
5605Ming, ACPICA BZ 349.
5606
5607Implemented support for zero-length buffer-to-string conversions. Allow
5608zero
5609length strings during interpreter buffer-to-string conversions. For
5610example,
5611during the ToDecimalString and ToHexString operators, as well as implicit
5612conversions. Fiodor Suietov, ACPICA BZ 585.
5613
5614Fixed two possible memory leaks in the error exit paths of
5615AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
5616are
5617similar in that they use a stack of state objects in order to eliminate
5618recursion. The stack must be fully unwound and deallocated if an error
5619occurs. Lin Ming. ACPICA BZ 383.
5620
5621Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
5622global
5623ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
5624Moore ACPICA BZ 442.
5625
5626Removed the obsolete version number in module headers. Removed the
5627"$Revision" number that appeared in each module header. This version
5628number
5629was useful under SourceSafe and CVS, but has no meaning under git. It is
5630not
5631only incorrect, it could also be misleading.
5632
5633Example Code and Data Size: These are the sizes for the OS-independent
5634acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5635debug version of the code includes the debug output trace mechanism and
5636has a
5637much larger code and data size.
5638
5639  Previous Release:
5640    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5641    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5642  Current Release:
5643    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5644    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5645
5646----------------------------------------
564729 August 2008. Summary of changes for version 20080829:
5648
56491) ACPI CA Core Subsystem:
5650
5651Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
5652Reference. Changes include the elimination of cheating on the Object
5653field
5654for the DdbHandle subtype, addition of a reference class field to
5655differentiate the various reference types (instead of an AML opcode), and
5656the
5657cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
5658
5659Reduce an error to a warning for an incorrect method argument count.
5660Previously aborted with an error if too few arguments were passed to a
5661control method via the external ACPICA interface. Now issue a warning
5662instead
5663and continue. Handles the case where the method inadvertently declares
5664too
5665many arguments, but does not actually use the extra ones. Applies mainly
5666to
5667the predefined methods. Lin Ming. Linux BZ 11032.
5668
5669Disallow the evaluation of named object types with no intrinsic value.
5670Return
5671AE_TYPE for objects that have no value and therefore evaluation is
5672undefined:
5673Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
5674of
5675these types were allowed, but an exception would be generated at some
5676point
5677during the evaluation. Now, the error is generated up front.
5678
5679Fixed a possible memory leak in the AcpiNsGetExternalPathname function
5680(nsnames.c). Fixes a leak in the error exit path.
5681
5682Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
5683debug
5684levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
5685ACPI_EXCEPTION
5686interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
5687ACPI_LV_EVENTS.
5688
5689Removed obsolete and/or unused exception codes from the acexcep.h header.
5690There is the possibility that certain device drivers may be affected if
5691they
5692use any of these exceptions.
5693
5694The ACPICA documentation has been added to the public git source tree,
5695under
5696acpica/documents. Included are the ACPICA programmer reference, the iASL
5697compiler reference, and the changes.txt release logfile.
5698
5699Example Code and Data Size: These are the sizes for the OS-independent
5700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5701debug version of the code includes the debug output trace mechanism and
5702has a
5703much larger code and data size.
5704
5705  Previous Release:
5706    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5707    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5708  Current Release:
5709    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5710    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5711
57122) iASL Compiler/Disassembler and Tools:
5713
5714Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
5715defines _SCP with 3 arguments. Previous versions defined it with only 1
5716argument. iASL now allows both definitions.
5717
5718iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
5719zero-
5720length subtables when disassembling ACPI tables. Also fixed a couple of
5721errors where a full 16-bit table type field was not extracted from the
5722input
5723properly.
5724
5725acpisrc: Improve comment counting mechanism for generating source code
5726statistics. Count first and last lines of multi-line comments as
5727whitespace,
5728not comment lines. Handle Linux legal header in addition to standard
5729acpica
5730header.
5731
5732----------------------------------------
5733
573429 July 2008. Summary of changes for version 20080729:
5735
57361) ACPI CA Core Subsystem:
5737
5738Fix a possible deadlock in the GPE dispatch. Remove call to
5739AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
5740attempt
5741to acquire the GPE lock but can deadlock since the GPE lock is already
5742held
5743at dispatch time. This code was introduced in version 20060831 as a
5744response
5745to Linux BZ 6881 and has since been removed from Linux.
5746
5747Add a function to dereference returned reference objects. Examines the
5748return
5749object from a call to AcpiEvaluateObject. Any Index or RefOf references
5750are
5751automatically dereferenced in an attempt to return something useful
5752(these
5753reference types cannot be converted into an external ACPI_OBJECT.)
5754Provides
5755MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
5756
5757x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
5758subtables for the MADT and one new subtable for the SRAT. Includes
5759disassembler and AcpiSrc support. Data from the Intel 64 Architecture
5760x2APIC
5761Specification, June 2008.
5762
5763Additional error checking for pathname utilities. Add error check after
5764all
5765calls to AcpiNsGetPathnameLength. Add status return from
5766AcpiNsBuildExternalPath and check after all calls. Add parameter
5767validation
5768to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
5769
5770Return status from the global init function AcpiUtGlobalInitialize. This
5771is
5772used by both the kernel subsystem and the utilities such as iASL
5773compiler.
5774The function could possibly fail when the caches are initialized. Yang
5775Yi.
5776
5777Add a function to decode reference object types to strings. Created for
5778improved error messages.
5779
5780Improve object conversion error messages. Better error messages during
5781object
5782conversion from internal to the external ACPI_OBJECT. Used for external
5783calls
5784to AcpiEvaluateObject.
5785
5786Example Code and Data Size: These are the sizes for the OS-independent
5787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5788debug version of the code includes the debug output trace mechanism and
5789has a
5790much larger code and data size.
5791
5792  Previous Release:
5793    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5794    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5795  Current Release:
5796    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5797    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5798
57992) iASL Compiler/Disassembler and Tools:
5800
5801Debugger: fix a possible hang when evaluating non-methods. Fixes a
5802problem
5803introduced in version 20080701. If the object being evaluated (via
5804execute
5805command) is not a method, the debugger can hang while trying to obtain
5806non-
5807existent parameters.
5808
5809iASL: relax error for using reserved "_T_x" identifiers. These names can
5810appear in a disassembled ASL file if they were emitted by the original
5811compiler. Instead of issuing an error or warning and forcing the user to
5812manually change these names, issue a remark instead.
5813
5814iASL: error if named object created in while loop. Emit an error if any
5815named
5816object is created within a While loop. If allowed, this code will
5817generate
5818a
5819run-time error on the second iteration of the loop when an attempt is
5820made
5821to
5822create the same named object twice. ACPICA bugzilla 730.
5823
5824iASL: Support absolute pathnames for include files. Add support for
5825absolute
5826pathnames within the Include operator. previously, only relative
5827pathnames
5828were supported.
5829
5830iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
5831Descriptor.
5832The ACPI spec requires one interrupt minimum. BZ 423
5833
5834iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
5835Handles the case for the Interrupt Resource Descriptor where
5836the ResourceSource argument is omitted but ResourceSourceIndex
5837is present. Now leave room for the Index. BZ 426
5838
5839iASL: Prevent error message if CondRefOf target does not exist. Fixes
5840cases
5841where an error message is emitted if the target does not exist. BZ 516
5842
5843iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
5844(get ACPI tables on Windows). This was apparently broken in version
584520070919.
5846
5847AcpiXtract: Handle EOF while extracting data. Correctly handle the case
5848where
5849the EOF happens immediately after the last table in the input file. Print
5850completion message. Previously, no message was displayed in this case.
5851
5852----------------------------------------
585301 July 2008. Summary of changes for version 20080701:
5854
58550) Git source tree / acpica.org
5856
5857Fixed a problem where a git-clone from http would not transfer the entire
5858source tree.
5859
58601) ACPI CA Core Subsystem:
5861
5862Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
5863enable bit. Now performs a read-change-write of the enable register
5864instead
5865of simply writing out the cached enable mask. This will prevent
5866inadvertent
5867enabling of GPEs if a rogue GPE is received during initialization (before
5868GPE
5869handlers are installed.)
5870
5871Implemented a copy for dynamically loaded tables. Previously, dynamically
5872loaded tables were simply mapped - but on some machines this memory is
5873corrupted after suspend. Now copy the table to a local buffer. For the
5874OpRegion case, added checksum verify. Use the table length from the table
5875header, not the region length. For the Buffer case, use the table length
5876also. Dennis Noordsij, Bob Moore. BZ 10734
5877
5878Fixed a problem where the same ACPI table could not be dynamically loaded
5879and
5880unloaded more than once. Without this change, a table cannot be loaded
5881again
5882once it has been loaded/unloaded one time. The current mechanism does not
5883unregister a table upon an unload. During a load, if the same table is
5884found,
5885this no longer returns an exception. BZ 722
5886
5887Fixed a problem where the wrong descriptor length was calculated for the
5888EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
5889EndTag
5890are calculated as 12 bytes long, but the actual length in the internal
5891descriptor is 16 because of the round-up to 8 on the 64-bit build.
5892Reported
5893by Linn Crosetto. BZ 728
5894
5895Fixed a possible memory leak in the Unload operator. The DdbHandle
5896returned
5897by Load() did not have its reference count decremented during unload,
5898leading
5899to a memory leak. Lin Ming. BZ 727
5900
5901Fixed a possible memory leak when deleting thermal/processor objects. Any
5902associated notify handlers (and objects) were not being deleted. Fiodor
5903Suietov. BZ 506
5904
5905Fixed the ordering of the ASCII names in the global mutex table to match
5906the
5907actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
5908only.
5909Vegard Nossum. BZ 726
5910
5911Enhanced the AcpiGetObjectInfo interface to return the number of required
5912arguments if the object is a control method. Added this call to the
5913debugger
5914so the proper number of default arguments are passed to a method. This
5915prevents a warning when executing methods from AcpiExec.
5916
5917Added a check for an invalid handle in AcpiGetObjectInfo. Return
5918AE_BAD_PARAMETER if input handle is invalid. BZ 474
5919
5920Fixed an extraneous warning from exconfig.c on the 64-bit build.
5921
5922Example Code and Data Size: These are the sizes for the OS-independent
5923acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5924debug version of the code includes the debug output trace mechanism and
5925has a
5926much larger code and data size.
5927
5928  Previous Release:
5929    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
5930    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
5931  Current Release:
5932    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
5933    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
5934
59352) iASL Compiler/Disassembler and Tools:
5936
5937iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
5938resource descriptor names.
5939
5940iASL: Detect invalid ASCII characters in input (windows version). Removed
5941the
5942"-CF" flag from the flex compile, enables correct detection of non-ASCII
5943characters in the input. BZ 441
5944
5945iASL: Eliminate warning when result of LoadTable is not used. Eliminate
5946the
5947"result of operation not used" warning when the DDB handle returned from
5948LoadTable is not used. The warning is not needed. BZ 590
5949
5950AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
5951method
5952to
5953pass address of table to the AML. Added option to disable OpRegion
5954simulation
5955to allow creation of an OpRegion with a real address that was passed to
5956_CFG.
5957All of this allows testing of the Load and Unload operators from
5958AcpiExec.
5959
5960Debugger: update tables command for unloaded tables. Handle unloaded
5961tables
5962and use the standard table header output routine.
5963
5964----------------------------------------
596509 June 2008. Summary of changes for version 20080609:
5966
59671) ACPI CA Core Subsystem:
5968
5969Implemented a workaround for reversed _PRT entries. A significant number
5970of
5971BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
5972change dynamically detects and repairs this problem. Provides
5973compatibility
5974with MS ACPI. BZ 6859
5975
5976Simplified the internal ACPI hardware interfaces to eliminate the locking
5977flag parameter from Register Read/Write. Added a new external interface,
5978AcpiGetRegisterUnlocked.
5979
5980Fixed a problem where the invocation of a GPE control method could hang.
5981This
5982was a regression introduced in 20080514. The new method argument count
5983validation mechanism can enter an infinite loop when a GPE method is
5984dispatched. Problem fixed by removing the obsolete code that passed GPE
5985block
5986information to the notify handler via the control method parameter
5987pointer.
5988
5989Fixed a problem where the _SST execution status was incorrectly returned
5990to
5991the caller of AcpiEnterSleepStatePrep. This was a regression introduced
5992in
599320080514. _SST is optional and a NOT_FOUND exception should never be
5994returned. BZ 716
5995
5996Fixed a problem where a deleted object could be accessed from within the
5997AML
5998parser. This was a regression introduced in version 20080123 as a fix for
5999the
6000Unload operator. Lin Ming. BZ 10669
6001
6002Cleaned up the debug operand dump mechanism. Eliminated unnecessary
6003operands
6004and eliminated the use of a negative index in a loop. Operands are now
6005displayed in the correct order, not backwards. This also fixes a
6006regression
6007introduced in 20080514 on 64-bit systems where the elimination of
6008ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
6009715
6010
6011Fixed a possible memory leak in EvPciConfigRegionSetup where the error
6012exit
6013path did not delete a locally allocated structure.
6014
6015Updated definitions for the DMAR and SRAT tables to synchronize with the
6016current specifications. Includes disassembler support.
6017
6018Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
6019loop termination value was used. Loop terminated on iteration early,
6020missing
6021one mutex. Linn Crosetto
6022
6023Example Code and Data Size: These are the sizes for the OS-independent
6024acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6025debug version of the code includes the debug output trace mechanism and
6026has a
6027much larger code and data size.
6028
6029  Previous Release:
6030    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6031    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6032  Current Release:
6033    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6034    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6035
60362) iASL Compiler/Disassembler and Tools:
6037
6038Disassembler: Implemented support for EisaId() within _CID objects. Now
6039disassemble integer _CID objects back to EisaId invocations, including
6040multiple integers within _CID packages. Includes single-step support for
6041debugger also.
6042
6043Disassembler: Added support for DMAR and SRAT table definition changes.
6044
6045----------------------------------------
604614 May 2008. Summary of changes for version 20080514:
6047
60481) ACPI CA Core Subsystem:
6049
6050Fixed a problem where GPEs were enabled too early during the ACPICA
6051initialization. This could lead to "handler not installed" errors on some
6052machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
6053This
6054ensures that all operation regions and devices throughout the namespace
6055have
6056been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
6057
6058Implemented a change to the enter sleep code. Moved execution of the _GTS
6059method to just before setting sleep enable bit. The execution was moved
6060from
6061AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
6062immediately before the SLP_EN bit is set, as per the ACPI specification.
6063Luming Yu, BZ 1653.
6064
6065Implemented a fix to disable unknown GPEs (2nd version). Now always
6066disable
6067the GPE, even if ACPICA thinks that that it is already disabled. It is
6068possible that the AML or some other code has enabled the GPE unbeknownst
6069to
6070the ACPICA code.
6071
6072Fixed a problem with the Field operator where zero-length fields would
6073return
6074an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
6075ASL
6076field declarations in Field(), BankField(), and IndexField(). BZ 10606.
6077
6078Implemented a fix for the Load operator, now load the table at the
6079namespace
6080root. This reverts a change introduced in version 20071019. The table is
6081now
6082loaded at the namespace root even though this goes against the ACPI
6083specification. This provides compatibility with other ACPI
6084implementations.
6085The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
6086Ming.
6087
6088Fixed a problem where ACPICA would not Load() tables with unusual
6089signatures.
6090Now ignore ACPI table signature for Load() operator. Only "SSDT" is
6091acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
6092Therefore, signature validation is worthless. Apparently MS ACPI accepts
6093such
6094signatures, ACPICA must be compatible. BZ 10454.
6095
6096Fixed a possible negative array index in AcpiUtValidateException. Added
6097NULL
6098fields to the exception string arrays to eliminate a -1 subtraction on
6099the
6100SubStatus field.
6101
6102Updated the debug tracking macros to reduce overall code and data size.
6103Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
6104instead of pointers to static strings. Jan Beulich and Bob Moore.
6105
6106Implemented argument count checking in control method invocation via
6107AcpiEvaluateObject. Now emit an error if too few arguments, warning if
6108too
6109many. This applies only to extern programmatic control method execution,
6110not
6111method-to-method calls within the AML. Lin Ming.
6112
6113Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
6114no
6115longer needed, especially with the removal of 16-bit support. It was
6116replaced
6117mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
6118bit
6119on
612032/64-bit platforms is required.
6121
6122Added the C const qualifier for appropriate string constants -- mostly
6123MODULE_NAME and printf format strings. Jan Beulich.
6124
6125Example Code and Data Size: These are the sizes for the OS-independent
6126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6127debug version of the code includes the debug output trace mechanism and
6128has a
6129much larger code and data size.
6130
6131  Previous Release:
6132    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6133    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6134  Current Release:
6135    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6136    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6137
61382) iASL Compiler/Disassembler and Tools:
6139
6140Implemented ACPI table revision ID validation in the disassembler. Zero
6141is
6142always invalid. For DSDTs, the ID controls the interpreter integer width.
61431
6144means 32-bit and this is unusual. 2 or greater is 64-bit.
6145
6146----------------------------------------
614721 March 2008. Summary of changes for version 20080321:
6148
61491) ACPI CA Core Subsystem:
6150
6151Implemented an additional change to the GPE support in order to suppress
6152spurious or stray GPEs. The AcpiEvDisableGpe function will now
6153permanently
6154disable incoming GPEs that are neither enabled nor disabled -- meaning
6155that
6156the GPE is unknown to the system. This should prevent future interrupt
6157floods
6158from that GPE. BZ 6217 (Zhang Rui)
6159
6160Fixed a problem where NULL package elements were not returned to the
6161AcpiEvaluateObject interface correctly. The element was simply ignored
6162instead of returning a NULL ACPI_OBJECT package element, potentially
6163causing
6164a buffer overflow and/or confusing the caller who expected a fixed number
6165of
6166elements. BZ 10132 (Lin Ming, Bob Moore)
6167
6168Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
6169Dword,
6170Qword), Field, BankField, and IndexField operators when invoked from
6171inside
6172an executing control method. In this case, these operators created
6173namespace
6174nodes that were incorrectly left marked as permanent nodes instead of
6175temporary nodes. This could cause a problem if there is race condition
6176between an exiting control method and a running namespace walk. (Reported
6177by
6178Linn Crosetto)
6179
6180Fixed a problem where the CreateField and CreateXXXField operators would
6181incorrectly allow duplicate names (the name of the field) with no
6182exception
6183generated.
6184
6185Implemented several changes for Notify handling. Added support for new
6186Notify
6187values (ACPI 2.0+) and improved the Notify debug output. Notify on
6188PowerResource objects is no longer allowed, as per the ACPI
6189specification.
6190(Bob Moore, Zhang Rui)
6191
6192All Reference Objects returned via the AcpiEvaluateObject interface are
6193now
6194marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
6195for
6196NULL objects - either NULL package elements or unresolved named
6197references.
6198
6199Fixed a problem where an extraneous debug message was produced for
6200package
6201objects (when debugging enabled). The message "Package List length larger
6202than NumElements count" is now produced in the correct case, and is now
6203an
6204error message rather than a debug message. Added a debug message for the
6205opposite case, where NumElements is larger than the Package List (the
6206package
6207will be padded out with NULL elements as per the ACPI spec.)
6208
6209Implemented several improvements for the output of the ASL "Debug" object
6210to
6211clarify and keep all data for a given object on one output line.
6212
6213Fixed two size calculation issues with the variable-length Start
6214Dependent
6215resource descriptor.
6216
6217Example Code and Data Size: These are the sizes for the OS-independent
6218acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6219debug version of the code includes the debug output trace mechanism and
6220has
6221a much larger code and data size.
6222
6223  Previous Release:
6224    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6225    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6226  Current Release:
6227    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6228    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6229
62302) iASL Compiler/Disassembler and Tools:
6231
6232Fixed a problem with the use of the Switch operator where execution of
6233the
6234containing method by multiple concurrent threads could cause an
6235AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
6236actual Switch opcode, it must be simulated with local named temporary
6237variables and if/else pairs. The solution chosen was to mark any method
6238that
6239uses Switch as Serialized, thus preventing multiple thread entries. BZ
6240469.
6241
6242----------------------------------------
624313 February 2008. Summary of changes for version 20080213:
6244
62451) ACPI CA Core Subsystem:
6246
6247Implemented another MS compatibility design change for GPE/Notify
6248handling.
6249GPEs are now cleared/enabled asynchronously to allow all pending notifies
6250to
6251complete first. It is expected that the OSL will queue the enable request
6252behind all pending notify requests (may require changes to the local host
6253OSL
6254in AcpiOsExecute). Alexey Starikovskiy.
6255
6256Fixed a problem where buffer and package objects passed as arguments to a
6257control method via the external AcpiEvaluateObject interface could cause
6258an
6259AE_AML_INTERNAL exception depending on the order and type of operators
6260executed by the target control method.
6261
6262Fixed a problem where resource descriptor size optimization could cause a
6263problem when a _CRS resource template is passed to a _SRS method. The
6264_SRS
6265resource template must use the same descriptors (with the same size) as
6266returned from _CRS. This change affects the following resource
6267descriptors:
6268IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
62699487)
6270
6271Fixed a problem where a CopyObject to RegionField, BankField, and
6272IndexField
6273objects did not perform an implicit conversion as it should. These types
6274must
6275retain their initial type permanently as per the ACPI specification.
6276However,
6277a CopyObject to all other object types should not perform an implicit
6278conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6279
6280Fixed a problem with the AcpiGetDevices interface where the mechanism to
6281match device CIDs did not examine the entire list of available CIDs, but
6282instead aborted on the first non-matching CID. Andrew Patterson.
6283
6284Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
6285was
6286inadvertently changed to return a 16-bit value instead of a 32-bit value,
6287truncating the upper dword of a 64-bit value. This macro is only used to
6288display debug output, so no incorrect calculations were made. Also,
6289reimplemented the macro so that a 64-bit shift is not performed by
6290inefficient compilers.
6291
6292Added missing va_end statements that should correspond with each va_start
6293statement.
6294
6295Example Code and Data Size: These are the sizes for the OS-independent
6296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6297debug version of the code includes the debug output trace mechanism and
6298has
6299a much larger code and data size.
6300
6301  Previous Release:
6302    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6303    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6304  Current Release:
6305    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6306    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6307
63082) iASL Compiler/Disassembler and Tools:
6309
6310Implemented full disassembler support for the following new ACPI tables:
6311BERT, EINJ, and ERST. Implemented partial disassembler support for the
6312complicated HEST table. These tables support the Windows Hardware Error
6313Architecture (WHEA).
6314
6315----------------------------------------
631623 January 2008. Summary of changes for version 20080123:
6317
63181) ACPI CA Core Subsystem:
6319
6320Added the 2008 copyright to all module headers and signons. This affects
6321virtually every file in the ACPICA core subsystem, the iASL compiler, and
6322the tools/utilities.
6323
6324Fixed a problem with the SizeOf operator when used with Package and
6325Buffer
6326objects. These objects have deferred execution for some arguments, and
6327the
6328execution is now completed before the SizeOf is executed. This problem
6329caused
6330unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
6331BZ
63329558
6333
6334Implemented an enhancement to the interpreter "slack mode". In the
6335absence
6336of
6337an explicit return or an implicitly returned object from the last
6338executed
6339opcode, a control method will now implicitly return an integer of value 0
6340for
6341Microsoft compatibility. (Lin Ming) BZ 392
6342
6343Fixed a problem with the Load operator where an exception was not
6344returned
6345in
6346the case where the table is already loaded. (Lin Ming) BZ 463
6347
6348Implemented support for the use of DDBHandles as an Indexed Reference, as
6349per
6350the ACPI spec. (Lin Ming) BZ 486
6351
6352Implemented support for UserTerm (Method invocation) for the Unload
6353operator
6354as per the ACPI spec. (Lin Ming) BZ 580
6355
6356Fixed a problem with the LoadTable operator where the OemId and
6357OemTableId
6358input strings could cause unexpected failures if they were shorter than
6359the
6360maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
6361
6362Implemented support for UserTerm (Method invocation) for the Unload
6363operator
6364as per the ACPI spec. (Lin Ming) BZ 580
6365
6366Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
6367HEST,
6368IBFT, UEFI, WDAT. Disassembler support is forthcoming.
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:  79.3K Code, 17.2K Data,  96.5K Total
6378    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6379  Current Release:
6380    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6381    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6382
63832) iASL Compiler/Disassembler and Tools:
6384
6385Implemented support in the disassembler for checksum validation on
6386incoming
6387binary DSDTs and SSDTs. If incorrect, a message is displayed within the
6388table
6389header dump at the start of the disassembly.
6390
6391Implemented additional debugging information in the namespace listing
6392file
6393created during compilation. In addition to the namespace hierarchy, the
6394full
6395pathname to each namespace object is displayed.
6396
6397Fixed a problem with the disassembler where invalid ACPI tables could
6398cause
6399faults or infinite loops.
6400
6401Fixed an unexpected parse error when using the optional "parameter types"
6402list in a control method declaration. (Lin Ming) BZ 397
6403
6404Fixed a problem where two External declarations with the same name did
6405not
6406cause an error (Lin Ming) BZ 509
6407
6408Implemented support for full TermArgs (adding Argx, Localx and method
6409invocation) for the ParameterData parameter to the LoadTable operator.
6410(Lin
6411Ming) BZ 583,587
6412
6413----------------------------------------
641419 December 2007. Summary of changes for version 20071219:
6415
64161) ACPI CA Core Subsystem:
6417
6418Implemented full support for deferred execution for the TermArg string
6419arguments for DataTableRegion. This enables forward references and full
6420operand resolution for the three string arguments. Similar to
6421OperationRegion
6422deferred argument execution.) Lin Ming. BZ 430
6423
6424Implemented full argument resolution support for the BankValue argument
6425to
6426BankField. Previously, only constants were supported, now any TermArg may
6427be
6428used. Lin Ming BZ 387, 393
6429
6430Fixed a problem with AcpiGetDevices where the search of a branch of the
6431device tree could be terminated prematurely. In accordance with the ACPI
6432specification, the search down the current branch is terminated if a
6433device
6434is both not present and not functional (instead of just not present.)
6435Yakui
6436Zhao.
6437
6438Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
6439if
6440the underlying AML code changed the GPE enable registers. Now, any
6441unknown
6442incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
6443disabled
6444instead of simply ignored. Rui Zhang.
6445
6446Fixed a problem with Index Fields where the Index register was
6447incorrectly
6448limited to a maximum of 32 bits. Now any size may be used.
6449
6450Fixed a couple memory leaks associated with "implicit return" objects
6451when
6452the AML Interpreter slack mode is enabled. Lin Ming BZ 349
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:  79.0K Code, 17.2K Data,  96.2K Total
6462    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6463  Current Release:
6464    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6465    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6466
6467----------------------------------------
646814 November 2007. Summary of changes for version 20071114:
6469
64701) ACPI CA Core Subsystem:
6471
6472Implemented event counters for each of the Fixed Events, the ACPI SCI
6473(interrupt) itself, and control methods executed. Named
6474AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
6475These
6476should be useful for debugging and statistics.
6477
6478Implemented a new external interface, AcpiGetStatistics, to retrieve the
6479contents of the various event counters. Returns the current values for
6480AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
6481AcpiMethodCount. The interface can be expanded in the future if new
6482counters
6483are added. Device drivers should use this interface rather than access
6484the
6485counters directly.
6486
6487Fixed a problem with the FromBCD and ToBCD operators. With some
6488compilers,
6489the ShortDivide function worked incorrectly, causing problems with the
6490BCD
6491functions with large input values. A truncation from 64-bit to 32-bit
6492inadvertently occurred. Internal BZ 435. Lin Ming
6493
6494Fixed a problem with Index references passed as method arguments.
6495References
6496passed as arguments to control methods were dereferenced immediately
6497(before
6498control was passed to the called method). The references are now
6499correctly
6500passed directly to the called method. BZ 5389. Lin Ming
6501
6502Fixed a problem with CopyObject used in conjunction with the Index
6503operator.
6504The reference was incorrectly dereferenced before the copy. The reference
6505is
6506now correctly copied. BZ 5391. Lin Ming
6507
6508Fixed a problem with Control Method references within Package objects.
6509These
6510references are now correctly generated. This completes the package
6511construction overhaul that began in version 20071019.
6512
6513Example Code and Data Size: These are the sizes for the OS-independent
6514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6515debug version of the code includes the debug output trace mechanism and
6516has
6517a much larger code and data size.
6518
6519  Previous Release:
6520    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6521    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6522  Current Release:
6523    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6524    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6525
6526
65272) iASL Compiler/Disassembler and Tools:
6528
6529The AcpiExec utility now installs handlers for all of the predefined
6530Operation Region types. New types supported are: PCI_Config, CMOS, and
6531PCIBARTarget.
6532
6533Fixed a problem with the 64-bit version of AcpiExec where the extended
6534(64-
6535bit) address fields for the DSDT and FACS within the FADT were not being
6536used, causing truncation of the upper 32-bits of these addresses. Lin
6537Ming
6538and Bob Moore
6539
6540----------------------------------------
654119 October 2007. Summary of changes for version 20071019:
6542
65431) ACPI CA Core Subsystem:
6544
6545Fixed a problem with the Alias operator when the target of the alias is a
6546named ASL operator that opens a new scope -- Scope, Device,
6547PowerResource,
6548Processor, and ThermalZone. In these cases, any children of the original
6549operator could not be accessed via the alias, potentially causing
6550unexpected
6551AE_NOT_FOUND exceptions. (BZ 9067)
6552
6553Fixed a problem with the Package operator where all named references were
6554created as object references and left otherwise unresolved. According to
6555the
6556ACPI specification, a Package can only contain Data Objects or references
6557to
6558control methods. The implication is that named references to Data Objects
6559(Integer, Buffer, String, Package, BufferField, Field) should be resolved
6560immediately upon package creation. This is the approach taken with this
6561change. References to all other named objects (Methods, Devices, Scopes,
6562etc.) are all now properly created as reference objects. (BZ 5328)
6563
6564Reverted a change to Notify handling that was introduced in version
656520070508. This version changed the Notify handling from asynchronous to
6566fully synchronous (Device driver Notify handling with respect to the
6567Notify
6568ASL operator). It was found that this change caused more problems than it
6569solved and was removed by most users.
6570
6571Fixed a problem with the Increment and Decrement operators where the type
6572of
6573the target object could be unexpectedly and incorrectly changed. (BZ 353)
6574Lin Ming.
6575
6576Fixed a problem with the Load and LoadTable operators where the table
6577location within the namespace was ignored. Instead, the table was always
6578loaded into the root or current scope. Lin Ming.
6579
6580Fixed a problem with the Load operator when loading a table from a buffer
6581object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
6582
6583Fixed a problem with the Debug object where a store of a DdbHandle
6584reference
6585object to the Debug object could cause a fault.
6586
6587Added a table checksum verification for the Load operator, in the case
6588where
6589the load is from a buffer. (BZ 578).
6590
6591Implemented additional parameter validation for the LoadTable operator.
6592The
6593length of the input strings SignatureString, OemIdString, and OemTableId
6594are
6595now checked for maximum lengths. (BZ 582) Lin Ming.
6596
6597Example Code and Data Size: These are the sizes for the OS-independent
6598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6599debug version of the code includes the debug output trace mechanism and
6600has
6601a much larger code and data size.
6602
6603  Previous Release:
6604    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6605    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6606  Current Release:
6607    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6608    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6609
6610
66112) iASL Compiler/Disassembler:
6612
6613Fixed a problem where if a single file was specified and the file did not
6614exist, no error message was emitted. (Introduced with wildcard support in
6615version 20070917.)
6616
6617----------------------------------------
661819 September 2007. Summary of changes for version 20070919:
6619
66201) ACPI CA Core Subsystem:
6621
6622Designed and implemented new external interfaces to install and remove
6623handlers for ACPI table-related events. Current events that are defined
6624are
6625LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
6626they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
6627AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
6628
6629Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
6630(acpi_serialized option on Linux) could cause some systems to hang during
6631initialization. (Bob Moore) BZ 8171
6632
6633Fixed a problem where objects of certain types (Device, ThermalZone,
6634Processor, PowerResource) can be not found if they are declared and
6635referenced from within the same control method (Lin Ming) BZ 341
6636
6637Example Code and Data Size: These are the sizes for the OS-independent
6638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6639debug version of the code includes the debug output trace mechanism and
6640has
6641a much larger code and data size.
6642
6643  Previous Release:
6644    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6645    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6646  Current Release:
6647    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6648    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6649
6650
66512) iASL Compiler/Disassembler:
6652
6653Implemented support to allow multiple files to be compiled/disassembled
6654in
6655a
6656single invocation. This includes command line wildcard support for both
6657the
6658Windows and Unix versions of the compiler. This feature simplifies the
6659disassembly and compilation of multiple ACPI tables in a single
6660directory.
6661
6662----------------------------------------
666308 May 2007. Summary of changes for version 20070508:
6664
66651) ACPI CA Core Subsystem:
6666
6667Implemented a Microsoft compatibility design change for the handling of
6668the
6669Notify AML operator. Previously, notify handlers were dispatched and
6670executed completely asynchronously in a deferred thread. The new design
6671still executes the notify handlers in a different thread, but the
6672original
6673thread that executed the Notify() now waits at a synchronization point
6674for
6675the notify handler to complete. Some machines depend on a synchronous
6676Notify
6677operator in order to operate correctly.
6678
6679Implemented support to allow Package objects to be passed as method
6680arguments to the external AcpiEvaluateObject interface. Previously, this
6681would return the AE_NOT_IMPLEMENTED exception. This feature had not been
6682implemented since there were no reserved control methods that required it
6683until recently.
6684
6685Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
6686that
6687contained invalid non-zero values in reserved fields could cause later
6688failures because these fields have meaning in later revisions of the
6689FADT.
6690For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
6691fields
6692are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
6693
6694Fixed a problem where the Global Lock handle was not properly updated if
6695a
6696thread that acquired the Global Lock via executing AML code then
6697attempted
6698to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
6699Joe
6700Liu.
6701
6702Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
6703could be corrupted if the interrupt being removed was at the head of the
6704list. Reported by Linn Crosetto.
6705
6706Example Code and Data Size: These are the sizes for the OS-independent
6707acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6708debug version of the code includes the debug output trace mechanism and
6709has
6710a much larger code and data size.
6711
6712  Previous Release:
6713    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6714    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6715  Current Release:
6716    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6717    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6718
6719----------------------------------------
672020 March 2007. Summary of changes for version 20070320:
6721
67221) ACPI CA Core Subsystem:
6723
6724Implemented a change to the order of interpretation and evaluation of AML
6725operand objects within the AML interpreter. The interpreter now evaluates
6726operands in the order that they appear in the AML stream (and the
6727corresponding ASL code), instead of in the reverse order (after the
6728entire
6729operand list has been parsed). The previous behavior caused several
6730subtle
6731incompatibilities with the Microsoft AML interpreter as well as being
6732somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
6733
6734Implemented a change to the ACPI Global Lock support. All interfaces to
6735the
6736global lock now allow the same thread to acquire the lock multiple times.
6737This affects the AcpiAcquireGlobalLock external interface to the global
6738lock
6739as well as the internal use of the global lock to support AML fields -- a
6740control method that is holding the global lock can now simultaneously
6741access
6742AML fields that require global lock protection. Previously, in both
6743cases,
6744this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
6745to
6746AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
6747Controller. There is no change to the behavior of the AML Acquire
6748operator,
6749as this can already be used to acquire a mutex multiple times by the same
6750thread. BZ 8066. With assistance from Alexey Starikovskiy.
6751
6752Fixed a problem where invalid objects could be referenced in the AML
6753Interpreter after error conditions. During operand evaluation, ensure
6754that
6755the internal "Return Object" field is cleared on error and only valid
6756pointers are stored there. Caused occasional access to deleted objects
6757that
6758resulted in "large reference count" warning messages. Valery Podrezov.
6759
6760Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
6761on
6762deeply nested control method invocations. BZ 7873, local BZ 487. Valery
6763Podrezov.
6764
6765Fixed an internal problem with the handling of result objects on the
6766interpreter result stack. BZ 7872. Valery Podrezov.
6767
6768Removed obsolete code that handled the case where AML_NAME_OP is the
6769target
6770of a reference (Reference.Opcode). This code was no longer necessary. BZ
67717874. Valery Podrezov.
6772
6773Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
6774was
6775a
6776remnant from the previously discontinued 16-bit support.
6777
6778Example Code and Data Size: These are the sizes for the OS-independent
6779acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6780debug version of the code includes the debug output trace mechanism and
6781has
6782a much larger code and data size.
6783
6784  Previous Release:
6785    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6786    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6787  Current Release:
6788    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6789    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6790
6791----------------------------------------
679226 January 2007. Summary of changes for version 20070126:
6793
67941) ACPI CA Core Subsystem:
6795
6796Added the 2007 copyright to all module headers and signons. This affects
6797virtually every file in the ACPICA core subsystem, the iASL compiler, and
6798the utilities.
6799
6800Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
6801during a table load. A bad pointer was passed in the case where the DSDT
6802is
6803overridden, causing a fault in this case.
6804
6805Example Code and Data Size: These are the sizes for the OS-independent
6806acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6807debug version of the code includes the debug output trace mechanism and
6808has
6809a much larger code and data size.
6810
6811  Previous Release:
6812    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6813    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6814  Current Release:
6815    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6816    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6817
6818----------------------------------------
681915 December 2006. Summary of changes for version 20061215:
6820
68211) ACPI CA Core Subsystem:
6822
6823Support for 16-bit ACPICA has been completely removed since it is no
6824longer
6825necessary and it clutters the code. All 16-bit macros, types, and
6826conditional compiles have been removed, cleaning up and simplifying the
6827code
6828across the entire subsystem. DOS support is no longer needed since the
6829bootable Linux firmware kit is now available.
6830
6831The handler for the Global Lock is now removed during AcpiTerminate to
6832enable a clean subsystem restart, via the implementation of the
6833AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
6834HP)
6835
6836Implemented enhancements to the multithreading support within the
6837debugger
6838to enable improved multithreading debugging and evaluation of the
6839subsystem.
6840(Valery Podrezov)
6841
6842Debugger: Enhanced the Statistics/Memory command to emit the total
6843(maximum)
6844memory used during the execution, as well as the maximum memory consumed
6845by
6846each of the various object types. (Valery Podrezov)
6847
6848Example Code and Data Size: These are the sizes for the OS-independent
6849acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6850debug version of the code includes the debug output trace mechanism and
6851has
6852a much larger code and data size.
6853
6854  Previous Release:
6855    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6856    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6857  Current Release:
6858    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6859    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
6860
6861
68622) iASL Compiler/Disassembler and Tools:
6863
6864AcpiExec: Implemented a new option (-m) to display full memory use
6865statistics upon subsystem/program termination. (Valery Podrezov)
6866
6867----------------------------------------
686809 November 2006. Summary of changes for version 20061109:
6869
68701) ACPI CA Core Subsystem:
6871
6872Optimized the Load ASL operator in the case where the source operand is
6873an
6874operation region. Simply map the operation region memory, instead of
6875performing a bytewise read. (Region must be of type SystemMemory, see
6876below.)
6877
6878Fixed the Load ASL operator for the case where the source operand is a
6879region field. A buffer object is also allowed as the source operand. BZ
6880480
6881
6882Fixed a problem where the Load ASL operator allowed the source operand to
6883be
6884an operation region of any type. It is now restricted to regions of type
6885SystemMemory, as per the ACPI specification. BZ 481
6886
6887Additional cleanup and optimizations for the new Table Manager code.
6888
6889AcpiEnable will now fail if all of the required ACPI tables are not
6890loaded
6891(FADT, FACS, DSDT). BZ 477
6892
6893Added #pragma pack(8/4) to acobject.h to ensure that the structures in
6894this
6895header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
6896manually optimized to be aligned and will not work if it is byte-packed.
6897
6898Example Code and Data Size: These are the sizes for the OS-independent
6899acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6900debug version of the code includes the debug output trace mechanism and
6901has
6902a much larger code and data size.
6903
6904  Previous Release:
6905    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6906    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6907  Current Release:
6908    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
6909    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
6910
6911
69122) iASL Compiler/Disassembler and Tools:
6913
6914Fixed a problem where the presence of the _OSI predefined control method
6915within complex expressions could cause an internal compiler error.
6916
6917AcpiExec: Implemented full region support for multiple address spaces.
6918SpaceId is now part of the REGION object. BZ 429
6919
6920----------------------------------------
692111 October 2006. Summary of changes for version 20061011:
6922
69231) ACPI CA Core Subsystem:
6924
6925Completed an AML interpreter performance enhancement for control method
6926execution. Previously a 2-pass parse/execution, control methods are now
6927completely parsed and executed in a single pass. This improves overall
6928interpreter performance by ~25%, reduces code size, and reduces CPU stack
6929use. (Valery Podrezov + interpreter changes in version 20051202 that
6930eliminated namespace loading during the pass one parse.)
6931
6932Implemented _CID support for PCI Root Bridge detection. If the _HID does
6933not
6934match the predefined PCI Root Bridge IDs, the _CID list (if present) is
6935now
6936obtained and also checked for an ID match.
6937
6938Implemented additional support for the PCI _ADR execution: upsearch until
6939a
6940device scope is found before executing _ADR. This allows PCI_Config
6941operation regions to be declared locally within control methods
6942underneath
6943PCI device objects.
6944
6945Fixed a problem with a possible race condition between threads executing
6946AcpiWalkNamespace and the AML interpreter. This condition was removed by
6947modifying AcpiWalkNamespace to (by default) ignore all temporary
6948namespace
6949entries created during any concurrent control method execution. An
6950additional namespace race condition is known to exist between
6951AcpiWalkNamespace and the Load/Unload ASL operators and is still under
6952investigation.
6953
6954Restructured the AML ParseLoop function, breaking it into several
6955subfunctions in order to reduce CPU stack use and improve
6956maintainability.
6957(Mikhail Kouzmich)
6958
6959AcpiGetHandle: Fix for parameter validation to detect invalid
6960combinations
6961of prefix handle and pathname. BZ 478
6962
6963Example Code and Data Size: These are the sizes for the OS-independent
6964acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6965debug version of the code includes the debug output trace mechanism and
6966has
6967a much larger code and data size.
6968
6969  Previous Release:
6970    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
6971    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
6972  Current Release:
6973    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
6974    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
6975
69762) iASL Compiler/Disassembler and Tools:
6977
6978Ported the -g option (get local ACPI tables) to the new ACPICA Table
6979Manager
6980to restore original behavior.
6981
6982----------------------------------------
698327 September 2006. Summary of changes for version 20060927:
6984
69851) ACPI CA Core Subsystem:
6986
6987Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
6988These functions now use a spinlock for mutual exclusion and the interrupt
6989level indication flag is not needed.
6990
6991Fixed a problem with the Global Lock where the lock could appear to be
6992obtained before it is actually obtained. The global lock semaphore was
6993inadvertently created with one unit instead of zero units. (BZ 464)
6994Fiodor
6995Suietov.
6996
6997Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
6998during
6999a read from a buffer or region field. (BZ 458) Fiodor Suietov.
7000
7001Example Code and Data Size: These are the sizes for the OS-independent
7002acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7003debug version of the code includes the debug output trace mechanism and
7004has
7005a much larger code and data size.
7006
7007  Previous Release:
7008    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7009    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7010  Current Release:
7011    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7012    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7013
7014
70152) iASL Compiler/Disassembler and Tools:
7016
7017Fixed a compilation problem with the pre-defined Resource Descriptor
7018field
7019names where an "object does not exist" error could be incorrectly
7020generated
7021if the parent ResourceTemplate pathname places the template within a
7022different namespace scope than the current scope. (BZ 7212)
7023
7024Fixed a problem where the compiler could hang after syntax errors
7025detected
7026in an ElseIf construct. (BZ 453)
7027
7028Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
7029operator. An incorrect output filename was produced when this parameter
7030was
7031a null string (""). Now, the original input filename is used as the AML
7032output filename, with an ".aml" extension.
7033
7034Implemented a generic batch command mode for the AcpiExec utility
7035(execute
7036any AML debugger command) (Valery Podrezov).
7037
7038----------------------------------------
703912 September 2006. Summary of changes for version 20060912:
7040
70411) ACPI CA Core Subsystem:
7042
7043Enhanced the implementation of the "serialized mode" of the interpreter
7044(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
7045specified, instead of creating a serialization semaphore per control
7046method,
7047the interpreter lock is simply no longer released before a blocking
7048operation during control method execution. This effectively makes the AML
7049Interpreter single-threaded. The overhead of a semaphore per-method is
7050eliminated.
7051
7052Fixed a regression where an error was no longer emitted if a control
7053method
7054attempts to create 2 objects of the same name. This once again returns
7055AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
7056that
7057will dynamically serialize the control method to possible prevent future
7058errors. (BZ 440)
7059
7060Integrated a fix for a problem with PCI Express HID detection in the PCI
7061Config Space setup procedure. (BZ 7145)
7062
7063Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
7064AcpiHwInitialize function - the FADT registers are now validated when the
7065table is loaded.
7066
7067Added two new warnings during FADT verification - 1) if the FADT is
7068larger
7069than the largest known FADT version, and 2) if there is a mismatch
7070between
7071a
707232-bit block address and the 64-bit X counterpart (when both are non-
7073zero.)
7074
7075Example Code and Data Size: These are the sizes for the OS-independent
7076acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7077debug version of the code includes the debug output trace mechanism and
7078has
7079a much larger code and data size.
7080
7081  Previous Release:
7082    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7083    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7084  Current Release:
7085    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7086    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7087
7088
70892) iASL Compiler/Disassembler and Tools:
7090
7091Fixed a problem with the implementation of the Switch() operator where
7092the
7093temporary variable was declared too close to the actual Switch, instead
7094of
7095at method level. This could cause a problem if the Switch() operator is
7096within a while loop, causing an error on the second iteration. (BZ 460)
7097
7098Disassembler - fix for error emitted for unknown type for target of scope
7099operator. Now, ignore it and continue.
7100
7101Disassembly of an FADT now verifies the input FADT and reports any errors
7102found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
7103
7104Disassembly of raw data buffers with byte initialization data now
7105prefixes
7106each output line with the current buffer offset.
7107
7108Disassembly of ASF! table now includes all variable-length data fields at
7109the end of some of the subtables.
7110
7111The disassembler now emits a comment if a buffer appears to be a
7112ResourceTemplate, but cannot be disassembled as such because the EndTag
7113does
7114not appear at the very end of the buffer.
7115
7116AcpiExec - Added the "-t" command line option to enable the serialized
7117mode
7118of the AML interpreter.
7119
7120----------------------------------------
712131 August 2006. Summary of changes for version 20060831:
7122
71231) ACPI CA Core Subsystem:
7124
7125Miscellaneous fixes for the Table Manager:
7126- Correctly initialize internal common FADT for all 64-bit "X" fields
7127- Fixed a couple table mapping issues during table load
7128- Fixed a couple alignment issues for IA64
7129- Initialize input array to zero in AcpiInitializeTables
7130- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
7131AcpiGetTableByIndex
7132
7133Change for GPE support: when a "wake" GPE is received, all wake GPEs are
7134now
7135immediately disabled to prevent the waking GPE from firing again and to
7136prevent other wake GPEs from interrupting the wake process.
7137
7138Added the AcpiGpeCount global that tracks the number of processed GPEs,
7139to
7140be used for debugging systems with a large number of ACPI interrupts.
7141
7142Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
7143both the ACPICA headers and the disassembler.
7144
7145Example Code and Data Size: These are the sizes for the OS-independent
7146acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7147debug version of the code includes the debug output trace mechanism and
7148has
7149a much larger code and data size.
7150
7151  Previous Release:
7152    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7153    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7154  Current Release:
7155    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7156    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7157
7158
71592) iASL Compiler/Disassembler and Tools:
7160
7161Disassembler support for the DMAR ACPI table.
7162
7163----------------------------------------
716423 August 2006. Summary of changes for version 20060823:
7165
71661) ACPI CA Core Subsystem:
7167
7168The Table Manager component has been completely redesigned and
7169reimplemented. The new design is much simpler, and reduces the overall
7170code
7171and data size of the kernel-resident ACPICA by approximately 5%. Also, it
7172is
7173now possible to obtain the ACPI tables very early during kernel
7174initialization, even before dynamic memory management is initialized.
7175(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7176
7177Obsolete ACPICA interfaces:
7178
7179- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
7180init
7181time).
7182- AcpiLoadTable: Not needed.
7183- AcpiUnloadTable: Not needed.
7184
7185New ACPICA interfaces:
7186
7187- AcpiInitializeTables: Must be called before the table manager can be
7188used.
7189- AcpiReallocateRootTable: Used to transfer the root table to dynamically
7190allocated memory after it becomes available.
7191- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
7192tables
7193in the RSDT/XSDT.
7194
7195Other ACPICA changes:
7196
7197- AcpiGetTableHeader returns the actual mapped table header, not a copy.
7198Use
7199AcpiOsUnmapMemory to free this mapping.
7200- AcpiGetTable returns the actual mapped table. The mapping is managed
7201internally and must not be deleted by the caller. Use of this interface
7202causes no additional dynamic memory allocation.
7203- AcpiFindRootPointer: Support for physical addressing has been
7204eliminated,
7205it appeared to be unused.
7206- The interface to AcpiOsMapMemory has changed to be consistent with the
7207other allocation interfaces.
7208- The interface to AcpiOsGetRootPointer has changed to eliminate
7209unnecessary
7210parameters.
7211- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
721264-
7213bit platforms. Was previously 64 bits on all platforms.
7214- The interface to the ACPI Global Lock acquire/release macros have
7215changed
7216slightly since ACPICA no longer keeps a local copy of the FACS with a
7217constructed pointer to the actual global lock.
7218
7219Porting to the new table manager:
7220
7221- AcpiInitializeTables: Must be called once, and can be called anytime
7222during the OS initialization process. It allows the host to specify an
7223area
7224of memory to be used to store the internal version of the RSDT/XSDT (root
7225table). This allows the host to access ACPI tables before memory
7226management
7227is initialized and running.
7228- AcpiReallocateRootTable: Can be called after memory management is
7229running
7230to copy the root table to a dynamically allocated array, freeing up the
7231scratch memory specified in the call to AcpiInitializeTables.
7232- AcpiSubsystemInitialize: This existing interface is independent of the
7233Table Manager, and does not have to be called before the Table Manager
7234can
7235be used, it only must be called before the rest of ACPICA can be used.
7236- ACPI Tables: Some changes have been made to the names and structure of
7237the
7238actbl.h and actbl1.h header files and may require changes to existing
7239code.
7240For example, bitfields have been completely removed because of their lack
7241of
7242portability across C compilers.
7243- Update interfaces to the Global Lock acquire/release macros if local
7244versions are used. (see acwin.h)
7245
7246Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7247
7248New files: tbfind.c
7249
7250Example Code and Data Size: These are the sizes for the OS-independent
7251acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7252debug version of the code includes the debug output trace mechanism and
7253has
7254a much larger code and data size.
7255
7256  Previous Release:
7257    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7258    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7259  Current Release:
7260    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7261    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7262
7263
72642) iASL Compiler/Disassembler and Tools:
7265
7266No changes for this release.
7267
7268----------------------------------------
726921 July 2006. Summary of changes for version 20060721:
7270
72711) ACPI CA Core Subsystem:
7272
7273The full source code for the ASL test suite used to validate the iASL
7274compiler and the ACPICA core subsystem is being released with the ACPICA
7275source for the first time. The source is contained in a separate package
7276and
7277consists of over 1100 files that exercise all ASL/AML operators. The
7278package
7279should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
7280Fiodor
7281Suietov)
7282
7283Completed a new design and implementation for support of the ACPI Global
7284Lock. On the OS side, the global lock is now treated as a standard AML
7285mutex. Previously, multiple OS threads could "acquire" the global lock
7286simultaneously. However, this could cause the BIOS to be starved out of
7287the
7288lock - especially in cases such as the Embedded Controller driver where
7289there is a tight coupling between the OS and the BIOS.
7290
7291Implemented an optimization for the ACPI Global Lock interrupt mechanism.
7292The Global Lock interrupt handler no longer queues the execution of a
7293separate thread to signal the global lock semaphore. Instead, the
7294semaphore
7295is signaled directly from the interrupt handler.
7296
7297Implemented support within the AML interpreter for package objects that
7298contain a larger AML length (package list length) than the package
7299element
7300count. In this case, the length of the package is truncated to match the
7301package element count. Some BIOS code apparently modifies the package
7302length
7303on the fly, and this change supports this behavior. Provides
7304compatibility
7305with the MS AML interpreter. (With assistance from Fiodor Suietov)
7306
7307Implemented a temporary fix for the BankValue parameter of a Bank Field
7308to
7309support all constant values, now including the Zero and One opcodes.
7310Evaluation of this parameter must eventually be converted to a full
7311TermArg
7312evaluation. A not-implemented error is now returned (temporarily) for
7313non-
7314constant values for this parameter.
7315
7316Fixed problem reports (Fiodor Suietov) integrated:
7317- Fix for premature object deletion after CopyObject on Operation Region
7318(BZ
7319350)
7320
7321Example Code and Data Size: These are the sizes for the OS-independent
7322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7323debug version of the code includes the debug output trace mechanism and
7324has
7325a much larger code and data size.
7326
7327  Previous Release:
7328    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7329    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7330  Current Release:
7331    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7332    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7333
7334
73352) iASL Compiler/Disassembler and Tools:
7336
7337No changes for this release.
7338
7339----------------------------------------
734007 July 2006. Summary of changes for version 20060707:
7341
73421) ACPI CA Core Subsystem:
7343
7344Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
7345that do not allow the initialization of address pointers within packed
7346structures - even though the hardware itself may support misaligned
7347transfers. Some of the debug data structures are packed by default to
7348minimize size.
7349
7350Added an error message for the case where AcpiOsGetThreadId() returns
7351zero.
7352A non-zero value is required by the core ACPICA code to ensure the proper
7353operation of AML mutexes and recursive control methods.
7354
7355The DSDT is now the only ACPI table that determines whether the AML
7356interpreter is in 32-bit or 64-bit mode. Not really a functional change,
7357but
7358the hooks for per-table 32/64 switching have been removed from the code.
7359A
7360clarification to the ACPI specification is forthcoming in ACPI 3.0B.
7361
7362Fixed a possible leak of an OwnerID in the error path of
7363AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
7364deletion to a single place in AcpiTbUninstallTable to correct possible
7365leaks
7366when using the AcpiTbDeleteTablesByType interface (with assistance from
7367Lance Ortiz.)
7368
7369Fixed a problem with Serialized control methods where the semaphore
7370associated with the method could be over-signaled after multiple method
7371invocations.
7372
7373Fixed two issues with the locking of the internal namespace data
7374structure.
7375Both the Unload() operator and AcpiUnloadTable interface now lock the
7376namespace during the namespace deletion associated with the table unload
7377(with assistance from Linn Crosetto.)
7378
7379Fixed problem reports (Valery Podrezov) integrated:
7380- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
7381
7382Fixed problem reports (Fiodor Suietov) integrated:
7383- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
7384- On Address Space handler deletion, needless deactivation call (BZ 374)
7385- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
7386375)
7387- Possible memory leak, Notify sub-objects of Processor, Power,
7388ThermalZone
7389(BZ 376)
7390- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
7391- Minimum Length of RSDT should be validated (BZ 379)
7392- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
7393Handler (BZ (380)
7394- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
7395loaded
7396(BZ 381)
7397
7398Example Code and Data Size: These are the sizes for the OS-independent
7399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7400debug version of the code includes the debug output trace mechanism and
7401has
7402a much larger code and data size.
7403
7404  Previous Release:
7405    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7406    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7407  Current Release:
7408    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7409    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7410
7411
74122) iASL Compiler/Disassembler and Tools:
7413
7414Fixed problem reports:
7415Compiler segfault when ASL contains a long (>1024) String declaration (BZ
7416436)
7417
7418----------------------------------------
741923 June 2006. Summary of changes for version 20060623:
7420
74211) ACPI CA Core Subsystem:
7422
7423Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
7424allows the type to be customized to the host OS for improved efficiency
7425(since a spinlock is usually a very small object.)
7426
7427Implemented support for "ignored" bits in the ACPI registers. According
7428to
7429the ACPI specification, these bits should be preserved when writing the
7430registers via a read/modify/write cycle. There are 3 bits preserved in
7431this
7432manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
7433
7434Implemented the initial deployment of new OSL mutex interfaces. Since
7435some
7436host operating systems have separate mutex and semaphore objects, this
7437feature was requested. The base code now uses mutexes (and the new mutex
7438interfaces) wherever a binary semaphore was used previously. However, for
7439the current release, the mutex interfaces are defined as macros to map
7440them
7441to the existing semaphore interfaces. Therefore, no OSL changes are
7442required
7443at this time. (See acpiosxf.h)
7444
7445Fixed several problems with the support for the control method SyncLevel
7446parameter. The SyncLevel now works according to the ACPI specification
7447and
7448in concert with the Mutex SyncLevel parameter, since the current
7449SyncLevel
7450is a property of the executing thread. Mutual exclusion for control
7451methods
7452is now implemented with a mutex instead of a semaphore.
7453
7454Fixed three instances of the use of the C shift operator in the bitfield
7455support code (exfldio.c) to avoid the use of a shift value larger than
7456the
7457target data width. The behavior of C compilers is undefined in this case
7458and
7459can cause unpredictable results, and therefore the case must be detected
7460and
7461avoided. (Fiodor Suietov)
7462
7463Added an info message whenever an SSDT or OEM table is loaded dynamically
7464via the Load() or LoadTable() ASL operators. This should improve
7465debugging
7466capability since it will show exactly what tables have been loaded
7467(beyond
7468the tables present in the RSDT/XSDT.)
7469
7470Example Code and Data Size: These are the sizes for the OS-independent
7471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7472debug version of the code includes the debug output trace mechanism and
7473has
7474a much larger code and data size.
7475
7476  Previous Release:
7477    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7478    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7479  Current Release:
7480    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7481    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7482
7483
74842) iASL Compiler/Disassembler and Tools:
7485
7486No changes for this release.
7487
7488----------------------------------------
748908 June 2006. Summary of changes for version 20060608:
7490
74911) ACPI CA Core Subsystem:
7492
7493Converted the locking mutex used for the ACPI hardware to a spinlock.
7494This
7495change should eliminate all problems caused by attempting to acquire a
7496semaphore at interrupt level, and it means that all ACPICA external
7497interfaces that directly access the ACPI hardware can be safely called
7498from
7499interrupt level. OSL code that implements the semaphore interfaces should
7500be
7501able to eliminate any workarounds for being called at interrupt level.
7502
7503Fixed a regression introduced in 20060526 where the ACPI device
7504initialization could be prematurely aborted with an AE_NOT_FOUND if a
7505device
7506did not have an optional _INI method.
7507
7508Fixed an IndexField issue where a write to the Data Register should be
7509limited in size to the AccessSize (width) of the IndexField itself. (BZ
7510433,
7511Fiodor Suietov)
7512
7513Fixed problem reports (Valery Podrezov) integrated:
7514- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
7515
7516Fixed problem reports (Fiodor Suietov) integrated:
7517- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
7518
7519Removed four global mutexes that were obsolete and were no longer being
7520used.
7521
7522Example Code and Data Size: These are the sizes for the OS-independent
7523acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7524debug version of the code includes the debug output trace mechanism and
7525has
7526a much larger code and data size.
7527
7528  Previous Release:
7529    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7530    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7531  Current Release:
7532    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7533    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7534
7535
75362) iASL Compiler/Disassembler and Tools:
7537
7538Fixed a fault when using -g option (get tables from registry) on Windows
7539machines.
7540
7541Fixed problem reports integrated:
7542- Generate error if CreateField NumBits parameter is zero. (BZ 405)
7543- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
7544Suietov)
7545- Global table revision override (-r) is ignored (BZ 413)
7546
7547----------------------------------------
754826 May 2006. Summary of changes for version 20060526:
7549
75501) ACPI CA Core Subsystem:
7551
7552Restructured, flattened, and simplified the internal interfaces for
7553namespace object evaluation - resulting in smaller code, less CPU stack
7554use,
7555and fewer interfaces. (With assistance from Mikhail Kouzmich)
7556
7557Fixed a problem with the CopyObject operator where the first parameter
7558was
7559not typed correctly for the parser, interpreter, compiler, and
7560disassembler.
7561Caused various errors and unexpected behavior.
7562
7563Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
7564produced incorrect results with some C compilers. Since the behavior of C
7565compilers when the shift value is larger than the datatype width is
7566apparently not well defined, the interpreter now detects this condition
7567and
7568simply returns zero as expected in all such cases. (BZ 395)
7569
7570Fixed problem reports (Valery Podrezov) integrated:
7571- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
7572- Allow interpreter to handle nested method declarations (BZ 5361)
7573
7574Fixed problem reports (Fiodor Suietov) integrated:
7575- AcpiTerminate doesn't free debug memory allocation list objects (BZ
7576355)
7577- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
7578356)
7579- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
7580- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
7581- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
7582- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
7583- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
7584- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
7585- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
7586365)
7587- Status of the Global Initialization Handler call not used (BZ 366)
7588- Incorrect object parameter to Global Initialization Handler (BZ 367)
7589
7590Example Code and Data Size: These are the sizes for the OS-independent
7591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7592debug version of the code includes the debug output trace mechanism and
7593has
7594a much larger code and data size.
7595
7596  Previous Release:
7597    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7598    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7599  Current Release:
7600    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7601    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7602
7603
76042) iASL Compiler/Disassembler and Tools:
7605
7606Modified the parser to allow the names IO, DMA, and IRQ to be used as
7607namespace identifiers with no collision with existing resource descriptor
7608macro names. This provides compatibility with other ASL compilers and is
7609most useful for disassembly/recompilation of existing tables without
7610parse
7611errors. (With assistance from Thomas Renninger)
7612
7613Disassembler: fixed an incorrect disassembly problem with the
7614DataTableRegion and CopyObject operators. Fixed a possible fault during
7615disassembly of some Alias operators.
7616
7617----------------------------------------
761812 May 2006. Summary of changes for version 20060512:
7619
76201) ACPI CA Core Subsystem:
7621
7622Replaced the AcpiOsQueueForExecution interface with a new interface named
7623AcpiOsExecute. The major difference is that the new interface does not
7624have
7625a Priority parameter, this appeared to be useless and has been replaced
7626by
7627a
7628Type parameter. The Type tells the host what type of execution is being
7629requested, such as global lock handler, notify handler, GPE handler, etc.
7630This allows the host to queue and execute the request as appropriate for
7631the
7632request type, possibly using different work queues and different
7633priorities
7634for the various request types. This enables fixes for multithreading
7635deadlock problems such as BZ #5534, and will require changes to all
7636existing
7637OS interface layers. (Alexey Starikovskiy and Bob Moore)
7638
7639Fixed a possible memory leak associated with the support for the so-
7640called
7641"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
7642Suietov)
7643
7644Fixed a problem with the Load() operator where a table load from an
7645operation region could overwrite an internal table buffer by up to 7
7646bytes
7647and cause alignment faults on IPF systems. (With assistance from Luming
7648Yu)
7649
7650Example Code and Data Size: These are the sizes for the OS-independent
7651acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7652debug version of the code includes the debug output trace mechanism and
7653has
7654a much larger code and data size.
7655
7656  Previous Release:
7657    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7658    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7659  Current Release:
7660    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7661    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7662
7663
7664
76652) iASL Compiler/Disassembler and Tools:
7666
7667Disassembler: Implemented support to cross reference the internal
7668namespace
7669and automatically generate ASL External() statements for symbols not
7670defined
7671within the current table being disassembled. This will simplify the
7672disassembly and recompilation of interdependent tables such as SSDTs
7673since
7674these statements will no longer have to be added manually.
7675
7676Disassembler: Implemented experimental support to automatically detect
7677invocations of external control methods and generate appropriate
7678External()
7679statements. This is problematic because the AML cannot be correctly
7680parsed
7681until the number of arguments for each control method is known.
7682Currently,
7683standalone method invocations and invocations as the source operand of a
7684Store() statement are supported.
7685
7686Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
7687LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
7688LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
7689more readable and likely closer to the original ASL source.
7690
7691----------------------------------------
769221 April 2006. Summary of changes for version 20060421:
7693
76941) ACPI CA Core Subsystem:
7695
7696Removed a device initialization optimization introduced in 20051216 where
7697the _STA method was not run unless an _INI was also present for the same
7698device. This optimization could cause problems because it could allow
7699_INI
7700methods to be run within a not-present device subtree. (If a not-present
7701device had no _INI, _STA would not be run, the not-present status would
7702not
7703be discovered, and the children of the device would be incorrectly
7704traversed.)
7705
7706Implemented a new _STA optimization where namespace subtrees that do not
7707contain _INI are identified and ignored during device initialization.
7708Selectively running _STA can significantly improve boot time on large
7709machines (with assistance from Len Brown.)
7710
7711Implemented support for the device initialization case where the returned
7712_STA flags indicate a device not-present but functioning. In this case,
7713_INI
7714is not run, but the device children are examined for presence, as per the
7715ACPI specification.
7716
7717Implemented an additional change to the IndexField support in order to
7718conform to MS behavior. The value written to the Index Register is not
7719simply a byte offset, it is a byte offset in units of the access width of
7720the parent Index Field. (Fiodor Suietov)
7721
7722Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
7723interface is called during the creation of all AML operation regions, and
7724allows the host OS to exert control over what addresses it will allow the
7725AML code to access. Operation Regions whose addresses are disallowed will
7726cause a runtime exception when they are actually accessed (will not
7727affect
7728or abort table loading.) See oswinxf or osunixxf for an example
7729implementation.
7730
7731Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
7732interface allows the host OS to match the various "optional"
7733interface/behavior strings for the _OSI predefined control method as
7734appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
7735for an example implementation.
7736
7737Restructured and corrected various problems in the exception handling
7738code
7739paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
7740(with assistance from Takayoshi Kochi.)
7741
7742Modified the Linux source converter to ignore quoted string literals
7743while
7744converting identifiers from mixed to lower case. This will correct
7745problems
7746with the disassembler and other areas where such strings must not be
7747modified.
7748
7749The ACPI_FUNCTION_* macros no longer require quotes around the function
7750name. This allows the Linux source converter to convert the names, now
7751that
7752the converter ignores quoted strings.
7753
7754Example Code and Data Size: These are the sizes for the OS-independent
7755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7756debug version of the code includes the debug output trace mechanism and
7757has
7758a much larger code and data size.
7759
7760  Previous Release:
7761
7762    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7763    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7764  Current Release:
7765    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7766    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7767
7768
77692) iASL Compiler/Disassembler and Tools:
7770
7771Implemented 3 new warnings for iASL, and implemented multiple warning
7772levels
7773(w2 flag).
7774
77751) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
7776not
7777WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
7778check for the possible timeout, a warning is issued.
7779
77802) Useless operators: If an ASL operator does not specify an optional
7781target
7782operand and it also does not use the function return value from the
7783operator, a warning is issued since the operator effectively does
7784nothing.
7785
77863) Unreferenced objects: If a namespace object is created, but never
7787referenced, a warning is issued. This is a warning level 2 since there
7788are
7789cases where this is ok, such as when a secondary table is loaded that
7790uses
7791the unreferenced objects. Even so, care is taken to only flag objects
7792that
7793don't look like they will ever be used. For example, the reserved methods
7794(starting with an underscore) are usually not referenced because it is
7795expected that the OS will invoke them.
7796
7797----------------------------------------
779831 March 2006. Summary of changes for version 20060331:
7799
78001) ACPI CA Core Subsystem:
7801
7802Implemented header file support for the following additional ACPI tables:
7803ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
7804support,
7805all current and known ACPI tables are now defined in the ACPICA headers
7806and
7807are available for use by device drivers and other software.
7808
7809Implemented support to allow tables that contain ACPI names with invalid
7810characters to be loaded. Previously, this would cause the table load to
7811fail, but since there are several known cases of such tables on existing
7812machines, this change was made to enable ACPI support for them. Also,
7813this
7814matches the behavior of the Microsoft ACPI implementation.
7815
7816Fixed a couple regressions introduced during the memory optimization in
7817the
781820060317 release. The namespace node definition required additional
7819reorganization and an internal datatype that had been changed to 8-bit
7820was
7821restored to 32-bit. (Valery Podrezov)
7822
7823Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
7824could be passed through to AcpiOsReleaseObject which is unexpected. Such
7825null pointers are now trapped and ignored, matching the behavior of the
7826previous implementation before the deployment of AcpiOsReleaseObject.
7827(Valery Podrezov, Fiodor Suietov)
7828
7829Fixed a memory mapping leak during the deletion of a SystemMemory
7830operation
7831region where a cached memory mapping was not deleted. This became a
7832noticeable problem for operation regions that are defined within
7833frequently
7834used control methods. (Dana Meyers)
7835
7836Reorganized the ACPI table header files into two main files: one for the
7837ACPI tables consumed by the ACPICA core, and another for the
7838miscellaneous
7839ACPI tables that are consumed by the drivers and other software. The
7840various
7841FADT definitions were merged into one common section and three different
7842tables (ACPI 1.0, 1.0+, and 2.0)
7843
7844Example Code and Data Size: These are the sizes for the OS-independent
7845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7846debug version of the code includes the debug output trace mechanism and
7847has
7848a much larger code and data size.
7849
7850  Previous Release:
7851    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
7852    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
7853  Current Release:
7854    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7855    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7856
7857
78582) iASL Compiler/Disassembler and Tools:
7859
7860Disassembler: Implemented support to decode and format all non-AML ACPI
7861tables (tables other than DSDTs and SSDTs.) This includes the new tables
7862added to the ACPICA headers, therefore all current and known ACPI tables
7863are
7864supported.
7865
7866Disassembler: The change to allow ACPI names with invalid characters also
7867enables the disassembly of such tables. Invalid characters within names
7868are
7869changed to '*' to make the name printable; the iASL compiler will still
7870generate an error for such names, however, since this is an invalid ACPI
7871character.
7872
7873Implemented an option for AcpiXtract (-a) to extract all tables found in
7874the
7875input file. The default invocation extracts only the DSDTs and SSDTs.
7876
7877Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
7878makefile for the AcpiXtract utility.
7879
7880----------------------------------------
788117 March 2006. Summary of changes for version 20060317:
7882
78831) ACPI CA Core Subsystem:
7884
7885Implemented the use of a cache object for all internal namespace nodes.
7886Since there are about 1000 static nodes in a typical system, this will
7887decrease memory use for cache implementations that minimize per-
7888allocation
7889overhead (such as a slab allocator.)
7890
7891Removed the reference count mechanism for internal namespace nodes, since
7892it
7893was deemed unnecessary. This reduces the size of each namespace node by
7894about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
7895case,
7896and 32 bytes for the 64-bit case.
7897
7898Optimized several internal data structures to reduce object size on 64-
7899bit
7900platforms by packing data within the 64-bit alignment. This includes the
7901frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
7902instances corresponding to the namespace objects.
7903
7904Added two new strings for the predefined _OSI method: "Windows 2001.1
7905SP1"
7906and "Windows 2006".
7907
7908Split the allocation tracking mechanism out to a separate file, from
7909utalloc.c to uttrack.c. This mechanism appears to be only useful for
7910application-level code. Kernels may wish to not include uttrack.c in
7911distributions.
7912
7913Removed all remnants of the obsolete ACPI_REPORT_* macros and the
7914associated
7915code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
7916macros.)
7917
7918Code and Data Size: These are the sizes for the acpica.lib produced by
7919the
7920Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7921ACPI
7922driver or OSPM code. The debug version of the code includes the debug
7923output
7924trace mechanism and has a much larger code and data size. Note that these
7925values will vary depending on the efficiency of the compiler and the
7926compiler options used during generation.
7927
7928  Previous Release:
7929    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7930    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7931  Current Release:
7932    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
7933    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
7934
7935
79362) iASL Compiler/Disassembler and Tools:
7937
7938Implemented an ANSI C version of the acpixtract utility. This version
7939will
7940automatically extract the DSDT and all SSDTs from the input acpidump text
7941file and dump the binary output to separate files. It can also display a
7942summary of the input file including the headers for each table found and
7943will extract any single ACPI table, with any signature. (See
7944source/tools/acpixtract)
7945
7946----------------------------------------
794710 March 2006. Summary of changes for version 20060310:
7948
79491) ACPI CA Core Subsystem:
7950
7951Tagged all external interfaces to the subsystem with the new
7952ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
7953assist
7954kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
7955macro. The default definition is NULL.
7956
7957Added the ACPI_THREAD_ID type for the return value from
7958AcpiOsGetThreadId.
7959This allows the host to define this as necessary to simplify kernel
7960integration. The default definition is ACPI_NATIVE_UINT.
7961
7962Fixed two interpreter problems related to error processing, the deletion
7963of
7964objects, and placing invalid pointers onto the internal operator result
7965stack. BZ 6028, 6151 (Valery Podrezov)
7966
7967Increased the reference count threshold where a warning is emitted for
7968large
7969reference counts in order to eliminate unnecessary warnings on systems
7970with
7971large namespaces (especially 64-bit.) Increased the value from 0x400 to
79720x800.
7973
7974Due to universal disagreement as to the meaning of the 'c' in the
7975calloc()
7976function, the ACPI_MEM_CALLOCATE macro has been renamed to
7977ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
7978ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
7979ACPI_FREE.
7980
7981Code and Data Size: These are the sizes for the acpica.lib produced by
7982the
7983Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
7984ACPI
7985driver or OSPM code. The debug version of the code includes the debug
7986output
7987trace mechanism and has a much larger code and data size. Note that these
7988values will vary depending on the efficiency of the compiler and the
7989compiler options used during generation.
7990
7991  Previous Release:
7992    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
7993    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
7994  Current Release:
7995    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
7996    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
7997
7998
79992) iASL Compiler/Disassembler:
8000
8001Disassembler: implemented support for symbolic resource descriptor
8002references. If a CreateXxxxField operator references a fixed offset
8003within
8004a
8005resource descriptor, a name is assigned to the descriptor and the offset
8006is
8007translated to the appropriate resource tag and pathname. The addition of
8008this support brings the disassembled code very close to the original ASL
8009source code and helps eliminate run-time errors when the disassembled
8010code
8011is modified (and recompiled) in such a way as to invalidate the original
8012fixed offsets.
8013
8014Implemented support for a Descriptor Name as the last parameter to the
8015ASL
8016Register() macro. This parameter was inadvertently left out of the ACPI
8017specification, and will be added for ACPI 3.0b.
8018
8019Fixed a problem where the use of the "_OSI" string (versus the full path
8020"\_OSI") caused an internal compiler error. ("No back ptr to op")
8021
8022Fixed a problem with the error message that occurs when an invalid string
8023is
8024used for a _HID object (such as one with an embedded asterisk:
8025"*PNP010A".)
8026The correct message is now displayed.
8027
8028----------------------------------------
802917 February 2006. Summary of changes for version 20060217:
8030
80311) ACPI CA Core Subsystem:
8032
8033Implemented a change to the IndexField support to match the behavior of
8034the
8035Microsoft AML interpreter. The value written to the Index register is now
8036a
8037byte offset, no longer an index based upon the width of the Data
8038register.
8039This should fix IndexField problems seen on some machines where the Data
8040register is not exactly one byte wide. The ACPI specification will be
8041clarified on this point.
8042
8043Fixed a problem where several resource descriptor types could overrun the
8044internal descriptor buffer due to size miscalculation: VendorShort,
8045VendorLong, and Interrupt. This was noticed on IA64 machines, but could
8046affect all platforms.
8047
8048Fixed a problem where individual resource descriptors were misaligned
8049within
8050the internal buffer, causing alignment faults on IA64 platforms.
8051
8052Code and Data Size: These are the sizes for the acpica.lib produced by
8053the
8054Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8055ACPI
8056driver or OSPM code. The debug version of the code includes the debug
8057output
8058trace mechanism and has a much larger code and data size. Note that these
8059values will vary depending on the efficiency of the compiler and the
8060compiler options used during generation.
8061
8062  Previous Release:
8063    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8064    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8065  Current Release:
8066    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8067    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8068
8069
80702) iASL Compiler/Disassembler:
8071
8072Implemented support for new reserved names: _WDG and _WED are Microsoft
8073extensions for Windows Instrumentation Management, _TDL is a new ACPI-
8074defined method (Throttling Depth Limit.)
8075
8076Fixed a problem where a zero-length VendorShort or VendorLong resource
8077descriptor was incorrectly emitted as a descriptor of length one.
8078
8079----------------------------------------
808010 February 2006. Summary of changes for version 20060210:
8081
80821) ACPI CA Core Subsystem:
8083
8084Removed a couple of extraneous ACPI_ERROR messages that appeared during
8085normal execution. These became apparent after the conversion from
8086ACPI_DEBUG_PRINT.
8087
8088Fixed a problem where the CreateField operator could hang if the BitIndex
8089or
8090NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
8091
8092Fixed a problem where a DeRefOf operation on a buffer object incorrectly
8093failed with an exception. This also fixes a couple of related RefOf and
8094DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
8095
8096Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
8097of
8098AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
8099BZ
81005480)
8101
8102Implemented a memory cleanup at the end of the execution of each
8103iteration
8104of an AML While() loop, preventing the accumulation of outstanding
8105objects.
8106(Valery Podrezov, BZ 5427)
8107
8108Eliminated a chunk of duplicate code in the object resolution code.
8109(Valery
8110Podrezov, BZ 5336)
8111
8112Fixed several warnings during the 64-bit code generation.
8113
8114The AcpiSrc source code conversion tool now inserts one line of
8115whitespace
8116after an if() statement that is followed immediately by a comment,
8117improving
8118readability of the Linux code.
8119
8120Code and Data Size: The current and previous library sizes for the core
8121subsystem are shown below. These are the code and data sizes for the
8122acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8123These
8124values do not include any ACPI driver or OSPM code. The debug version of
8125the
8126code includes the debug output trace mechanism and has a much larger code
8127and data size. Note that these values will vary depending on the
8128efficiency
8129of the compiler and the compiler options used during generation.
8130
8131  Previous Release:
8132    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8133    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8134  Current Release:
8135    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8136    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8137
8138
81392) iASL Compiler/Disassembler:
8140
8141Fixed a problem with the disassembly of a BankField operator with a
8142complex
8143expression for the BankValue parameter.
8144
8145----------------------------------------
814627 January 2006. Summary of changes for version 20060127:
8147
81481) ACPI CA Core Subsystem:
8149
8150Implemented support in the Resource Manager to allow unresolved
8151namestring
8152references within resource package objects for the _PRT method. This
8153support
8154is in addition to the previously implemented unresolved reference support
8155within the AML parser. If the interpreter slack mode is enabled, these
8156unresolved references will be passed through to the caller as a NULL
8157package
8158entry.
8159
8160Implemented and deployed new macros and functions for error and warning
8161messages across the subsystem. These macros are simpler and generate less
8162code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
8163ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
8164macros remain defined to allow ACPI drivers time to migrate to the new
8165macros.
8166
8167Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
8168the
8169Acquire/Release Lock OSL interfaces.
8170
8171Fixed a problem where Alias ASL operators are sometimes not correctly
8172resolved, in both the interpreter and the iASL compiler.
8173
8174Fixed several problems with the implementation of the
8175ConcatenateResTemplate
8176ASL operator. As per the ACPI specification, zero length buffers are now
8177treated as a single EndTag. One-length buffers always cause a fatal
8178exception. Non-zero length buffers that do not end with a full 2-byte
8179EndTag
8180cause a fatal exception.
8181
8182Fixed a possible structure overwrite in the AcpiGetObjectInfo external
8183interface. (With assistance from Thomas Renninger)
8184
8185Code and Data Size: The current and previous library sizes for the core
8186subsystem are shown below. These are the code and data sizes for the
8187acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8188These
8189values do not include any ACPI driver or OSPM code. The debug version of
8190the
8191code includes the debug output trace mechanism and has a much larger code
8192and data size. Note that these values will vary depending on the
8193efficiency
8194of the compiler and the compiler options used during generation.
8195
8196  Previous Release:
8197    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8198    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8199  Current Release:
8200    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8201    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8202
8203
82042) iASL Compiler/Disassembler:
8205
8206Fixed an internal error that was generated for any forward references to
8207ASL
8208Alias objects.
8209
8210----------------------------------------
821113 January 2006. Summary of changes for version 20060113:
8212
82131) ACPI CA Core Subsystem:
8214
8215Added 2006 copyright to all module headers and signons. This affects
8216virtually every file in the ACPICA core subsystem, iASL compiler, and the
8217utilities.
8218
8219Enhanced the ACPICA error reporting in order to simplify user migration
8220to
8221the non-debug version of ACPICA. Replaced all instances of the
8222ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
8223debug
8224levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
8225respectively. This preserves all error and warning messages in the non-
8226debug
8227version of the ACPICA code (this has been referred to as the "debug lite"
8228option.) Over 200 cases were converted to create a total of over 380
8229error/warning messages across the ACPICA code. This increases the code
8230and
8231data size of the default non-debug version of the code somewhat (about
823213K),
8233but all error/warning reporting may be disabled if desired (and code
8234eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
8235configuration option. The size of the debug version of ACPICA remains
8236about
8237the same.
8238
8239Fixed a memory leak within the AML Debugger "Set" command. One object was
8240not properly deleted for every successful invocation of the command.
8241
8242Code and Data Size: The current and previous library sizes for the core
8243subsystem are shown below. These are the code and data sizes for the
8244acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8245These
8246values do not include any ACPI driver or OSPM code. The debug version of
8247the
8248code includes the debug output trace mechanism and has a much larger code
8249and data size. Note that these values will vary depending on the
8250efficiency
8251of the compiler and the compiler options used during generation.
8252
8253  Previous Release:
8254    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8255    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8256  Current Release:
8257    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8258    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8259
8260
82612) iASL Compiler/Disassembler:
8262
8263The compiler now officially supports the ACPI 3.0a specification that was
8264released on December 30, 2005. (Specification is available at
8265www.acpi.info)
8266
8267----------------------------------------
826816 December 2005. Summary of changes for version 20051216:
8269
82701) ACPI CA Core Subsystem:
8271
8272Implemented optional support to allow unresolved names within ASL Package
8273objects. A null object is inserted in the package when a named reference
8274cannot be located in the current namespace. Enabled via the interpreter
8275slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
8276machines
8277that contain such code.
8278
8279Implemented an optimization to the initialization sequence that can
8280improve
8281boot time. During ACPI device initialization, the _STA method is now run
8282if
8283and only if the _INI method exists. The _STA method is used to determine
8284if
8285the device is present; An _INI can only be run if _STA returns present,
8286but
8287it is a waste of time to run the _STA method if the _INI does not exist.
8288(Prototype and assistance from Dong Wei)
8289
8290Implemented use of the C99 uintptr_t for the pointer casting macros if it
8291is
8292available in the current compiler. Otherwise, the default (void *) cast
8293is
8294used as before.
8295
8296Fixed some possible memory leaks found within the execution path of the
8297Break, Continue, If, and CreateField operators. (Valery Podrezov)
8298
8299Fixed a problem introduced in the 20051202 release where an exception is
8300generated during method execution if a control method attempts to declare
8301another method.
8302
8303Moved resource descriptor string constants that are used by both the AML
8304disassembler and AML debugger to the common utilities directory so that
8305these components are independent.
8306
8307Implemented support in the AcpiExec utility (-e switch) to globally
8308ignore
8309exceptions during control method execution (method is not aborted.)
8310
8311Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
8312generation.
8313
8314Code and Data Size: The current and previous library sizes for the core
8315subsystem are shown below. These are the code and data sizes for the
8316acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8317These
8318values do not include any ACPI driver or OSPM code. The debug version of
8319the
8320code includes the debug output trace mechanism and has a much larger code
8321and data size. Note that these values will vary depending on the
8322efficiency
8323of the compiler and the compiler options used during generation.
8324
8325  Previous Release:
8326    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8327    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8328  Current Release:
8329    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8330    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8331
8332
83332) iASL Compiler/Disassembler:
8334
8335Fixed a problem where a CPU stack overflow fault could occur if a
8336recursive
8337method call was made from within a Return statement.
8338
8339----------------------------------------
834002 December 2005. Summary of changes for version 20051202:
8341
83421) ACPI CA Core Subsystem:
8343
8344Modified the parsing of control methods to no longer create namespace
8345objects during the first pass of the parse. Objects are now created only
8346during the execute phase, at the moment the namespace creation operator
8347is
8348encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
8349This
8350should eliminate ALREADY_EXISTS exceptions seen on some machines where
8351reentrant control methods are protected by an AML mutex. The mutex will
8352now
8353correctly block multiple threads from attempting to create the same
8354object
8355more than once.
8356
8357Increased the number of available Owner Ids for namespace object tracking
8358from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
8359on
8360some machines with a large number of ACPI tables (either static or
8361dynamic).
8362
8363Fixed a problem with the AcpiExec utility where a fault could occur when
8364the
8365-b switch (batch mode) is used.
8366
8367Enhanced the namespace dump routine to output the owner ID for each
8368namespace object.
8369
8370Code and Data Size: The current and previous library sizes for the core
8371subsystem are shown below. These are the code and data sizes for the
8372acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8373These
8374values do not include any ACPI driver or OSPM code. The debug version of
8375the
8376code includes the debug output trace mechanism and has a much larger code
8377and data size. Note that these values will vary depending on the
8378efficiency
8379of the compiler and the compiler options used during generation.
8380
8381  Previous Release:
8382    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8383    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8384  Current Release:
8385    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8386    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8387
8388
83892) iASL Compiler/Disassembler:
8390
8391Fixed a parse error during compilation of certain Switch/Case constructs.
8392To
8393simplify the parse, the grammar now allows for multiple Default
8394statements
8395and this error is now detected and flagged during the analysis phase.
8396
8397Disassembler: The disassembly now includes the contents of the original
8398table header within a comment at the start of the file. This includes the
8399name and version of the original ASL compiler.
8400
8401----------------------------------------
840217 November 2005. Summary of changes for version 20051117:
8403
84041) ACPI CA Core Subsystem:
8405
8406Fixed a problem in the AML parser where the method thread count could be
8407decremented below zero if any errors occurred during the method parse
8408phase.
8409This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
8410machines.
8411This also fixed a related regression with the mechanism that detects and
8412corrects methods that cannot properly handle reentrancy (related to the
8413deployment of the new OwnerId mechanism.)
8414
8415Eliminated the pre-parsing of control methods (to detect errors) during
8416table load. Related to the problem above, this was causing unwind issues
8417if
8418any errors occurred during the parse, and it seemed to be overkill. A
8419table
8420load should not be aborted if there are problems with any single control
8421method, thus rendering this feature rather pointless.
8422
8423Fixed a problem with the new table-driven resource manager where an
8424internal
8425buffer overflow could occur for small resource templates.
8426
8427Implemented a new external interface, AcpiGetVendorResource. This
8428interface
8429will find and return a vendor-defined resource descriptor within a _CRS
8430or
8431_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
8432Helgaas.
8433
8434Removed the length limit (200) on string objects as per the upcoming ACPI
84353.0A specification. This affects the following areas of the interpreter:
84361)
8437any implicit conversion of a Buffer to a String, 2) a String object
8438result
8439of the ASL Concatentate operator, 3) the String object result of the ASL
8440ToString operator.
8441
8442Fixed a problem in the Windows OS interface layer (OSL) where a
8443WAIT_FOREVER
8444on a semaphore object would incorrectly timeout. This allows the
8445multithreading features of the AcpiExec utility to work properly under
8446Windows.
8447
8448Updated the Linux makefiles for the iASL compiler and AcpiExec to include
8449the recently added file named "utresrc.c".
8450
8451Code and Data Size: The current and previous library sizes for the core
8452subsystem are shown below. These are the code and data sizes for the
8453acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8454These
8455values do not include any ACPI driver or OSPM code. The debug version of
8456the
8457code includes the debug output trace mechanism and has a much larger code
8458and data size. Note that these values will vary depending on the
8459efficiency
8460of the compiler and the compiler options used during generation.
8461
8462  Previous Release:
8463    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8464    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8465  Current Release:
8466    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8467    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8468
8469
84702) iASL Compiler/Disassembler:
8471
8472Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
8473specification. For the iASL compiler, this means that string literals
8474within
8475the source ASL can be of any length.
8476
8477Enhanced the listing output to dump the AML code for resource descriptors
8478immediately after the ASL code for each descriptor, instead of in a block
8479at
8480the end of the entire resource template.
8481
8482Enhanced the compiler debug output to dump the entire original parse tree
8483constructed during the parse phase, before any transforms are applied to
8484the
8485tree. The transformed tree is dumped also.
8486
8487----------------------------------------
848802 November 2005. Summary of changes for version 20051102:
8489
84901) ACPI CA Core Subsystem:
8491
8492Modified the subsystem initialization sequence to improve GPE support.
8493The
8494GPE initialization has been split into two parts in order to defer
8495execution
8496of the _PRW methods (Power Resources for Wake) until after the hardware
8497is
8498fully initialized and the SCI handler is installed. This allows the _PRW
8499methods to access fields protected by the Global Lock. This will fix
8500systems
8501where a NO_GLOBAL_LOCK exception has been seen during initialization.
8502
8503Converted the ACPI internal object disassemble and display code within
8504the
8505AML debugger to fully table-driven operation, reducing code size and
8506increasing maintainability.
8507
8508Fixed a regression with the ConcatenateResTemplate() ASL operator
8509introduced
8510in the 20051021 release.
8511
8512Implemented support for "local" internal ACPI object types within the
8513debugger "Object" command and the AcpiWalkNamespace external interfaces.
8514These local types include RegionFields, BankFields, IndexFields, Alias,
8515and
8516reference objects.
8517
8518Moved common AML resource handling code into a new file, "utresrc.c".
8519This
8520code is shared by both the Resource Manager and the AML Debugger.
8521
8522Code and Data Size: The current and previous library sizes for the core
8523subsystem are shown below. These are the code and data sizes for the
8524acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8525These
8526values do not include any ACPI driver or OSPM code. The debug version of
8527the
8528code includes the debug output trace mechanism and has a much larger code
8529and data size. Note that these values will vary depending on the
8530efficiency
8531of the compiler and the compiler options used during generation.
8532
8533  Previous Release:
8534    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8535    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8536  Current Release:
8537    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8538    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8539
8540
85412) iASL Compiler/Disassembler:
8542
8543Fixed a problem with very large initializer lists (more than 4000
8544elements)
8545for both Buffer and Package objects where the parse stack could overflow.
8546
8547Enhanced the pre-compile source code scan for non-ASCII characters to
8548ignore
8549characters within comment fields. The scan is now always performed and is
8550no
8551longer optional, detecting invalid characters within a source file
8552immediately rather than during the parse phase or later.
8553
8554Enhanced the ASL grammar definition to force early reductions on all
8555list-
8556style grammar elements so that the overall parse stack usage is greatly
8557reduced. This should improve performance and reduce the possibility of
8558parse
8559stack overflow.
8560
8561Eliminated all reduce/reduce conflicts in the iASL parser generation.
8562Also,
8563with the addition of a %expected statement, the compiler generates from
8564source with no warnings.
8565
8566Fixed a possible segment fault in the disassembler if the input filename
8567does not contain a "dot" extension (Thomas Renninger).
8568
8569----------------------------------------
857021 October 2005. Summary of changes for version 20051021:
8571
85721) ACPI CA Core Subsystem:
8573
8574Implemented support for the EM64T and other x86-64 processors. This
8575essentially entails recognizing that these processors support non-aligned
8576memory transfers. Previously, all 64-bit processors were assumed to lack
8577hardware support for non-aligned transfers.
8578
8579Completed conversion of the Resource Manager to nearly full table-driven
8580operation. Specifically, the resource conversion code (convert AML to
8581internal format and the reverse) and the debug code to dump internal
8582resource descriptors are fully table-driven, reducing code and data size
8583and
8584improving maintainability.
8585
8586The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
8587word
8588on 64-bit processors instead of a fixed 32-bit word. (With assistance
8589from
8590Alexey Starikovskiy)
8591
8592Implemented support within the resource conversion code for the Type-
8593Specific byte within the various ACPI 3.0 *WordSpace macros.
8594
8595Fixed some issues within the resource conversion code for the type-
8596specific
8597flags for both Memory and I/O address resource descriptors. For Memory,
8598implemented support for the MTP and TTP flags. For I/O, split the TRS and
8599TTP flags into two separate fields.
8600
8601Code and Data Size: The current and previous library sizes for the core
8602subsystem are shown below. These are the code and data sizes for the
8603acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8604These
8605values do not include any ACPI driver or OSPM code. The debug version of
8606the
8607code includes the debug output trace mechanism and has a much larger code
8608and data size. Note that these values will vary depending on the
8609efficiency
8610of the compiler and the compiler options used during generation.
8611
8612  Previous Release:
8613    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8614    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8615  Current Release:
8616    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8617    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8618
8619
8620
86212) iASL Compiler/Disassembler:
8622
8623Relaxed a compiler restriction that disallowed a ResourceIndex byte if
8624the
8625corresponding ResourceSource string was not also present in a resource
8626descriptor declaration. This restriction caused problems with existing
8627AML/ASL code that includes the Index byte without the string. When such
8628AML
8629was disassembled, it could not be compiled without modification. Further,
8630the modified code created a resource template with a different size than
8631the
8632original, breaking code that used fixed offsets into the resource
8633template
8634buffer.
8635
8636Removed a recent feature of the disassembler to ignore a lone
8637ResourceIndex
8638byte. This byte is now emitted if present so that the exact AML can be
8639reproduced when the disassembled code is recompiled.
8640
8641Improved comments and text alignment for the resource descriptor code
8642emitted by the disassembler.
8643
8644Implemented disassembler support for the ACPI 3.0 AccessSize field within
8645a
8646Register() resource descriptor.
8647
8648----------------------------------------
864930 September 2005. Summary of changes for version 20050930:
8650
86511) ACPI CA Core Subsystem:
8652
8653Completed a major overhaul of the Resource Manager code - specifically,
8654optimizations in the area of the AML/internal resource conversion code.
8655The
8656code has been optimized to simplify and eliminate duplicated code, CPU
8657stack
8658use has been decreased by optimizing function parameters and local
8659variables, and naming conventions across the manager have been
8660standardized
8661for clarity and ease of maintenance (this includes function, parameter,
8662variable, and struct/typedef names.) The update may force changes in some
8663driver code, depending on how resources are handled by the host OS.
8664
8665All Resource Manager dispatch and information tables have been moved to a
8666single location for clarity and ease of maintenance. One new file was
8667created, named "rsinfo.c".
8668
8669The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
8670guarantee that the argument is not evaluated twice, making them less
8671prone
8672to macro side-effects. However, since there exists the possibility of
8673additional stack use if a particular compiler cannot optimize them (such
8674as
8675in the debug generation case), the original macros are optionally
8676available.
8677Note that some invocations of the return_VALUE macro may now cause size
8678mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
8679to
8680eliminate these. (From Randy Dunlap)
8681
8682Implemented a new mechanism to enable debug tracing for individual
8683control
8684methods. A new external interface, AcpiDebugTrace, is provided to enable
8685this mechanism. The intent is to allow the host OS to easily enable and
8686disable tracing for problematic control methods. This interface can be
8687easily exposed to a user or debugger interface if desired. See the file
8688psxface.c for details.
8689
8690AcpiUtCallocate will now return a valid pointer if a length of zero is
8691specified - a length of one is used and a warning is issued. This matches
8692the behavior of AcpiUtAllocate.
8693
8694Code and Data Size: The current and previous library sizes for the core
8695subsystem are shown below. These are the code and data sizes for the
8696acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8697These
8698values do not include any ACPI driver or OSPM code. The debug version of
8699the
8700code includes the debug output trace mechanism and has a much larger code
8701and data size. Note that these values will vary depending on the
8702efficiency
8703of the compiler and the compiler options used during generation.
8704
8705  Previous Release:
8706    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8707    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8708  Current Release:
8709    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8710    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8711
8712
87132) iASL Compiler/Disassembler:
8714
8715A remark is issued if the effective compile-time length of a package or
8716buffer is zero. Previously, this was a warning.
8717
8718----------------------------------------
871916 September 2005. Summary of changes for version 20050916:
8720
87211) ACPI CA Core Subsystem:
8722
8723Fixed a problem within the Resource Manager where support for the Generic
8724Register descriptor was not fully implemented. This descriptor is now
8725fully
8726recognized, parsed, disassembled, and displayed.
8727
8728Completely restructured the Resource Manager code to utilize table-driven
8729dispatch and lookup, eliminating many of the large switch() statements.
8730This
8731reduces overall subsystem code size and code complexity. Affects the
8732resource parsing and construction, disassembly, and debug dump output.
8733
8734Cleaned up and restructured the debug dump output for all resource
8735descriptors. Improved readability of the output and reduced code size.
8736
8737Fixed a problem where changes to internal data structures caused the
8738optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
8739
8740Code and Data Size: The current and previous library sizes for the core
8741subsystem are shown below. These are the code and data sizes for the
8742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8743These
8744values do not include any ACPI driver or OSPM code. The debug version of
8745the
8746code includes the debug output trace mechanism and has a much larger code
8747and data size. Note that these values will vary depending on the
8748efficiency
8749of the compiler and the compiler options used during generation.
8750
8751  Previous Release:
8752    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8753    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8754  Current Release:
8755    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8756    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8757
8758
87592) iASL Compiler/Disassembler:
8760
8761Updated the disassembler to automatically insert an EndDependentFn()
8762macro
8763into the ASL stream if this macro is missing in the original AML code,
8764simplifying compilation of the resulting ASL module.
8765
8766Fixed a problem in the disassembler where a disassembled ResourceSource
8767string (within a large resource descriptor) was not surrounded by quotes
8768and
8769not followed by a comma, causing errors when the resulting ASL module was
8770compiled. Also, escape sequences within a ResourceSource string are now
8771handled correctly (especially "\\")
8772
8773----------------------------------------
877402 September 2005. Summary of changes for version 20050902:
8775
87761) ACPI CA Core Subsystem:
8777
8778Fixed a problem with the internal Owner ID allocation and deallocation
8779mechanisms for control method execution and recursive method invocation.
8780This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
8781messages seen on some systems. Recursive method invocation depth is
8782currently limited to 255. (Alexey Starikovskiy)
8783
8784Completely eliminated all vestiges of support for the "module-level
8785executable code" until this support is fully implemented and debugged.
8786This
8787should eliminate the NO_RETURN_VALUE exceptions seen during table load on
8788some systems that invoke this support.
8789
8790Fixed a problem within the resource manager code where the transaction
8791flags
8792for a 64-bit address descriptor were handled incorrectly in the type-
8793specific flag byte.
8794
8795Consolidated duplicate code within the address descriptor resource
8796manager
8797code, reducing overall subsystem code size.
8798
8799Fixed a fault when using the AML debugger "disassemble" command to
8800disassemble individual control methods.
8801
8802Removed references to the "release_current" directory within the Unix
8803release package.
8804
8805Code and Data Size: The current and previous core subsystem library sizes
8806are shown below. These are the code and data sizes for the acpica.lib
8807produced by the Microsoft Visual C++ 6.0 compiler. These values do not
8808include any ACPI driver or OSPM code. The debug version of the code
8809includes
8810the debug output trace mechanism and has a much larger code and data
8811size.
8812Note that these values will vary depending on the efficiency of the
8813compiler
8814and the compiler options used during generation.
8815
8816  Previous Release:
8817    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8818    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8819  Current Release:
8820    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8821    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8822
8823
88242) iASL Compiler/Disassembler:
8825
8826Implemented an error check for illegal duplicate values in the interrupt
8827and
8828dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
8829Interrupt().
8830
8831Implemented error checking for the Irq() and IrqNoFlags() macros to
8832detect
8833too many values in the interrupt list (16 max) and invalid values in the
8834list (range 0 - 15)
8835
8836The maximum length string literal within an ASL file is now restricted to
8837200 characters as per the ACPI specification.
8838
8839Fixed a fault when using the -ln option (generate namespace listing).
8840
8841Implemented an error check to determine if a DescriptorName within a
8842resource descriptor has already been used within the current scope.
8843
8844----------------------------------------
884515 August 2005.  Summary of changes for version 20050815:
8846
88471) ACPI CA Core Subsystem:
8848
8849Implemented a full bytewise compare to determine if a table load request
8850is
8851attempting to load a duplicate table. The compare is performed if the
8852table
8853signatures and table lengths match. This will allow different tables with
8854the same OEM Table ID and revision to be loaded - probably against the
8855ACPI
8856specification, but discovered in the field nonetheless.
8857
8858Added the changes.txt logfile to each of the zipped release packages.
8859
8860Code and Data Size: Current and previous core subsystem library sizes are
8861shown below. These are the code and data sizes for the acpica.lib
8862produced
8863by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8864any ACPI driver or OSPM code. The debug version of the code includes the
8865debug output trace mechanism and has a much larger code and data size.
8866Note
8867that these values will vary depending on the efficiency of the compiler
8868and
8869the compiler options used during generation.
8870
8871  Previous Release:
8872    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8873    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8874  Current Release:
8875    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8876    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
8877
8878
88792) iASL Compiler/Disassembler:
8880
8881Fixed a problem where incorrect AML code could be generated for Package
8882objects if optimization is disabled (via the -oa switch).
8883
8884Fixed a problem with where incorrect AML code is generated for variable-
8885length packages when the package length is not specified and the number
8886of
8887initializer values is greater than 255.
8888
8889
8890----------------------------------------
889129 July 2005.  Summary of changes for version 20050729:
8892
88931) ACPI CA Core Subsystem:
8894
8895Implemented support to ignore an attempt to install/load a particular
8896ACPI
8897table more than once. Apparently there exists BIOS code that repeatedly
8898attempts to load the same SSDT upon certain events. With assistance from
8899Venkatesh Pallipadi.
8900
8901Restructured the main interface to the AML parser in order to correctly
8902handle all exceptional conditions. This will prevent leakage of the
8903OwnerId
8904resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
8905some
8906machines. With assistance from Alexey Starikovskiy.
8907
8908Support for "module level code" has been disabled in this version due to
8909a
8910number of issues that have appeared on various machines. The support can
8911be
8912enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
8913compilation. When the issues are fully resolved, the code will be enabled
8914by
8915default again.
8916
8917Modified the internal functions for debug print support to define the
8918FunctionName parameter as a (const char *) for compatibility with
8919compiler
8920built-in macros such as __FUNCTION__, etc.
8921
8922Linted the entire ACPICA source tree for both 32-bit and 64-bit.
8923
8924Implemented support to display an object count summary for the AML
8925Debugger
8926commands Object and Methods.
8927
8928Code and Data Size: Current and previous core subsystem library sizes are
8929shown below. These are the code and data sizes for the acpica.lib
8930produced
8931by the Microsoft Visual C++ 6.0 compiler, and these values do not include
8932any ACPI driver or OSPM code. The debug version of the code includes the
8933debug output trace mechanism and has a much larger code and data size.
8934Note
8935that these values will vary depending on the efficiency of the compiler
8936and
8937the compiler options used during generation.
8938
8939  Previous Release:
8940    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
8941    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
8942  Current Release:
8943    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
8944    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
8945
8946
89472) iASL Compiler/Disassembler:
8948
8949Fixed a regression that appeared in the 20050708 version of the compiler
8950where an error message was inadvertently emitted for invocations of the
8951_OSI
8952reserved control method.
8953
8954----------------------------------------
895508 July 2005.  Summary of changes for version 20050708:
8956
89571) ACPI CA Core Subsystem:
8958
8959The use of the CPU stack in the debug version of the subsystem has been
8960considerably reduced. Previously, a debug structure was declared in every
8961function that used the debug macros. This structure has been removed in
8962favor of declaring the individual elements as parameters to the debug
8963functions. This reduces the cumulative stack use during nested execution
8964of
8965ACPI function calls at the cost of a small increase in the code size of
8966the
8967debug version of the subsystem. With assistance from Alexey Starikovskiy
8968and
8969Len Brown.
8970
8971Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
8972headers to define a macro that will return the current function name at
8973runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
8974by
8975the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
8976compiler-dependent header, the function name is saved on the CPU stack
8977(one
8978pointer per function.) This mechanism is used because apparently there
8979exists no standard ANSI-C defined macro that that returns the function
8980name.
8981
8982Redesigned and reimplemented the "Owner ID" mechanism used to track
8983namespace objects created/deleted by ACPI tables and control method
8984execution. A bitmap is now used to allocate and free the IDs, thus
8985solving
8986the wraparound problem present in the previous implementation. The size
8987of
8988the namespace node descriptor was reduced by 2 bytes as a result (Alexey
8989Starikovskiy).
8990
8991Removed the UINT32_BIT and UINT16_BIT types that were used for the
8992bitfield
8993flag definitions within the headers for the predefined ACPI tables. These
8994have been replaced by UINT8_BIT in order to increase the code portability
8995of
8996the subsystem. If the use of UINT8 remains a problem, we may be forced to
8997eliminate bitfields entirely because of a lack of portability.
8998
8999Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
9000This
9001is a frequently used function and this improvement increases the
9002performance
9003of the entire subsystem (Alexey Starikovskiy).
9004
9005Fixed several possible memory leaks and the inverse - premature object
9006deletion (Alexey Starikovskiy).
9007
9008Code and Data Size: Current and previous core subsystem library sizes are
9009shown below. These are the code and data sizes for the acpica.lib
9010produced
9011by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9012any ACPI driver or OSPM code. The debug version of the code includes the
9013debug output trace mechanism and has a much larger code and data size.
9014Note
9015that these values will vary depending on the efficiency of the compiler
9016and
9017the compiler options used during generation.
9018
9019  Previous Release:
9020    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9021    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9022  Current Release:
9023    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9024    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9025
9026----------------------------------------
902724 June 2005.  Summary of changes for version 20050624:
9028
90291) ACPI CA Core Subsystem:
9030
9031Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
9032the host-defined cache object. This allows the OSL implementation to
9033define
9034and type this object in any manner desired, simplifying the OSL
9035implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
9036Linux, and should be defined in the OS-specific header file for other
9037operating systems as required.
9038
9039Changed the interface to AcpiOsAcquireObject to directly return the
9040requested object as the function return (instead of ACPI_STATUS.) This
9041change was made for performance reasons, since this is the purpose of the
9042interface in the first place. AcpiOsAcquireObject is now similar to the
9043AcpiOsAllocate interface.
9044
9045Implemented a new AML debugger command named Businfo. This command
9046displays
9047information about all devices that have an associate _PRT object. The
9048_ADR,
9049_HID, _UID, and _CID are displayed for these devices.
9050
9051Modified the initialization sequence in AcpiInitializeSubsystem to call
9052the
9053OSL interface AcpiOslInitialize first, before any local initialization.
9054This
9055change was required because the global initialization now calls OSL
9056interfaces.
9057
9058Enhanced the Dump command to display the entire contents of Package
9059objects
9060(including all sub-objects and their values.)
9061
9062Restructured the code base to split some files because of size and/or
9063because the code logically belonged in a separate file. New files are
9064listed
9065below. All makefiles and project files included in the ACPI CA release
9066have
9067been updated.
9068    utilities/utcache.c           /* Local cache interfaces */
9069    utilities/utmutex.c           /* Local mutex support */
9070    utilities/utstate.c           /* State object support */
9071    interpreter/parser/psloop.c   /* Main AML parse loop */
9072
9073Code and Data Size: Current and previous core subsystem library sizes are
9074shown below. These are the code and data sizes for the acpica.lib
9075produced
9076by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9077any ACPI driver or OSPM code. The debug version of the code includes the
9078debug output trace mechanism and has a much larger code and data size.
9079Note
9080that these values will vary depending on the efficiency of the compiler
9081and
9082the compiler options used during generation.
9083
9084  Previous Release:
9085    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9086    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9087  Current Release:
9088    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9089    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9090
9091
90922) iASL Compiler/Disassembler:
9093
9094Fixed a regression introduced in version 20050513 where the use of a
9095Package
9096object within a Case() statement caused a compile time exception. The
9097original behavior has been restored (a Match() operator is emitted.)
9098
9099----------------------------------------
910017 June 2005.  Summary of changes for version 20050617:
9101
91021) ACPI CA Core Subsystem:
9103
9104Moved the object cache operations into the OS interface layer (OSL) to
9105allow
9106the host OS to handle these operations if desired (for example, the Linux
9107OSL will invoke the slab allocator). This support is optional; the
9108compile
9109time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
9110cache
9111code in the ACPI CA core. The new OSL interfaces are shown below. See
9112utalloc.c for an example implementation, and acpiosxf.h for the exact
9113interface definitions. With assistance from Alexey Starikovskiy.
9114    AcpiOsCreateCache
9115    AcpiOsDeleteCache
9116    AcpiOsPurgeCache
9117    AcpiOsAcquireObject
9118    AcpiOsReleaseObject
9119
9120Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
9121return
9122and restore a flags parameter. This fits better with many OS lock models.
9123Note: the current execution state (interrupt handler or not) is no longer
9124passed to these interfaces. If necessary, the OSL must determine this
9125state
9126by itself, a simple and fast operation. With assistance from Alexey
9127Starikovskiy.
9128
9129Fixed a problem in the ACPI table handling where a valid XSDT was assumed
9130present if the revision of the RSDP was 2 or greater. According to the
9131ACPI
9132specification, the XSDT is optional in all cases, and the table manager
9133therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
9134Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
9135contain
9136only the RSDT.
9137
9138Fixed an interpreter problem with the Mid() operator in the case of an
9139input
9140string where the resulting output string is of zero length. It now
9141correctly
9142returns a valid, null terminated string object instead of a string object
9143with a null pointer.
9144
9145Fixed a problem with the control method argument handling to allow a
9146store
9147to an Arg object that already contains an object of type Device. The
9148Device
9149object is now correctly overwritten. Previously, an error was returned.
9150
9151
9152Enhanced the debugger Find command to emit object values in addition to
9153the
9154found object pathnames. The output format is the same as the dump
9155namespace
9156command.
9157
9158Enhanced the debugger Set command. It now has the ability to set the
9159value
9160of any Named integer object in the namespace (Previously, only method
9161locals
9162and args could be set.)
9163
9164Code and Data Size: Current and previous core subsystem library sizes are
9165shown below. These are the code and data sizes for the acpica.lib
9166produced
9167by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9168any ACPI driver or OSPM code. The debug version of the code includes the
9169debug output trace mechanism and has a much larger code and data size.
9170Note
9171that these values will vary depending on the efficiency of the compiler
9172and
9173the compiler options used during generation.
9174
9175  Previous Release:
9176    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9177    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9178  Current Release:
9179    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9180    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9181
9182
91832) iASL Compiler/Disassembler:
9184
9185Fixed a regression in the disassembler where if/else/while constructs
9186were
9187output incorrectly. This problem was introduced in the previous release
9188(20050526). This problem also affected the single-step disassembly in the
9189debugger.
9190
9191Fixed a problem where compiling the reserved _OSI method would randomly
9192(but
9193rarely) produce compile errors.
9194
9195Enhanced the disassembler to emit compilable code in the face of
9196incorrect
9197AML resource descriptors. If the optional ResourceSourceIndex is present,
9198but the ResourceSource is not, do not emit the ResourceSourceIndex in the
9199disassembly. Otherwise, the resulting code cannot be compiled without
9200errors.
9201
9202----------------------------------------
920326 May 2005.  Summary of changes for version 20050526:
9204
92051) ACPI CA Core Subsystem:
9206
9207Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
9208the module level (not within a control method.) These opcodes are
9209executed
9210exactly once at the time the table is loaded. This type of code was legal
9211up
9212until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
9213in
9214order to provide backwards compatibility with earlier BIOS
9215implementations.
9216This eliminates the "Encountered executable code at module level" warning
9217that was previously generated upon detection of such code.
9218
9219Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
9220inadvertently be generated during the lookup of namespace objects in the
9221second pass parse of ACPI tables and control methods. It appears that
9222this
9223problem could occur during the resolution of forward references to
9224namespace
9225objects.
9226
9227Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
9228corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
9229allows the deadlock detection debug code to be compiled out in the normal
9230case, improving mutex performance (and overall subsystem performance)
9231considerably.
9232
9233Implemented a handful of miscellaneous fixes for possible memory leaks on
9234error conditions and error handling control paths. These fixes were
9235suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9236
9237Added a check for a null RSDT pointer in AcpiGetFirmwareTable
9238(tbxfroot.c)
9239to prevent a fault in this error case.
9240
9241Code and Data Size: Current and previous core subsystem library sizes are
9242shown below. These are the code and data sizes for the acpica.lib
9243produced
9244by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9245any ACPI driver or OSPM code. The debug version of the code includes the
9246debug output trace mechanism and has a much larger code and data size.
9247Note
9248that these values will vary depending on the efficiency of the compiler
9249and
9250the compiler options used during generation.
9251
9252  Previous Release:
9253    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9254    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9255  Current Release:
9256    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9257    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9258
9259
92602) iASL Compiler/Disassembler:
9261
9262Implemented support to allow Type 1 and Type 2 ASL operators to appear at
9263the module level (not within a control method.) These operators will be
9264executed once at the time the table is loaded. This type of code was
9265legal
9266up until the release of ACPI 2.0B (2002) and is now supported by the iASL
9267compiler in order to provide backwards compatibility with earlier BIOS
9268ASL
9269code.
9270
9271The ACPI integer width (specified via the table revision ID or the -r
9272override, 32 or 64 bits) is now used internally during compile-time
9273constant
9274folding to ensure that constants are truncated to 32 bits if necessary.
9275Previously, the revision ID value was only emitted in the AML table
9276header.
9277
9278An error message is now generated for the Mutex and Method operators if
9279the
9280SyncLevel parameter is outside the legal range of 0 through 15.
9281
9282Fixed a problem with the Method operator ParameterTypes list handling
9283(ACPI
92843.0). Previously, more than 2 types or 2 arguments generated a syntax
9285error.
9286The actual underlying implementation of method argument typechecking is
9287still under development, however.
9288
9289----------------------------------------
929013 May 2005.  Summary of changes for version 20050513:
9291
92921) ACPI CA Core Subsystem:
9293
9294Implemented support for PCI Express root bridges -- added support for
9295device
9296PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9297
9298The interpreter now automatically truncates incoming 64-bit constants to
929932
9300bits if currently executing out of a 32-bit ACPI table (Revision < 2).
9301This
9302also affects the iASL compiler constant folding. (Note: as per below, the
9303iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9304
9305Fixed a problem where string and buffer objects with "static" pointers
9306(pointers to initialization data within an ACPI table) were not handled
9307consistently. The internal object copy operation now always copies the
9308data
9309to a newly allocated buffer, regardless of whether the source object is
9310static or not.
9311
9312Fixed a problem with the FromBCD operator where an implicit result
9313conversion was improperly performed while storing the result to the
9314target
9315operand. Since this is an "explicit conversion" operator, the implicit
9316conversion should never be performed on the output.
9317
9318Fixed a problem with the CopyObject operator where a copy to an existing
9319named object did not always completely overwrite the existing object
9320stored
9321at name. Specifically, a buffer-to-buffer copy did not delete the
9322existing
9323buffer.
9324
9325Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
9326and
9327structs for consistency.
9328
9329Code and Data Size: Current and previous core subsystem library sizes are
9330shown below. These are the code and data sizes for the acpica.lib
9331produced
9332by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9333any ACPI driver or OSPM code. The debug version of the code includes the
9334debug output trace mechanism and has a much larger code and data size.
9335Note
9336that these values will vary depending on the efficiency of the compiler
9337and
9338the compiler options used during generation.
9339
9340  Previous Release:
9341    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9342    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9343  Current Release: (Same sizes)
9344    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9345    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9346
9347
93482) iASL Compiler/Disassembler:
9349
9350The compiler now emits a warning if an attempt is made to generate a 64-
9351bit
9352integer constant from within a 32-bit ACPI table (Revision < 2). The
9353integer
9354is truncated to 32 bits.
9355
9356Fixed a problem with large package objects: if the static length of the
9357package is greater than 255, the "variable length package" opcode is
9358emitted. Previously, this caused an error. This requires an update to the
9359ACPI spec, since it currently (incorrectly) states that packages larger
9360than
9361255 elements are not allowed.
9362
9363The disassembler now correctly handles variable length packages and
9364packages
9365larger than 255 elements.
9366
9367----------------------------------------
936808 April 2005.  Summary of changes for version 20050408:
9369
93701) ACPI CA Core Subsystem:
9371
9372Fixed three cases in the interpreter where an "index" argument to an ASL
9373function was still (internally) 32 bits instead of the required 64 bits.
9374This was the Index argument to the Index, Mid, and Match operators.
9375
9376The "strupr" function is now permanently local (AcpiUtStrupr), since this
9377is
9378not a POSIX-defined function and not present in most kernel-level C
9379libraries. All references to the C library strupr function have been
9380removed
9381from the headers.
9382
9383Completed the deployment of static functions/prototypes. All prototypes
9384with
9385the static attribute have been moved from the headers to the owning C
9386file.
9387
9388Implemented an extract option (-e) for the AcpiBin utility (AML binary
9389utility). This option allows the utility to extract individual ACPI
9390tables
9391from the output of AcpiDmp. It provides the same functionality of the
9392acpixtract.pl perl script without the worry of setting the correct perl
9393options. AcpiBin runs on Windows and has not yet been generated/validated
9394in
9395the Linux/Unix environment (but should be soon).
9396
9397Updated and fixed the table dump option for AcpiBin (-d). This option
9398converts a single ACPI table to a hex/ascii file, similar to the output
9399of
9400AcpiDmp.
9401
9402Code and Data Size: Current and previous core subsystem library sizes are
9403shown below. These are the code and data sizes for the acpica.lib
9404produced
9405by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9406any ACPI driver or OSPM code. The debug version of the code includes the
9407debug output trace mechanism and has a much larger code and data size.
9408Note
9409that these values will vary depending on the efficiency of the compiler
9410and
9411the compiler options used during generation.
9412
9413  Previous Release:
9414    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9415    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9416  Current Release:
9417    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9418    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9419
9420
94212) iASL Compiler/Disassembler:
9422
9423Disassembler fix: Added a check to ensure that the table length found in
9424the
9425ACPI table header within the input file is not longer than the actual
9426input
9427file size. This indicates some kind of file or table corruption.
9428
9429----------------------------------------
943029 March 2005.  Summary of changes for version 20050329:
9431
94321) ACPI CA Core Subsystem:
9433
9434An error is now generated if an attempt is made to create a Buffer Field
9435of
9436length zero (A CreateField with a length operand of zero.)
9437
9438The interpreter now issues a warning whenever executable code at the
9439module
9440level is detected during ACPI table load. This will give some idea of the
9441prevalence of this type of code.
9442
9443Implemented support for references to named objects (other than control
9444methods) within package objects.
9445
9446Enhanced package object output for the debug object. Package objects are
9447now
9448completely dumped, showing all elements.
9449
9450Enhanced miscellaneous object output for the debug object. Any object can
9451now be written to the debug object (for example, a device object can be
9452written, and the type of the object will be displayed.)
9453
9454The "static" qualifier has been added to all local functions across both
9455the
9456core subsystem and the iASL compiler.
9457
9458The number of "long" lines (> 80 chars) within the source has been
9459significantly reduced, by about 1/3.
9460
9461Cleaned up all header files to ensure that all CA/iASL functions are
9462prototyped (even static functions) and the formatting is consistent.
9463
9464Two new header files have been added, acopcode.h and acnames.h.
9465
9466Removed several obsolete functions that were no longer used.
9467
9468Code and Data Size: Current and previous core subsystem library sizes are
9469shown below. These are the code and data sizes for the acpica.lib
9470produced
9471by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9472any ACPI driver or OSPM code. The debug version of the code includes the
9473debug output trace mechanism and has a much larger code and data size.
9474Note
9475that these values will vary depending on the efficiency of the compiler
9476and
9477the compiler options used during generation.
9478
9479  Previous Release:
9480    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9481    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9482  Current Release:
9483    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9484    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9485
9486
9487
94882) iASL Compiler/Disassembler:
9489
9490Fixed a problem with the resource descriptor generation/support. For the
9491ResourceSourceIndex and the ResourceSource fields, both must be present,
9492or
9493both must be not present - can't have one without the other.
9494
9495The compiler now returns non-zero from the main procedure if any errors
9496have
9497occurred during the compilation.
9498
9499
9500----------------------------------------
950109 March 2005.  Summary of changes for version 20050309:
9502
95031) ACPI CA Core Subsystem:
9504
9505The string-to-buffer implicit conversion code has been modified again
9506after
9507a change to the ACPI specification.  In order to match the behavior of
9508the
9509other major ACPI implementation, the target buffer is no longer truncated
9510if
9511the source string is smaller than an existing target buffer. This change
9512requires an update to the ACPI spec, and should eliminate the recent
9513AE_AML_BUFFER_LIMIT issues.
9514
9515The "implicit return" support was rewritten to a new algorithm that
9516solves
9517the general case. Rather than attempt to determine when a method is about
9518to
9519exit, the result of every ASL operator is saved momentarily until the
9520very
9521next ASL operator is executed. Therefore, no matter how the method exits,
9522there will always be a saved implicit return value. This feature is only
9523enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
9524eliminate
9525AE_AML_NO_RETURN_VALUE errors when enabled.
9526
9527Implemented implicit conversion support for the predicate (operand) of
9528the
9529If, Else, and While operators. String and Buffer arguments are
9530automatically
9531converted to Integers.
9532
9533Changed the string-to-integer conversion behavior to match the new ACPI
9534errata: "If no integer object exists, a new integer is created. The ASCII
9535string is interpreted as a hexadecimal constant. Each string character is
9536interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
9537with the first character as the most significant digit, and ending with
9538the
9539first non-hexadecimal character or end-of-string." This means that the
9540first
9541non-hex character terminates the conversion and this is the code that was
9542changed.
9543
9544Fixed a problem where the ObjectType operator would fail (fault) when
9545used
9546on an Index of a Package which pointed to a null package element. The
9547operator now properly returns zero (Uninitialized) in this case.
9548
9549Fixed a problem where the While operator used excessive memory by not
9550properly popping the result stack during execution. There was no memory
9551leak
9552after execution, however. (Code provided by Valery Podrezov.)
9553
9554Fixed a problem where references to control methods within Package
9555objects
9556caused the method to be invoked, instead of producing a reference object
9557pointing to the method.
9558
9559Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
9560to
9561improve performance and reduce code size. (Code provided by Alexey
9562Starikovskiy.)
9563
9564Code and Data Size: Current and previous core subsystem library sizes are
9565shown below. These are the code and data sizes for the acpica.lib
9566produced
9567by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9568any ACPI driver or OSPM code. The debug version of the code includes the
9569debug output trace mechanism and has a much larger code and data size.
9570Note
9571that these values will vary depending on the efficiency of the compiler
9572and
9573the compiler options used during generation.
9574
9575  Previous Release:
9576    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9577    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9578  Current Release:
9579    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9580    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9581
9582
95832) iASL Compiler/Disassembler:
9584
9585Fixed a problem with the Return operator with no arguments. Since the AML
9586grammar for the byte encoding requires an operand for the Return opcode,
9587the
9588compiler now emits a Return(Zero) for this case.  An ACPI specification
9589update has been written for this case.
9590
9591For tables other than the DSDT, namepath optimization is automatically
9592disabled. This is because SSDTs can be loaded anywhere in the namespace,
9593the
9594compiler has no knowledge of where, and thus cannot optimize namepaths.
9595
9596Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
9597inadvertently omitted from the ACPI specification, and will require an
9598update to the spec.
9599
9600The source file scan for ASCII characters is now optional (-a). This
9601change
9602was made because some vendors place non-ascii characters within comments.
9603However, the scan is simply a brute-force byte compare to ensure all
9604characters in the file are in the range 0x00 to 0x7F.
9605
9606Fixed a problem with the CondRefOf operator where the compiler was
9607inappropriately checking for the existence of the target. Since the point
9608of
9609the operator is to check for the existence of the target at run-time, the
9610compiler no longer checks for the target existence.
9611
9612Fixed a problem where errors generated from the internal AML interpreter
9613during constant folding were not handled properly, causing a fault.
9614
9615Fixed a problem with overly aggressive range checking for the Stall
9616operator. The valid range (max 255) is now only checked if the operand is
9617of
9618type Integer. All other operand types cannot be statically checked.
9619
9620Fixed a problem where control method references within the RefOf,
9621DeRefOf,
9622and ObjectType operators were not treated properly. They are now treated
9623as
9624actual references, not method invocations.
9625
9626Fixed and enhanced the "list namespace" option (-ln). This option was
9627broken
9628a number of releases ago.
9629
9630Improved error handling for the Field, IndexField, and BankField
9631operators.
9632The compiler now cleanly reports and recovers from errors in the field
9633component (FieldUnit) list.
9634
9635Fixed a disassembler problem where the optional ResourceDescriptor fields
9636TRS and TTP were not always handled correctly.
9637
9638Disassembler - Comments in output now use "//" instead of "/*"
9639
9640----------------------------------------
964128 February 2005.  Summary of changes for version 20050228:
9642
96431) ACPI CA Core Subsystem:
9644
9645Fixed a problem where the result of an Index() operator (an object
9646reference) must increment the reference count on the target object for
9647the
9648life of the object reference.
9649
9650Implemented AML Interpreter and Debugger support for the new ACPI 3.0
9651Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
9652WordSpace
9653resource descriptors.
9654
9655Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
9656Space Descriptor" string, indicating interpreter support for the
9657descriptors
9658above.
9659
9660Implemented header support for the new ACPI 3.0 FADT flag bits.
9661
9662Implemented header support for the new ACPI 3.0 PCI Express bits for the
9663PM1
9664status/enable registers.
9665
9666Updated header support for the MADT processor local Apic struct and MADT
9667platform interrupt source struct for new ACPI 3.0 fields.
9668
9669Implemented header support for the SRAT and SLIT ACPI tables.
9670
9671Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
9672flag
9673at runtime.
9674
9675Code and Data Size: Current and previous core subsystem library sizes are
9676shown below. These are the code and data sizes for the acpica.lib
9677produced
9678by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9679any ACPI driver or OSPM code. The debug version of the code includes the
9680debug output trace mechanism and has a much larger code and data size.
9681Note
9682that these values will vary depending on the efficiency of the compiler
9683and
9684the compiler options used during generation.
9685
9686  Previous Release:
9687    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9688    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9689  Current Release:
9690    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9691    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9692
9693
96942) iASL Compiler/Disassembler:
9695
9696Fixed a problem with the internal 64-bit String-to-integer conversion
9697with
9698strings less than two characters long.
9699
9700Fixed a problem with constant folding where the result of the Index()
9701operator can not be considered a constant. This means that Index() cannot
9702be
9703a type3 opcode and this will require an update to the ACPI specification.
9704
9705Disassembler: Implemented support for the TTP, MTP, and TRS resource
9706descriptor fields. These fields were inadvertently ignored and not output
9707in
9708the disassembly of the resource descriptor.
9709
9710
9711 ----------------------------------------
971211 February 2005.  Summary of changes for version 20050211:
9713
97141) ACPI CA Core Subsystem:
9715
9716Implemented ACPI 3.0 support for implicit conversion within the Match()
9717operator. MatchObjects can now be of type integer, buffer, or string
9718instead
9719of just type integer.  Package elements are implicitly converted to the
9720type
9721of the MatchObject. This change aligns the behavior of Match() with the
9722behavior of the other logical operators (LLess(), etc.) It also requires
9723an
9724errata change to the ACPI specification as this support was intended for
9725ACPI 3.0, but was inadvertently omitted.
9726
9727Fixed a problem with the internal implicit "to buffer" conversion.
9728Strings
9729that are converted to buffers will cause buffer truncation if the string
9730is
9731smaller than the target buffer. Integers that are converted to buffers
9732will
9733not cause buffer truncation, only zero extension (both as per the ACPI
9734spec.) The problem was introduced when code was added to truncate the
9735buffer, but this should not be performed in all cases, only the string
9736case.
9737
9738Fixed a problem with the Buffer and Package operators where the
9739interpreter
9740would get confused if two such operators were used as operands to an ASL
9741operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
9742stack was not being popped after the execution of these operators,
9743resulting
9744in an AE_NO_RETURN_VALUE exception.
9745
9746Fixed a problem with constructs of the form Store(Index(...),...). The
9747reference object returned from Index was inadvertently resolved to an
9748actual
9749value. This problem was introduced in version 20050114 when the behavior
9750of
9751Store() was modified to restrict the object types that can be used as the
9752source operand (to match the ACPI specification.)
9753
9754Reduced excessive stack use within the AcpiGetObjectInfo procedure.
9755
9756Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
9757
9758Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
9759
9760Code and Data Size: Current and previous core subsystem library sizes are
9761shown below. These are the code and data sizes for the acpica.lib
9762produced
9763by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9764any ACPI driver or OSPM code. The debug version of the code includes the
9765debug output trace mechanism and has a much larger code and data size.
9766Note
9767that these values will vary depending on the efficiency of the compiler
9768and
9769the compiler options used during generation.
9770
9771  Previous Release:
9772    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
9773    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
9774  Current Release:
9775    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9776    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9777
9778
97792) iASL Compiler/Disassembler:
9780
9781Fixed a code generation problem in the constant folding optimization code
9782where incorrect code was generated if a constant was reduced to a buffer
9783object (i.e., a reduced type 5 opcode.)
9784
9785Fixed a typechecking problem for the ToBuffer operator. Caused by an
9786incorrect return type in the internal opcode information table.
9787
9788----------------------------------------
978925 January 2005.  Summary of changes for version 20050125:
9790
97911) ACPI CA Core Subsystem:
9792
9793Fixed a recently introduced problem with the Global Lock where the
9794underlying semaphore was not created.  This problem was introduced in
9795version 20050114, and caused an AE_AML_NO_OPERAND exception during an
9796Acquire() operation on _GL.
9797
9798The local object cache is now optional, and is disabled by default. Both
9799AcpiExec and the iASL compiler enable the cache because they run in user
9800mode and this enhances their performance. #define
9801ACPI_ENABLE_OBJECT_CACHE
9802to enable the local cache.
9803
9804Fixed an issue in the internal function AcpiUtEvaluateObject concerning
9805the
9806optional "implicit return" support where an error was returned if no
9807return
9808object was expected, but one was implicitly returned. AE_OK is now
9809returned
9810in this case and the implicitly returned object is deleted.
9811AcpiUtEvaluateObject is only occasionally used, and only to execute
9812reserved
9813methods such as _STA and _INI where the return type is known up front.
9814
9815Fixed a few issues with the internal convert-to-integer code. It now
9816returns
9817an error if an attempt is made to convert a null string, a string of only
9818blanks/tabs, or a zero-length buffer. This affects both implicit
9819conversion
9820and explicit conversion via the ToInteger() operator.
9821
9822The internal debug code in AcpiUtAcquireMutex has been commented out. It
9823is
9824not needed for normal operation and should increase the performance of
9825the
9826entire subsystem. The code remains in case it is needed for debug
9827purposes
9828again.
9829
9830The AcpiExec source and makefile are included in the Unix/Linux package
9831for
9832the first time.
9833
9834Code and Data Size: Current and previous core subsystem library sizes are
9835shown below. These are the code and data sizes for the acpica.lib
9836produced
9837by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9838any ACPI driver or OSPM code. The debug version of the code includes the
9839debug output trace mechanism and has a much larger code and data size.
9840Note
9841that these values will vary depending on the efficiency of the compiler
9842and
9843the compiler options used during generation.
9844
9845  Previous Release:
9846    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9847    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9848  Current Release:
9849    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
9850    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
9851
98522) iASL Compiler/Disassembler:
9853
9854Switch/Case support: A warning is now issued if the type of the Switch
9855value
9856cannot be determined at compile time. For example, Switch(Arg0) will
9857generate the warning, and the type is assumed to be an integer. As per
9858the
9859ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
9860the
9861warning.
9862
9863Switch/Case support: Implemented support for buffer and string objects as
9864the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
9865buffers and strings.
9866
9867Switch/Case support: The emitted code for the LEqual() comparisons now
9868uses
9869the switch value as the first operand, not the second. The case value is
9870now
9871the second operand, and this allows the case value to be implicitly
9872converted to the type of the switch value, not the other way around.
9873
9874Switch/Case support: Temporary variables are now emitted immediately
9875within
9876the control method, not at the global level. This means that there are
9877now
987836 temps available per-method, not 36 temps per-module as was the case
9879with
9880the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
9881
9882----------------------------------------
988314 January 2005.  Summary of changes for version 20050114:
9884
9885Added 2005 copyright to all module headers.  This affects every module in
9886the core subsystem, iASL compiler, and the utilities.
9887
98881) ACPI CA Core Subsystem:
9889
9890Fixed an issue with the String-to-Buffer conversion code where the string
9891null terminator was not included in the buffer after conversion, but
9892there
9893is existing ASL that assumes the string null terminator is included. This
9894is
9895the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
9896introduced in the previous version when the code was updated to correctly
9897set the converted buffer size as per the ACPI specification. The ACPI
9898spec
9899is ambiguous and will be updated to specify that the null terminator must
9900be
9901included in the converted buffer. This also affects the ToBuffer() ASL
9902operator.
9903
9904Fixed a problem with the Mid() ASL/AML operator where it did not work
9905correctly on Buffer objects. Newly created sub-buffers were not being
9906marked
9907as initialized.
9908
9909
9910Fixed a problem in AcpiTbFindTable where incorrect string compares were
9911performed on the OemId and OemTableId table header fields.  These fields
9912are
9913not null terminated, so strncmp is now used instead of strcmp.
9914
9915Implemented a restriction on the Store() ASL/AML operator to align the
9916behavior with the ACPI specification.  Previously, any object could be
9917used
9918as the source operand.  Now, the only objects that may be used are
9919Integers,
9920Buffers, Strings, Packages, Object References, and DDB Handles.  If
9921necessary, the original behavior can be restored by enabling the
9922EnableInterpreterSlack flag.
9923
9924Enhanced the optional "implicit return" support to allow an implicit
9925return
9926value from methods that are invoked externally via the AcpiEvaluateObject
9927interface.  This enables implicit returns from the _STA and _INI methods,
9928for example.
9929
9930Changed the Revision() ASL/AML operator to return the current version of
9931the
9932AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
9933returned
9934the supported ACPI version (This is the function of the _REV method).
9935
9936Updated the _REV predefined method to return the currently supported
9937version
9938of ACPI, now 3.
9939
9940Implemented batch mode option for the AcpiExec utility (-b).
9941
9942Code and Data Size: Current and previous core subsystem library sizes are
9943shown below. These are the code and data sizes for the acpica.lib
9944produced
9945by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9946any ACPI driver or OSPM code. The debug version of the code includes the
9947debug output trace mechanism and has a much larger code and data size.
9948Note
9949that these values will vary depending on the efficiency of the compiler
9950and
9951the compiler options used during generation.
9952
9953  Previous Release:
9954    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9955    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9956  Current Release:
9957    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
9958    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
9959
9960----------------------------------------
996110 December 2004.  Summary of changes for version 20041210:
9962
9963ACPI 3.0 support is nearing completion in both the iASL compiler and the
9964ACPI CA core subsystem.
9965
99661) ACPI CA Core Subsystem:
9967
9968Fixed a problem in the ToDecimalString operator where the resulting
9969string
9970length was incorrectly calculated. The length is now calculated exactly,
9971eliminating incorrect AE_STRING_LIMIT exceptions.
9972
9973Fixed a problem in the ToHexString operator to allow a maximum 200
9974character
9975string to be produced.
9976
9977Fixed a problem in the internal string-to-buffer and buffer-to-buffer
9978copy
9979routine where the length of the resulting buffer was not truncated to the
9980new size (if the target buffer already existed).
9981
9982Code and Data Size: Current and previous core subsystem library sizes are
9983shown below. These are the code and data sizes for the acpica.lib
9984produced
9985by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9986any ACPI driver or OSPM code. The debug version of the code includes the
9987debug output trace mechanism and has a much larger code and data size.
9988Note
9989that these values will vary depending on the efficiency of the compiler
9990and
9991the compiler options used during generation.
9992
9993  Previous Release:
9994    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9995    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
9996  Current Release:
9997    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
9998    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
9999
10000
100012) iASL Compiler/Disassembler:
10002
10003Implemented the new ACPI 3.0 resource template macros - DWordSpace,
10004ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
10005Includes support in the disassembler.
10006
10007Implemented support for the new (ACPI 3.0) parameter to the Register
10008macro,
10009AccessSize.
10010
10011Fixed a problem where the _HE resource name for the Interrupt macro was
10012referencing bit 0 instead of bit 1.
10013
10014Implemented check for maximum 255 interrupts in the Interrupt macro.
10015
10016Fixed a problem with the predefined resource descriptor names where
10017incorrect AML code was generated if the offset within the resource buffer
10018was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
10019but did not update the surrounding package lengths.
10020
10021Changes to the Dma macro:  All channels within the channel list must be
10022in
10023the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
10024optional (default is BusMaster).
10025
10026Implemented check for maximum 7 data bytes for the VendorShort macro.
10027
10028The ReadWrite parameter is now optional for the Memory32 and similar
10029macros.
10030
10031----------------------------------------
1003203 December 2004.  Summary of changes for version 20041203:
10033
100341) ACPI CA Core Subsystem:
10035
10036The low-level field insertion/extraction code (exfldio) has been
10037completely
10038rewritten to eliminate unnecessary complexity, bugs, and boundary
10039conditions.
10040
10041Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
10042ToDecimalString
10043operators where the input operand could be inadvertently deleted if no
10044conversion was necessary (e.g., if the input to ToInteger was an Integer
10045object.)
10046
10047Fixed a problem with the ToDecimalString and ToHexString where an
10048incorrect
10049exception code was returned if the resulting string would be > 200 chars.
10050AE_STRING_LIMIT is now returned.
10051
10052Fixed a problem with the Concatenate operator where AE_OK was always
10053returned, even if the operation failed.
10054
10055Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
10056semaphores to be allocated.
10057
10058Code and Data Size: Current and previous core subsystem library sizes are
10059shown below. These are the code and data sizes for the acpica.lib
10060produced
10061by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10062any ACPI driver or OSPM code. The debug version of the code includes the
10063debug output trace mechanism and has a much larger code and data size.
10064Note
10065that these values will vary depending on the efficiency of the compiler
10066and
10067the compiler options used during generation.
10068
10069  Previous Release:
10070    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10071    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10072  Current Release:
10073    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10074    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10075
10076
100772) iASL Compiler/Disassembler:
10078
10079Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
10080recently introduced in 20041119.
10081
10082Fixed a problem with the ToUUID macro where the upper nybble of each
10083buffer
10084byte was inadvertently set to zero.
10085
10086----------------------------------------
1008719 November 2004.  Summary of changes for version 20041119:
10088
100891) ACPI CA Core Subsystem:
10090
10091Fixed a problem in the internal ConvertToInteger routine where new
10092integers
10093were not truncated to 32 bits for 32-bit ACPI tables. This routine
10094converts
10095buffers and strings to integers.
10096
10097Implemented support to store a value to an Index() on a String object.
10098This
10099is an ACPI 2.0 feature that had not yet been implemented.
10100
10101Implemented new behavior for storing objects to individual package
10102elements
10103(via the Index() operator). The previous behavior was to invoke the
10104implicit
10105conversion rules if an object was already present at the index.  The new
10106behavior is to simply delete any existing object and directly store the
10107new
10108object. Although the ACPI specification seems unclear on this subject,
10109other
10110ACPI implementations behave in this manner.  (This is the root of the
10111AE_BAD_HEX_CONSTANT issue.)
10112
10113Modified the RSDP memory scan mechanism to support the extended checksum
10114for
10115ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
10116RSDP signature is found with a valid checksum.
10117
10118Code and Data Size: Current and previous core subsystem library sizes are
10119shown below. These are the code and data sizes for the acpica.lib
10120produced
10121by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10122any ACPI driver or OSPM code. The debug version of the code includes the
10123debug output trace mechanism and has a much larger code and data size.
10124Note
10125that these values will vary depending on the efficiency of the compiler
10126and
10127the compiler options used during generation.
10128
10129  Previous Release:
10130    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10131    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10132  Current Release:
10133    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10134    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10135
10136
101372) iASL Compiler/Disassembler:
10138
10139Fixed a missing semicolon in the aslcompiler.y file.
10140
10141----------------------------------------
1014205 November 2004.  Summary of changes for version 20041105:
10143
101441) ACPI CA Core Subsystem:
10145
10146Implemented support for FADT revision 2.  This was an interim table
10147(between
10148ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10149
10150Implemented optional support to allow uninitialized LocalX and ArgX
10151variables in a control method.  The variables are initialized to an
10152Integer
10153object with a value of zero.  This support is enabled by setting the
10154AcpiGbl_EnableInterpreterSlack flag to TRUE.
10155
10156Implemented support for Integer objects for the SizeOf operator.  Either
101574
10158or 8 is returned, depending on the current integer size (32-bit or 64-
10159bit,
10160depending on the parent table revision).
10161
10162Fixed a problem in the implementation of the SizeOf and ObjectType
10163operators
10164where the operand was resolved to a value too early, causing incorrect
10165return values for some objects.
10166
10167Fixed some possible memory leaks during exceptional conditions.
10168
10169Code and Data Size: Current and previous core subsystem library sizes are
10170shown below. These are the code and data sizes for the acpica.lib
10171produced
10172by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10173any ACPI driver or OSPM code. The debug version of the code includes the
10174debug output trace mechanism and has a much larger code and data size.
10175Note
10176that these values will vary depending on the efficiency of the compiler
10177and
10178the compiler options used during generation.
10179
10180  Previous Release:
10181    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10182    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10183  Current Release:
10184    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10185    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10186
10187
101882) iASL Compiler/Disassembler:
10189
10190Implemented support for all ACPI 3.0 reserved names and methods.
10191
10192Implemented all ACPI 3.0 grammar elements in the front-end, including
10193support for semicolons.
10194
10195Implemented the ACPI 3.0 Function() and ToUUID() macros
10196
10197Fixed a problem in the disassembler where a Scope() operator would not be
10198emitted properly if the target of the scope was in another table.
10199
10200----------------------------------------
1020115 October 2004.  Summary of changes for version 20041015:
10202
10203Note:  ACPI CA is currently undergoing an in-depth and complete formal
10204evaluation to test/verify the following areas. Other suggestions are
10205welcome. This will result in an increase in the frequency of releases and
10206the number of bug fixes in the next few months.
10207  - Functional tests for all ASL/AML operators
10208  - All implicit/explicit type conversions
10209  - Bit fields and operation regions
10210  - 64-bit math support and 32-bit-only "truncated" math support
10211  - Exceptional conditions, both compiler and interpreter
10212  - Dynamic object deletion and memory leaks
10213  - ACPI 3.0 support when implemented
10214  - External interfaces to the ACPI subsystem
10215
10216
102171) ACPI CA Core Subsystem:
10218
10219Fixed two alignment issues on 64-bit platforms - within debug statements
10220in
10221AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
10222Address
10223field within the non-aligned ACPI generic address structure.
10224
10225Fixed a problem in the Increment and Decrement operators where incorrect
10226operand resolution could result in the inadvertent modification of the
10227original integer when the integer is passed into another method as an
10228argument and the arg is then incremented/decremented.
10229
10230Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10231bit
10232BCD number were truncated during conversion.
10233
10234Fixed a problem in the ToDecimal operator where the length of the
10235resulting
10236string could be set incorrectly too long if the input operand was a
10237Buffer
10238object.
10239
10240Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
10241(0)
10242within a buffer would prematurely terminate a compare between buffer
10243objects.
10244
10245Added a check for string overflow (>200 characters as per the ACPI
10246specification) during the Concatenate operator with two string operands.
10247
10248Code and Data Size: Current and previous core subsystem library sizes are
10249shown below. These are the code and data sizes for the acpica.lib
10250produced
10251by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10252any ACPI driver or OSPM code. The debug version of the code includes the
10253debug output trace mechanism and has a much larger code and data size.
10254Note
10255that these values will vary depending on the efficiency of the compiler
10256and
10257the compiler options used during generation.
10258
10259  Previous Release:
10260    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10261    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10262  Current Release:
10263    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10264    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10265
10266
10267
102682) iASL Compiler/Disassembler:
10269
10270Allow the use of the ObjectType operator on uninitialized Locals and Args
10271(returns 0 as per the ACPI specification).
10272
10273Fixed a problem where the compiler would fault if there was a syntax
10274error
10275in the FieldName of all of the various CreateXXXField operators.
10276
10277Disallow the use of lower case letters within the EISAID macro, as per
10278the
10279ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
10280Where
10281U is an uppercase letter and N is a hex digit.
10282
10283
10284----------------------------------------
1028506 October 2004.  Summary of changes for version 20041006:
10286
102871) ACPI CA Core Subsystem:
10288
10289Implemented support for the ACPI 3.0 Timer operator. This ASL function
10290implements a 64-bit timer with 100 nanosecond granularity.
10291
10292Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
10293implement the ACPI 3.0 Timer operator.  This allows the host OS to
10294implement
10295the timer with the best clock available. Also, it keeps the core
10296subsystem
10297out of the clock handling business, since the host OS (usually) performs
10298this function.
10299
10300Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
10301functions use a 64-bit address which is part of the packed ACPI Generic
10302Address Structure. Since the structure is non-aligned, the alignment
10303macros
10304are now used to extract the address to a local variable before use.
10305
10306Fixed a problem where the ToInteger operator assumed all input strings
10307were
10308hexadecimal. The operator now handles both decimal strings and hex
10309strings
10310(prefixed with "0x").
10311
10312Fixed a problem where the string length in the string object created as a
10313result of the internal ConvertToString procedure could be incorrect. This
10314potentially affected all implicit conversions and also the
10315ToDecimalString
10316and ToHexString operators.
10317
10318Fixed two problems in the ToString operator. If the length parameter was
10319zero, an incorrect string object was created and the value of the input
10320length parameter was inadvertently changed from zero to Ones.
10321
10322Fixed a problem where the optional ResourceSource string in the
10323ExtendedIRQ
10324resource macro was ignored.
10325
10326Simplified the interfaces to the internal division functions, reducing
10327code
10328size and complexity.
10329
10330Code and Data Size: Current and previous core subsystem library sizes are
10331shown below. These are the code and data sizes for the acpica.lib
10332produced
10333by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10334any ACPI driver or OSPM code. The debug version of the code includes the
10335debug output trace mechanism and has a much larger code and data size.
10336Note
10337that these values will vary depending on the efficiency of the compiler
10338and
10339the compiler options used during generation.
10340
10341  Previous Release:
10342    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10343    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10344  Current Release:
10345    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10346    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10347
10348
103492) iASL Compiler/Disassembler:
10350
10351Implemented support for the ACPI 3.0 Timer operator.
10352
10353Fixed a problem where the Default() operator was inadvertently ignored in
10354a
10355Switch/Case block.  This was a problem in the translation of the Switch
10356statement to If...Else pairs.
10357
10358Added support to allow a standalone Return operator, with no parentheses
10359(or
10360operands).
10361
10362Fixed a problem with code generation for the ElseIf operator where the
10363translated Else...If parse tree was improperly constructed leading to the
10364loss of some code.
10365
10366----------------------------------------
1036722 September 2004.  Summary of changes for version 20040922:
10368
103691) ACPI CA Core Subsystem:
10370
10371Fixed a problem with the implementation of the LNot() operator where
10372"Ones"
10373was not returned for the TRUE case. Changed the code to return Ones
10374instead
10375of (!Arg) which was usually 1. This change affects iASL constant folding
10376for
10377this operator also.
10378
10379Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
10380not
10381initialized properly -- Now zero the entire buffer in this case where the
10382buffer already exists.
10383
10384Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
10385Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
10386related code considerably. This will require changes/updates to all OS
10387interface layers (OSLs.)
10388
10389Implemented a new external interface, AcpiInstallExceptionHandler, to
10390allow
10391a system exception handler to be installed. This handler is invoked upon
10392any
10393run-time exception that occurs during control method execution.
10394
10395Added support for the DSDT in AcpiTbFindTable. This allows the
10396DataTableRegion() operator to access the local copy of the DSDT.
10397
10398Code and Data Size: Current and previous core subsystem library sizes are
10399shown below. These are the code and data sizes for the acpica.lib
10400produced
10401by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10402any ACPI driver or OSPM code. The debug version of the code includes the
10403debug output trace mechanism and has a much larger code and data size.
10404Note
10405that these values will vary depending on the efficiency of the compiler
10406and
10407the compiler options used during generation.
10408
10409  Previous Release:
10410    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10411    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10412  Current Release:
10413    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10414    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10415
10416
104172) iASL Compiler/Disassembler:
10418
10419Fixed a problem with constant folding and the LNot operator. LNot was
10420returning 1 in the TRUE case, not Ones as per the ACPI specification.
10421This
10422could result in the generation of an incorrect folded/reduced constant.
10423
10424End-Of-File is now allowed within a "//"-style comment.  A parse error no
10425longer occurs if such a comment is at the very end of the input ASL
10426source
10427file.
10428
10429Implemented the "-r" option to override the Revision in the table header.
10430The initial use of this option will be to simplify the evaluation of the
10431AML
10432interpreter by allowing a single ASL source module to be compiled for
10433either
1043432-bit or 64-bit integers.
10435
10436
10437----------------------------------------
1043827 August 2004.  Summary of changes for version 20040827:
10439
104401) ACPI CA Core Subsystem:
10441
10442- Implemented support for implicit object conversion in the non-numeric
10443logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
10444and
10445LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
10446the second operand is implicitly converted on the fly to match the type
10447of
10448the first operand.  For example:
10449
10450    LEqual (Source1, Source2)
10451
10452Source1 and Source2 must each evaluate to an integer, a string, or a
10453buffer.
10454The data type of Source1 dictates the required type of Source2. Source2
10455is
10456implicitly converted if necessary to match the type of Source1.
10457
10458- Updated and corrected the behavior of the string conversion support.
10459The
10460rules concerning conversion of buffers to strings (according to the ACPI
10461specification) are as follows:
10462
10463ToDecimalString - explicit byte-wise conversion of buffer to string of
10464decimal values (0-255) separated by commas. ToHexString - explicit byte-
10465wise
10466conversion of buffer to string of hex values (0-FF) separated by commas.
10467ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
10468byte
10469copy with no transform except NULL terminated. Any other implicit buffer-
10470to-
10471string conversion - byte-wise conversion of buffer to string of hex
10472values
10473(0-FF) separated by spaces.
10474
10475- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
10476
10477- Fixed a problem in AcpiNsGetPathnameLength where the returned length
10478was
10479one byte too short in the case of a node in the root scope.  This could
10480cause a fault during debug output.
10481
10482- Code and Data Size: Current and previous core subsystem library sizes
10483are
10484shown below.  These are the code and data sizes for the acpica.lib
10485produced
10486by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10487any ACPI driver or OSPM code.  The debug version of the code includes the
10488debug output trace mechanism and has a much larger code and data size.
10489Note
10490that these values will vary depending on the efficiency of the compiler
10491and
10492the compiler options used during generation.
10493
10494  Previous Release:
10495    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10496    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10497  Current Release:
10498    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10499    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10500
10501
105022) iASL Compiler/Disassembler:
10503
10504- Fixed a Linux generation error.
10505
10506
10507----------------------------------------
1050816 August 2004.  Summary of changes for version 20040816:
10509
105101) ACPI CA Core Subsystem:
10511
10512Designed and implemented support within the AML interpreter for the so-
10513called "implicit return".  This support returns the result of the last
10514ASL
10515operation within a control method, in the absence of an explicit Return()
10516operator.  A few machines depend on this behavior, even though it is not
10517explicitly supported by the ASL language.  It is optional support that
10518can
10519be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
10520
10521Removed support for the PCI_Config address space from the internal low
10522level
10523hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
10524support was not used internally, and would not work correctly anyway
10525because
10526the PCI bus number and segment number were not supported.  There are
10527separate interfaces for PCI configuration space access because of the
10528unique
10529interface.
10530
10531Code and Data Size: Current and previous core subsystem library sizes are
10532shown below.  These are the code and data sizes for the acpica.lib
10533produced
10534by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10535any ACPI driver or OSPM code.  The debug version of the code includes the
10536debug output trace mechanism and has a much larger code and data size.
10537Note
10538that these values will vary depending on the efficiency of the compiler
10539and
10540the compiler options used during generation.
10541
10542  Previous Release:
10543    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10544    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10545  Current Release:
10546    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10547    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10548
10549
105502) iASL Compiler/Disassembler:
10551
10552Fixed a problem where constants in ASL expressions at the root level (not
10553within a control method) could be inadvertently truncated during code
10554generation.  This problem was introduced in the 20040715 release.
10555
10556
10557----------------------------------------
1055815 July 2004.  Summary of changes for version 20040715:
10559
105601) ACPI CA Core Subsystem:
10561
10562Restructured the internal HW GPE interfaces to pass/track the current
10563state
10564of interrupts (enabled/disabled) in order to avoid possible deadlock and
10565increase flexibility of the interfaces.
10566
10567Implemented a "lexicographical compare" for String and Buffer objects
10568within
10569the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
10570-
10571as per further clarification to the ACPI specification.  Behavior is
10572similar
10573to C library "strcmp".
10574
10575Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
10576external function.  In the 32-bit non-debug case, the stack use has been
10577reduced from 168 bytes to 32 bytes.
10578
10579Deployed a new run-time configuration flag,
10580AcpiGbl_EnableInterpreterSlack,
10581whose purpose is to allow the AML interpreter to forgive certain bad AML
10582constructs.  Default setting is FALSE.
10583
10584Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
10585IO
10586support code.  If enabled, it allows field access to go beyond the end of
10587a
10588region definition if the field is within the region length rounded up to
10589the
10590next access width boundary (a common coding error.)
10591
10592Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
10593ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
10594these
10595symbols are lowercased by the latest version of the AcpiSrc tool.
10596
10597The prototypes for the PCI interfaces in acpiosxf.h have been updated to
10598rename "Register" to simply "Reg" to prevent certain compilers from
10599complaining.
10600
10601Code and Data Size: Current and previous core subsystem library sizes are
10602shown below.  These are the code and data sizes for the acpica.lib
10603produced
10604by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10605any ACPI driver or OSPM code.  The debug version of the code includes the
10606debug output trace mechanism and has a much larger code and data size.
10607Note
10608that these values will vary depending on the efficiency of the compiler
10609and
10610the compiler options used during generation.
10611
10612  Previous Release:
10613    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10614    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10615  Current Release:
10616    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10617    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10618
10619
106202) iASL Compiler/Disassembler:
10621
10622Implemented full support for Package objects within the Case() operator.
10623Note: The Break() operator is currently not supported within Case blocks
10624(TermLists) as there is some question about backward compatibility with
10625ACPI
106261.0 interpreters.
10627
10628
10629Fixed a problem where complex terms were not supported properly within
10630the
10631Switch() operator.
10632
10633Eliminated extraneous warning for compiler-emitted reserved names of the
10634form "_T_x".  (Used in Switch/Case operators.)
10635
10636Eliminated optimization messages for "_T_x" objects and small constants
10637within the DefinitionBlock operator.
10638
10639
10640----------------------------------------
1064115 June 2004.  Summary of changes for version 20040615:
10642
106431) ACPI CA Core Subsystem:
10644
10645Implemented support for Buffer and String objects (as per ACPI 2.0) for
10646the
10647following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10648LLessEqual.
10649
10650All directory names in the entire source package are lower case, as they
10651were in earlier releases.
10652
10653Implemented "Disassemble" command in the AML debugger that will
10654disassemble
10655a single control method.
10656
10657Code and Data Size: Current and previous core subsystem library sizes are
10658shown below.  These are the code and data sizes for the acpica.lib
10659produced
10660by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10661any ACPI driver or OSPM code.  The debug version of the code includes the
10662debug output trace mechanism and has a much larger code and data size.
10663Note
10664that these values will vary depending on the efficiency of the compiler
10665and
10666the compiler options used during generation.
10667
10668  Previous Release:
10669    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10670    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10671
10672  Current Release:
10673    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10674    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10675
10676
106772) iASL Compiler/Disassembler:
10678
10679Implemented support for Buffer and String objects (as per ACPI 2.0) for
10680the
10681following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10682LLessEqual.
10683
10684All directory names in the entire source package are lower case, as they
10685were in earlier releases.
10686
10687Fixed a fault when using the -g or -d<nofilename> options if the FADT was
10688not found.
10689
10690Fixed an issue with the Windows version of the compiler where later
10691versions
10692of Windows place the FADT in the registry under the name "FADT" and not
10693"FACP" as earlier versions did.  This applies when using the -g or -
10694d<nofilename> options.  The compiler now looks for both strings as
10695necessary.
10696
10697Fixed a problem with compiler namepath optimization where a namepath
10698within
10699the Scope() operator could not be optimized if the namepath was a subpath
10700of
10701the current scope path.
10702
10703----------------------------------------
1070427 May 2004.  Summary of changes for version 20040527:
10705
107061) ACPI CA Core Subsystem:
10707
10708Completed a new design and implementation for EBDA (Extended BIOS Data
10709Area)
10710support in the RSDP scan code.  The original code improperly scanned for
10711the
10712EBDA by simply scanning from memory location 0 to 0x400.  The correct
10713method
10714is to first obtain the EBDA pointer from within the BIOS data area, then
10715scan 1K of memory starting at the EBDA pointer.  There appear to be few
10716if
10717any machines that place the RSDP in the EBDA, however.
10718
10719Integrated a fix for a possible fault during evaluation of BufferField
10720arguments.  Obsolete code that was causing the problem was removed.
10721
10722Found and fixed a problem in the Field Support Code where data could be
10723corrupted on a bit field read that starts on an aligned boundary but does
10724not end on an aligned boundary.  Merged the read/write "datum length"
10725calculation code into a common procedure.
10726
10727Rolled in a couple of changes to the FreeBSD-specific header.
10728
10729
10730Code and Data Size: Current and previous core subsystem library sizes are
10731shown below.  These are the code and data sizes for the acpica.lib
10732produced
10733by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10734any ACPI driver or OSPM code.  The debug version of the code includes the
10735debug output trace mechanism and has a much larger code and data size.
10736Note
10737that these values will vary depending on the efficiency of the compiler
10738and
10739the compiler options used during generation.
10740
10741  Previous Release:
10742    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10743    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10744  Current Release:
10745    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10746    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10747
10748
107492) iASL Compiler/Disassembler:
10750
10751Fixed a generation warning produced by some overly-verbose compilers for
10752a
1075364-bit constant.
10754
10755----------------------------------------
1075614 May 2004.  Summary of changes for version 20040514:
10757
107581) ACPI CA Core Subsystem:
10759
10760Fixed a problem where hardware GPE enable bits sometimes not set properly
10761during and after GPE method execution.  Result of 04/27 changes.
10762
10763Removed extra "clear all GPEs" when sleeping/waking.
10764
10765Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
10766AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
10767to
10768the new AcpiEv* calls as appropriate.
10769
10770ACPI_OS_NAME was removed from the OS-specific headers.  The default name
10771is
10772now "Microsoft Windows NT" for maximum compatibility.  However this can
10773be
10774changed by modifying the acconfig.h file.
10775
10776Allow a single invocation of AcpiInstallNotifyHandler for a handler that
10777traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
10778
10779Run _INI methods on ThermalZone objects.  This is against the ACPI
10780specification, but there is apparently ASL code in the field that has
10781these
10782_INI methods, and apparently "other" AML interpreters execute them.
10783
10784Performed a full 16/32/64 bit lint that resulted in some small changes.
10785
10786Added a sleep simulation command to the AML debugger to test sleep code.
10787
10788Code and Data Size: Current and previous core subsystem library sizes are
10789shown below.  These are the code and data sizes for the acpica.lib
10790produced
10791by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10792any ACPI driver or OSPM code.  The debug version of the code includes the
10793debug output trace mechanism and has a much larger code and data size.
10794Note
10795that these values will vary depending on the efficiency of the compiler
10796and
10797the compiler options used during generation.
10798
10799  Previous Release:
10800    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10801    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10802  Current Release:
10803    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10804    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10805
10806----------------------------------------
1080727 April 2004.  Summary of changes for version 20040427:
10808
108091) ACPI CA Core Subsystem:
10810
10811Completed a major overhaul of the GPE handling within ACPI CA.  There are
10812now three types of GPEs:  wake-only, runtime-only, and combination
10813wake/run.
10814The only GPEs allowed to be combination wake/run are for button-style
10815devices such as a control-method power button, control-method sleep
10816button,
10817or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
10818not
10819referenced by any _PRW methods are marked for "runtime" and hardware
10820enabled.  Any GPE that is referenced by a _PRW method is marked for
10821"wake"
10822(and disabled at runtime).  However, at sleep time, only those GPEs that
10823have been specifically enabled for wake via the AcpiEnableGpe interface
10824will
10825actually be hardware enabled.
10826
10827A new external interface has been added, AcpiSetGpeType(), that is meant
10828to
10829be used by device drivers to force a GPE to a particular type.  It will
10830be
10831especially useful for the drivers for the button devices mentioned above.
10832
10833Completed restructuring of the ACPI CA initialization sequence so that
10834default operation region handlers are installed before GPEs are
10835initialized
10836and the _PRW methods are executed.  This will prevent errors when the
10837_PRW
10838methods attempt to access system memory or I/O space.
10839
10840GPE enable/disable no longer reads the GPE enable register.  We now keep
10841the
10842enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
10843thus no longer depend on the hardware to maintain these bits.
10844
10845Always clear the wake status and fixed/GPE status bits before sleep, even
10846for state S5.
10847
10848Improved the AML debugger output for displaying the GPE blocks and their
10849current status.
10850
10851Added new strings for the _OSI method, of the form "Windows 2001 SPx"
10852where
10853x = 0,1,2,3,4.
10854
10855Fixed a problem where the physical address was incorrectly calculated
10856when
10857the Load() operator was used to directly load from an Operation Region
10858(vs.
10859loading from a Field object.)  Also added check for minimum table length
10860for
10861this case.
10862
10863Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
10864mutex release.
10865
10866Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
10867consistency with the other fields returned.
10868
10869Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
10870structure for each GPE in the system, so the size of this structure is
10871important.
10872
10873CPU stack requirement reduction:  Cleaned up the method execution and
10874object
10875evaluation paths so that now a parameter structure is passed, instead of
10876copying the various method parameters over and over again.
10877
10878In evregion.c:  Correctly exit and reenter the interpreter region if and
10879only if dispatching an operation region request to a user-installed
10880handler.
10881Do not exit/reenter when dispatching to a default handler (e.g., default
10882system memory or I/O handlers)
10883
10884
10885Notes for updating drivers for the new GPE support.  The following
10886changes
10887must be made to ACPI-related device drivers that are attached to one or
10888more
10889GPEs: (This information will be added to the ACPI CA Programmer
10890Reference.)
10891
108921) AcpiInstallGpeHandler no longer automatically enables the GPE, you
10893must
10894explicitly call AcpiEnableGpe.
108952) There is a new interface called AcpiSetGpeType. This should be called
10896before enabling the GPE.  Also, this interface will automatically disable
10897the GPE if it is currently enabled.
108983) AcpiEnableGpe no longer supports a GPE type flag.
10899
10900Specific drivers that must be changed:
109011) EC driver:
10902    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
10903AeGpeHandler, NULL);
10904    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
10905    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
10906
109072) Button Drivers (Power, Lid, Sleep):
10908Run _PRW method under parent device
10909If _PRW exists: /* This is a control-method button */
10910    Extract GPE number and possibly GpeDevice
10911    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
10912    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
10913
10914For all other devices that have _PRWs, we automatically set the GPE type
10915to
10916ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
10917This
10918must be done on a selective basis, usually requiring some kind of user
10919app
10920to allow the user to pick the wake devices.
10921
10922
10923Code and Data Size: Current and previous core subsystem library sizes are
10924shown below.  These are the code and data sizes for the acpica.lib
10925produced
10926by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10927any ACPI driver or OSPM code.  The debug version of the code includes the
10928debug output trace mechanism and has a much larger code and data size.
10929Note
10930that these values will vary depending on the efficiency of the compiler
10931and
10932the compiler options used during generation.
10933
10934  Previous Release:
10935    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10936    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10937  Current Release:
10938
10939    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10940    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
10941
10942
10943
10944----------------------------------------
1094502 April 2004.  Summary of changes for version 20040402:
10946
109471) ACPI CA Core Subsystem:
10948
10949Fixed an interpreter problem where an indirect store through an ArgX
10950parameter was incorrectly applying the "implicit conversion rules" during
10951the store.  From the ACPI specification: "If the target is a method local
10952or
10953argument (LocalX or ArgX), no conversion is performed and the result is
10954stored directly to the target".  The new behavior is to disable implicit
10955conversion during ALL stores to an ArgX.
10956
10957Changed the behavior of the _PRW method scan to ignore any and all errors
10958returned by a given _PRW.  This prevents the scan from aborting from the
10959failure of any single _PRW.
10960
10961Moved the runtime configuration parameters from the global init procedure
10962to
10963static variables in acglobal.h.  This will allow the host to override the
10964default values easily.
10965
10966Code and Data Size: Current and previous core subsystem library sizes are
10967shown below.  These are the code and data sizes for the acpica.lib
10968produced
10969by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10970any ACPI driver or OSPM code.  The debug version of the code includes the
10971debug output trace mechanism and has a much larger code and data size.
10972Note
10973that these values will vary depending on the efficiency of the compiler
10974and
10975the compiler options used during generation.
10976
10977  Previous Release:
10978    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
10979    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
10980  Current Release:
10981    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
10982    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
10983
10984
109852) iASL Compiler/Disassembler:
10986
10987iASL now fully disassembles SSDTs.  However, External() statements are
10988not
10989generated automatically for unresolved symbols at this time.  This is a
10990planned feature for future implementation.
10991
10992Fixed a scoping problem in the disassembler that occurs when the type of
10993the
10994target of a Scope() operator is overridden.  This problem caused an
10995incorrectly nested internal namespace to be constructed.
10996
10997Any warnings or errors that are emitted during disassembly are now
10998commented
10999out automatically so that the resulting file can be recompiled without
11000any
11001hand editing.
11002
11003----------------------------------------
1100426 March 2004.  Summary of changes for version 20040326:
11005
110061) ACPI CA Core Subsystem:
11007
11008Implemented support for "wake" GPEs via interaction between GPEs and the
11009_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
11010identified as a WAKE GPE and by default will no longer be enabled at
11011runtime.  Previously, we were blindly enabling all GPEs with a
11012corresponding
11013_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
11014We
11015believe this has been the cause of thousands of "spurious" GPEs on some
11016systems.
11017
11018This new GPE behavior is can be reverted to the original behavior (enable
11019ALL GPEs at runtime) via a runtime flag.
11020
11021Fixed a problem where aliased control methods could not access objects
11022properly.  The proper scope within the namespace was not initialized
11023(transferred to the target of the aliased method) before executing the
11024target method.
11025
11026Fixed a potential race condition on internal object deletion on the
11027return
11028object in AcpiEvaluateObject.
11029
11030Integrated a fix for resource descriptors where both _MEM and _MTP were
11031being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
11032wide, 0x0F instead of 0x03.)
11033
11034Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
11035preventing
11036a
11037fault in some cases.
11038
11039Updated Notify() values for debug statements in evmisc.c
11040
11041Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
11042
11043Code and Data Size: Current and previous core subsystem library sizes are
11044shown below.  These are the code and data sizes for the acpica.lib
11045produced
11046by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11047any ACPI driver or OSPM code.  The debug version of the code includes the
11048debug output trace mechanism and has a much larger code and data size.
11049Note
11050that these values will vary depending on the efficiency of the compiler
11051and
11052the compiler options used during generation.
11053
11054  Previous Release:
11055
11056    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11057    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11058  Current Release:
11059    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11060    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11061
11062----------------------------------------
1106311 March 2004.  Summary of changes for version 20040311:
11064
110651) ACPI CA Core Subsystem:
11066
11067Fixed a problem where errors occurring during the parse phase of control
11068method execution did not abort cleanly.  For example, objects created and
11069installed in the namespace were not deleted.  This caused all subsequent
11070invocations of the method to return the AE_ALREADY_EXISTS exception.
11071
11072Implemented a mechanism to force a control method to "Serialized"
11073execution
11074if the method attempts to create namespace objects. (The root of the
11075AE_ALREADY_EXISTS problem.)
11076
11077Implemented support for the predefined _OSI "internal" control method.
11078Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
11079and
11080"Windows 2001.1", and can be easily upgraded for new strings as
11081necessary.
11082This feature will allow "other" operating systems to execute the fully
11083tested, "Windows" code path through the ASL code
11084
11085Global Lock Support:  Now allows multiple acquires and releases with any
11086internal thread.  Removed concept of "owning thread" for this special
11087mutex.
11088
11089Fixed two functions that were inappropriately declaring large objects on
11090the
11091CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
11092during
11093method execution considerably.
11094
11095Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
11096S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
11097
11098Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
11099defined on the machine.
11100
11101Implemented two runtime options:  One to force all control method
11102execution
11103to "Serialized" to mimic Windows behavior, another to disable _OSI
11104support
11105if it causes problems on a given machine.
11106
11107Code and Data Size: Current and previous core subsystem library sizes are
11108shown below.  These are the code and data sizes for the acpica.lib
11109produced
11110by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11111any ACPI driver or OSPM code.  The debug version of the code includes the
11112debug output trace mechanism and has a much larger code and data size.
11113Note
11114that these values will vary depending on the efficiency of the compiler
11115and
11116the compiler options used during generation.
11117
11118  Previous Release:
11119    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11120    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11121  Current Release:
11122    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11123    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11124
111252) iASL Compiler/Disassembler:
11126
11127Fixed an array size problem for FreeBSD that would cause the compiler to
11128fault.
11129
11130----------------------------------------
1113120 February 2004.  Summary of changes for version 20040220:
11132
11133
111341) ACPI CA Core Subsystem:
11135
11136Implemented execution of _SxD methods for Device objects in the
11137GetObjectInfo interface.
11138
11139Fixed calls to _SST method to pass the correct arguments.
11140
11141Added a call to _SST on wake to restore to "working" state.
11142
11143Check for End-Of-Buffer failure case in the WalkResources interface.
11144
11145Integrated fix for 64-bit alignment issue in acglobal.h by moving two
11146structures to the beginning of the file.
11147
11148After wake, clear GPE status register(s) before enabling GPEs.
11149
11150After wake, clear/enable power button.  (Perhaps we should clear/enable
11151all
11152fixed events upon wake.)
11153
11154Fixed a couple of possible memory leaks in the Namespace manager.
11155
11156Integrated latest acnetbsd.h file.
11157
11158----------------------------------------
1115911 February 2004.  Summary of changes for version 20040211:
11160
11161
111621) ACPI CA Core Subsystem:
11163
11164Completed investigation and implementation of the call-by-reference
11165mechanism for control method arguments.
11166
11167Fixed a problem where a store of an object into an indexed package could
11168fail if the store occurs within a different method than the method that
11169created the package.
11170
11171Fixed a problem where the ToDecimal operator could return incorrect
11172results.
11173
11174Fixed a problem where the CopyObject operator could fail on some of the
11175more
11176obscure objects (e.g., Reference objects.)
11177
11178Improved the output of the Debug object to display buffer, package, and
11179index objects.
11180
11181Fixed a problem where constructs of the form "RefOf (ArgX)" did not
11182return
11183the expected result.
11184
11185Added permanent ACPI_REPORT_ERROR macros for all instances of the
11186ACPI_AML_INTERNAL exception.
11187
11188Integrated latest version of acfreebsd.h
11189
11190----------------------------------------
1119116 January 2004.  Summary of changes for version 20040116:
11192
11193The purpose of this release is primarily to update the copyright years in
11194each module, thus causing a huge number of diffs.  There are a few small
11195functional changes, however.
11196
111971) ACPI CA Core Subsystem:
11198
11199Improved error messages when there is a problem finding one or more of
11200the
11201required base ACPI tables
11202
11203Reintroduced the definition of APIC_HEADER in actbl.h
11204
11205Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
11206
11207Removed extraneous reference to NewObj in dsmthdat.c
11208
112092) iASL compiler
11210
11211Fixed a problem introduced in December that disabled the correct
11212disassembly
11213of Resource Templates
11214
11215
11216----------------------------------------
1121703 December 2003.  Summary of changes for version 20031203:
11218
112191) ACPI CA Core Subsystem:
11220
11221Changed the initialization of Operation Regions during subsystem
11222init to perform two entire walks of the ACPI namespace; The first
11223to initialize the regions themselves, the second to execute the
11224_REG methods.  This fixed some interdependencies across _REG
11225methods found on some machines.
11226
11227Fixed a problem where a Store(Local0, Local1) could simply update
11228the object reference count, and not create a new copy of the
11229object if the Local1 is uninitialized.
11230
11231Implemented support for the _SST reserved method during sleep
11232transitions.
11233
11234Implemented support to clear the SLP_TYP and SLP_EN bits when
11235waking up, this is apparently required by some machines.
11236
11237When sleeping, clear the wake status only if SleepState is not S5.
11238
11239Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11240pointer arithmetic advanced a string pointer too far.
11241
11242Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11243could be returned if the requested table has not been loaded.
11244
11245Within the support for IRQ resources, restructured the handling of
11246the active and edge/level bits.
11247
11248Fixed a few problems in AcpiPsxExecute() where memory could be
11249leaked under certain error conditions.
11250
11251Improved error messages for the cases where the ACPI mode could
11252not be entered.
11253
11254Code and Data Size: Current and previous core subsystem library
11255sizes are shown below.  These are the code and data sizes for the
11256acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11257these values do not include any ACPI driver or OSPM code.  The
11258debug version of the code includes the debug output trace
11259mechanism and has a much larger code and data size.  Note that
11260these values will vary depending on the efficiency of the compiler
11261and the compiler options used during generation.
11262
11263  Previous Release (20031029):
11264    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11265    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11266  Current Release:
11267    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11268    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11269
112702) iASL Compiler/Disassembler:
11271
11272Implemented a fix for the iASL disassembler where a bad index was
11273generated.  This was most noticeable on 64-bit platforms
11274
11275
11276----------------------------------------
1127729 October 2003.  Summary of changes for version 20031029:
11278
112791) ACPI CA Core Subsystem:
11280
11281
11282Fixed a problem where a level-triggered GPE with an associated
11283_Lxx control method was incorrectly cleared twice.
11284
11285Fixed a problem with the Field support code where an access can
11286occur beyond the end-of-region if the field is non-aligned but
11287extends to the very end of the parent region (resulted in an
11288AE_AML_REGION_LIMIT exception.)
11289
11290Fixed a problem with ACPI Fixed Events where an RT Clock handler
11291would not get invoked on an RTC event.  The RTC event bitmasks for
11292the PM1 registers were not being initialized properly.
11293
11294Implemented support for executing _STA and _INI methods for
11295Processor objects.  Although this is currently not part of the
11296ACPI specification, there is existing ASL code that depends on the
11297init-time execution of these methods.
11298
11299Implemented and deployed a GetDescriptorName function to decode
11300the various types of internal descriptors.  Guards against null
11301descriptors during debug output also.
11302
11303Implemented and deployed a GetNodeName function to extract the 4-
11304character namespace node name.  This function simplifies the debug
11305and error output, as well as guarding against null pointers during
11306output.
11307
11308Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11309simplify the debug and error output of 64-bit integers.  This
11310macro replaces the HIDWORD and LODWORD macros for dumping these
11311integers.
11312
11313Updated the implementation of the Stall() operator to only call
11314AcpiOsStall(), and also return an error if the operand is larger
11315than 255.  This preserves the required behavior of not
11316relinquishing the processor, as would happen if AcpiOsSleep() was
11317called for "long stalls".
11318
11319Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11320initialized are now treated as NOOPs.
11321
11322Cleaned up a handful of warnings during 64-bit generation.
11323
11324Fixed a reported error where and incorrect GPE number was passed
11325to the GPE dispatch handler.  This value is only used for error
11326output, however.  Used this opportunity to clean up and streamline
11327the GPE dispatch code.
11328
11329Code and Data Size: Current and previous core subsystem library
11330sizes are shown below.  These are the code and data sizes for the
11331acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11332these values do not include any ACPI driver or OSPM code.  The
11333
11334debug version of the code includes the debug output trace
11335mechanism and has a much larger code and data size.  Note that
11336these values will vary depending on the efficiency of the compiler
11337and the compiler options used during generation.
11338
11339  Previous Release (20031002):
11340    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11341    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11342  Current Release:
11343    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11344    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11345
11346
113472) iASL Compiler/Disassembler:
11348
11349Updated the iASL compiler to return an error if the operand to the
11350Stall() operator is larger than 255.
11351
11352
11353----------------------------------------
1135402 October 2003.  Summary of changes for version 20031002:
11355
11356
113571) ACPI CA Core Subsystem:
11358
11359Fixed a problem with Index Fields where the index was not
11360incremented for fields that require multiple writes to the
11361index/data registers (Fields that are wider than the data
11362register.)
11363
11364Fixed a problem with all Field objects where a write could go
11365beyond the end-of-field if the field was larger than the access
11366granularity and therefore required multiple writes to complete the
11367request.  An extra write beyond the end of the field could happen
11368inadvertently.
11369
11370Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
11371would incorrectly be returned if the width of the Data Register
11372was larger than the specified field access width.
11373
11374Completed fixes for LoadTable() and Unload() and verified their
11375operation.  Implemented full support for the "DdbHandle" object
11376throughout the ACPI CA subsystem.
11377
11378Implemented full support for the MADT and ECDT tables in the ACPI
11379CA header files.  Even though these tables are not directly
11380consumed by ACPI CA, the header definitions are useful for ACPI
11381device drivers.
11382
11383Integrated resource descriptor fixes posted to the Linux ACPI
11384list.  This included checks for minimum descriptor length, and
11385support for trailing NULL strings within descriptors that have
11386optional string elements.
11387
11388Code and Data Size: Current and previous core subsystem library
11389sizes are shown below.  These are the code and data sizes for the
11390acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11391these values do not include any ACPI driver or OSPM code.  The
11392debug version of the code includes the debug output trace
11393mechanism and has a much larger code and data size.  Note that
11394these values will vary depending on the efficiency of the compiler
11395and the compiler options used during generation.
11396
11397  Previous Release (20030918):
11398    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11399    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11400  Current Release:
11401    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11402    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11403
11404
114052) iASL Compiler:
11406
11407Implemented detection of non-ASCII characters within the input
11408source ASL file.  This catches attempts to compile binary (AML)
11409files early in the compile, with an informative error message.
11410
11411Fixed a problem where the disassembler would fault if the output
11412filename could not be generated or if the output file could not be
11413opened.
11414
11415----------------------------------------
1141618 September 2003.  Summary of changes for version 20030918:
11417
11418
114191) ACPI CA Core Subsystem:
11420
11421Found and fixed a longstanding problem with the late execution of
11422the various deferred AML opcodes (such as Operation Regions,
11423Buffer Fields, Buffers, and Packages).  If the name string
11424specified for the name of the new object placed the object in a
11425scope other than the current scope, the initialization/execution
11426of the opcode failed.  The solution to this problem was to
11427implement a mechanism where the late execution of such opcodes
11428does not attempt to lookup/create the name a second time in an
11429incorrect scope.  This fixes the "region size computed
11430incorrectly" problem.
11431
11432Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
11433Global Lock AE_BAD_PARAMETER error.
11434
11435Fixed several 64-bit issues with prototypes, casting and data
11436types.
11437
11438Removed duplicate prototype from acdisasm.h
11439
11440Fixed an issue involving EC Operation Region Detach (Shaohua Li)
11441
11442Code and Data Size: Current and previous core subsystem library
11443sizes are shown below.  These are the code and data sizes for the
11444acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11445these values do not include any ACPI driver or OSPM code.  The
11446debug version of the code includes the debug output trace
11447mechanism and has a much larger code and data size.  Note that
11448these values will vary depending on the efficiency of the compiler
11449and the compiler options used during generation.
11450
11451  Previous Release:
11452
11453    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11454    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11455  Current Release:
11456    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11457    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11458
11459
114602) Linux:
11461
11462Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
11463correct sleep time in seconds.
11464
11465----------------------------------------
1146614 July 2003.  Summary of changes for version 20030619:
11467
114681) ACPI CA Core Subsystem:
11469
11470Parse SSDTs in order discovered, as opposed to reverse order
11471(Hrvoje Habjanic)
11472
11473Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
11474Klausner,
11475   Nate Lawson)
11476
11477
114782) Linux:
11479
11480Dynamically allocate SDT list (suggested by Andi Kleen)
11481
11482proc function return value cleanups (Andi Kleen)
11483
11484Correctly handle NMI watchdog during long stalls (Andrew Morton)
11485
11486Make it so acpismp=force works (reported by Andrew Morton)
11487
11488
11489----------------------------------------
1149019 June 2003.  Summary of changes for version 20030619:
11491
114921) ACPI CA Core Subsystem:
11493
11494Fix To/FromBCD, eliminating the need for an arch-specific #define.
11495
11496Do not acquire a semaphore in the S5 shutdown path.
11497
11498Fix ex_digits_needed for 0. (Takayoshi Kochi)
11499
11500Fix sleep/stall code reversal. (Andi Kleen)
11501
11502Revert a change having to do with control method calling
11503semantics.
11504
115052) Linux:
11506
11507acpiphp update (Takayoshi Kochi)
11508
11509Export acpi_disabled for sonypi (Stelian Pop)
11510
11511Mention acpismp=force in config help
11512
11513Re-add acpitable.c and acpismp=force. This improves backwards
11514
11515compatibility and also cleans up the code to a significant degree.
11516
11517Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
11518
11519----------------------------------------
1152022 May 2003.  Summary of changes for version 20030522:
11521
115221) ACPI CA Core Subsystem:
11523
11524Found and fixed a reported problem where an AE_NOT_FOUND error
11525occurred occasionally during _BST evaluation.  This turned out to
11526be an Owner ID allocation issue where a called method did not get
11527a new ID assigned to it.  Eventually, (after 64k calls), the Owner
11528ID UINT16 would wraparound so that the ID would be the same as the
11529caller's and the called method would delete the caller's
11530namespace.
11531
11532Implemented extended error reporting for control methods that are
11533aborted due to a run-time exception.  Output includes the exact
11534AML instruction that caused the method abort, a dump of the method
11535locals and arguments at the time of the abort, and a trace of all
11536nested control method calls.
11537
11538Modified the interpreter to allow the creation of buffers of zero
11539length from the AML code. Implemented new code to ensure that no
11540attempt is made to actually allocate a memory buffer (of length
11541zero) - instead, a simple buffer object with a NULL buffer pointer
11542and length zero is created.  A warning is no longer issued when
11543the AML attempts to create a zero-length buffer.
11544
11545Implemented a workaround for the "leading asterisk issue" in
11546_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
11547asterisk is automatically removed if present in any HID, UID, or
11548CID strings.  The iASL compiler will still flag this asterisk as
11549an error, however.
11550
11551Implemented full support for _CID methods that return a package of
11552multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
11553now additionally returns a device _CID list if present.  This
11554required a change to the external interface in order to pass an
11555ACPI_BUFFER object as a parameter since the _CID list is of
11556variable length.
11557
11558Fixed a problem with the new AE_SAME_HANDLER exception where
11559handler initialization code did not know about this exception.
11560
11561Code and Data Size: Current and previous core subsystem library
11562sizes are shown below.  These are the code and data sizes for the
11563acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11564these values do not include any ACPI driver or OSPM code.  The
11565debug version of the code includes the debug output trace
11566mechanism and has a much larger code and data size.  Note that
11567these values will vary depending on the efficiency of the compiler
11568and the compiler options used during generation.
11569
11570  Previous Release (20030509):
11571    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11572    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11573  Current Release:
11574    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11575    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11576
11577
115782) Linux:
11579
11580Fixed a bug in which we would reinitialize the ACPI interrupt
11581after it was already working, thus disabling all ACPI and the IRQs
11582for any other device sharing the interrupt. (Thanks to Stian
11583Jordet)
11584
11585Toshiba driver update (John Belmonte)
11586
11587Return only 0 or 1 for our interrupt handler status (Andrew
11588Morton)
11589
11590
115913) iASL Compiler:
11592
11593Fixed a reported problem where multiple (nested) ElseIf()
11594statements were not handled correctly by the compiler, resulting
11595in incorrect warnings and incorrect AML code.  This was a problem
11596in both the ASL parser and the code generator.
11597
11598
115994) Documentation:
11600
11601Added changes to existing interfaces, new exception codes, and new
11602text concerning reference count object management versus garbage
11603collection.
11604
11605----------------------------------------
1160609 May 2003.  Summary of changes for version 20030509.
11607
11608
116091) ACPI CA Core Subsystem:
11610
11611Changed the subsystem initialization sequence to hold off
11612installation of address space handlers until the hardware has been
11613initialized and the system has entered ACPI mode.  This is because
11614the installation of space handlers can cause _REG methods to be
11615run.  Previously, the _REG methods could potentially be run before
11616ACPI mode was enabled.
11617
11618Fixed some memory leak issues related to address space handler and
11619notify handler installation.  There were some problems with the
11620reference count mechanism caused by the fact that the handler
11621objects are shared across several namespace objects.
11622
11623Fixed a reported problem where reference counts within the
11624namespace were not properly updated when named objects created by
11625method execution were deleted.
11626
11627Fixed a reported problem where multiple SSDTs caused a deletion
11628issue during subsystem termination.  Restructured the table data
11629structures to simplify the linked lists and the related code.
11630
11631Fixed a problem where the table ID associated with secondary
11632tables (SSDTs) was not being propagated into the namespace objects
11633created by those tables.  This would only present a problem for
11634tables that are unloaded at run-time, however.
11635
11636Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
11637type as the length parameter (instead of UINT32).
11638
11639Solved a long-standing problem where an ALREADY_EXISTS error
11640appears on various systems.  This problem could happen when there
11641are multiple PCI_Config operation regions under a single PCI root
11642bus.  This doesn't happen very frequently, but there are some
11643systems that do this in the ASL.
11644
11645Fixed a reported problem where the internal DeleteNode function
11646was incorrectly handling the case where a namespace node was the
11647first in the parent's child list, and had additional peers (not
11648the only child, but first in the list of children.)
11649
11650Code and Data Size: Current core subsystem library sizes are shown
11651below.  These are the code and data sizes for the acpica.lib
11652produced by the Microsoft Visual C++ 6.0 compiler, and these
11653values do not include any ACPI driver or OSPM code.  The debug
11654version of the code includes the debug output trace mechanism and
11655has a much larger code and data size.  Note that these values will
11656vary depending on the efficiency of the compiler and the compiler
11657options used during generation.
11658
11659  Previous Release
11660    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11661    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11662  Current Release:
11663    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11664    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11665
11666
116672) Linux:
11668
11669Allow ":" in OS override string (Ducrot Bruno)
11670
11671Kobject fix (Greg KH)
11672
11673
116743 iASL Compiler/Disassembler:
11675
11676Fixed a problem in the generation of the C source code files (AML
11677is emitted in C source statements for BIOS inclusion) where the
11678Ascii dump that appears within a C comment at the end of each line
11679could cause a compile time error if the AML sequence happens to
11680have an open comment or close comment sequence embedded.
11681
11682
11683----------------------------------------
1168424 April 2003.  Summary of changes for version 20030424.
11685
11686
116871) ACPI CA Core Subsystem:
11688
11689Support for big-endian systems has been implemented.  Most of the
11690support has been invisibly added behind big-endian versions of the
11691ACPI_MOVE_* macros.
11692
11693Fixed a problem in AcpiHwDisableGpeBlock() and
11694AcpiHwClearGpeBlock() where an incorrect offset was passed to the
11695low level hardware write routine.  The offset parameter was
11696actually eliminated from the low level read/write routines because
11697they had become obsolete.
11698
11699Fixed a problem where a handler object was deleted twice during
11700the removal of a fixed event handler.
11701
11702
117032) Linux:
11704
11705A fix for SMP systems with link devices was contributed by
11706
11707Compaq's Dan Zink.
11708
11709(2.5) Return whether we handled the interrupt in our IRQ handler.
11710(Linux ISRs no longer return void, so we can propagate the handler
11711return value from the ACPI CA core back to the OS.)
11712
11713
11714
117153) Documentation:
11716
11717The ACPI CA Programmer Reference has been updated to reflect new
11718interfaces and changes to existing interfaces.
11719
11720----------------------------------------
1172128 March 2003.  Summary of changes for version 20030328.
11722
117231) ACPI CA Core Subsystem:
11724
11725The GPE Block Device support has been completed.  New interfaces
11726are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
11727interfaces (enable, disable, clear, getstatus) have been split
11728into separate interfaces for Fixed Events and General Purpose
11729Events (GPEs) in order to support GPE Block Devices properly.
11730
11731Fixed a problem where the error message "Failed to acquire
11732semaphore" would appear during operations on the embedded
11733controller (EC).
11734
11735Code and Data Size: Current core subsystem library sizes are shown
11736below.  These are the code and data sizes for the acpica.lib
11737produced by the Microsoft Visual C++ 6.0 compiler, and these
11738values do not include any ACPI driver or OSPM code.  The debug
11739version of the code includes the debug output trace mechanism and
11740has a much larger code and data size.  Note that these values will
11741vary depending on the efficiency of the compiler and the compiler
11742options used during generation.
11743
11744  Previous Release
11745    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11746    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11747  Current Release:
11748    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11749    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11750
11751
11752----------------------------------------
1175328 February 2003.  Summary of changes for version 20030228.
11754
11755
117561) ACPI CA Core Subsystem:
11757
11758The GPE handling and dispatch code has been completely overhauled
11759in preparation for support of GPE Block Devices (ID ACPI0006).
11760This affects internal data structures and code only; there should
11761be no differences visible externally.  One new file has been
11762added, evgpeblk.c
11763
11764The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
11765fields that are used to determine the GPE block lengths.  The
11766REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
11767structures are ignored.  This is per the ACPI specification but it
11768isn't very clear.  The full 256 Block 0/1 GPEs are now supported
11769(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
11770
11771In the SCI interrupt handler, removed the read of the PM1_CONTROL
11772register to look at the SCI_EN bit.  On some machines, this read
11773causes an SMI event and greatly slows down SCI events.  (This may
11774in fact be the cause of slow battery status response on some
11775systems.)
11776
11777Fixed a problem where a store of a NULL string to a package object
11778could cause the premature deletion of the object.  This was seen
11779during execution of the battery _BIF method on some systems,
11780resulting in no battery data being returned.
11781
11782Added AcpiWalkResources interface to simplify parsing of resource
11783lists.
11784
11785Code and Data Size: Current core subsystem library sizes are shown
11786below.  These are the code and data sizes for the acpica.lib
11787produced by the Microsoft Visual C++ 6.0 compiler, and these
11788values do not include any ACPI driver or OSPM code.  The debug
11789version of the code includes the debug output trace mechanism and
11790has a much larger code and data size.  Note that these values will
11791vary depending on the efficiency of the compiler and the compiler
11792options used during generation.
11793
11794  Previous Release
11795    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11796    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11797  Current Release:
11798    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11799    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11800
11801
118022) Linux
11803
11804S3 fixes (Ole Rohne)
11805
11806Update ACPI PHP driver with to use new acpi_walk_resource API
11807(Bjorn Helgaas)
11808
11809Add S4BIOS support (Pavel Machek)
11810
11811Map in entire table before performing checksum (John Stultz)
11812
11813Expand the mem= cmdline to allow the specification of reserved and
11814ACPI DATA blocks (Pavel Machek)
11815
11816Never use ACPI on VISWS
11817
11818Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
11819
11820Revert a change that allowed P_BLK lengths to be 4 or 5. This is
11821causing us to think that some systems support C2 when they really
11822don't.
11823
11824Do not count processor objects for non-present CPUs (Thanks to
11825Dominik Brodowski)
11826
11827
118283) iASL Compiler:
11829
11830Fixed a problem where ASL include files could not be found and
11831opened.
11832
11833Added support for the _PDC reserved name.
11834
11835
11836----------------------------------------
1183722 January 2003.  Summary of changes for version 20030122.
11838
11839
118401) ACPI CA Core Subsystem:
11841
11842Added a check for constructs of the form:  Store (Local0, Local0)
11843where Local0 is not initialized.  Apparently, some BIOS
11844programmers believe that this is a NOOP.  Since this store doesn't
11845do anything anyway, the new prototype behavior will ignore this
11846error.  This is a case where we can relax the strict checking in
11847the interpreter in the name of compatibility.
11848
11849
118502) Linux
11851
11852The AcpiSrc Source Conversion Utility has been released with the
11853Linux package for the first time.  This is the utility that is
11854used to convert the ACPI CA base source code to the Linux version.
11855
11856(Both) Handle P_BLK lengths shorter than 6 more gracefully
11857
11858(Both) Move more headers to include/acpi, and delete an unused
11859header.
11860
11861(Both) Move drivers/acpi/include directory to include/acpi
11862
11863(Both) Boot functions don't use cmdline, so don't pass it around
11864
11865(Both) Remove include of unused header (Adrian Bunk)
11866
11867(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
11868the
11869former now also includes the latter, acpiphp.h only needs the one,
11870now.
11871
11872(2.5) Make it possible to select method of bios restoring after S3
11873resume. [=> no more ugly ifdefs] (Pavel Machek)
11874
11875(2.5) Make proc write interfaces work (Pavel Machek)
11876
11877(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
11878
11879(2.5) Break out ACPI Perf code into its own module, under cpufreq
11880(Dominik Brodowski)
11881
11882(2.4) S4BIOS support (Ducrot Bruno)
11883
11884(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
11885Visinoni)
11886
11887
118883) iASL Compiler:
11889
11890Added support to disassemble SSDT and PSDTs.
11891
11892Implemented support to obtain SSDTs from the Windows registry if
11893available.
11894
11895
11896----------------------------------------
1189709 January 2003.  Summary of changes for version 20030109.
11898
118991) ACPI CA Core Subsystem:
11900
11901Changed the behavior of the internal Buffer-to-String conversion
11902function.  The current ACPI specification states that the contents
11903of the buffer are "converted to a string of two-character
11904hexadecimal numbers, each separated by a space".  Unfortunately,
11905this definition is not backwards compatible with existing ACPI 1.0
11906implementations (although the behavior was not defined in the ACPI
119071.0 specification).  The new behavior simply copies data from the
11908buffer to the string until a null character is found or the end of
11909the buffer is reached.  The new String object is always null
11910terminated.  This problem was seen during the generation of _BIF
11911battery data where incorrect strings were returned for battery
11912type, etc.  This will also require an errata to the ACPI
11913specification.
11914
11915Renamed all instances of NATIVE_UINT and NATIVE_INT to
11916ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
11917
11918Copyright in all module headers (both Linux and non-Linux) has be
11919updated to 2003.
11920
11921Code and Data Size: Current core subsystem library sizes are shown
11922below.  These are the code and data sizes for the acpica.lib
11923produced by the Microsoft Visual C++ 6.0 compiler, and these
11924values do not include any ACPI driver or OSPM code.  The debug
11925version of the code includes the debug output trace mechanism and
11926has a much larger code and data size.  Note that these values will
11927vary depending on the efficiency of the compiler and the compiler
11928options used during generation.
11929
11930  Previous Release
11931    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11932    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11933  Current Release:
11934    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
11935    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
11936
11937
119382) Linux
11939
11940Fixed an oops on module insertion/removal (Matthew Tippett)
11941
11942(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
11943
11944(2.5) Replace pr_debug (Randy Dunlap)
11945
11946(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
11947
11948(Both) Eliminate spawning of thread from timer callback, in favor
11949of schedule_work()
11950
11951(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
11952
11953(Both) Added define for Fixed Function HW region (Matthew Wilcox)
11954
11955(Both) Add missing statics to button.c (Pavel Machek)
11956
11957Several changes have been made to the source code translation
11958utility that generates the Linux Code in order to make the code
11959more "Linux-like":
11960
11961All typedefs on structs and unions have been removed in keeping
11962with the Linux coding style.
11963
11964Removed the non-Linux SourceSafe module revision number from each
11965module header.
11966
11967Completed major overhaul of symbols to be lowercased for linux.
11968Doubled the number of symbols that are lowercased.
11969
11970Fixed a problem where identifiers within procedure headers and
11971within quotes were not fully lower cased (they were left with a
11972starting capital.)
11973
11974Some C macros whose only purpose is to allow the generation of 16-
11975bit code are now completely removed in the Linux code, increasing
11976readability and maintainability.
11977
11978----------------------------------------
11979
1198012 December 2002.  Summary of changes for version 20021212.
11981
11982
119831) ACPI CA Core Subsystem:
11984
11985Fixed a problem where the creation of a zero-length AML Buffer
11986would cause a fault.
11987
11988Fixed a problem where a Buffer object that pointed to a static AML
11989buffer (in an ACPI table) could inadvertently be deleted, causing
11990memory corruption.
11991
11992Fixed a problem where a user buffer (passed in to the external
11993ACPI CA interfaces) could be overwritten if the buffer was too
11994small to complete the operation, causing memory corruption.
11995
11996Fixed a problem in the Buffer-to-String conversion code where a
11997string of length one was always returned, regardless of the size
11998of the input Buffer object.
11999
12000Removed the NATIVE_CHAR data type across the entire source due to
12001lack of need and lack of consistent use.
12002
12003Code and Data Size: Current core subsystem library sizes are shown
12004below.  These are the code and data sizes for the acpica.lib
12005produced by the Microsoft Visual C++ 6.0 compiler, and these
12006values do not include any ACPI driver or OSPM code.  The debug
12007version of the code includes the debug output trace mechanism and
12008has a much larger code and data size.  Note that these values will
12009vary depending on the efficiency of the compiler and the compiler
12010options used during generation.
12011
12012  Previous Release
12013    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12014    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12015  Current Release:
12016    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12017    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12018
12019
12020----------------------------------------
1202105 December 2002.  Summary of changes for version 20021205.
12022
120231) ACPI CA Core Subsystem:
12024
12025Fixed a problem where a store to a String or Buffer object could
12026cause corruption of the DSDT if the object type being stored was
12027the same as the target object type and the length of the object
12028being stored was equal to or smaller than the original (existing)
12029target object.  This was seen to cause corruption of battery _BIF
12030buffers if the _BIF method modified the buffer on the fly.
12031
12032Fixed a problem where an internal error was generated if a control
12033method invocation was used in an OperationRegion, Buffer, or
12034Package declaration.  This was caused by the deferred parsing of
12035the control method and thus the deferred creation of the internal
12036method object.  The solution to this problem was to create the
12037internal method object at the moment the method is encountered in
12038the first pass - so that subsequent references to the method will
12039able to obtain the required parameter count and thus properly
12040parse the method invocation.  This problem presented itself as an
12041AE_AML_INTERNAL during the pass 1 parse phase during table load.
12042
12043Fixed a problem where the internal String object copy routine did
12044not always allocate sufficient memory for the target String object
12045and caused memory corruption.  This problem was seen to cause
12046"Allocation already present in list!" errors as memory allocation
12047became corrupted.
12048
12049Implemented a new function for the evaluation of namespace objects
12050that allows the specification of the allowable return object
12051types.  This simplifies a lot of code that checks for a return
12052object of one or more specific objects returned from the
12053evaluation (such as _STA, etc.)  This may become and external
12054function if it would be useful to ACPI-related drivers.
12055
12056Completed another round of prefixing #defines with "ACPI_" for
12057clarity.
12058
12059Completed additional code restructuring to allow more modular
12060linking for iASL compiler and AcpiExec.  Several files were split
12061creating new files.  New files:  nsparse.c dsinit.c evgpe.c
12062
12063Implemented an abort mechanism to terminate an executing control
12064method via the AML debugger.  This feature is useful for debugging
12065control methods that depend (wait) for specific hardware
12066responses.
12067
12068Code and Data Size: Current core subsystem library sizes are shown
12069below.  These are the code and data sizes for the acpica.lib
12070produced by the Microsoft Visual C++ 6.0 compiler, and these
12071values do not include any ACPI driver or OSPM code.  The debug
12072version of the code includes the debug output trace mechanism and
12073has a much larger code and data size.  Note that these values will
12074vary depending on the efficiency of the compiler and the compiler
12075options used during generation.
12076
12077  Previous Release
12078    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12079    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12080  Current Release:
12081    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12082    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12083
12084
120852) iASL Compiler/Disassembler
12086
12087Fixed a compiler code generation problem for "Interrupt" Resource
12088Descriptors.  If specified in the ASL, the optional "Resource
12089Source Index" and "Resource Source" fields were not inserted into
12090the correct location within the AML resource descriptor, creating
12091an invalid descriptor.
12092
12093Fixed a disassembler problem for "Interrupt" resource descriptors.
12094The optional "Resource Source Index" and "Resource Source" fields
12095were ignored.
12096
12097
12098----------------------------------------
1209922 November 2002.  Summary of changes for version 20021122.
12100
12101
121021) ACPI CA Core Subsystem:
12103
12104Fixed a reported problem where an object stored to a Method Local
12105or Arg was not copied to a new object during the store - the
12106object pointer was simply copied to the Local/Arg.  This caused
12107all subsequent operations on the Local/Arg to also affect the
12108original source of the store operation.
12109
12110Fixed a problem where a store operation to a Method Local or Arg
12111was not completed properly if the Local/Arg contained a reference
12112(from RefOf) to a named field.  The general-purpose store-to-
12113namespace-node code is now used so that this case is handled
12114automatically.
12115
12116Fixed a problem where the internal object copy routine would cause
12117a protection fault if the object being copied was a Package and
12118contained either 1) a NULL package element or 2) a nested sub-
12119package.
12120
12121Fixed a problem with the GPE initialization that resulted from an
12122ambiguity in the ACPI specification.  One section of the
12123specification states that both the address and length of the GPE
12124block must be zero if the block is not supported.  Another section
12125implies that only the address need be zero if the block is not
12126supported.  The code has been changed so that both the address and
12127the length must be non-zero to indicate a valid GPE block (i.e.,
12128if either the address or the length is zero, the GPE block is
12129invalid.)
12130
12131Code and Data Size: Current core subsystem library sizes are shown
12132below.  These are the code and data sizes for the acpica.lib
12133produced by the Microsoft Visual C++ 6.0 compiler, and these
12134values do not include any ACPI driver or OSPM code.  The debug
12135version of the code includes the debug output trace mechanism and
12136has a much larger code and data size.  Note that these values will
12137vary depending on the efficiency of the compiler and the compiler
12138options used during generation.
12139
12140  Previous Release
12141    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12142    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12143  Current Release:
12144    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12145    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12146
12147
121482) Linux
12149
12150Cleaned up EC driver. Exported an external EC read/write
12151interface. By going through this, other drivers (most notably
12152sonypi) will be able to serialize access to the EC.
12153
12154
121553) iASL Compiler/Disassembler
12156
12157Implemented support to optionally generate include files for both
12158ASM and C (the -i switch).  This simplifies BIOS development by
12159automatically creating include files that contain external
12160declarations for the symbols that are created within the
12161
12162(optionally generated) ASM and C AML source files.
12163
12164
12165----------------------------------------
1216615 November 2002.  Summary of changes for version 20021115.
12167
121681) ACPI CA Core Subsystem:
12169
12170Fixed a memory leak problem where an error during resolution of
12171
12172method arguments during a method invocation from another method
12173failed to cleanup properly by deleting all successfully resolved
12174argument objects.
12175
12176Fixed a problem where the target of the Index() operator was not
12177correctly constructed if the source object was a package.  This
12178problem has not been detected because the use of a target operand
12179with Index() is very rare.
12180
12181Fixed a problem with the Index() operator where an attempt was
12182made to delete the operand objects twice.
12183
12184Fixed a problem where an attempt was made to delete an operand
12185twice during execution of the CondRefOf() operator if the target
12186did not exist.
12187
12188Implemented the first of perhaps several internal create object
12189functions that create and initialize a specific object type.  This
12190consolidates duplicated code wherever the object is created, thus
12191shrinking the size of the subsystem.
12192
12193Implemented improved debug/error messages for errors that occur
12194during nested method invocations.  All executing method pathnames
12195are displayed (with the error) as the call stack is unwound - thus
12196simplifying debug.
12197
12198Fixed a problem introduced in the 10/02 release that caused
12199premature deletion of a buffer object if a buffer was used as an
12200ASL operand where an integer operand is required (Thus causing an
12201implicit object conversion from Buffer to Integer.)  The change in
12202the 10/02 release was attempting to fix a memory leak (albeit
12203incorrectly.)
12204
12205Code and Data Size: Current core subsystem library sizes are shown
12206below.  These are the code and data sizes for the acpica.lib
12207produced by the Microsoft Visual C++ 6.0 compiler, and these
12208values do not include any ACPI driver or OSPM code.  The debug
12209version of the code includes the debug output trace mechanism and
12210has a much larger code and data size.  Note that these values will
12211vary depending on the efficiency of the compiler and the compiler
12212options used during generation.
12213
12214  Previous Release
12215    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12216    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12217  Current Release:
12218    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12219    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12220
12221
122222) Linux
12223
12224Changed the implementation of the ACPI semaphores to use down()
12225instead of down_interruptable().  It is important that the
12226execution of ACPI control methods not be interrupted by signals.
12227Methods must run to completion, or the system may be left in an
12228unknown/unstable state.
12229
12230Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12231(Shawn Starr)
12232
12233
122343) iASL Compiler/Disassembler
12235
12236
12237Changed the default location of output files.  All output files
12238are now placed in the current directory by default instead of in
12239the directory of the source file.  This change may affect some
12240existing makefiles, but it brings the behavior of the compiler in
12241line with other similar tools.  The location of the output files
12242can be overridden with the -p command line switch.
12243
12244
12245----------------------------------------
1224611 November 2002.  Summary of changes for version 20021111.
12247
12248
122490) ACPI Specification 2.0B is released and is now available at:
12250http://www.acpi.info/index.html
12251
12252
122531) ACPI CA Core Subsystem:
12254
12255Implemented support for the ACPI 2.0 SMBus Operation Regions.
12256This includes the early detection and handoff of the request to
12257the SMBus region handler (avoiding all of the complex field
12258support code), and support for the bidirectional return packet
12259from an SMBus write operation.  This paves the way for the
12260development of SMBus drivers in each host operating system.
12261
12262Fixed a problem where the semaphore WAIT_FOREVER constant was
12263defined as 32 bits, but must be 16 bits according to the ACPI
12264specification.  This had the side effect of causing ASL
12265Mutex/Event timeouts even though the ASL code requested a wait
12266forever.  Changed all internal references to the ACPI timeout
12267parameter to 16 bits to prevent future problems.  Changed the name
12268of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12269
12270Code and Data Size: Current core subsystem library sizes are shown
12271below.  These are the code and data sizes for the acpica.lib
12272produced by the Microsoft Visual C++ 6.0 compiler, and these
12273values do not include any ACPI driver or OSPM code.  The debug
12274version of the code includes the debug output trace mechanism and
12275has a much larger code and data size.  Note that these values will
12276vary depending on the efficiency of the compiler and the compiler
12277options used during generation.
12278
12279  Previous Release
12280    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12281    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12282  Current Release:
12283    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12284    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12285
12286
122872) Linux
12288
12289Module loading/unloading fixes (John Cagle)
12290
12291
122923) iASL Compiler/Disassembler
12293
12294Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12295
12296Implemented support for the disassembly of all SMBus protocol
12297keywords (SMBQuick, SMBWord, etc.)
12298
12299----------------------------------------
1230001 November 2002.  Summary of changes for version 20021101.
12301
12302
123031) ACPI CA Core Subsystem:
12304
12305Fixed a problem where platforms that have a GPE1 block but no GPE0
12306block were not handled correctly.  This resulted in a "GPE
12307overlap" error message.  GPE0 is no longer required.
12308
12309Removed code added in the previous release that inserted nodes
12310into the namespace in alphabetical order.  This caused some side-
12311effects on various machines.  The root cause of the problem is
12312still under investigation since in theory, the internal ordering
12313of the namespace nodes should not matter.
12314
12315
12316Enhanced error reporting for the case where a named object is not
12317found during control method execution.  The full ACPI namepath
12318(name reference) of the object that was not found is displayed in
12319this case.
12320
12321Note: as a result of the overhaul of the namespace object types in
12322the previous release, the namespace nodes for the predefined
12323scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12324instead of ACPI_TYPE_ANY.  This simplifies the namespace
12325management code but may affect code that walks the namespace tree
12326looking for specific object types.
12327
12328Code and Data Size: Current core subsystem library sizes are shown
12329below.  These are the code and data sizes for the acpica.lib
12330produced by the Microsoft Visual C++ 6.0 compiler, and these
12331values do not include any ACPI driver or OSPM code.  The debug
12332version of the code includes the debug output trace mechanism and
12333has a much larger code and data size.  Note that these values will
12334vary depending on the efficiency of the compiler and the compiler
12335options used during generation.
12336
12337  Previous Release
12338    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12339    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12340  Current Release:
12341    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12342    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12343
12344
123452) Linux
12346
12347Fixed a problem introduced in the previous release where the
12348Processor and Thermal objects were not recognized and installed in
12349/proc.  This was related to the scope type change described above.
12350
12351
123523) iASL Compiler/Disassembler
12353
12354Implemented the -g option to get all of the required ACPI tables
12355from the registry and save them to files (Windows version of the
12356compiler only.)  The required tables are the FADT, FACS, and DSDT.
12357
12358Added ACPI table checksum validation during table disassembly in
12359order to catch corrupted tables.
12360
12361
12362----------------------------------------
1236322 October 2002.  Summary of changes for version 20021022.
12364
123651) ACPI CA Core Subsystem:
12366
12367Implemented a restriction on the Scope operator that the target
12368must already exist in the namespace at the time the operator is
12369encountered (during table load or method execution).  In other
12370words, forward references are not allowed and Scope() cannot
12371create a new object. This changes the previous behavior where the
12372interpreter would create the name if not found.  This new behavior
12373correctly enables the search-to-root algorithm during namespace
12374lookup of the target name.  Because of this upsearch, this fixes
12375the known Compaq _SB_.OKEC problem and makes both the AML
12376interpreter and iASL compiler compatible with other ACPI
12377implementations.
12378
12379Completed a major overhaul of the internal ACPI object types for
12380the ACPI Namespace and the associated operand objects.  Many of
12381these types had become obsolete with the introduction of the two-
12382pass namespace load.  This cleanup simplifies the code and makes
12383the entire namespace load mechanism much clearer and easier to
12384understand.
12385
12386Improved debug output for tracking scope opening/closing to help
12387diagnose scoping issues.  The old scope name as well as the new
12388scope name are displayed.  Also improved error messages for
12389problems with ASL Mutex objects and error messages for GPE
12390problems.
12391
12392Cleaned up the namespace dump code, removed obsolete code.
12393
12394All string output (for all namespace/object dumps) now uses the
12395common ACPI string output procedure which handles escapes properly
12396and does not emit non-printable characters.
12397
12398Fixed some issues with constants in the 64-bit version of the
12399local C library (utclib.c)
12400
12401
124022) Linux
12403
12404EC Driver:  No longer attempts to acquire the Global Lock at
12405interrupt level.
12406
12407
124083) iASL Compiler/Disassembler
12409
12410Implemented ACPI 2.0B grammar change that disallows all Type 1 and
124112 opcodes outside of a control method.  This means that the
12412"executable" operators (versus the "namespace" operators) cannot
12413be used at the table level; they can only be used within a control
12414method.
12415
12416Implemented the restriction on the Scope() operator where the
12417target must already exist in the namespace at the time the
12418operator is encountered (during ASL compilation). In other words,
12419forward references are not allowed and Scope() cannot create a new
12420object.  This makes the iASL compiler compatible with other ACPI
12421implementations and makes the Scope() implementation adhere to the
12422ACPI specification.
12423
12424Fixed a problem where namepath optimization for the Alias operator
12425was optimizing the wrong path (of the two namepaths.)  This caused
12426a "Missing alias link" error message.
12427
12428Fixed a problem where an "unknown reserved name" warning could be
12429incorrectly generated for names like "_SB" when the trailing
12430underscore is not used in the original ASL.
12431
12432Fixed a problem where the reserved name check did not handle
12433NamePaths with multiple NameSegs correctly.  The first nameseg of
12434the NamePath was examined instead of the last NameSeg.
12435
12436
12437----------------------------------------
12438
1243902 October 2002.  Summary of changes for this release.
12440
12441
124421) ACPI CA Core Subsystem version 20021002:
12443
12444Fixed a problem where a store/copy of a string to an existing
12445string did not always set the string length properly in the String
12446object.
12447
12448Fixed a reported problem with the ToString operator where the
12449behavior was identical to the ToHexString operator instead of just
12450simply converting a raw buffer to a string data type.
12451
12452Fixed a problem where CopyObject and the other "explicit"
12453conversion operators were not updating the internal namespace node
12454type as part of the store operation.
12455
12456Fixed a memory leak during implicit source operand conversion
12457where the original object was not deleted if it was converted to a
12458new object of a different type.
12459
12460Enhanced error messages for all problems associated with namespace
12461lookups.  Common procedure generates and prints the lookup name as
12462well as the formatted status.
12463
12464Completed implementation of a new design for the Alias support
12465within the namespace.  The existing design did not handle the case
12466where a new object was assigned to one of the two names due to the
12467use of an explicit conversion operator, resulting in the two names
12468pointing to two different objects.  The new design simply points
12469the Alias name to the original name node - not to the object.
12470This results in a level of indirection that must be handled in the
12471name resolution mechanism.
12472
12473Code and Data Size: Current core subsystem library sizes are shown
12474below.  These are the code and data sizes for the acpica.lib
12475produced by the Microsoft Visual C++ 6.0 compiler, and these
12476values do not include any ACPI driver or OSPM code.  The debug
12477version of the code includes the debug output trace mechanism and
12478has a larger code and data size.  Note that these values will vary
12479depending on the efficiency of the compiler and the compiler
12480options used during generation.
12481
12482  Previous Release
12483    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12484    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12485  Current Release:
12486    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12487    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12488
12489
124902) Linux
12491
12492Initialize thermal driver's timer before it is used. (Knut
12493Neumann)
12494
12495Allow handling negative celsius values. (Kochi Takayoshi)
12496
12497Fix thermal management and make trip points. R/W (Pavel Machek)
12498
12499Fix /proc/acpi/sleep. (P. Christeas)
12500
12501IA64 fixes. (David Mosberger)
12502
12503Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
12504
12505Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
12506Brodowski)
12507
12508
125093) iASL Compiler/Disassembler
12510
12511Clarified some warning/error messages.
12512
12513
12514----------------------------------------
1251518 September 2002.  Summary of changes for this release.
12516
12517
125181) ACPI CA Core Subsystem version 20020918:
12519
12520Fixed a reported problem with reference chaining (via the Index()
12521and RefOf() operators) in the ObjectType() and SizeOf() operators.
12522The definition of these operators includes the dereferencing of
12523all chained references to return information on the base object.
12524
12525Fixed a problem with stores to indexed package elements - the
12526existing code would not complete the store if an "implicit
12527conversion" was not performed.  In other words, if the existing
12528object (package element) was to be replaced completely, the code
12529didn't handle this case.
12530
12531Relaxed typechecking on the ASL "Scope" operator to allow the
12532target name to refer to an object of type Integer, String, or
12533Buffer, in addition to the scoping object types (Device,
12534predefined Scopes, Processor, PowerResource, and ThermalZone.)
12535This allows existing AML code that has workarounds for a bug in
12536Windows to function properly.  A warning is issued, however.  This
12537affects both the AML interpreter and the iASL compiler. Below is
12538an example of this type of ASL code:
12539
12540      Name(DEB,0x00)
12541      Scope(DEB)
12542      {
12543
12544Fixed some reported problems with 64-bit integer support in the
12545local implementation of C library functions (clib.c)
12546
12547
125482) Linux
12549
12550Use ACPI fix map region instead of IOAPIC region, since it is
12551undefined in non-SMP.
12552
12553Ensure that the SCI has the proper polarity and trigger, even on
12554systems that do not have an interrupt override entry in the MADT.
12555
125562.5 big driver reorganization (Pat Mochel)
12557
12558Use early table mapping code from acpitable.c (Andi Kleen)
12559
12560New blacklist entries (Andi Kleen)
12561
12562Blacklist improvements. Split blacklist code out into a separate
12563file. Move checking the blacklist to very early. Previously, we
12564would use ACPI tables, and then halfway through init, check the
12565blacklist -- too late. Now, it's early enough to completely fall-
12566back to non-ACPI.
12567
12568
125693) iASL Compiler/Disassembler version 20020918:
12570
12571Fixed a problem where the typechecking code didn't know that an
12572alias could point to a method.  In other words, aliases were not
12573being dereferenced during typechecking.
12574
12575
12576----------------------------------------
1257729 August 2002.  Summary of changes for this release.
12578
125791) ACPI CA Core Subsystem Version 20020829:
12580
12581If the target of a Scope() operator already exists, it must be an
12582object type that actually opens a scope -- such as a Device,
12583Method, Scope, etc.  This is a fatal runtime error.  Similar error
12584check has been added to the iASL compiler also.
12585
12586Tightened up the namespace load to disallow multiple names in the
12587same scope.  This previously was allowed if both objects were of
12588the same type.  (i.e., a lookup was the same as entering a new
12589name).
12590
12591
125922) Linux
12593
12594Ensure that the ACPI interrupt has the proper trigger and
12595polarity.
12596
12597local_irq_disable is extraneous. (Matthew Wilcox)
12598
12599Make "acpi=off" actually do what it says, and not use the ACPI
12600interpreter *or* the tables.
12601
12602Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
12603Takayoshi)
12604
12605
126063) iASL Compiler/Disassembler  Version 20020829:
12607
12608Implemented namepath optimization for name declarations.  For
12609example, a declaration like "Method (\_SB_.ABCD)" would get
12610optimized to "Method (ABCD)" if the declaration is within the
12611\_SB_ scope.  This optimization is in addition to the named
12612reference path optimization first released in the previous
12613version. This would seem to complete all possible optimizations
12614for namepaths within the ASL/AML.
12615
12616If the target of a Scope() operator already exists, it must be an
12617object type that actually opens a scope -- such as a Device,
12618Method, Scope, etc.
12619
12620Implemented a check and warning for unreachable code in the same
12621block below a Return() statement.
12622
12623Fixed a problem where the listing file was not generated if the
12624compiler aborted if the maximum error count was exceeded (200).
12625
12626Fixed a problem where the typechecking of method return values was
12627broken.  This includes the check for a return value when the
12628method is invoked as a TermArg (a return value is expected.)
12629
12630Fixed a reported problem where EOF conditions during a quoted
12631string or comment caused a fault.
12632
12633
12634----------------------------------------
1263515 August 2002.  Summary of changes for this release.
12636
126371) ACPI CA Core Subsystem Version 20020815:
12638
12639Fixed a reported problem where a Store to a method argument that
12640contains a reference did not perform the indirect store correctly.
12641This problem was created during the conversion to the new
12642reference object model - the indirect store to a method argument
12643code was not updated to reflect the new model.
12644
12645Reworked the ACPI mode change code to better conform to ACPI 2.0,
12646handle corner cases, and improve code legibility (Kochi Takayoshi)
12647
12648Fixed a problem with the pathname parsing for the carat (^)
12649prefix.  The heavy use of the carat operator by the new namepath
12650optimization in the iASL compiler uncovered a problem with the AML
12651interpreter handling of this prefix.  In the case where one or
12652more carats precede a single nameseg, the nameseg was treated as
12653standalone and the search rule (to root) was inadvertently
12654applied.  This could cause both the iASL compiler and the
12655interpreter to find the wrong object or to miss the error that
12656should occur if the object does not exist at that exact pathname.
12657
12658Found and fixed the problem where the HP Pavilion DSDT would not
12659load.  This was a relatively minor tweak to the table loading code
12660(a problem caused by the unexpected encounter with a method
12661invocation not within a control method), but it does not solve the
12662overall issue of the execution of AML code at the table level.
12663This investigation is still ongoing.
12664
12665Code and Data Size: Current core subsystem library sizes are shown
12666below.  These are the code and data sizes for the acpica.lib
12667produced by the Microsoft Visual C++ 6.0 compiler, and these
12668values do not include any ACPI driver or OSPM code.  The debug
12669version of the code includes the debug output trace mechanism and
12670has a larger code and data size.  Note that these values will vary
12671depending on the efficiency of the compiler and the compiler
12672options used during generation.
12673
12674  Previous Release
12675    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12676    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12677  Current Release:
12678    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12679    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12680
12681
126822) Linux
12683
12684Remove redundant slab.h include (Brad Hards)
12685
12686Fix several bugs in thermal.c (Herbert Nachtnebel)
12687
12688Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
12689
12690Change acpi_system_suspend to use updated irq functions (Pavel
12691Machek)
12692
12693Export acpi_get_firmware_table (Matthew Wilcox)
12694
12695Use proper root proc entry for ACPI (Kochi Takayoshi)
12696
12697Fix early-boot table parsing (Bjorn Helgaas)
12698
12699
127003) iASL Compiler/Disassembler
12701
12702Reworked the compiler options to make them more consistent and to
12703use two-letter options where appropriate.  We were running out of
12704sensible letters.   This may break some makefiles, so check the
12705current options list by invoking the compiler with no parameters.
12706
12707Completed the design and implementation of the ASL namepath
12708optimization option for the compiler.  This option optimizes all
12709references to named objects to the shortest possible path.  The
12710first attempt tries to utilize a single nameseg (4 characters) and
12711the "search-to-root" algorithm used by the interpreter.  If that
12712cannot be used (because either the name is not in the search path
12713or there is a conflict with another object with the same name),
12714the pathname is optimized using the carat prefix (usually a
12715shorter string than specifying the entire path from the root.)
12716
12717Implemented support to obtain the DSDT from the Windows registry
12718(when the disassembly option is specified with no input file).
12719Added this code as the implementation for AcpiOsTableOverride in
12720the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
12721utility) to scan memory for the DSDT to the AcpiOsTableOverride
12722function in the DOS OSL to make the disassembler truly OS
12723independent.
12724
12725Implemented a new option to disassemble and compile in one step.
12726When used without an input filename, this option will grab the
12727DSDT from the local machine, disassemble it, and compile it in one
12728step.
12729
12730Added a warning message for invalid escapes (a backslash followed
12731by any character other than the allowable escapes).  This catches
12732the quoted string error "\_SB_" (which should be "\\_SB_" ).
12733
12734Also, there are numerous instances in the ACPI specification where
12735this error occurs.
12736
12737Added a compiler option to disable all optimizations.  This is
12738basically the "compatibility mode" because by using this option,
12739the AML code will come out exactly the same as other ASL
12740compilers.
12741
12742Added error messages for incorrectly ordered dependent resource
12743functions.  This includes: missing EndDependentFn macro at end of
12744dependent resource list, nested dependent function macros (both
12745start and end), and missing StartDependentFn macro.  These are
12746common errors that should be caught at compile time.
12747
12748Implemented _OSI support for the disassembler and compiler.  _OSI
12749must be included in the namespace for proper disassembly (because
12750the disassembler must know the number of arguments.)
12751
12752Added an "optimization" message type that is optional (off by
12753default).  This message is used for all optimizations - including
12754constant folding, integer optimization, and namepath optimization.
12755
12756----------------------------------------
1275725 July 2002.  Summary of changes for this release.
12758
12759
127601) ACPI CA Core Subsystem Version 20020725:
12761
12762The AML Disassembler has been enhanced to produce compilable ASL
12763code and has been integrated into the iASL compiler (see below) as
12764well as the single-step disassembly for the AML debugger and the
12765disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
12766resource templates and macros are fully supported.  The
12767disassembler has been tested on over 30 different AML files,
12768producing identical AML when the resulting disassembled ASL file
12769is recompiled with the same ASL compiler.
12770
12771Modified the Resource Manager to allow zero interrupts and zero
12772dma channels during the GetCurrentResources call.  This was
12773causing problems on some platforms.
12774
12775Added the AcpiOsRedirectOutput interface to the OSL to simplify
12776output redirection for the AcpiOsPrintf and AcpiOsVprintf
12777interfaces.
12778
12779Code and Data Size: Current core subsystem library sizes are shown
12780below.  These are the code and data sizes for the acpica.lib
12781produced by the Microsoft Visual C++ 6.0 compiler, and these
12782values do not include any ACPI driver or OSPM code.  The debug
12783version of the code includes the debug output trace mechanism and
12784has a larger code and data size.  Note that these values will vary
12785depending on the efficiency of the compiler and the compiler
12786options used during generation.
12787
12788  Previous Release
12789    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12790    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12791  Current Release:
12792    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12793    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12794
12795
127962) Linux
12797
12798Fixed a panic in the EC driver (Dominik Brodowski)
12799
12800Implemented checksum of the R/XSDT itself during Linux table scan
12801(Richard Schaal)
12802
12803
128043) iASL compiler
12805
12806The AML disassembler is integrated into the compiler.  The "-d"
12807option invokes the disassembler  to completely disassemble an
12808input AML file, producing as output a text ASL file with the
12809extension ".dsl" (to avoid name collisions with existing .asl
12810source files.)  A future enhancement will allow the disassembler
12811to obtain the BIOS DSDT from the registry under Windows.
12812
12813Fixed a problem with the VendorShort and VendorLong resource
12814descriptors where an invalid AML sequence was created.
12815
12816Implemented a fix for BufferData term in the ASL parser.  It was
12817inadvertently defined twice, allowing invalid syntax to pass and
12818causing reduction conflicts.
12819
12820Fixed a problem where the Ones opcode could get converted to a
12821value of zero if "Ones" was used where a byte, word or dword value
12822was expected.  The 64-bit value is now truncated to the correct
12823size with the correct value.
12824
12825
12826
12827----------------------------------------
1282802 July 2002.  Summary of changes for this release.
12829
12830
128311) ACPI CA Core Subsystem Version 20020702:
12832
12833The Table Manager code has been restructured to add several new
12834features.  Tables that are not required by the core subsystem
12835(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
12836validated in any way and are returned from AcpiGetFirmwareTable if
12837requested.  The AcpiOsTableOverride interface is now called for
12838each table that is loaded by the subsystem in order to allow the
12839host to override any table it chooses.  Previously, only the DSDT
12840could be overridden.  Added one new files, tbrsdt.c and
12841tbgetall.c.
12842
12843Fixed a problem with the conversion of internal package objects to
12844external objects (when a package is returned from a control
12845method.)  The return buffer length was set to zero instead of the
12846proper length of the package object.
12847
12848Fixed a reported problem with the use of the RefOf and DeRefOf
12849operators when passing reference arguments to control methods.  A
12850new type of Reference object is used internally for references
12851produced by the RefOf operator.
12852
12853Added additional error messages in the Resource Manager to explain
12854AE_BAD_DATA errors when they occur during resource parsing.
12855
12856Split the AcpiEnableSubsystem into two primitives to enable a
12857finer granularity initialization sequence.  These two calls should
12858be called in this order: AcpiEnableSubsystem (flags),
12859AcpiInitializeObjects (flags).  The flags parameter remains the
12860same.
12861
12862
128632) Linux
12864
12865Updated the ACPI utilities module to understand the new style of
12866fully resolved package objects that are now returned from the core
12867subsystem.  This eliminates errors of the form:
12868
12869    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
12870    acpi_utils-0430 [145] acpi_evaluate_reference:
12871        Invalid element in package (not a device reference)
12872
12873The method evaluation utility uses the new buffer allocation
12874scheme instead of calling AcpiEvaluate Object twice.
12875
12876Added support for ECDT. This allows the use of the Embedded
12877
12878Controller before the namespace has been fully initialized, which
12879is necessary for ACPI 2.0 support, and for some laptops to
12880initialize properly. (Laptops using ECDT are still rare, so only
12881limited testing was performed of the added functionality.)
12882
12883Fixed memory leaks in the EC driver.
12884
12885Eliminated a brittle code structure in acpi_bus_init().
12886
12887Eliminated the acpi_evaluate() helper function in utils.c. It is
12888no longer needed since acpi_evaluate_object can optionally
12889allocate memory for the return object.
12890
12891Implemented fix for keyboard hang when getting battery readings on
12892some systems (Stephen White)
12893
12894PCI IRQ routing update (Dominik Brodowski)
12895
12896Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
12897support
12898
12899----------------------------------------
1290011 June 2002.  Summary of changes for this release.
12901
12902
129031) ACPI CA Core Subsystem Version 20020611:
12904
12905Fixed a reported problem where constants such as Zero and One
12906appearing within _PRT packages were not handled correctly within
12907the resource manager code.  Originally reported against the ASL
12908compiler because the code generator now optimizes integers to
12909their minimal AML representation (i.e. AML constants if possible.)
12910The _PRT code now handles all AML constant opcodes correctly
12911(Zero, One, Ones, Revision).
12912
12913Fixed a problem with the Concatenate operator in the AML
12914interpreter where a buffer result object was incorrectly marked as
12915not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
12916
12917All package sub-objects are now fully resolved before they are
12918returned from the external ACPI interfaces.  This means that name
12919strings are resolved to object handles, and constant operators
12920(Zero, One, Ones, Revision) are resolved to Integers.
12921
12922Implemented immediate resolution of the AML Constant opcodes
12923(Zero, One, Ones, Revision) to Integer objects upon detection
12924within the AML stream. This has simplified and reduced the
12925generated code size of the subsystem by eliminating about 10
12926switch statements for these constants (which previously were
12927contained in Reference objects.)  The complicating issues are that
12928the Zero opcode is used as a "placeholder" for unspecified
12929optional target operands and stores to constants are defined to be
12930no-ops.
12931
12932Code and Data Size: Current core subsystem library sizes are shown
12933below. These are the code and data sizes for the acpica.lib
12934produced by the Microsoft Visual C++ 6.0 compiler, and these
12935values do not include any ACPI driver or OSPM code.  The debug
12936version of the code includes the debug output trace mechanism and
12937has a larger code and data size.  Note that these values will vary
12938depending on the efficiency of the compiler and the compiler
12939options used during generation.
12940
12941  Previous Release
12942    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
12943    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
12944  Current Release:
12945    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
12946    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
12947
12948
129492) Linux
12950
12951
12952Added preliminary support for obtaining _TRA data for PCI root
12953bridges (Bjorn Helgaas).
12954
12955
129563) iASL Compiler Version X2046:
12957
12958Fixed a problem where the "_DDN" reserved name was defined to be a
12959control method with one argument.  There are no arguments, and
12960_DDN does not have to be a control method.
12961
12962Fixed a problem with the Linux version of the compiler where the
12963source lines printed with error messages were the wrong lines.
12964This turned out to be the "LF versus CR/LF" difference between
12965Windows and Unix.  This appears to be the longstanding issue
12966concerning listing output and error messages.
12967
12968Fixed a problem with the Linux version of compiler where opcode
12969names within error messages were wrong.  This was caused by a
12970slight difference in the output of the Flex tool on Linux versus
12971Windows.
12972
12973Fixed a problem with the Linux compiler where the hex output files
12974contained some garbage data caused by an internal buffer overrun.
12975
12976
12977----------------------------------------
1297817 May 2002.  Summary of changes for this release.
12979
12980
129811) ACPI CA Core Subsystem Version 20020517:
12982
12983Implemented a workaround to an BIOS bug discovered on the HP
12984OmniBook where the FADT revision number and the table size are
12985inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
12986behavior is to fallback to using only the ACPI 1.0 fields of the
12987FADT if the table is too small to be a ACPI 2.0 table as claimed
12988by the revision number.  Although this is a BIOS bug, this is a
12989case where the workaround is simple enough and with no side
12990effects, so it seemed prudent to add it.  A warning message is
12991issued, however.
12992
12993Implemented minimum size checks for the fixed-length ACPI tables -
12994- the FADT and FACS, as well as consistency checks between the
12995revision number and the table size.
12996
12997Fixed a reported problem in the table override support where the
12998new table pointer was incorrectly treated as a physical address
12999instead of a logical address.
13000
13001Eliminated the use of the AE_AML_ERROR exception and replaced it
13002with more descriptive codes.
13003
13004Fixed a problem where an exception would occur if an ASL Field was
13005defined with no named Field Units underneath it (used by some
13006index fields).
13007
13008Code and Data Size: Current core subsystem library sizes are shown
13009below.  These are the code and data sizes for the acpica.lib
13010produced by the Microsoft Visual C++ 6.0 compiler, and these
13011values do not include any ACPI driver or OSPM code.  The debug
13012version of the code includes the debug output trace mechanism and
13013has a larger code and data size.  Note that these values will vary
13014depending on the efficiency of the compiler and the compiler
13015options used during generation.
13016
13017  Previous Release
13018    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13019    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13020  Current Release:
13021    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13022    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13023
13024
13025
130262) Linux
13027
13028Much work done on ACPI init (MADT and PCI IRQ routing support).
13029(Paul D. and Dominik Brodowski)
13030
13031Fix PCI IRQ-related panic on boot (Sam Revitch)
13032
13033Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
13034
13035Fix "MHz" typo (Dominik Brodowski)
13036
13037Fix RTC year 2000 issue (Dominik Brodowski)
13038
13039Preclude multiple button proc entries (Eric Brunet)
13040
13041Moved arch-specific code out of include/platform/aclinux.h
13042
130433) iASL Compiler Version X2044:
13044
13045Implemented error checking for the string used in the EISAID macro
13046(Usually used in the definition of the _HID object.)  The code now
13047strictly enforces the PnP format - exactly 7 characters, 3
13048uppercase letters and 4 hex digits.
13049
13050If a raw string is used in the definition of the _HID object
13051(instead of the EISAID macro), the string must contain all
13052alphanumeric characters (e.g., "*PNP0011" is not allowed because
13053of the asterisk.)
13054
13055Implemented checking for invalid use of ACPI reserved names for
13056most of the name creation operators (Name, Device, Event, Mutex,
13057OperationRegion, PowerResource, Processor, and ThermalZone.)
13058Previously, this check was only performed for control methods.
13059
13060Implemented an additional check on the Name operator to emit an
13061error if a reserved name that must be implemented in ASL as a
13062control method is used.  We know that a reserved name must be a
13063method if it is defined with input arguments.
13064
13065The warning emitted when a namespace object reference is not found
13066during the cross reference phase has been changed into an error.
13067The "External" directive should be used for names defined in other
13068modules.
13069
13070
130714) Tools and Utilities
13072
13073The 16-bit tools (adump16 and aexec16) have been regenerated and
13074tested.
13075
13076Fixed a problem with the output of both acpidump and adump16 where
13077the indentation of closing parentheses and brackets was not
13078
13079aligned properly with the parent block.
13080
13081
13082----------------------------------------
1308303 May 2002.  Summary of changes for this release.
13084
13085
130861) ACPI CA Core Subsystem Version 20020503:
13087
13088Added support a new OSL interface that allows the host operating
13089
13090system software to override the DSDT found in the firmware -
13091AcpiOsTableOverride.  With this interface, the OSL can examine the
13092version of the firmware DSDT and replace it with a different one
13093if desired.
13094
13095Added new external interfaces for accessing ACPI registers from
13096device drivers and other system software - AcpiGetRegister and
13097AcpiSetRegister.  This was simply an externalization of the
13098existing AcpiHwBitRegister interfaces.
13099
13100Fixed a regression introduced in the previous build where the
13101ASL/AML CreateField operator always returned an error,
13102"destination must be a NS Node".
13103
13104Extended the maximum time (before failure) to successfully enable
13105ACPI mode to 3 seconds.
13106
13107Code and Data Size: Current core subsystem library sizes are shown
13108below.  These are the code and data sizes for the acpica.lib
13109produced by the Microsoft Visual C++ 6.0 compiler, and these
13110values do not include any ACPI driver or OSPM code.  The debug
13111version of the code includes the debug output trace mechanism and
13112has a larger code and data size.  Note that these values will vary
13113depending on the efficiency of the compiler and the compiler
13114options used during generation.
13115
13116  Previous Release
13117    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13118    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13119  Current Release:
13120    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13121    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13122
13123
131242) Linux
13125
13126Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
13127free. While 3 out of 4 of our in-house systems work fine, the last
13128one still hangs when testing the LAPIC timer.
13129
13130Renamed many files in 2.5 kernel release to omit "acpi_" from the
13131name.
13132
13133Added warning on boot for Presario 711FR.
13134
13135Sleep improvements (Pavel Machek)
13136
13137ACPI can now be built without CONFIG_PCI enabled.
13138
13139IA64: Fixed memory map functions (JI Lee)
13140
13141
131423) iASL Compiler Version X2043:
13143
13144Added support to allow the compiler to be integrated into the MS
13145VC++ development environment for one-button compilation of single
13146files or entire projects -- with error-to-source-line mapping.
13147
13148Implemented support for compile-time constant folding for the
13149Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13150specification.  This allows the ASL writer to use expressions
13151instead of Integer/Buffer/String constants in terms that must
13152evaluate to constants at compile time and will also simplify the
13153emitted AML in any such sub-expressions that can be folded
13154(evaluated at compile-time.)  This increases the size of the
13155compiler significantly because a portion of the ACPI CA AML
13156interpreter is included within the compiler in order to pre-
13157evaluate constant expressions.
13158
13159
13160Fixed a problem with the "Unicode" ASL macro that caused the
13161compiler to fault.  (This macro is used in conjunction with the
13162_STR reserved name.)
13163
13164Implemented an AML opcode optimization to use the Zero, One, and
13165Ones opcodes where possible to further reduce the size of integer
13166constants and thus reduce the overall size of the generated AML
13167code.
13168
13169Implemented error checking for new reserved terms for ACPI version
131702.0A.
13171
13172Implemented the -qr option to display the current list of ACPI
13173reserved names known to the compiler.
13174
13175Implemented the -qc option to display the current list of ASL
13176operators that are allowed within constant expressions and can
13177therefore be folded at compile time if the operands are constants.
13178
13179
131804) Documentation
13181
13182Updated the Programmer's Reference for new interfaces, data types,
13183and memory allocation model options.
13184
13185Updated the iASL Compiler User Reference to apply new format and
13186add information about new features and options.
13187
13188----------------------------------------
1318919 April 2002.  Summary of changes for this release.
13190
131911) ACPI CA Core Subsystem Version 20020419:
13192
13193The source code base for the Core Subsystem has been completely
13194cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
13195versions.  The Lint option files used are included in the
13196/acpi/generate/lint directory.
13197
13198Implemented enhanced status/error checking across the entire
13199Hardware manager subsystem.  Any hardware errors (reported from
13200the OSL) are now bubbled up and will abort a running control
13201method.
13202
13203
13204Fixed a problem where the per-ACPI-table integer width (32 or 64)
13205was stored only with control method nodes, causing a fault when
13206non-control method code was executed during table loading.  The
13207solution implemented uses a global variable to indicate table
13208width across the entire ACPI subsystem.  Therefore, ACPI CA does
13209not support mixed integer widths across different ACPI tables
13210(DSDT, SSDT).
13211
13212Fixed a problem where NULL extended fields (X fields) in an ACPI
132132.0 ACPI FADT caused the table load to fail.  Although the
13214existing ACPI specification is a bit fuzzy on this topic, the new
13215behavior is to fall back on a ACPI 1.0 field if the corresponding
13216ACPI 2.0 X field is zero (even though the table revision indicates
13217a full ACPI 2.0 table.)  The ACPI specification will be updated to
13218clarify this issue.
13219
13220Fixed a problem with the SystemMemory operation region handler
13221where memory was always accessed byte-wise even if the AML-
13222specified access width was larger than a byte.  This caused
13223problems on systems with memory-mapped I/O.  Memory is now
13224accessed with the width specified.  On systems that do not support
13225non-aligned transfers, a check is made to guarantee proper address
13226alignment before proceeding in order to avoid an AML-caused
13227alignment fault within the kernel.
13228
13229
13230Fixed a problem with the ExtendedIrq resource where only one byte
13231of the 4-byte Irq field was extracted.
13232
13233Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13234function was out of date and required a rewrite.
13235
13236Code and Data Size: Current core subsystem library sizes are shown
13237below.  These are the code and data sizes for the acpica.lib
13238produced by the Microsoft Visual C++ 6.0 compiler, and these
13239values do not include any ACPI driver or OSPM code.  The debug
13240version of the code includes the debug output trace mechanism and
13241has a larger code and data size.  Note that these values will vary
13242depending on the efficiency of the compiler and the compiler
13243options used during generation.
13244
13245  Previous Release
13246    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13247    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13248  Current Release:
13249    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13250    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13251
13252
132532) Linux
13254
13255PCI IRQ routing fixes (Dominik Brodowski)
13256
13257
132583) iASL Compiler Version X2042:
13259
13260Implemented an additional compile-time error check for a field
13261unit whose size + minimum access width would cause a run-time
13262access beyond the end-of-region.  Previously, only the field size
13263itself was checked.
13264
13265The Core subsystem and iASL compiler now share a common parse
13266object in preparation for compile-time evaluation of the type
132673/4/5 ASL operators.
13268
13269
13270----------------------------------------
13271Summary of changes for this release: 03_29_02
13272
132731) ACPI CA Core Subsystem Version 20020329:
13274
13275Implemented support for late evaluation of TermArg operands to
13276Buffer and Package objects.  This allows complex expressions to be
13277used in the declarations of these object types.
13278
13279Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
132801.0, if the field was larger than 32 bits, it was returned as a
13281buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13282the field is returned as a buffer only if the field is larger than
1328364 bits.  The TableRevision is now considered when making this
13284conversion to avoid incompatibility with existing ASL code.
13285
13286Implemented logical addressing for AcpiOsGetRootPointer.  This
13287allows an RSDP with either a logical or physical address.  With
13288this support, the host OS can now override all ACPI tables with
13289one logical RSDP.  Includes implementation of  "typed" pointer
13290support to allow a common data type for both physical and logical
13291pointers internally.  This required a change to the
13292AcpiOsGetRootPointer interface.
13293
13294Implemented the use of ACPI 2.0 Generic Address Structures for all
13295GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13296mapped I/O for these ACPI features.
13297
13298Initialization now ignores not only non-required tables (All
13299tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13300not validate the table headers of unrecognized tables.
13301
13302Fixed a problem where a notify handler could only be
13303installed/removed on an object of type Device.  All "notify"
13304
13305objects are now supported -- Devices, Processor, Power, and
13306Thermal.
13307
13308Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13309critical information is returned when this debug level is enabled.
13310
13311Code and Data Size: Current core subsystem library sizes are shown
13312below.  These are the code and data sizes for the acpica.lib
13313produced by the Microsoft Visual C++ 6.0 compiler, and these
13314values do not include any ACPI driver or OSPM code.  The debug
13315version of the code includes the debug output trace mechanism and
13316has a larger code and data size.  Note that these values will vary
13317depending on the efficiency of the compiler and the compiler
13318options used during generation.
13319
13320  Previous Release
13321    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13322    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13323  Current Release:
13324    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13325    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13326
13327
133282) Linux:
13329
13330The processor driver (acpi_processor.c) now fully supports ACPI
133312.0-based processor performance control (e.g. Intel(R)
13332SpeedStep(TM) technology) Note that older laptops that only have
13333the Intel "applet" interface are not supported through this.  The
13334'limit' and 'performance' interface (/proc) are fully functional.
13335[Note that basic policy for controlling performance state
13336transitions will be included in the next version of ospmd.]  The
13337idle handler was modified to more aggressively use C2, and PIIX4
13338errata handling underwent a complete overhaul (big thanks to
13339Dominik Brodowski).
13340
13341Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13342based devices in the ACPI namespace are now dynamically bound
13343(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13344This allows, among other things, ACPI to resolve bus numbers for
13345subordinate PCI bridges.
13346
13347Enhanced PCI IRQ routing to get the proper bus number for _PRT
13348entries defined underneath PCI bridges.
13349
13350Added IBM 600E to bad bios list due to invalid _ADR value for
13351PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13352
13353In the process of adding full MADT support (e.g. IOAPIC) for IA32
13354(acpi.c, mpparse.c) -- stay tuned.
13355
13356Added back visual differentiation between fixed-feature and
13357control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13358button/power/PWRF) to simplify button identification.
13359
13360We no longer use -Wno-unused when compiling debug. Please ignore
13361any "_THIS_MODULE defined but not used" messages.
13362
13363Can now shut down the system using "magic sysrq" key.
13364
13365
133663) iASL Compiler version 2041:
13367
13368Fixed a problem where conversion errors for hex/octal/decimal
13369constants were not reported.
13370
13371Implemented a fix for the General Register template Address field.
13372This field was 8 bits when it should be 64.
13373
13374Fixed a problem where errors/warnings were no longer being emitted
13375within the listing output file.
13376
13377Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
13378exactly 4 characters, alphanumeric only.
13379
13380
13381
13382
13383----------------------------------------
13384Summary of changes for this release: 03_08_02
13385
13386
133871) ACPI CA Core Subsystem Version 20020308:
13388
13389Fixed a problem with AML Fields where the use of the "AccessAny"
13390keyword could cause an interpreter error due to attempting to read
13391or write beyond the end of the parent Operation Region.
13392
13393Fixed a problem in the SystemMemory Operation Region handler where
13394an attempt was made to map memory beyond the end of the region.
13395This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
13396errors on some Linux systems.
13397
13398Fixed a problem where the interpreter/namespace "search to root"
13399algorithm was not functioning for some object types.  Relaxed the
13400internal restriction on the search to allow upsearches for all
13401external object types as well as most internal types.
13402
13403
134042) Linux:
13405
13406We now use safe_halt() macro versus individual calls to sti | hlt.
13407
13408Writing to the processor limit interface should now work. "echo 1"
13409will increase the limit, 2 will decrease, and 0 will reset to the
13410
13411default.
13412
13413
134143) ASL compiler:
13415
13416Fixed segfault on Linux version.
13417
13418
13419----------------------------------------
13420Summary of changes for this release: 02_25_02
13421
134221) ACPI CA Core Subsystem:
13423
13424
13425Fixed a problem where the GPE bit masks were not initialized
13426properly, causing erratic GPE behavior.
13427
13428Implemented limited support for multiple calling conventions.  The
13429code can be generated with either the VPL (variable parameter
13430list, or "C") convention, or the FPL (fixed parameter list, or
13431"Pascal") convention.  The core subsystem is about 3.4% smaller
13432when generated with FPL.
13433
13434
134352) Linux
13436
13437Re-add some /proc/acpi/event functionality that was lost during
13438the rewrite
13439
13440Resolved issue with /proc events for fixed-feature buttons showing
13441up as the system device.
13442
13443Fixed checks on C2/C3 latencies to be inclusive of maximum values.
13444
13445Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
13446
13447Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
13448
13449Fixed limit interface & usage to fix bugs with passive cooling
13450hysterisis.
13451
13452Restructured PRT support.
13453
13454
13455----------------------------------------
13456Summary of changes for this label: 02_14_02
13457
13458
134591) ACPI CA Core Subsystem:
13460
13461Implemented support in AcpiLoadTable to allow loading of FACS and
13462FADT tables.
13463
13464Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
13465been removed.  All 64-bit platforms should be migrated to the ACPI
134662.0 tables.  The actbl71.h header has been removed from the source
13467tree.
13468
13469All C macros defined within the subsystem have been prefixed with
13470"ACPI_" to avoid collision with other system include files.
13471
13472Removed the return value for the two AcpiOsPrint interfaces, since
13473it is never used and causes lint warnings for ignoring the return
13474value.
13475
13476Added error checking to all internal mutex acquire and release
13477calls.  Although a failure from one of these interfaces is
13478probably a fatal system error, these checks will cause the
13479immediate abort of the currently executing method or interface.
13480
13481Fixed a problem where the AcpiSetCurrentResources interface could
13482fault.  This was a side effect of the deployment of the new memory
13483allocation model.
13484
13485Fixed a couple of problems with the Global Lock support introduced
13486in the last major build.  The "common" (1.0/2.0) internal FACS was
13487being overwritten with the FACS signature and clobbering the
13488Global Lock pointer.  Also, the actual firmware FACS was being
13489unmapped after construction of the "common" FACS, preventing
13490access to the actual Global Lock field within it.  The "common"
13491internal FACS is no longer installed as an actual ACPI table; it
13492is used simply as a global.
13493
13494Code and Data Size: Current core subsystem library sizes are shown
13495below.  These are the code and data sizes for the acpica.lib
13496produced by the Microsoft Visual C++ 6.0 compiler, and these
13497values do not include any ACPI driver or OSPM code.  The debug
13498version of the code includes the debug output trace mechanism and
13499has a larger code and data size.  Note that these values will vary
13500depending on the efficiency of the compiler and the compiler
13501options used during generation.
13502
13503  Previous Release (02_07_01)
13504    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13505    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13506  Current Release:
13507    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13508    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13509
13510
135112) Linux
13512
13513Updated Linux-specific code for core macro and OSL interface
13514changes described above.
13515
13516Improved /proc/acpi/event. It now can be opened only once and has
13517proper poll functionality.
13518
13519Fixed and restructured power management (acpi_bus).
13520
13521Only create /proc "view by type" when devices of that class exist.
13522
13523Fixed "charging/discharging" bug (and others) in acpi_battery.
13524
13525Improved thermal zone code.
13526
13527
135283) ASL Compiler, version X2039:
13529
13530
13531Implemented the new compiler restriction on ASL String hex/octal
13532escapes to non-null, ASCII values.  An error results if an invalid
13533value is used.  (This will require an ACPI 2.0 specification
13534change.)
13535
13536AML object labels that are output to the optional C and ASM source
13537are now prefixed with both the ACPI table signature and table ID
13538to help guarantee uniqueness within a large BIOS project.
13539
13540
13541----------------------------------------
13542Summary of changes for this label: 02_01_02
13543
135441) ACPI CA Core Subsystem:
13545
13546ACPI 2.0 support is complete in the entire Core Subsystem and the
13547ASL compiler. All new ACPI 2.0 operators are implemented and all
13548other changes for ACPI 2.0 support are complete.  With
13549simultaneous code and data optimizations throughout the subsystem,
13550ACPI 2.0 support has been implemented with almost no additional
13551cost in terms of code and data size.
13552
13553Implemented a new mechanism for allocation of return buffers.  If
13554the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
13555be allocated on behalf of the caller.  Consolidated all return
13556buffer validation and allocation to a common procedure.  Return
13557buffers will be allocated via the primary OSL allocation interface
13558since it appears that a separate pool is not needed by most users.
13559If a separate pool is required for these buffers, the caller can
13560still use the original mechanism and pre-allocate the buffer(s).
13561
13562Implemented support for string operands within the DerefOf
13563operator.
13564
13565Restructured the Hardware and Event managers to be table driven,
13566simplifying the source code and reducing the amount of generated
13567code.
13568
13569Split the common read/write low-level ACPI register bitfield
13570procedure into a separate read and write, simplifying the code
13571considerably.
13572
13573Obsoleted the AcpiOsCallocate OSL interface.  This interface was
13574used only a handful of times and didn't have enough critical mass
13575for a separate interface.  Replaced with a common calloc procedure
13576in the core.
13577
13578Fixed a reported problem with the GPE number mapping mechanism
13579that allows GPE1 numbers to be non-contiguous with GPE0.
13580Reorganized the GPE information and shrunk a large array that was
13581originally large enough to hold info for all possible GPEs (256)
13582to simply large enough to hold all GPEs up to the largest GPE
13583number on the machine.
13584
13585Fixed a reported problem with resource structure alignment on 64-
13586bit platforms.
13587
13588Changed the AcpiEnableEvent and AcpiDisableEvent external
13589interfaces to not require any flags for the common case of
13590enabling/disabling a GPE.
13591
13592Implemented support to allow a "Notify" on a Processor object.
13593
13594Most TBDs in comments within the source code have been resolved
13595and eliminated.
13596
13597
13598Fixed a problem in the interpreter where a standalone parent
13599prefix (^) was not handled correctly in the interpreter and
13600debugger.
13601
13602Removed obsolete and unnecessary GPE save/restore code.
13603
13604Implemented Field support in the ASL Load operator.  This allows a
13605table to be loaded from a named field, in addition to loading a
13606table directly from an Operation Region.
13607
13608Implemented timeout and handle support in the external Global Lock
13609interfaces.
13610
13611Fixed a problem in the AcpiDump utility where pathnames were no
13612longer being generated correctly during the dump of named objects.
13613
13614Modified the AML debugger to give a full display of if/while
13615predicates instead of just one AML opcode at a time.  (The
13616predicate can have several nested ASL statements.)  The old method
13617was confusing during single stepping.
13618
13619Code and Data Size: Current core subsystem library sizes are shown
13620below. These are the code and data sizes for the acpica.lib
13621produced by the Microsoft Visual C++ 6.0 compiler, and these
13622values do not include any ACPI driver or OSPM code.  The debug
13623version of the code includes the debug output trace mechanism and
13624has a larger code and data size.  Note that these values will vary
13625depending on the efficiency of the compiler and the compiler
13626options used during generation.
13627
13628  Previous Release (12_18_01)
13629     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13630     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13631   Current Release:
13632     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13633     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13634
136352) Linux
13636
13637 Implemented fix for PIIX reverse throttling errata (Processor
13638driver)
13639
13640Added new Limit interface (Processor and Thermal drivers)
13641
13642New thermal policy (Thermal driver)
13643
13644Many updates to /proc
13645
13646Battery "low" event support (Battery driver)
13647
13648Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
13649
13650IA32 - IA64 initialization unification, no longer experimental
13651
13652Menuconfig options redesigned
13653
136543) ASL Compiler, version X2037:
13655
13656Implemented several new output features to simplify integration of
13657AML code into  firmware: 1) Output the AML in C source code with
13658labels for each named ASL object.  The    original ASL source code
13659is interleaved as C comments. 2) Output the AML in ASM source code
13660with labels and interleaved ASL    source. 3) Output the AML in
13661raw hex table form, in either C or ASM.
13662
13663Implemented support for optional string parameters to the
13664LoadTable operator.
13665
13666Completed support for embedded escape sequences within string
13667literals.  The compiler now supports all single character escapes
13668as well as the Octal and Hex escapes.  Note: the insertion of a
13669null byte into a string literal (via the hex/octal escape) causes
13670the string to be immediately terminated.  A warning is issued.
13671
13672Fixed a problem where incorrect AML was generated for the case
13673where an ASL namepath consists of a single parent prefix (
13674
13675) with no trailing name segments.
13676
13677The compiler has been successfully generated with a 64-bit C
13678compiler.
13679
13680
13681
13682
13683----------------------------------------
13684Summary of changes for this label: 12_18_01
13685
136861) Linux
13687
13688Enhanced blacklist with reason and severity fields. Any table's
13689signature may now be used to identify a blacklisted system.
13690
13691Call _PIC control method to inform the firmware which interrupt
13692model the OS is using. Turn on any disabled link devices.
13693
13694Cleaned up busmgr /proc error handling (Andreas Dilger)
13695
13696 2) ACPI CA Core Subsystem:
13697
13698Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
13699while loop)
13700
13701Completed implementation of the ACPI 2.0 "Continue",
13702"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
13703operators.  All new ACPI 2.0 operators are now implemented in both
13704the ASL compiler and the AML interpreter.  The only remaining ACPI
137052.0 task is support for the String data type in the DerefOf
13706operator.  Fixed a problem with AcquireMutex where the status code
13707was lost if the caller had to actually wait for the mutex.
13708
13709Increased the maximum ASL Field size from 64K bits to 4G bits.
13710
13711Completed implementation of the external Global Lock interfaces --
13712AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
13713Handler parameters were added.
13714
13715Completed another pass at removing warnings and issues when
13716compiling with 64-bit compilers.  The code now compiles cleanly
13717with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
13718add and subtract (diff) macros have changed considerably.
13719
13720
13721Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1372264-bit platforms, 32-bits on all others.  This type is used
13723wherever memory allocation and/or the C sizeof() operator is used,
13724and affects the OSL memory allocation interfaces AcpiOsAllocate
13725and AcpiOsCallocate.
13726
13727Implemented sticky user breakpoints in the AML debugger.
13728
13729Code and Data Size: Current core subsystem library sizes are shown
13730below. These are the code and data sizes for the acpica.lib
13731produced by the Microsoft Visual C++ 6.0 compiler, and these
13732values do not include any ACPI driver or OSPM code.  The debug
13733version of the code includes the debug output trace mechanism and
13734has a larger code and data size. Note that these values will vary
13735depending on the efficiency of the compiler and the compiler
13736options used during generation.
13737
13738  Previous Release (12_05_01)
13739     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13740     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13741   Current Release:
13742     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13743     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13744
13745 3) ASL Compiler, version X2034:
13746
13747Now checks for (and generates an error if detected) the use of a
13748Break or Continue statement without an enclosing While statement.
13749
13750
13751Successfully generated the compiler with the Intel 64-bit C
13752compiler.
13753
13754 ----------------------------------------
13755Summary of changes for this label: 12_05_01
13756
13757 1) ACPI CA Core Subsystem:
13758
13759The ACPI 2.0 CopyObject operator is fully implemented.  This
13760operator creates a new copy of an object (and is also used to
13761bypass the "implicit conversion" mechanism of the Store operator.)
13762
13763The ACPI 2.0 semantics for the SizeOf operator are fully
13764implemented.  The change is that performing a SizeOf on a
13765reference object causes an automatic dereference of the object to
13766tha actual value before the size is evaluated. This behavior was
13767undefined in ACPI 1.0.
13768
13769The ACPI 2.0 semantics for the Extended IRQ resource descriptor
13770have been implemented.  The interrupt polarity and mode are now
13771independently set.
13772
13773Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
13774appearing in Package objects were not properly converted to
13775integers when the internal Package was converted to an external
13776object (via the AcpiEvaluateObject interface.)
13777
13778Fixed a problem with the namespace object deletion mechanism for
13779objects created by control methods.  There were two parts to this
13780problem: 1) Objects created during the initialization phase method
13781parse were not being deleted, and 2) The object owner ID mechanism
13782to track objects was broken.
13783
13784Fixed a problem where the use of the ASL Scope operator within a
13785control method would result in an invalid opcode exception.
13786
13787Fixed a problem introduced in the previous label where the buffer
13788length required for the _PRT structure was not being returned
13789correctly.
13790
13791Code and Data Size: Current core subsystem library sizes are shown
13792below. These are the code and data sizes for the acpica.lib
13793produced by the Microsoft Visual C++ 6.0 compiler, and these
13794values do not include any ACPI driver or OSPM code.  The debug
13795version of the code includes the debug output trace mechanism and
13796has a larger code and data size.  Note that these values will vary
13797depending on the efficiency of the compiler and the compiler
13798options used during generation.
13799
13800  Previous Release (11_20_01)
13801     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13802     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13803
13804  Current Release:
13805     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13806     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13807
13808 2) Linux:
13809
13810Updated all files to apply cleanly against 2.4.16.
13811
13812Added basic PCI Interrupt Routing Table (PRT) support for IA32
13813(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
13814version supports both static and dyanmic PRT entries, but dynamic
13815entries are treated as if they were static (not yet
13816reconfigurable).  Architecture- specific code to use this data is
13817absent on IA32 but should be available shortly.
13818
13819Changed the initialization sequence to start the ACPI interpreter
13820(acpi_init) prior to initialization of the PCI driver (pci_init)
13821in init/main.c.  This ordering is required to support PRT and
13822facilitate other (future) enhancement.  A side effect is that the
13823ACPI bus driver and certain device drivers can no longer be loaded
13824as modules.
13825
13826Modified the 'make menuconfig' options to allow PCI Interrupt
13827Routing support to be included without the ACPI Bus and other
13828device drivers.
13829
13830 3) ASL Compiler, version X2033:
13831
13832Fixed some issues with the use of the new CopyObject and
13833DataTableRegion operators.  Both are fully functional.
13834
13835 ----------------------------------------
13836Summary of changes for this label: 11_20_01
13837
13838 20 November 2001.  Summary of changes for this release.
13839
13840 1) ACPI CA Core Subsystem:
13841
13842Updated Index support to match ACPI 2.0 semantics.  Storing a
13843Integer, String, or Buffer to an Index of a Buffer will store only
13844the least-significant byte of the source to the Indexed buffer
13845byte.  Multiple writes are not performed.
13846
13847Fixed a problem where the access type used in an AccessAs ASL
13848operator was not recorded correctly into the field object.
13849
13850Fixed a problem where ASL Event objects were created in a
13851signalled state. Events are now created in an unsignalled state.
13852
13853The internal object cache is now purged after table loading and
13854initialization to reduce the use of dynamic kernel memory -- on
13855the assumption that object use is greatest during the parse phase
13856of the entire table (versus the run-time use of individual control
13857methods.)
13858
13859ACPI 2.0 variable-length packages are now fully operational.
13860
13861Code and Data Size: Code and Data optimizations have permitted new
13862feature development with an actual reduction in the library size.
13863Current core subsystem library sizes are shown below.  These are
13864the code and data sizes for the acpica.lib produced by the
13865Microsoft Visual C++ 6.0 compiler, and these values do not include
13866any ACPI driver or OSPM code.  The debug version of the code
13867includes the debug output trace mechanism and has a larger code
13868and data size.  Note that these values will vary depending on the
13869efficiency of the compiler and the compiler options used during
13870generation.
13871
13872  Previous Release (11_09_01):
13873     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
13874     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
13875
13876  Current Release:
13877     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
13878     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
13879
13880 2) Linux:
13881
13882Enhanced the ACPI boot-time initialization code to allow the use
13883of Local APIC tables for processor enumeration on IA-32, and to
13884pave the way for a fully MPS-free boot (on SMP systems) in the
13885near future.  This functionality replaces
13886arch/i386/kernel/acpitables.c, which was introduced in an earlier
138872.4.15-preX release.  To enable this feature you must add
13888"acpi_boot=on" to the kernel command line -- see the help entry
13889for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
13890the works...
13891
13892Restructured the configuration options to allow boot-time table
13893parsing support without inclusion of the ACPI Interpreter (and
13894other) code.
13895
13896NOTE: This release does not include fixes for the reported events,
13897power-down, and thermal passive cooling issues (coming soon).
13898
13899 3) ASL Compiler:
13900
13901Added additional typechecking for Fields within restricted access
13902Operation Regions.  All fields within EC and CMOS regions must be
13903declared with ByteAcc. All fields withing SMBus regions must be
13904declared with the BufferAcc access type.
13905
13906Fixed a problem where the listing file output of control methods
13907no longer interleaved the actual AML code with the ASL source
13908code.
13909
13910
13911
13912
13913----------------------------------------
13914Summary of changes for this label: 11_09_01
13915
139161) ACPI CA Core Subsystem:
13917
13918Implemented ACPI 2.0-defined support for writes to fields with a
13919Buffer, String, or Integer source operand that is smaller than the
13920target field. In these cases, the source operand is zero-extended
13921to fill the target field.
13922
13923Fixed a problem where a Field starting bit offset (within the
13924parent operation region) was calculated incorrectly if the
13925
13926alignment of the field differed from the access width.  This
13927affected CreateWordField, CreateDwordField, CreateQwordField, and
13928possibly other fields that use the "AccessAny" keyword.
13929
13930Fixed a problem introduced in the 11_02_01 release where indirect
13931stores through method arguments did not operate correctly.
13932
139332) Linux:
13934
13935Implemented boot-time ACPI table parsing support
13936(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
13937facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
13938legacy BIOS interfaces (e.g. MPS) for the configuration of system
13939processors, memory, and interrupts during setup_arch().  Note that
13940this patch does not include the required architecture-specific
13941changes required to apply this information -- subsequent patches
13942will be posted for both IA32 and IA64 to achieve this.
13943
13944Added low-level sleep support for IA32 platforms, courtesy of Pat
13945Mochel. This allows IA32 systems to transition to/from various
13946sleeping states (e.g. S1, S3), although the lack of a centralized
13947driver model and power-manageable drivers will prevent its
13948(successful) use on most systems.
13949
13950Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
13951submenu, unified IA32 and IA64 options, added new "Boot using ACPI
13952tables" option, etc.
13953
13954Increased the default timeout for the EC driver from 1ms to 10ms
13955(1000 cycles of 10us) to try to address AE_TIME errors during EC
13956transactions.
13957
13958 ----------------------------------------
13959Summary of changes for this label: 11_02_01
13960
139611) ACPI CA Core Subsystem:
13962
13963ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
13964(QWordAcc keyword). All ACPI 2.0 64-bit support is now
13965implemented.
13966
13967OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
13968changes to support ACPI 2.0 Qword field access.  Read/Write
13969PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
13970accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
13971the value parameter for the address space handler interface is now
13972an ACPI_INTEGER.  OSL implementations of these interfaces must now
13973handle the case where the Width parameter is 64.
13974
13975Index Fields: Fixed a problem where unaligned bit assembly and
13976disassembly for IndexFields was not supported correctly.
13977
13978Index and Bank Fields:  Nested Index and Bank Fields are now
13979supported. During field access, a check is performed to ensure
13980that the value written to an Index or Bank register is not out of
13981the range of the register.  The Index (or Bank) register is
13982written before each access to the field data. Future support will
13983include allowing individual IndexFields to be wider than the
13984DataRegister width.
13985
13986Fields: Fixed a problem where the AML interpreter was incorrectly
13987attempting to write beyond the end of a Field/OpRegion.  This was
13988a boundary case that occurred when a DWORD field was written to a
13989BYTE access OpRegion, forcing multiple writes and causing the
13990interpreter to write one datum too many.
13991
13992Fields: Fixed a problem with Field/OpRegion access where the
13993starting bit address of a field was incorrectly calculated if the
13994current access type was wider than a byte (WordAcc, DwordAcc, or
13995QwordAcc).
13996
13997Fields: Fixed a problem where forward references to individual
13998FieldUnits (individual Field names within a Field definition) were
13999not resolved during the AML table load.
14000
14001Fields: Fixed a problem where forward references from a Field
14002definition to the parent Operation Region definition were not
14003resolved during the AML table load.
14004
14005Fields: Duplicate FieldUnit names within a scope are now detected
14006during AML table load.
14007
14008Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
14009returned an incorrect name for the root node.
14010
14011Code and Data Size: Code and Data optimizations have permitted new
14012feature development with an actual reduction in the library size.
14013Current core subsystem library sizes are shown below.  These are
14014the code and data sizes for the acpica.lib produced by the
14015Microsoft Visual C++ 6.0 compiler, and these values do not include
14016any ACPI driver or OSPM code.  The debug version of the code
14017includes the debug output trace mechanism and has a larger code
14018and data size.  Note that these values will vary depending on the
14019efficiency of the compiler and the compiler options used during
14020generation.
14021
14022  Previous Release (10_18_01):
14023     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14024     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14025
14026  Current Release:
14027     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14028     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14029
14030 2) Linux:
14031
14032Improved /proc processor output (Pavel Machek) Re-added
14033MODULE_LICENSE("GPL") to all modules.
14034
14035 3) ASL Compiler version X2030:
14036
14037Duplicate FieldUnit names within a scope are now detected and
14038flagged as errors.
14039
14040 4) Documentation:
14041
14042Programmer Reference updated to reflect OSL and address space
14043handler interface changes described above.
14044
14045----------------------------------------
14046Summary of changes for this label: 10_18_01
14047
14048ACPI CA Core Subsystem:
14049
14050Fixed a problem with the internal object reference count mechanism
14051that occasionally caused premature object deletion. This resolves
14052all of the outstanding problem reports where an object is deleted
14053in the middle of an interpreter evaluation.  Although this problem
14054only showed up in rather obscure cases, the solution to the
14055problem involved an adjustment of all reference counts involving
14056objects attached to namespace nodes.
14057
14058Fixed a problem with Field support in the interpreter where
14059writing to an aligned field whose length is an exact multiple (2
14060or greater) of the field access granularity would cause an attempt
14061to write beyond the end of the field.
14062
14063The top level AML opcode execution functions within the
14064interpreter have been renamed with a more meaningful and
14065consistent naming convention.  The modules exmonad.c and
14066exdyadic.c were eliminated.  New modules are exoparg1.c,
14067exoparg2.c, exoparg3.c, and exoparg6.c.
14068
14069Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
14070
14071Fixed a problem where the AML debugger was causing some internal
14072objects to not be deleted during subsystem termination.
14073
14074Fixed a problem with the external AcpiEvaluateObject interface
14075where the subsystem would fault if the named object to be
14076evaluated refered to a constant such as Zero, Ones, etc.
14077
14078Fixed a problem with IndexFields and BankFields where the
14079subsystem would fault if the index, data, or bank registers were
14080not defined in the same scope as the field itself.
14081
14082Added printf format string checking for compilers that support
14083this feature.  Corrected more than 50 instances of issues with
14084format specifiers within invocations of ACPI_DEBUG_PRINT
14085throughout the core subsystem code.
14086
14087The ASL "Revision" operator now returns the ACPI support level
14088implemented in the core - the value "2" since the ACPI 2.0 support
14089is more than 50% implemented.
14090
14091Enhanced the output of the AML debugger "dump namespace" command
14092to output in a more human-readable form.
14093
14094Current core subsystem library code sizes are shown below.  These
14095
14096are the code and data sizes for the acpica.lib produced by the
14097Microsoft Visual C++ 6.0 compiler, and these values do not include
14098any ACPI driver or OSPM code.  The debug version of the code
14099includes the full debug trace mechanism -- leading to a much
14100
14101larger code and data size.  Note that these values will vary
14102depending on the efficiency of the compiler and the compiler
14103options used during generation.
14104
14105     Previous Label (09_20_01):
14106     Non-Debug Version:    65K Code,     5K Data,     70K Total
14107     Debug Version:       138K Code,    58K Data,    196K Total
14108
14109     This Label:
14110
14111     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14112     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14113
14114Linux:
14115
14116Implemented a "Bad BIOS Blacklist" to track machines that have
14117known ASL/AML problems.
14118
14119Enhanced the /proc interface for the thermal zone driver and added
14120support for _HOT (the critical suspend trip point).  The 'info'
14121file now includes threshold/policy information, and allows setting
14122of _SCP (cooling preference) and _TZP (polling frequency) values
14123to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
14124frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
14125preference to the passive/quiet mode (if supported by the ASL).
14126
14127Implemented a workaround for a gcc bug that resuted in an OOPs
14128when loading the control method battery driver.
14129
14130 ----------------------------------------
14131Summary of changes for this label: 09_20_01
14132
14133 ACPI CA Core Subsystem:
14134
14135The AcpiEnableEvent and AcpiDisableEvent interfaces have been
14136modified to allow individual GPE levels to be flagged as wake-
14137enabled (i.e., these GPEs are to remain enabled when the platform
14138sleeps.)
14139
14140The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
14141support wake-enabled GPEs.  This means that upon entering the
14142sleep state, all GPEs that are not wake-enabled are disabled.
14143When leaving the sleep state, these GPEs are reenabled.
14144
14145A local double-precision divide/modulo module has been added to
14146enhance portability to OS kernels where a 64-bit math library is
14147not available.  The new module is "utmath.c".
14148
14149Several optimizations have been made to reduce the use of CPU
14150stack.  Originally over 2K, the maximum stack usage is now below
141512K at 1860  bytes (1.82k)
14152
14153Fixed a problem with the AcpiGetFirmwareTable interface where the
14154root table pointer was not mapped into a logical address properly.
14155
14156Fixed a problem where a NULL pointer was being dereferenced in the
14157interpreter code for the ASL Notify operator.
14158
14159Fixed a problem where the use of the ASL Revision operator
14160returned an error. This operator now returns the current version
14161of the ACPI CA core subsystem.
14162
14163Fixed a problem where objects passed as control method parameters
14164to AcpiEvaluateObject were always deleted at method termination.
14165However, these objects may end up being stored into the namespace
14166by the called method.  The object reference count mechanism was
14167applied to these objects instead of a force delete.
14168
14169Fixed a problem where static strings or buffers (contained in the
14170AML code) that are declared as package elements within the ASL
14171code could cause a fault because the interpreter would attempt to
14172delete them.  These objects are now marked with the "static
14173object" flag to prevent any attempt to delete them.
14174
14175Implemented an interpreter optimization to use operands directly
14176from the state object instead of extracting the operands to local
14177variables.  This reduces stack use and code size, and improves
14178performance.
14179
14180The module exxface.c was eliminated as it was an unnecessary extra
14181layer of code.
14182
14183Current core subsystem library code sizes are shown below.  These
14184are the code and data sizes for the acpica.lib produced by the
14185Microsoft Visual C++ 6.0 compiler, and these values do not include
14186any ACPI driver or OSPM code.  The debug version of the code
14187includes the full debug trace mechanism -- leading to a much
14188larger code and data size.  Note that these values will vary
14189depending on the efficiency of the compiler and the compiler
14190options used during generation.
14191
14192  Non-Debug Version:  65K Code,   5K Data,   70K Total
14193(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
14194Total  (Previously 195K)
14195
14196Linux:
14197
14198Support for ACPI 2.0 64-bit integers has been added.   All ACPI
14199Integer objects are now 64 bits wide
14200
14201All Acpi data types and structures are now in lower case.  Only
14202Acpi macros are upper case for differentiation.
14203
14204 Documentation:
14205
14206Changes to the external interfaces as described above.
14207
14208 ----------------------------------------
14209Summary of changes for this label: 08_31_01
14210
14211 ACPI CA Core Subsystem:
14212
14213A bug with interpreter implementation of the ASL Divide operator
14214was found and fixed.  The implicit function return value (not the
14215explicit store operands) was returning the remainder instead of
14216the quotient.  This was a longstanding bug and it fixes several
14217known outstanding issues on various platforms.
14218
14219The ACPI_DEBUG_PRINT and function trace entry/exit macros have
14220been further optimized for size.  There are 700 invocations of the
14221DEBUG_PRINT macro alone, so each optimization reduces the size of
14222the debug version of the subsystem significantly.
14223
14224A stack trace mechanism has been implemented.  The maximum stack
14225usage is about 2K on 32-bit platforms.  The debugger command "stat
14226stack" will display the current maximum stack usage.
14227
14228All public symbols and global variables within the subsystem are
14229now prefixed with the string "Acpi".  This keeps all of the
14230symbols grouped together in a kernel map, and avoids conflicts
14231with other kernel subsystems.
14232
14233Most of the internal fixed lookup tables have been moved into the
14234code segment via the const operator.
14235
14236Several enhancements have been made to the interpreter to both
14237reduce the code size and improve performance.
14238
14239Current core subsystem library code sizes are shown below.  These
14240are the code and data sizes for the acpica.lib produced by the
14241Microsoft Visual C++ 6.0 compiler, and these values do not include
14242any ACPI driver or OSPM code.  The debug version of the code
14243includes the full debug trace mechanism which contains over 700
14244invocations of the DEBUG_PRINT macro, 500 function entry macro
14245invocations, and over 900 function exit macro invocations --
14246leading to a much larger code and data size.  Note that these
14247values will vary depending on the efficiency of the compiler and
14248the compiler options used during generation.
14249
14250        Non-Debug Version:  64K Code,   5K Data,   69K Total
14251Debug Version:     137K Code,  58K Data,  195K Total
14252
14253 Linux:
14254
14255Implemented wbinvd() macro, pending a kernel-wide definition.
14256
14257Fixed /proc/acpi/event to handle poll() and short reads.
14258
14259 ASL Compiler, version X2026:
14260
14261Fixed a problem introduced in the previous label where the AML
14262
14263code emitted for package objects produced packages with zero
14264length.
14265
14266 ----------------------------------------
14267Summary of changes for this label: 08_16_01
14268
14269ACPI CA Core Subsystem:
14270
14271The following ACPI 2.0 ASL operators have been implemented in the
14272AML interpreter (These are already supported by the Intel ASL
14273compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14274ToBuffer.  Support for 64-bit AML constants is implemented in the
14275AML parser, debugger, and disassembler.
14276
14277The internal memory tracking mechanism (leak detection code) has
14278been upgraded to reduce the memory overhead (a separate tracking
14279block is no longer allocated for each memory allocation), and now
14280supports all of the internal object caches.
14281
14282The data structures and code for the internal object caches have
14283been coelesced and optimized so that there is a single cache and
14284memory list data structure and a single group of functions that
14285implement generic cache management.  This has reduced the code
14286size in both the debug and release versions of the subsystem.
14287
14288The DEBUG_PRINT macro(s) have been optimized for size and replaced
14289by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14290different, because it generates a single call to an internal
14291function.  This results in a savings of about 90 bytes per
14292invocation, resulting in an overall code and data savings of about
1429316% in the debug version of the subsystem.
14294
14295 Linux:
14296
14297Fixed C3 disk corruption problems and re-enabled C3 on supporting
14298machines.
14299
14300Integrated low-level sleep code by Patrick Mochel.
14301
14302Further tweaked source code Linuxization.
14303
14304Other minor fixes.
14305
14306 ASL Compiler:
14307
14308Support for ACPI 2.0 variable length packages is fixed/completed.
14309
14310Fixed a problem where the optional length parameter for the ACPI
143112.0 ToString operator.
14312
14313Fixed multiple extraneous error messages when a syntax error is
14314detected within the declaration line of a control method.
14315
14316 ----------------------------------------
14317Summary of changes for this label: 07_17_01
14318
14319ACPI CA Core Subsystem:
14320
14321Added a new interface named AcpiGetFirmwareTable to obtain any
14322ACPI table via the ACPI signature.  The interface can be called at
14323any time during kernel initialization, even before the kernel
14324virtual memory manager is initialized and paging is enabled.  This
14325allows kernel subsystems to obtain ACPI tables very early, even
14326before the ACPI CA subsystem is initialized.
14327
14328Fixed a problem where Fields defined with the AnyAcc attribute
14329could be resolved to the incorrect address under the following
14330conditions: 1) the field width is larger than 8 bits and 2) the
14331parent operation region is not defined on a DWORD boundary.
14332
14333Fixed a problem where the interpreter is not being locked during
14334namespace initialization (during execution of the _INI control
14335methods), causing an error when an attempt is made to release it
14336later.
14337
14338ACPI 2.0 support in the AML Interpreter has begun and will be
14339ongoing throughout the rest of this year.  In this label, The Mod
14340operator is implemented.
14341
14342Added a new data type to contain full PCI addresses named
14343ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14344and Function values.
14345
14346 Linux:
14347
14348Enhanced the Linux version of the source code to change most
14349capitalized ACPI type names to lowercase. For example, all
14350instances of ACPI_STATUS are changed to acpi_status.  This will
14351result in a large diff, but the change is strictly cosmetic and
14352aligns the CA code closer to the Linux coding standard.
14353
14354OSL Interfaces:
14355
14356The interfaces to the PCI configuration space have been changed to
14357add the PCI Segment number and to split the single 32-bit combined
14358DeviceFunction field into two 16-bit fields.  This was
14359accomplished by moving the four values that define an address in
14360PCI configuration space (segment, bus, device, and function) to
14361the new ACPI_PCI_ID structure.
14362
14363The changes to the PCI configuration space interfaces led to a
14364reexamination of the complete set of address space access
14365interfaces for PCI, I/O, and Memory.  The previously existing 18
14366interfaces have proven difficult to maintain (any small change
14367must be propagated across at least 6 interfaces) and do not easily
14368allow for future expansion to 64 bits if necessary.  Also, on some
14369systems, it would not be appropriate to demultiplex the access
14370width (8, 16, 32,or 64) before calling the OSL if the
14371corresponding native OS interfaces contain a similar access width
14372parameter.  For these reasons, the 18 address space interfaces
14373have been replaced by these 6 new ones:
14374
14375AcpiOsReadPciConfiguration
14376AcpiOsWritePciConfiguration
14377AcpiOsReadMemory
14378AcpiOsWriteMemory
14379AcpiOsReadPort
14380AcpiOsWritePort
14381
14382Added a new interface named AcpiOsGetRootPointer to allow the OSL
14383to perform the platform and/or OS-specific actions necessary to
14384obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
14385interface will simply call down to the CA core to perform the low-
14386memory search for the table.  On IA-64, the RSDP is obtained from
14387EFI.  Migrating this interface to the OSL allows the CA core to
14388
14389remain OS and platform independent.
14390
14391Added a new interface named AcpiOsSignal to provide a generic
14392"function code and pointer" interface for various miscellaneous
14393signals and notifications that must be made to the host OS.   The
14394first such signals are intended to support the ASL Fatal and
14395Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
14396interface has been obsoleted.
14397
14398The definition of the AcpiFormatException interface has been
14399changed to simplify its use.  The caller no longer must supply a
14400buffer to the call; A pointer to a const string is now returned
14401directly.  This allows the call to be easily used in printf
14402statements, etc. since the caller does not have to manage a local
14403buffer.
14404
14405
14406 ASL Compiler, Version X2025:
14407
14408The ACPI 2.0 Switch/Case/Default operators have been implemented
14409and are fully functional.  They will work with all ACPI 1.0
14410interpreters, since the operators are simply translated to If/Else
14411pairs.
14412
14413The ACPI 2.0 ElseIf operator is implemented and will also work
14414with 1.0 interpreters, for the same reason.
14415
14416Implemented support for ACPI 2.0 variable-length packages.  These
14417packages have a separate opcode, and their size is determined by
14418the interpreter at run-time.
14419
14420Documentation The ACPI CA Programmer Reference has been updated to
14421reflect the new interfaces and changes to existing interfaces.
14422
14423 ------------------------------------------
14424Summary of changes for this label: 06_15_01
14425
14426 ACPI CA Core Subsystem:
14427
14428Fixed a problem where a DWORD-accessed field within a Buffer
14429object would get its byte address inadvertently rounded down to
14430the nearest DWORD.  Buffers are always Byte-accessible.
14431
14432 ASL Compiler, version X2024:
14433
14434Fixed a problem where the Switch() operator would either fault or
14435hang the compiler.  Note however, that the AML code for this ACPI
144362.0 operator is not yet implemented.
14437
14438Compiler uses the new AcpiOsGetTimer interface to obtain compile
14439timings.
14440
14441Implementation of the CreateField operator automatically converts
14442a reference to a named field within a resource descriptor from a
14443byte offset to a bit offset if required.
14444
14445Added some missing named fields from the resource descriptor
14446support. These are the names that are automatically created by the
14447compiler to reference fields within a descriptor.  They are only
14448valid at compile time and are not passed through to the AML
14449interpreter.
14450
14451Resource descriptor named fields are now typed as Integers and
14452subject to compile-time typechecking when used in expressions.
14453
14454 ------------------------------------------
14455Summary of changes for this label: 05_18_01
14456
14457 ACPI CA Core Subsystem:
14458
14459Fixed a couple of problems in the Field support code where bits
14460from adjacent fields could be returned along with the proper field
14461bits. Restructured the field support code to improve performance,
14462readability and maintainability.
14463
14464New DEBUG_PRINTP macro automatically inserts the procedure name
14465into the output, saving hundreds of copies of procedure name
14466strings within the source, shrinking the memory footprint of the
14467debug version of the core subsystem.
14468
14469 Source Code Structure:
14470
14471The source code directory tree was restructured to reflect the
14472current organization of the component architecture.  Some files
14473and directories have been moved and/or renamed.
14474
14475 Linux:
14476
14477Fixed leaking kacpidpc processes.
14478
14479Fixed queueing event data even when /proc/acpi/event is not
14480opened.
14481
14482 ASL Compiler, version X2020:
14483
14484Memory allocation performance enhancement - over 24X compile time
14485improvement on large ASL files.  Parse nodes and namestring
14486buffers are now allocated from a large internal compiler buffer.
14487
14488The temporary .SRC file is deleted unless the "-s" option is
14489specified
14490
14491The "-d" debug output option now sends all output to the .DBG file
14492instead of the console.
14493
14494"External" second parameter is now optional
14495
14496"ElseIf" syntax now properly allows the predicate
14497
14498Last operand to "Load" now recognized as a Target operand
14499
14500Debug object can now be used anywhere as a normal object.
14501
14502ResourceTemplate now returns an object of type BUFFER
14503
14504EISAID now returns an object of type INTEGER
14505
14506"Index" now works with a STRING operand
14507
14508"LoadTable" now accepts optional parameters
14509
14510"ToString" length parameter is now optional
14511
14512"Interrupt (ResourceType," parse error fixed.
14513
14514"Register" with a user-defined region space parse error fixed
14515
14516Escaped backslash at the end of a string ("\\") scan/parse error
14517fixed
14518
14519"Revision" is now an object of type INTEGER.
14520
14521
14522
14523------------------------------------------
14524Summary of changes for this label: 05_02_01
14525
14526Linux:
14527
14528/proc/acpi/event now blocks properly.
14529
14530Removed /proc/sys/acpi. You can still dump your DSDT from
14531/proc/acpi/dsdt.
14532
14533 ACPI CA Core Subsystem:
14534
14535Fixed a problem introduced in the previous label where some of the
14536"small" resource descriptor types were not recognized.
14537
14538Improved error messages for the case where an ASL Field is outside
14539the range of the parent operation region.
14540
14541 ASL Compiler, version X2018:
14542
14543
14544Added error detection for ASL Fields that extend beyond the length
14545of the parent operation region (only if the length of the region
14546is known at compile time.)  This includes fields that have a
14547minimum access width that is smaller than the parent region, and
14548individual field units that are partially or entirely beyond the
14549extent of the parent.
14550
14551
14552
14553------------------------------------------
14554Summary of changes for this label: 04_27_01
14555
14556 ACPI CA Core Subsystem:
14557
14558Fixed a problem where the namespace mutex could be released at the
14559wrong time during execution of AcpiRemoveAddressSpaceHandler.
14560
14561Added optional thread ID output for debug traces, to simplify
14562debugging of multiple threads.  Added context switch notification
14563when the debug code realizes that a different thread is now
14564executing ACPI code.
14565
14566Some additional external data types have been prefixed with the
14567string "ACPI_" for consistency.  This may effect existing code.
14568The data types affected are the external callback typedefs - e.g.,
14569
14570WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
14571
14572 Linux:
14573
14574Fixed an issue with the OSL semaphore implementation where a
14575thread was waking up with an error from receiving a SIGCHLD
14576signal.
14577
14578Linux version of ACPI CA now uses the system C library for string
14579manipulation routines instead of a local implementation.
14580
14581Cleaned up comments and removed TBDs.
14582
14583 ASL Compiler, version X2017:
14584
14585Enhanced error detection and reporting for all file I/O
14586operations.
14587
14588 Documentation:
14589
14590Programmer Reference updated to version 1.06.
14591
14592
14593
14594------------------------------------------
14595Summary of changes for this label: 04_13_01
14596
14597 ACPI CA Core Subsystem:
14598
14599Restructured support for BufferFields and RegionFields.
14600BankFields support is now fully operational.  All known 32-bit
14601limitations on field sizes have been removed.  Both BufferFields
14602and (Operation) RegionFields are now supported by the same field
14603management code.
14604
14605Resource support now supports QWORD address and IO resources. The
1460616/32/64 bit address structures and the Extended IRQ structure
14607have been changed to properly handle Source Resource strings.
14608
14609A ThreadId of -1 is now used to indicate a "mutex not acquired"
14610condition internally and must never be returned by AcpiOsThreadId.
14611This reserved value was changed from 0 since Unix systems allow a
14612thread ID of 0.
14613
14614Linux:
14615
14616Driver code reorganized to enhance portability
14617
14618Added a kernel configuration option to control ACPI_DEBUG
14619
14620Fixed the EC driver to honor _GLK.
14621
14622ASL Compiler, version X2016:
14623
14624Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
14625address space was set to 0, not 0x7f as it should be.
14626
14627 ------------------------------------------
14628Summary of changes for this label: 03_13_01
14629
14630 ACPI CA Core Subsystem:
14631
14632During ACPI initialization, the _SB_._INI method is now run if
14633present.
14634
14635Notify handler fix - notifies are deferred until the parent method
14636completes execution.  This fixes the "mutex already acquired"
14637issue seen occasionally.
14638
14639Part of the "implicit conversion" rules in ACPI 2.0 have been
14640found to cause compatibility problems with existing ASL/AML.  The
14641convert "result-to-target-type" implementation has been removed
14642for stores to method Args and Locals.  Source operand conversion
14643is still fully implemented.  Possible changes to ACPI 2.0
14644specification pending.
14645
14646Fix to AcpiRsCalculatePciRoutingTableLength to return correct
14647length.
14648
14649Fix for compiler warnings for 64-bit compiles.
14650
14651 Linux:
14652
14653/proc output aligned for easier parsing.
14654
14655Release-version compile problem fixed.
14656
14657New kernel configuration options documented in Configure.help.
14658
14659IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
14660context" message.
14661
14662 OSPM:
14663
14664Power resource driver integrated with bus manager.
14665
14666Fixed kernel fault during active cooling for thermal zones.
14667
14668Source Code:
14669
14670The source code tree has been restructured.
14671
14672
14673
14674------------------------------------------
14675Summary of changes for this label: 03_02_01
14676
14677 Linux OS Services Layer (OSL):
14678
14679Major revision of all Linux-specific code.
14680
14681Modularized all ACPI-specific drivers.
14682
14683Added new thermal zone and power resource drivers.
14684
14685Revamped /proc interface (new functionality is under /proc/acpi).
14686
14687New kernel configuration options.
14688
14689 Linux known issues:
14690
14691New kernel configuration options not documented in Configure.help
14692yet.
14693
14694
14695Module dependencies not currently implemented. If used, they
14696should be loaded in this order: busmgr, power, ec, system,
14697processor, battery, ac_adapter, button, thermal.
14698
14699Modules will not load if CONFIG_MODVERSION is set.
14700
14701IBM 600E - entering S5 may reboot instead of shutting down.
14702
14703IBM 600E - Sleep button may generate "Invalid <NULL> context"
14704message.
14705
14706Some systems may fail with "execution mutex already acquired"
14707message.
14708
14709 ACPI CA Core Subsystem:
14710
14711Added a new OSL Interface, AcpiOsGetThreadId.  This was required
14712for the  deadlock detection code. Defined to return a non-zero, 32-
14713bit thread ID for the currently executing thread.  May be a non-
14714zero constant integer on single-thread systems.
14715
14716Implemented deadlock detection for internal subsystem mutexes.  We
14717may add conditional compilation for this code (debug only) later.
14718
14719ASL/AML Mutex object semantics are now fully supported.  This
14720includes multiple acquires/releases by owner and support for the
14721
14722Mutex SyncLevel parameter.
14723
14724A new "Force Release" mechanism automatically frees all ASL
14725Mutexes that have been acquired but not released when a thread
14726exits the interpreter.  This forces conformance to the ACPI spec
14727("All mutexes must be released when an invocation exits") and
14728prevents deadlocked ASL threads.  This mechanism can be expanded
14729(later) to monitor other resource acquisitions if OEM ASL code
14730continues to misbehave (which it will).
14731
14732Several new ACPI exception codes have been added for the Mutex
14733support.
14734
14735Recursive method calls are now allowed and supported (the ACPI
14736spec does in fact allow recursive method calls.)  The number of
14737recursive calls is subject to the restrictions imposed by the
14738SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
14739parameter.
14740
14741Implemented support for the SyncLevel parameter for control
14742methods (ACPI 2.0 feature)
14743
14744Fixed a deadlock problem when multiple threads attempted to use
14745the interpreter.
14746
14747Fixed a problem where the string length of a String package
14748element was not always set in a package returned from
14749AcpiEvaluateObject.
14750
14751Fixed a problem where the length of a String package element was
14752not always included in the length of the overall package returned
14753from AcpiEvaluateObject.
14754
14755Added external interfaces (Acpi*) to the ACPI debug memory
14756manager.  This manager keeps a list of all outstanding
14757allocations, and can therefore detect memory leaks and attempts to
14758free memory blocks more than once. Useful for code such as the
14759power manager, etc.  May not be appropriate for device drivers.
14760Performance with the debug code enabled is slow.
14761
14762The ACPI Global Lock is now an optional hardware element.
14763
14764 ASL Compiler Version X2015:
14765
14766Integrated changes to allow the compiler to be generated on
14767multiple platforms.
14768
14769Linux makefile added to generate the compiler on Linux
14770
14771 Source Code:
14772
14773All platform-specific headers have been moved to their own
14774subdirectory, Include/Platform.
14775
14776New source file added, Interpreter/ammutex.c
14777
14778New header file, Include/acstruct.h
14779
14780 Documentation:
14781
14782The programmer reference has been updated for the following new
14783interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
14784
14785 ------------------------------------------
14786Summary of changes for this label: 02_08_01
14787
14788Core ACPI CA Subsystem: Fixed a problem where an error was
14789incorrectly returned if the return resource buffer was larger than
14790the actual data (in the resource interfaces).
14791
14792References to named objects within packages are resolved to the
14793
14794full pathname string before packages are returned directly (via
14795the AcpiEvaluateObject interface) or indirectly via the resource
14796interfaces.
14797
14798Linux OS Services Layer (OSL):
14799
14800Improved /proc battery interface.
14801
14802
14803Added C-state debugging output and other miscellaneous fixes.
14804
14805ASL Compiler Version X2014:
14806
14807All defined method arguments can now be used as local variables,
14808including the ones that are not actually passed in as parameters.
14809The compiler tracks initialization of the arguments and issues an
14810exception if they are used without prior assignment (just like
14811locals).
14812
14813The -o option now specifies a filename prefix that is used for all
14814output files, including the AML output file.  Otherwise, the
14815default behavior is as follows:  1) the AML goes to the file
14816specified in the DSDT.  2) all other output files use the input
14817source filename as the base.
14818
14819 ------------------------------------------
14820Summary of changes for this label: 01_25_01
14821
14822Core ACPI CA Subsystem: Restructured the implementation of object
14823store support within the  interpreter.  This includes support for
14824the Store operator as well  as any ASL operators that include a
14825target operand.
14826
14827Partially implemented support for Implicit Result-to-Target
14828conversion. This is when a result object is converted on the fly
14829to the type of  an existing target object.  Completion of this
14830support is pending  further analysis of the ACPI specification
14831concerning this matter.
14832
14833CPU-specific code has been removed from the subsystem (hardware
14834directory).
14835
14836New Power Management Timer functions added
14837
14838Linux OS Services Layer (OSL): Moved system state transition code
14839to the core, fixed it, and modified  Linux OSL accordingly.
14840
14841Fixed C2 and C3 latency calculations.
14842
14843
14844We no longer use the compilation date for the version message on
14845initialization, but retrieve the version from AcpiGetSystemInfo().
14846
14847Incorporated for fix Sony VAIO machines.
14848
14849Documentation:  The Programmer Reference has been updated and
14850reformatted.
14851
14852
14853ASL Compiler:  Version X2013: Fixed a problem where the line
14854numbering and error reporting could get out  of sync in the
14855presence of multiple include files.
14856
14857 ------------------------------------------
14858Summary of changes for this label: 01_15_01
14859
14860Core ACPI CA Subsystem:
14861
14862Implemented support for type conversions in the execution of the
14863ASL  Concatenate operator (The second operand is converted to
14864match the type  of the first operand before concatenation.)
14865
14866Support for implicit source operand conversion is partially
14867implemented.   The ASL source operand types Integer, Buffer, and
14868String are freely  interchangeable for most ASL operators and are
14869converted by the interpreter  on the fly as required.  Implicit
14870Target operand conversion (where the  result is converted to the
14871target type before storing) is not yet implemented.
14872
14873Support for 32-bit and 64-bit BCD integers is implemented.
14874
14875Problem fixed where a field read on an aligned field could cause a
14876read  past the end of the field.
14877
14878New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
14879does not return a value, but the caller expects one.  (The ASL
14880compiler flags this as a warning.)
14881
14882ASL Compiler:
14883
14884Version X2011:
148851. Static typechecking of all operands is implemented. This
14886prevents the use of invalid objects (such as using a Package where
14887an Integer is required) at compile time instead of at interpreter
14888run-time.
148892. The ASL source line is printed with ALL errors and warnings.
148903. Bug fix for source EOF without final linefeed.
148914. Debug option is split into a parse trace and a namespace trace.
148925. Namespace output option (-n) includes initial values for
14893integers and strings.
148946. Parse-only option added for quick syntax checking.
148957. Compiler checks for duplicate ACPI name declarations
14896
14897Version X2012:
148981. Relaxed typechecking to allow interchangeability between
14899strings, integers, and buffers.  These types are now converted by
14900the interpreter at runtime.
149012. Compiler reports time taken by each internal subsystem in the
14902debug         output file.
14903
14904
14905 ------------------------------------------
14906Summary of changes for this label: 12_14_00
14907
14908ASL Compiler:
14909
14910This is the first official release of the compiler. Since the
14911compiler requires elements of the Core Subsystem, this label
14912synchronizes everything.
14913
14914------------------------------------------
14915Summary of changes for this label: 12_08_00
14916
14917
14918Fixed a problem where named references within the ASL definition
14919of both OperationRegions and CreateXXXFields did not work
14920properly.  The symptom was an AE_AML_OPERAND_TYPE during
14921initialization of the region/field. This is similar (but not
14922related internally) to the problem that was fixed in the last
14923label.
14924
14925Implemented both 32-bit and 64-bit support for the BCD ASL
14926functions ToBCD and FromBCD.
14927
14928Updated all legal headers to include "2000" in the copyright
14929years.
14930
14931 ------------------------------------------
14932Summary of changes for this label: 12_01_00
14933
14934Fixed a problem where method invocations within the ASL definition
14935of both OperationRegions and CreateXXXFields did not work
14936properly.  The symptom was an AE_AML_OPERAND_TYPE during
14937initialization of the region/field:
14938
14939  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
14940[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
14941(0x3005)
14942
14943Fixed a problem where operators with more than one nested
14944subexpression would fail.  The symptoms were varied, by mostly
14945AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
14946problem that has gone unnoticed until now.
14947
14948  Subtract (Add (1,2), Multiply (3,4))
14949
14950Fixed a problem where AcpiGetHandle didn't quite get fixed in the
14951previous build (The prefix part of a relative path was handled
14952incorrectly).
14953
14954Fixed a problem where Operation Region initialization failed if
14955the operation region name was a "namepath" instead of a simple
14956"nameseg". Symptom was an AE_NO_OPERAND error.
14957
14958Fixed a problem where an assignment to a local variable via the
14959indirect RefOf mechanism only worked for the first such
14960assignment.  Subsequent assignments were ignored.
14961
14962 ------------------------------------------
14963Summary of changes for this label: 11_15_00
14964
14965ACPI 2.0 table support with backwards support for ACPI 1.0 and the
149660.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
14967the AML  interpreter does NOT have support for the new 2.0 ASL
14968grammar terms at this time.
14969
14970All ACPI hardware access is via the GAS structures in the ACPI 2.0
14971FADT.
14972
14973All physical memory addresses across all platforms are now 64 bits
14974wide. Logical address width remains dependent on the platform
14975(i.e., "void *").
14976
14977AcpiOsMapMemory interface changed to a 64-bit physical address.
14978
14979The AML interpreter integer size is now 64 bits, as per the ACPI
149802.0 specification.
14981
14982For backwards compatibility with ACPI 1.0, ACPI tables with a
14983revision number less than 2 use 32-bit integers only.
14984
14985Fixed a problem where the evaluation of OpRegion operands did not
14986always resolve them to numbers properly.
14987
14988------------------------------------------
14989Summary of changes for this label: 10_20_00
14990
14991Fix for CBN_._STA issue.  This fix will allow correct access to
14992CBN_ OpRegions when the _STA returns 0x8.
14993
14994Support to convert ACPI constants (Ones, Zeros, One) to actual
14995values before a package object is returned
14996
14997Fix for method call as predicate to if/while construct causing
14998incorrect if/while behavior
14999
15000Fix for Else block package lengths sometimes calculated wrong (if
15001block > 63 bytes)
15002
15003Fix for Processor object length field, was always zero
15004
15005Table load abort if FACP sanity check fails
15006
15007Fix for problem with Scope(name) if name already exists
15008
15009Warning emitted if a named object referenced cannot be found
15010(resolved) during method execution.
15011
15012
15013
15014
15015
15016------------------------------------------
15017Summary of changes for this label: 9_29_00
15018
15019New table initialization interfaces: AcpiInitializeSubsystem no
15020longer has any parameters AcpiFindRootPointer - Find the RSDP (if
15021necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
15022>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
15023AcpiLoadTables
15024
15025Note: These interface changes require changes to all existing OSDs
15026
15027The PCI_Config default address space handler is always installed
15028at the root namespace object.
15029
15030-------------------------------------------
15031Summary of changes for this label: 09_15_00
15032
15033The new initialization architecture is implemented.  New
15034interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
15035AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
15036
15037(Namespace is automatically loaded when a table is loaded)
15038
15039The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1504052 bytes to 32 bytes.  There is usually one of these for every
15041namespace object, so the memory savings is significant.
15042
15043Implemented just-in-time evaluation of the CreateField operators.
15044
15045Bug fixes for IA-64 support have been integrated.
15046
15047Additional code review comments have been implemented
15048
15049The so-called "third pass parse" has been replaced by a final walk
15050through the namespace to initialize all operation regions (address
15051spaces) and fields that have not yet been initialized during the
15052execution of the various _INI and REG methods.
15053
15054New file - namespace/nsinit.c
15055
15056-------------------------------------------
15057Summary of changes for this label: 09_01_00
15058
15059Namespace manager data structures have been reworked to change the
15060primary  object from a table to a single object.  This has
15061resulted in dynamic memory  savings of 3X within the namespace and
150622X overall in the ACPI CA subsystem.
15063
15064Fixed problem where the call to AcpiEvFindPciRootBuses was
15065inadvertently left  commented out.
15066
15067Reduced the warning count when generating the source with the GCC
15068compiler.
15069
15070Revision numbers added to each module header showing the
15071SourceSafe version of the file.  Please refer to this version
15072number when giving us feedback or comments on individual modules.
15073
15074The main object types within the subsystem have been renamed to
15075clarify their  purpose:
15076
15077ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
15078ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
15079ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
15080
15081NOTE: no changes to the initialization sequence are included in
15082this label.
15083
15084-------------------------------------------
15085Summary of changes for this label: 08_23_00
15086
15087Fixed problem where TerminateControlMethod was being called
15088multiple times per  method
15089
15090Fixed debugger problem where single stepping caused a semaphore to
15091be  oversignalled
15092
15093Improved performance through additional parse object caching -
15094added  ACPI_EXTENDED_OP type
15095
15096-------------------------------------------
15097Summary of changes for this label: 08_10_00
15098
15099Parser/Interpreter integration:  Eliminated the creation of
15100complete parse trees  for ACPI tables and control methods.
15101Instead, parse subtrees are created and  then deleted as soon as
15102they are processed (Either entered into the namespace or  executed
15103by the interpreter).  This reduces the use of dynamic kernel
15104memory  significantly. (about 10X)
15105
15106Exception codes broken into classes and renumbered.  Be sure to
15107recompile all  code that includes acexcep.h.  Hopefully we won't
15108have to renumber the codes  again now that they are split into
15109classes (environment, programmer, AML code,  ACPI table, and
15110internal).
15111
15112Fixed some additional alignment issues in the Resource Manager
15113subcomponent
15114
15115Implemented semaphore tracking in the AcpiExec utility, and fixed
15116several places  where mutexes/semaphores were being unlocked
15117without a corresponding lock  operation.  There are no known
15118semaphore or mutex "leaks" at this time.
15119
15120Fixed the case where an ASL Return operator is used to return an
15121unnamed  package.
15122
15123-------------------------------------------
15124Summary of changes for this label: 07_28_00
15125
15126Fixed a problem with the way addresses were calculated in
15127AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
15128manifested itself when a Field was  created with WordAccess or
15129DwordAccess, but the field unit defined within the  Field was less
15130
15131than a Word or Dword.
15132
15133Fixed a problem in AmlDumpOperands() module's loop to pull
15134operands off of the  operand stack to display information. The
15135problem manifested itself as a TLB  error on 64-bit systems when
15136accessing an operand stack with two or more  operands.
15137
15138Fixed a problem with the PCI configuration space handlers where
15139context was  getting confused between accesses. This required a
15140change to the generic address  space handler and address space
15141setup definitions. Handlers now get both a  global handler context
15142(this is the one passed in by the user when executing
15143AcpiInstallAddressSpaceHandler() and a specific region context
15144that is unique to  each region (For example, the _ADR, _SEG and
15145_BBN values associated with a  specific region). The generic
15146function definitions have changed to the  following:
15147
15148typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15149UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15150*HandlerContext, // This used to be void *Context void
15151*RegionContext); // This is an additional parameter
15152
15153typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15154RegionHandle, UINT32 Function, void *HandlerContext,  void
15155**RegionContext); // This used to be **ReturnContext
15156
15157-------------------------------------------
15158Summary of changes for this label: 07_21_00
15159
15160Major file consolidation and rename.  All files within the
15161interpreter have been  renamed as well as most header files.  This
15162was done to prevent collisions with  existing files in the host
15163OSs -- filenames such as "config.h" and "global.h"  seem to be
15164quite common.  The VC project files have been updated.  All
15165makefiles  will require modification.
15166
15167The parser/interpreter integration continues in Phase 5 with the
15168implementation  of a complete 2-pass parse (the AML is parsed
15169twice) for each table;  This  avoids the construction of a huge
15170parse tree and therefore reduces the amount of  dynamic memory
15171required by the subsystem.  Greater use of the parse object cache
15172means that performance is unaffected.
15173
15174Many comments from the two code reviews have been rolled in.
15175
15176The 64-bit alignment support is complete.
15177
15178-------------------------------------------
15179Summary of changes for this label: 06_30_00
15180
15181With a nod and a tip of the hat to the technology of yesteryear,
15182we've added  support in the source code for 80 column output
15183devices.  The code is now mostly  constrained to 80 columns or
15184less to support environments and editors that 1)  cannot display
15185or print more than 80 characters on a single line, and 2) cannot
15186disable line wrapping.
15187
15188A major restructuring of the namespace data structure has been
15189completed.  The  result is 1) cleaner and more
15190understandable/maintainable code, and 2) a  significant reduction
15191in the dynamic memory requirement for each named ACPI  object
15192(almost half).
15193
15194-------------------------------------------
15195Summary of changes for this label: 06_23_00
15196
15197Linux support has been added.  In order to obtain approval to get
15198the ACPI CA  subsystem into the Linux kernel, we've had to make
15199quite a few changes to the  base subsystem that will affect all
15200users (all the changes are generic and OS- independent).  The
15201effects of these global changes have been somewhat far  reaching.
15202Files have been merged and/or renamed and interfaces have been
15203renamed.   The major changes are described below.
15204
15205Osd* interfaces renamed to AcpiOs* to eliminate namespace
15206pollution/confusion  within our target kernels.  All OSD
15207interfaces must be modified to match the new  naming convention.
15208
15209Files merged across the subsystem.  A number of the smaller source
15210and header  files have been merged to reduce the file count and
15211increase the density of the  existing files.  There are too many
15212to list here.  In general, makefiles that  call out individual
15213files will require rebuilding.
15214
15215Interpreter files renamed.  All interpreter files now have the
15216prefix am*  instead of ie* and is*.
15217
15218Header files renamed:  The acapi.h file is now acpixf.h.  The
15219acpiosd.h file is  now acpiosxf.h.  We are removing references to
15220the acronym "API" since it is  somewhat windowsy. The new name is
15221"external interface" or xface or xf in the  filenames.j
15222
15223
15224All manifest constants have been forced to upper case (some were
15225mixed case.)   Also, the string "ACPI_" has been prepended to many
15226(not all) of the constants,  typedefs, and structs.
15227
15228The globals "DebugLevel" and "DebugLayer" have been renamed
15229"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15230
15231All other globals within the subsystem are now prefixed with
15232"AcpiGbl_" Internal procedures within the subsystem are now
15233prefixed with "Acpi" (with only  a few exceptions).  The original
15234two-letter abbreviation for the subcomponent  remains after "Acpi"
15235- for example, CmCallocate became AcpiCmCallocate.
15236
15237Added a source code translation/conversion utility.  Used to
15238generate the Linux  source code, it can be modified to generate
15239other types of source as well. Can  also be used to cleanup
15240existing source by removing extraneous spaces and blank  lines.
15241Found in tools/acpisrc/*
15242
15243OsdUnMapMemory was renamed to OsdUnmapMemory and then
15244AcpiOsUnmapMemory.  (UnMap  became Unmap).
15245
15246A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15247When set to  one, this indicates that the caller wants to use the
15248
15249semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15250both types.  However, implementers of this  call may want to use
15251different OS primitives depending on the type of semaphore
15252requested.  For example, some operating systems provide separate
15253
15254"mutex" and  "semaphore" interfaces - where the mutex interface is
15255much faster because it  doesn't have all the overhead of a full
15256semaphore implementation.
15257
15258Fixed a deadlock problem where a method that accesses the PCI
15259address space can  block forever if it is the first access to the
15260space.
15261
15262-------------------------------------------
15263Summary of changes for this label: 06_02_00
15264
15265Support for environments that cannot handle unaligned data
15266accesses (e.g.  firmware and OS environments devoid of alignment
15267handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15268been added (via configurable macros) in  these three areas: -
15269Transfer of data from the raw AML byte stream is done via byte
15270moves instead of    word/dword/qword moves. - External objects are
15271aligned within the user buffer, including package   elements (sub-
15272objects). - Conversion of name strings to UINT32 Acpi Names is now
15273done byte-wise.
15274
15275The Store operator was modified to mimic Microsoft's
15276implementation when storing  to a Buffer Field.
15277
15278Added a check of the BM_STS bit before entering C3.
15279
15280The methods subdirectory has been obsoleted and removed.  A new
15281file, cmeval.c  subsumes the functionality.
15282
15283A 16-bit (DOS) version of AcpiExec has been developed.  The
15284makefile is under  the acpiexec directory.
15285