xref: /titanic_52/usr/src/uts/intel/io/acpica/changes.txt (revision f6e214c7418f43af38bd8c3a557e3d0a1d311cfa)
1----------------------------------------
212 November 2009. Summary of changes for version 20091112:
3
4This release is available at www.acpica.org/downloads
5
61) ACPI CA Core Subsystem:
7
8Implemented a post-order callback to AcpiWalkNamespace. The existing
9interface only has a pre-order callback. This change adds an additional
10parameter for a post-order callback which will be more useful for bus scans.
11ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
12
13Modified the behavior of the operation region memory mapping cache for
14SystemMemory. Ensure that the memory mappings created for operation regions
15do not cross 4K page boundaries. Crossing a page boundary while mapping
16regions can cause kernel warnings on some hosts if the pages have different
17attributes. Such regions are probably BIOS bugs, and this is the workaround.
18Linux BZ 14445. Lin Ming.
19
20Implemented an automatic repair for predefined methods that must return
21sorted lists. This change will repair (by sorting) packages returned by _ALR,
22_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted
23and do not contain NULL package elements. Adds one new file,
24namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
25
26Fixed a possible fault during predefined name validation if a return Package
27object contains NULL elements. Also adds a warning if a NULL element is
28followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may
29include repair or removal of all such NULL elements where possible.
30
31Implemented additional module-level executable AML code support. This change
32will execute module-level code that is not at the root of the namespace
33(under a Device object, etc.) at table load time. Module-level executable AML
34code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
35
36Implemented a new internal function to create Integer objects. This function
37simplifies miscellaneous object creation code. ACPICA BZ 823.
38
39Reduced the severity of predefined repair messages, Warning to Info. Since
40the object was successfully repaired, a warning is too severe. Reduced to an
41info message for now. These messages may eventually be changed to debug-only.
42ACPICA BZ 812.
43
44Example Code and Data Size: These are the sizes for the OS-independent
45acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
46debug version of the code includes the debug output trace mechanism and has a
47much larger code and data size.
48
49  Previous Release:
50    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
51    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
52  Current Release:
53    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
54    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
55
562) iASL Compiler/Disassembler and Tools:
57
58iASL: Implemented Switch() with While(1) so that Break works correctly. This
59change correctly implements the Switch operator with a surrounding While(1)
60so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
61
62iASL: Added a message if a package initializer list is shorter than package
63length. Adds a new remark for a Package() declaration if an initializer list
64exists, but is shorter than the declared length of the package. Although
65technically legal, this is probably a coding error and it is seen in the
66field. ACPICA BZ 815. Lin Ming, Bob Moore.
67
68iASL: Fixed a problem where the compiler could fault after the maximum number
69of errors was reached (200).
70
71acpixtract: Fixed a possible warning for pointer cast if the compiler warning
72level set very high.
73
74----------------------------------------
7513 October 2009. Summary of changes for version 20091013:
76
77This release is available at www.acpica.org/downloads
78
791) ACPI CA Core Subsystem:
80
81Fixed a problem where an Operation Region _REG method could be executed more
82than once. If a custom address space handler is installed by the host before
83the "initialize operation regions" phase of the ACPICA initialization, any
84_REG methods for that address space could be executed twice. This change
85fixes the problem. ACPICA BZ 427. Lin Ming.
86
87Fixed a possible memory leak for the Scope() ASL operator. When the exact
88invocation of "Scope(\)" is executed (change scope to root), one internal
89operand object was leaked. Lin Ming.
90
91Implemented a run-time repair for the _MAT predefined method. If the _MAT
92return value is defined as a Field object in the AML, and the field
93size is less than or equal to the default width of an integer (32 or 64),_MAT
94can incorrectly return an Integer instead of a Buffer. ACPICA now
95automatically repairs this problem. ACPICA BZ 810.
96
97Implemented a run-time repair for the _BIF and _BIX predefined methods. The
98"OEM Information" field is often incorrectly returned as an Integer with
99value zero if the field is not supported by the platform. This is due to an
100ambiguity in the ACPI specification. The field should always be a string.
101ACPICA now automatically repairs this problem by returning a NULL string
102within the returned Package. ACPICA BZ 807.
103
104Example Code and Data Size: These are the sizes for the OS-independent
105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
106debug version of the code includes the debug output trace mechanism and has a
107much larger code and data size.
108
109  Previous Release:
110    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
111    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
112  Current Release:
113    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
114    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
115
1162) iASL Compiler/Disassembler and Tools:
117
118Disassembler: Fixed a problem where references to external symbols that
119contained one or more parent-prefixes (carats) were not handled correctly,
120possibly causing a fault. ACPICA BZ 806. Lin Ming.
121
122Disassembler: Restructured the code so that all functions that handle
123external symbols are in a single module. One new file is added,
124common/dmextern.c.
125
126AML Debugger: Added a max count argument for the Batch command (which
127executes multiple predefined methods within the namespace.)
128
129iASL: Updated the compiler documentation (User Reference.) Available at
130http://www.acpica.org/documentation/. ACPICA BZ 750.
131
132AcpiXtract: Updated for Lint and other formatting changes. Close all open
133files.
134
135----------------------------------------
13603 September 2009. Summary of changes for version 20090903:
137
1381) ACPI CA Core Subsystem:
139
140For Windows Vista compatibility, added the automatic execution of an _INI
141method located at the namespace root (\_INI). This method is executed at
142table load time. This support is in addition to the automatic execution of
143\_SB._INI. Lin Ming.
144
145Fixed a possible memory leak in the interpreter for AML package objects if
146the package initializer list is longer than the defined size of the package.
147This apparently can only happen if the BIOS changes the package size on the
148fly (seen in a _PSS object), as ASL compilers do not allow this. The
149interpreter will truncate the package to the defined size (and issue an error
150message), but previously could leave the extra objects undeleted if they were
151pre-created during the argument processing (such is the case if the package
152consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
153
154Fixed a problem seen when a Buffer or String is stored to itself via ASL.
155This has been reported in the field. Previously, ACPICA would zero out the
156buffer/string. Now, the operation is treated as a noop. Provides Windows
157compatibility. ACPICA BZ 803. Lin Ming.
158
159Removed an extraneous error message for ASL constructs of the form
160Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements
161are seen in many BIOSs and are once again treated as NOOPs and no error is
162emitted when they are encountered. ACPICA BZ 785.
163
164Fixed an extraneous warning message if a _DSM reserved method returns a
165Package object. _DSM can return any type of object, so validation on the
166return type cannot be performed. ACPICA BZ 802.
167
168Example Code and Data Size: These are the sizes for the OS-independent
169acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
170debug version of the code includes the debug output trace mechanism and has a
171much larger code and data size.
172
173  Previous Release:
174    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
175    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
176  Current Release:
177    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
178    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
179
1802) iASL Compiler/Disassembler and Tools:
181
182iASL: Fixed a problem with the use of the Alias operator and Resource
183Templates. The correct alias is now constructed and no error is emitted.
184ACPICA BZ 738.
185
186iASL: Implemented the -I option to specify additional search directories for
187include files. Allows multiple additional search paths for include files.
188Directories are searched in the order specified on the command line (after
189the local directory is searched.) ACPICA BZ 800.
190
191iASL: Fixed a problem where the full pathname for include files was not
192emitted for warnings/errors. This caused the IDE support to not work
193properly. ACPICA BZ 765.
194
195iASL: Implemented the -@ option to specify a Windows-style response file
196containing additional command line options. ACPICA BZ 801.
197
198AcpiExec: Added support to load multiple AML files simultaneously (such as a
199DSDT and multiple SSDTs). Also added support for wildcards within the AML
200pathname. These features allow all machine tables to be easily loaded and
201debugged together. ACPICA BZ 804.
202
203Disassembler: Added missing support for disassembly of HEST table Error Bank
204subtables.
205
206----------------------------------------
20730 July 2009. Summary of changes for version 20090730:
208
209The ACPI 4.0 implementation for ACPICA is complete with this release.
210
2111) ACPI CA Core Subsystem:
212
213ACPI 4.0: Added header file support for all new and changed ACPI tables.
214Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new
215for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT,
216EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There
217have been some ACPI 4.0 changes to other existing tables. Split the large
218actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
219
220ACPI 4.0: Implemented predefined name validation for all new names. There are
22131 new names in ACPI 4.0. The predefined validation module was split into two
222files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
223
224Implemented support for so-called "module-level executable code". This is
225executable AML code that exists outside of any control method and is intended
226to be executed at table load time. Although illegal since ACPI 2.0, this type
227of code still exists and is apparently still being created. Blocks of this
228code are now detected and executed as intended. Currently, the code blocks
229must exist under either an If, Else, or While construct; these are the
230typical cases seen in the field. ACPICA BZ 762. Lin Ming.
231
232Implemented an automatic dynamic repair for predefined names that return
233nested Package objects. This applies to predefined names that are defined to
234return a variable-length Package of sub-packages. If the number of sub-
235packages is one, BIOS code is occasionally seen that creates a simple single
236package with no sub-packages. This code attempts to fix the problem by
237wrapping a new package object around the existing package. These methods can
238be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ
239790.
240
241Fixed a regression introduced in 20090625 for the AcpiGetDevices interface.
242The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA
243BZ 793.
244
245Fixed a problem with AcpiReset where the reset would silently fail if the
246register was one of the protected I/O ports. AcpiReset now bypasses the port
247validation mechanism. This may eventually be driven into the AcpiRead/Write
248interfaces.
249
250Fixed a regression related to the recent update of the AcpiRead/Write
251interfaces. A sleep/suspend could fail if the optional PM2 Control register
252does not exist during an attempt to write the Bus Master Arbitration bit.
253(However, some hosts already delete the code that writes this bit, and the
254code may in fact be obsolete at this date.) ACPICA BZ 799.
255
256Fixed a problem where AcpiTerminate could fault if inadvertently called twice
257in succession. ACPICA BZ 795.
258
259Example Code and Data Size: These are the sizes for the OS-independent
260acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
261debug version of the code includes the debug output trace mechanism and has a
262much larger code and data size.
263
264  Previous Release:
265    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
266    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
267  Current Release:
268    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
269    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
270
2712) iASL Compiler/Disassembler and Tools:
272
273ACPI 4.0: Implemented disassembler support for all new ACPI tables and
274changes to existing tables. ACPICA BZ 775.
275
276----------------------------------------
27725 June 2009. Summary of changes for version 20090625:
278
279The ACPI 4.0 Specification was released on June 16 and is available at
280www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
281continue for the next few releases.
282
2831) ACPI CA Core Subsystem:
284
285ACPI 4.0: Implemented interpreter support for the IPMI operation region
286address space. Includes support for bi-directional data buffers and an IPMI
287address space handler (to be installed by an IPMI device driver.) ACPICA BZ
288773. Lin Ming.
289
290ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes
291support in both the header files and the disassembler.
292
293Completed a major update for the AcpiGetObjectInfo external interface.
294Changes include:
295 - Support for variable, unlimited length HID, UID, and CID strings.
296 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
297 - Call the _SxW power methods on behalf of a device object.
298 - Determine if a device is a PCI root bridge.
299 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
300These changes will require an update to all callers of this interface. See
301the updated ACPICA Programmer Reference for details. One new source file has
302been added - utilities/utids.c. ACPICA BZ 368, 780.
303
304Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
305transfers. The Value parameter has been extended from 32 bits to 64 bits in
306order to support new ACPI 4.0 tables. These changes will require an update to
307all callers of these interfaces. See the ACPICA Programmer Reference for
308details. ACPICA BZ 768.
309
310Fixed several problems with AcpiAttachData. The handler was not invoked when
311the host node was deleted. The data sub-object was not automatically deleted
312when the host node was deleted. The interface to the handler had an unused
313parameter, this was removed. ACPICA BZ 778.
314
315Enhanced the function that dumps ACPI table headers. All non-printable
316characters in the string fields are now replaced with '?' (Signature, OemId,
317OemTableId, and CompilerId.) ACPI tables with non-printable characters in
318these fields are occasionally seen in the field. ACPICA BZ 788.
319
320Fixed a problem with predefined method repair code where the code that
321attempts to repair/convert an object of incorrect type is only executed on
322the first time the predefined method is called. The mechanism that disables
323warnings on subsequent calls was interfering with the repair mechanism.
324ACPICA BZ 781.
325
326Fixed a possible memory leak in the predefined validation/repair code when a
327buffer is automatically converted to an expected string object.
328
329Removed obsolete 16-bit files from the distribution and from the current git
330tree head. ACPICA BZ 776.
331
332Example Code and Data Size: These are the sizes for the OS-independent
333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
334debug version of the code includes the debug output trace mechanism and has a
335much larger code and data size.
336
337  Previous Release:
338    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
339    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
340  Current Release:
341    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
342    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
343
3442) iASL Compiler/Disassembler and Tools:
345
346ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
347operation region keyword. ACPICA BZ 771, 772. Lin Ming.
348
349ACPI 4.0: iASL - implemented compile-time validation support for all new
350predefined names and control methods (31 total). ACPICA BZ 769.
351
352----------------------------------------
35321 May 2009. Summary of changes for version 20090521:
354
3551) ACPI CA Core Subsystem:
356
357Disabled the preservation of the SCI enable bit in the PM1 control register.
358The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be
359a "preserved" bit - "OSPM always preserves this bit position", section
3604.7.3.2.1. However, some machines fail if this bit is in fact preserved
361because the bit needs to be explicitly set by the OS as a workaround. No
362machines fail if the bit is not preserved. Therefore, ACPICA no longer
363attempts to preserve this bit.
364
365Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
366incorrectly formed _PRT package could cause a fault. Added validation to
367ensure that each package element is actually a sub-package.
368
369Implemented a new interface to install or override a single control method,
370AcpiInstallMethod. This interface is useful when debugging in order to repair
371an existing method or to install a missing method without having to override
372the entire ACPI table. See the ACPICA Programmer Reference for use and
373examples. Lin Ming, Bob Moore.
374
375Fixed several reference count issues with the DdbHandle object that is
376created from a Load or LoadTable operator. Prevent premature deletion of the
377object. Also, mark the object as invalid once the table has been unloaded.
378This is needed because the handle itself may not be deleted after the table
379unload, depending on whether it has been stored in a named object by the
380caller. Lin Ming.
381
382Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
383mutexes of the same sync level are acquired but then not released in strict
384opposite order, the internally maintained Current Sync Level becomes confused
385and can cause subsequent execution errors. ACPICA BZ 471.
386
387Changed the allowable release order for ASL mutex objects. The ACPI 4.0
388specification has been changed to make the SyncLevel for mutex objects more
389useful. When releasing a mutex, the SyncLevel of the mutex must now be the
390same as the current sync level. This makes more sense than the previous rule
391(SyncLevel less than or equal). This change updates the code to match the
392specification.
393
394Fixed a problem with the local version of the AcpiOsPurgeCache function. The
395(local) cache must be locked during all cache object deletions. Andrew
396Baumann.
397
398Updated the Load operator to use operation region interfaces. This replaces
399direct memory mapping with region access calls. Now, all region accesses go
400through the installed region handler as they should.
401
402Simplified and optimized the NsGetNextNode function. Reduced parameter count
403and reduced code for this frequently used function.
404
405Example Code and Data Size: These are the sizes for the OS-independent
406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
407debug version of the code includes the debug output trace mechanism and has a
408much larger code and data size.
409
410  Previous Release:
411    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
412    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
413  Current Release:
414    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
415    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
416
4172) iASL Compiler/Disassembler and Tools:
418
419Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems
420with sub-table disassembly and handling invalid sub-tables. Attempt recovery
421after an invalid sub-table ID.
422
423----------------------------------------
42422 April 2009. Summary of changes for version 20090422:
425
4261) ACPI CA Core Subsystem:
427
428Fixed a compatibility issue with the recently released I/O port protection
429mechanism. For windows compatibility, 1) On a port protection violation,
430simply ignore the request and do not return an exception (allow the control
431method to continue execution.) 2) If only part of the request overlaps a
432protected port, read/write the individual ports that are not protected. Linux
433BZ 13036. Lin Ming
434
435Enhanced the execution of the ASL/AML BreakPoint operator so that it actually
436breaks into the AML debugger if the debugger is present. This matches the
437ACPI-defined behavior.
438
439Fixed several possible warnings related to the use of the configurable
440ACPI_THREAD_ID. This type can now be configured as either an integer or a
441pointer with no warnings. Also fixes several warnings in printf-like
442statements for the 64-bit build when the type is configured as a pointer.
443ACPICA BZ 766, 767.
444
445Fixed a number of possible warnings when compiling with gcc 4+ (depending on
446warning options.) Examples include printf formats, aliasing, unused globals,
447missing prototypes, missing switch default statements, use of non-ANSI
448library functions, use of non-ANSI constructs. See generate/unix/Makefile for
449a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
450
451Example Code and Data Size: These are the sizes for the OS-independent
452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
453debug version of the code includes the debug output trace mechanism and has a
454much larger code and data size.
455
456  Previous Release:
457    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
458    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
459  Current Release:
460    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
461    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
462
4632) iASL Compiler/Disassembler and Tools:
464
465iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on
466the 64-bit build.
467
468iASL: Fixed a problem where the Unix/Linux versions of the compiler could not
469correctly digest Windows/DOS formatted files (with CR/LF).
470
471iASL: Added a new option for "quiet mode" (-va) that produces only the
472compilation summary, not individual errors and warnings. Useful for large
473batch compilations.
474
475AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex
476timeout that can be used to detect hang conditions during execution of AML
477code (includes both internal semaphores and AML-defined mutexes and events.)
478
479Added new makefiles for the generation of acpica in a generic unix-like
480environment. These makefiles are intended to generate the acpica tools and
481utilities from the original acpica git source tree structure.
482
483Test Suites: Updated and cleaned up the documentation files. Updated the
484copyrights to 2009, affecting all source files. Use the new version of iASL
485with quiet mode. Increased the number of available semaphores in the Windows
486OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added
487an alternate implementation of the semaphore timeout to allow aslts to
488execute fully on Cygwin.
489
490----------------------------------------
49120 March 2009. Summary of changes for version 20090320:
492
4931) ACPI CA Core Subsystem:
494
495Fixed a possible race condition between AcpiWalkNamespace and dynamic table
496unloads. Added a reader/writer locking mechanism to allow multiple concurrent
497namespace walks (readers), but block a dynamic table unload until it can gain
498exclusive write access to the namespace. This fixes a problem where a table
499unload could (possibly catastrophically) delete the portion of the namespace
500that is currently being examined by a walk. Adds a new file, utlock.c, that
501implements the reader/writer lock mechanism. ACPICA BZ 749.
502
503Fixed a regression introduced in version 20090220 where a change to the FADT
504handling could cause the ACPICA subsystem to access non-existent I/O ports.
505
506Modified the handling of FADT register and table (FACS/DSDT) addresses. The
507FADT can contain both 32-bit and 64-bit versions of these addresses.
508Previously, the 64-bit versions were favored, meaning that if both 32 and 64
509versions were valid, but not equal, the 64-bit version was used. This was
510found to cause some machines to fail. Now, in this case, the 32-bit version
511is used instead. This now matches the Windows behavior.
512
513Implemented a new mechanism to protect certain I/O ports. Provides Microsoft
514compatibility and protects the standard PC I/O ports from access via AML
515code. Adds a new file, hwvalid.c
516
517Fixed a possible extraneous warning message from the FADT support. The
518message warns of a 32/64 length mismatch between the legacy and GAS
519definitions for a register.
520
521Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is
522made obsolete by the port protection mechanism above. It was previously used
523to validate the entire address range of an operation region, which could be
524incorrect if the range included illegal ports, but fields within the
525operation region did not actually access those ports. Validation is now
526performed on a per-field basis instead of the entire region.
527
528Modified the handling of the PM1 Status Register ignored bit (bit 11.)
529Ignored bits must be "preserved" according to the ACPI spec. Usually, this
530means a read/modify/write when writing to the register. However, for status
531registers, writing a one means clear the event. Writing a zero means preserve
532the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec,
533and the ACPICA code now simply always writes a zero to the ignored bit.
534
535Modified the handling of ignored bits for the PM1 A/B Control Registers. As
536per the ACPI specification, for the control registers, preserve
537(read/modify/write) all bits that are defined as either reserved or ignored.
538
539Updated the handling of write-only bits in the PM1 A/B Control Registers.
540When reading the register, zero the write-only bits as per the ACPI spec.
541ACPICA BZ 443. Lin Ming.
542
543Removed "Linux" from the list of supported _OSI strings. Linux no longer
544wants to reply true to this request. The Windows strings are the only paths
545through the AML that are tested and known to work properly.
546
547  Previous Release:
548    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
549    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
550  Current Release:
551    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
552    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
553
5542) iASL Compiler/Disassembler and Tools:
555
556Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and
557aetables.c
558
559----------------------------------------
56020 February 2009. Summary of changes for version 20090220:
561
5621) ACPI CA Core Subsystem:
563
564Optimized the ACPI register locking. Removed locking for reads from the ACPI
565bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is
566not required when reading the single-bit registers. The
567AcpiGetRegisterUnlocked function is no longer needed and has been removed.
568This will improve performance for reads on these registers. ACPICA BZ 760.
569
570Fixed the parameter validation for AcpiRead/Write. Now return
571AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if
572the register has an address of zero. Previously, these cases simply returned
573AE_OK. For optional registers such as PM1B status/enable/control, the caller
574should check for a valid register address before calling. ACPICA BZ 748.
575
576Renamed the external ACPI bit register access functions. Renamed
577AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
578functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister.
579Also, restructured the code for these functions by simplifying the code path
580and condensing duplicate code to reduce code size.
581
582Added new functions to transparently handle the possibly split PM1 A/B
583registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions
584now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ
585746.
586
587Added a function to handle the PM1 control registers, AcpiHwWritePm1Control.
588This function writes both of the PM1 control registers (A/B). These registers
589are different than the PM1 A/B status and enable registers in that different
590values can be written to the A/B registers. Most notably, the SLP_TYP bits
591can be different, as per the values returned from the _Sx predefined methods.
592
593Removed an extra register write within AcpiHwClearAcpiStatus. This function
594was writing an optional PM1B status register twice. The existing call to the
595low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B
596register. ACPICA BZ 751.
597
598Split out the PM1 Status registers from the FADT. Added new globals for these
599registers (A/B), similar to the way the PM1 Enable registers are handled.
600Instead of overloading the FADT Event Register blocks. This makes the code
601clearer and less prone to error.
602
603Fixed the warning message for when the platform contains too many ACPI tables
604for the default size of the global root table data structure. The calculation
605for the truncation value was incorrect.
606
607Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
608obsolete macro, since it is now a simple reference to ->common.type. There
609were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
610
611Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
612TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
613simply SLEEP_TYPE. ACPICA BZ 754.
614
615Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
616function is only needed on 64-bit host operating systems and is thus not
617included for 32-bit hosts.
618
619Debug output: print the input and result for invocations of the _OSI reserved
620control method via the ACPI_LV_INFO debug level. Also, reduced some of the
621verbosity of this debug level. Len Brown.
622
623Example Code and Data Size: These are the sizes for the OS-independent
624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
625debug version of the code includes the debug output trace mechanism and has a
626much larger code and data size.
627
628  Previous Release:
629    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
630    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
631  Current Release:
632    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
633    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
634
6352) iASL Compiler/Disassembler and Tools:
636
637Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
638various legal performance profiles.
639
640----------------------------------------
64123 January 2009. Summary of changes for version 20090123:
642
6431) ACPI CA Core Subsystem:
644
645Added the 2009 copyright to all module headers and signons. This affects
646virtually every file in the ACPICA core subsystem, the iASL compiler, and
647the tools/utilities.
648
649Implemented a change to allow the host to override any ACPI table, including
650dynamically loaded tables. Previously, only the DSDT could be replaced by the
651host. With this change, the AcpiOsTableOverride interface is called for each
652table found in the RSDT/XSDT during ACPICA initialization, and also whenever
653a table is dynamically loaded via the AML Load operator.
654
655Updated FADT flag definitions, especially the Boot Architecture flags.
656
657Debugger: For the Find command, automatically pad the input ACPI name with
658underscores if the name is shorter than 4 characters. This enables a match
659with the actual namespace entry which is itself padded with underscores.
660
661Example Code and Data Size: These are the sizes for the OS-independent
662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
663debug version of the code includes the debug output trace mechanism and has a
664much larger code and data size.
665
666  Previous Release:
667    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
668    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
669  Current Release:
670    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
671    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
672
6732) iASL Compiler/Disassembler and Tools:
674
675Fix build error under Bison-2.4.
676
677Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture
678flags. Now decode all flags, regardless of the FADT version. Flag output
679includes the FADT version which first defined each flag.
680
681The iASL -g option now dumps the RSDT to a file (in addition to the FADT and
682DSDT). Windows only.
683
684----------------------------------------
68504 December 2008. Summary of changes for version 20081204:
686
6871) ACPI CA Core Subsystem:
688
689The ACPICA Programmer Reference has been completely updated and revamped for
690this release. This includes updates to the external interfaces, OSL
691interfaces, the overview sections, and the debugger reference.
692
693Several new ACPICA interfaces have been implemented and documented in the
694programmer reference:
695AcpiReset - Writes the reset value to the FADT-defined reset register.
696AcpiDisableAllGpes - Disable all available GPEs.
697AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
698AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
699AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
700AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
701AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
702
703Most of the public ACPI hardware-related interfaces have been moved to a new
704file, components/hardware/hwxface.c
705
706Enhanced the FADT parsing and low-level ACPI register access: The ACPI
707register lengths within the FADT are now used, and the low level ACPI
708register access no longer hardcodes the ACPI register lengths. Given that
709there may be some risk in actually trusting the FADT register lengths, a run-
710time option was added to fall back to the default hardcoded lengths if the
711FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
712option is set to true for now, and a warning is issued if a suspicious FADT
713register length is overridden with the default value.
714
715Fixed a reference count issue in NsRepairObject. This problem was introduced
716in version 20081031 as part of a fix to repair Buffer objects within
717Packages. Lin Ming.
718
719Added semaphore support to the Linux/Unix application OS-services layer
720(OSL). ACPICA BZ 448. Lin Ming.
721
722Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will
723be implemented in the OSL, or will binary semaphores be used instead.
724
725Example Code and Data Size: These are the sizes for the OS-independent
726acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
727debug version of the code includes the debug output trace mechanism and has a
728much larger code and data size.
729
730  Previous Release:
731    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
732    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
733  Current Release:
734    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
735    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
736
7372) iASL Compiler/Disassembler and Tools:
738
739iASL: Completed the '-e' option to include additional ACPI tables in order to
740aid with disassembly and External statement generation. ACPICA BZ 742. Lin
741Ming.
742
743iASL: Removed the "named object in while loop" error. The compiler cannot
744determine how many times a loop will execute. ACPICA BZ 730.
745
746Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA
747BZ 743.
748
749Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
750
751----------------------------------------
75231 October 2008. Summary of changes for version 20081031:
753
7541) ACPI CA Core Subsystem:
755
756Restructured the ACPICA header files into public/private. acpi.h now includes
757only the "public" acpica headers. All other acpica headers are "private" and
758should not be included by acpica users. One new file, accommon.h is used to
759include the commonly used private headers for acpica code generation. Future
760plans include moving all private headers to a new subdirectory.
761
762Implemented an automatic Buffer->String return value conversion for
763predefined ACPI methods. For these methods (such as _BIF), added automatic
764conversion for return objects that are required to be a String, but a Buffer
765was found instead. This can happen when reading string battery data from an
766operation region, because it used to be difficult to convert the data from
767buffer to string from within the ASL. Ensures that the host OS is provided
768with a valid null-terminated string. Linux BZ 11822.
769
770Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector
771into two: one for the 32-bit vector, another for the 64-bit vector. This is
772required because the host OS must setup the wake much differently for each
773vector (real vs. protected mode, etc.) and the interface itself should not be
774deciding which vector to use. Also, eliminated the GetFirmwareWakingVector
775interface, as it served no purpose (only the firmware reads the vector, OS
776only writes the vector.) ACPICA BZ 731.
777
778Implemented a mechanism to escape infinite AML While() loops. Added a loop
779counter to force exit from AML While loops if the count becomes too large.
780This can occur in poorly written AML when the hardware does not respond
781within a while loop and the loop does not implement a timeout. The maximum
782loop count is configurable. A new exception code is returned when a loop is
783broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
784
785Optimized the execution of AML While loops. Previously, a control state
786object was allocated and freed for each execution of the loop. The
787optimization is to simply reuse the control state for each iteration. This
788speeds up the raw loop execution time by about 5%.
789
790Enhanced the implicit return mechanism. For Windows compatibility, return an
791implicit integer of value zero for methods that contain no executable code.
792Such methods are seen in the field as stubs (presumably), and can cause
793drivers to fail if they expect a return value. Lin Ming.
794
795Allow multiple backslashes as root prefixes in namepaths. In a fully
796qualified namepath, allow multiple backslash prefixes. This can happen (and
797is seen in the field) because of the use of a double-backslash in strings
798(since backslash is the escape character) causing confusion. ACPICA BZ 739
799Lin Ming.
800
801Emit a warning if two different FACS or DSDT tables are discovered in the
802FADT. Checks if there are two valid but different addresses for the FACS and
803DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
804
805Consolidated the method argument count validation code. Merged the code that
806validates control method argument counts into the predefined validation
807module. Eliminates possible multiple warnings for incorrect argument counts.
808
809Implemented ACPICA example code. Includes code for ACPICA initialization,
810handler installation, and calling a control method. Available at
811source/tools/examples.
812
813Added a global pointer for FACS table to simplify internal FACS access. Use
814the global pointer instead of using AcpiGetTableByIndex for each FACS access.
815This simplifies the code for the Global Lock and the Firmware Waking
816Vector(s).
817
818Example Code and Data Size: These are the sizes for the OS-independent
819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
820debug version of the code includes the debug output trace mechanism and has a
821much larger code and data size.
822
823  Previous Release:
824    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
825    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
826  Current Release:
827    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
828    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
829
8302) iASL Compiler/Disassembler and Tools:
831
832iASL: Improved disassembly of external method calls. Added the -e option to
833allow the inclusion of additional ACPI tables to help with the disassembly of
834method invocations and the generation of external declarations during the
835disassembly. Certain external method invocations cannot be disassembled
836properly without the actual declaration of the method. Use the -e option to
837include the table where the external method(s) are actually declared. Most
838useful for disassembling SSDTs that make method calls back to the master
839DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d
840-e dsdt.aml ssdt1.aml
841
842iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
843problem where the use of an alias within a namepath would result in a not
844found error or cause the compiler to fault. Also now allows forward
845references from the Alias operator itself. ACPICA BZ 738.
846
847----------------------------------------
84826 September 2008. Summary of changes for version 20080926:
849
8501) ACPI CA Core Subsystem:
851
852Designed and implemented a mechanism to validate predefined ACPI methods and
853objects. This code validates the predefined ACPI objects (objects whose names
854start with underscore) that appear in the namespace, at the time they are
855evaluated. The argument count and the type of the returned object are
856validated against the ACPI specification. The purpose of this validation is
857to detect problems with the BIOS-implemented predefined ACPI objects before
858the results are returned to the ACPI-related drivers. Future enhancements may
859include actual repair of incorrect return objects where possible. Two new
860files are nspredef.c and acpredef.h.
861
862Fixed a fault in the AML parser if a memory allocation fails during the Op
863completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
864
865Fixed an issue with implicit return compatibility. This change improves the
866implicit return mechanism to be more compatible with the MS interpreter. Lin
867Ming, ACPICA BZ 349.
868
869Implemented support for zero-length buffer-to-string conversions. Allow zero
870length strings during interpreter buffer-to-string conversions. For example,
871during the ToDecimalString and ToHexString operators, as well as implicit
872conversions. Fiodor Suietov, ACPICA BZ 585.
873
874Fixed two possible memory leaks in the error exit paths of
875AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are
876similar in that they use a stack of state objects in order to eliminate
877recursion. The stack must be fully unwound and deallocated if an error
878occurs. Lin Ming. ACPICA BZ 383.
879
880Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global
881ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
882Moore ACPICA BZ 442.
883
884Removed the obsolete version number in module headers. Removed the
885"$Revision" number that appeared in each module header. This version number
886was useful under SourceSafe and CVS, but has no meaning under git. It is not
887only incorrect, it could also be misleading.
888
889Example Code and Data Size: These are the sizes for the OS-independent
890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
891debug version of the code includes the debug output trace mechanism and has a
892much larger code and data size.
893
894  Previous Release:
895    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
896    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
897  Current Release:
898    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
899    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
900
901----------------------------------------
90229 August 2008. Summary of changes for version 20080829:
903
9041) ACPI CA Core Subsystem:
905
906Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
907Reference. Changes include the elimination of cheating on the Object field
908for the DdbHandle subtype, addition of a reference class field to
909differentiate the various reference types (instead of an AML opcode), and the
910cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
911
912Reduce an error to a warning for an incorrect method argument count.
913Previously aborted with an error if too few arguments were passed to a
914control method via the external ACPICA interface. Now issue a warning instead
915and continue. Handles the case where the method inadvertently declares too
916many arguments, but does not actually use the extra ones. Applies mainly to
917the predefined methods. Lin Ming. Linux BZ 11032.
918
919Disallow the evaluation of named object types with no intrinsic value. Return
920AE_TYPE for objects that have no value and therefore evaluation is undefined:
921Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of
922these types were allowed, but an exception would be generated at some point
923during the evaluation. Now, the error is generated up front.
924
925Fixed a possible memory leak in the AcpiNsGetExternalPathname function
926(nsnames.c). Fixes a leak in the error exit path.
927
928Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug
929levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION
930interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
931ACPI_LV_EVENTS.
932
933Removed obsolete and/or unused exception codes from the acexcep.h header.
934There is the possibility that certain device drivers may be affected if they
935use any of these exceptions.
936
937The ACPICA documentation has been added to the public git source tree, under
938acpica/documents. Included are the ACPICA programmer reference, the iASL
939compiler reference, and the changes.txt release logfile.
940
941Example Code and Data Size: These are the sizes for the OS-independent
942acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
943debug version of the code includes the debug output trace mechanism and has a
944much larger code and data size.
945
946  Previous Release:
947    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
948    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
949  Current Release:
950    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
951    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
952
9532) iASL Compiler/Disassembler and Tools:
954
955Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
956defines _SCP with 3 arguments. Previous versions defined it with only 1
957argument. iASL now allows both definitions.
958
959iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
960length subtables when disassembling ACPI tables. Also fixed a couple of
961errors where a full 16-bit table type field was not extracted from the input
962properly.
963
964acpisrc: Improve comment counting mechanism for generating source code
965statistics. Count first and last lines of multi-line comments as whitespace,
966not comment lines. Handle Linux legal header in addition to standard acpica
967header.
968
969----------------------------------------
970
97129 July 2008. Summary of changes for version 20080729:
972
973This release is available at http://acpica.org/downloads
974Direct git access via http://www.acpica.org/repos/acpica.git
975
9761) ACPI CA Core Subsystem:
977
978Fix a possible deadlock in the GPE dispatch. Remove call to
979AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt
980to acquire the GPE lock but can deadlock since the GPE lock is already held
981at dispatch time. This code was introduced in version 20060831 as a response
982to Linux BZ 6881 and has since been removed from Linux.
983
984Add a function to dereference returned reference objects. Examines the return
985object from a call to AcpiEvaluateObject. Any Index or RefOf references are
986automatically dereferenced in an attempt to return something useful (these
987reference types cannot be converted into an external ACPI_OBJECT.) Provides
988MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
989
990x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
991subtables for the MADT and one new subtable for the SRAT. Includes
992disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC
993Specification, June 2008.
994
995Additional error checking for pathname utilities. Add error check after all
996calls to AcpiNsGetPathnameLength. Add status return from
997AcpiNsBuildExternalPath and check after all calls. Add parameter validation
998to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
999
1000Return status from the global init function AcpiUtGlobalInitialize. This is
1001used by both the kernel subsystem and the utilities such as iASL compiler.
1002The function could possibly fail when the caches are initialized. Yang Yi.
1003
1004Add a function to decode reference object types to strings. Created for
1005improved error messages.
1006
1007Improve object conversion error messages. Better error messages during object
1008conversion from internal to the external ACPI_OBJECT. Used for external calls
1009to AcpiEvaluateObject.
1010
1011Example Code and Data Size: These are the sizes for the OS-independent
1012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1013debug version of the code includes the debug output trace mechanism and has a
1014much larger code and data size.
1015
1016  Previous Release:
1017    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
1018    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
1019  Current Release:
1020    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1021    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
1022
10232) iASL Compiler/Disassembler and Tools:
1024
1025Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
1026introduced in version 20080701. If the object being evaluated (via execute
1027command) is not a method, the debugger can hang while trying to obtain non-
1028existent parameters.
1029
1030iASL: relax error for using reserved "_T_x" identifiers. These names can
1031appear in a disassembled ASL file if they were emitted by the original
1032compiler. Instead of issuing an error or warning and forcing the user to
1033manually change these names, issue a remark instead.
1034
1035iASL: error if named object created in while loop. Emit an error if any named
1036object is created within a While loop. If allowed, this code will generate a
1037run-time error on the second iteration of the loop when an attempt is made to
1038create the same named object twice. ACPICA bugzilla 730.
1039
1040iASL: Support absolute pathnames for include files. Add support for absolute
1041pathnames within the Include operator. previously, only relative pathnames
1042were supported.
1043
1044iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor.
1045The ACPI spec requires one interrupt minimum. BZ 423
1046
1047iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
1048Handles the case for the Interrupt Resource Descriptor where
1049the ResourceSource argument is omitted but ResourceSourceIndex
1050is present. Now leave room for the Index. BZ 426
1051
1052iASL: Prevent error message if CondRefOf target does not exist. Fixes cases
1053where an error message is emitted if the target does not exist. BZ 516
1054
1055iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
1056(get ACPI tables on Windows). This was apparently broken in version 20070919.
1057
1058AcpiXtract: Handle EOF while extracting data. Correctly handle the case where
1059the EOF happens immediately after the last table in the input file. Print
1060completion message. Previously, no message was displayed in this case.
1061
1062----------------------------------------
106301 July 2008. Summary of changes for version 20080701:
1064
1065This release is available at http://acpica.org/downloads
1066Direct git access via http://www.acpica.org/repos/acpica.git
1067
10680) Git source tree / acpica.org
1069
1070Fixed a problem where a git-clone from http would not transfer the entire
1071source tree.
1072
10731) ACPI CA Core Subsystem:
1074
1075Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
1076enable bit. Now performs a read-change-write of the enable register instead
1077of simply writing out the cached enable mask. This will prevent inadvertent
1078enabling of GPEs if a rogue GPE is received during initialization (before GPE
1079handlers are installed.)
1080
1081Implemented a copy for dynamically loaded tables. Previously, dynamically
1082loaded tables were simply mapped - but on some machines this memory is
1083corrupted after suspend. Now copy the table to a local buffer. For the
1084OpRegion case, added checksum verify. Use the table length from the table
1085header, not the region length. For the Buffer case, use the table length
1086also. Dennis Noordsij, Bob Moore. BZ 10734
1087
1088Fixed a problem where the same ACPI table could not be dynamically loaded and
1089unloaded more than once. Without this change, a table cannot be loaded again
1090once it has been loaded/unloaded one time. The current mechanism does not
1091unregister a table upon an unload. During a load, if the same table is found,
1092this no longer returns an exception. BZ 722
1093
1094Fixed a problem where the wrong descriptor length was calculated for the
1095EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag
1096are calculated as 12 bytes long, but the actual length in the internal
1097descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported
1098by Linn Crosetto. BZ 728
1099
1100Fixed a possible memory leak in the Unload operator. The DdbHandle returned
1101by Load() did not have its reference count decremented during unload, leading
1102to a memory leak. Lin Ming. BZ 727
1103
1104Fixed a possible memory leak when deleting thermal/processor objects. Any
1105associated notify handlers (and objects) were not being deleted. Fiodor
1106Suietov. BZ 506
1107
1108Fixed the ordering of the ASCII names in the global mutex table to match the
1109actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only.
1110Vegard Nossum. BZ 726
1111
1112Enhanced the AcpiGetObjectInfo interface to return the number of required
1113arguments if the object is a control method. Added this call to the debugger
1114so the proper number of default arguments are passed to a method. This
1115prevents a warning when executing methods from AcpiExec.
1116
1117Added a check for an invalid handle in AcpiGetObjectInfo. Return
1118AE_BAD_PARAMETER if input handle is invalid. BZ 474
1119
1120Fixed an extraneous warning from exconfig.c on the 64-bit build.
1121
1122Example Code and Data Size: These are the sizes for the OS-independent
1123acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1124debug version of the code includes the debug output trace mechanism and has a
1125much larger code and data size.
1126
1127  Previous Release:
1128    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
1129    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
1130  Current Release:
1131    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
1132    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
1133
11342) iASL Compiler/Disassembler and Tools:
1135
1136iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
1137resource descriptor names.
1138
1139iASL: Detect invalid ASCII characters in input (windows version). Removed the
1140"-CF" flag from the flex compile, enables correct detection of non-ASCII
1141characters in the input. BZ 441
1142
1143iASL: Eliminate warning when result of LoadTable is not used. Eliminate the
1144"result of operation not used" warning when the DDB handle returned from
1145LoadTable is not used. The warning is not needed. BZ 590
1146
1147AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to
1148pass address of table to the AML. Added option to disable OpRegion simulation
1149to allow creation of an OpRegion with a real address that was passed to _CFG.
1150All of this allows testing of the Load and Unload operators from AcpiExec.
1151
1152Debugger: update tables command for unloaded tables. Handle unloaded tables
1153and use the standard table header output routine.
1154
1155----------------------------------------
115609 June 2008. Summary of changes for version 20080609:
1157
11581) ACPI CA Core Subsystem:
1159
1160Implemented a workaround for reversed _PRT entries. A significant number of
1161BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
1162change dynamically detects and repairs this problem. Provides compatibility
1163with MS ACPI. BZ 6859
1164
1165Simplified the internal ACPI hardware interfaces to eliminate the locking
1166flag parameter from Register Read/Write. Added a new external interface,
1167AcpiGetRegisterUnlocked.
1168
1169Fixed a problem where the invocation of a GPE control method could hang. This
1170was a regression introduced in 20080514. The new method argument count
1171validation mechanism can enter an infinite loop when a GPE method is
1172dispatched. Problem fixed by removing the obsolete code that passed GPE block
1173information to the notify handler via the control method parameter pointer.
1174
1175Fixed a problem where the _SST execution status was incorrectly returned to
1176the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
117720080514. _SST is optional and a NOT_FOUND exception should never be
1178returned. BZ 716
1179
1180Fixed a problem where a deleted object could be accessed from within the AML
1181parser. This was a regression introduced in version 20080123 as a fix for the
1182Unload operator. Lin Ming. BZ 10669
1183
1184Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands
1185and eliminated the use of a negative index in a loop. Operands are now
1186displayed in the correct order, not backwards. This also fixes a regression
1187introduced in 20080514 on 64-bit systems where the elimination of
1188ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
1189
1190Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit
1191path did not delete a locally allocated structure.
1192
1193Updated definitions for the DMAR and SRAT tables to synchronize with the
1194current specifications. Includes disassembler support.
1195
1196Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
1197loop termination value was used. Loop terminated on iteration early, missing
1198one mutex. Linn Crosetto
1199
1200Example Code and Data Size: These are the sizes for the OS-independent
1201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1202debug version of the code includes the debug output trace mechanism and has a
1203much larger code and data size.
1204
1205  Previous Release:
1206    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1207    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1208  Current Release:
1209    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
1210    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
1211
12122) iASL Compiler/Disassembler and Tools:
1213
1214Disassembler: Implemented support for EisaId() within _CID objects. Now
1215disassemble integer _CID objects back to EisaId invocations, including
1216multiple integers within _CID packages. Includes single-step support for
1217debugger also.
1218
1219Disassembler: Added support for DMAR and SRAT table definition changes.
1220
1221----------------------------------------
122214 May 2008. Summary of changes for version 20080514:
1223
12241) ACPI CA Core Subsystem:
1225
1226Fixed a problem where GPEs were enabled too early during the ACPICA
1227initialization. This could lead to "handler not installed" errors on some
1228machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This
1229ensures that all operation regions and devices throughout the namespace have
1230been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
1231
1232Implemented a change to the enter sleep code. Moved execution of the _GTS
1233method to just before setting sleep enable bit. The execution was moved from
1234AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
1235immediately before the SLP_EN bit is set, as per the ACPI specification.
1236Luming Yu, BZ 1653.
1237
1238Implemented a fix to disable unknown GPEs (2nd version). Now always disable
1239the GPE, even if ACPICA thinks that that it is already disabled. It is
1240possible that the AML or some other code has enabled the GPE unbeknownst to
1241the ACPICA code.
1242
1243Fixed a problem with the Field operator where zero-length fields would return
1244an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL
1245field declarations in Field(), BankField(), and IndexField(). BZ 10606.
1246
1247Implemented a fix for the Load operator, now load the table at the namespace
1248root. This reverts a change introduced in version 20071019. The table is now
1249loaded at the namespace root even though this goes against the ACPI
1250specification. This provides compatibility with other ACPI implementations.
1251The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
1252
1253Fixed a problem where ACPICA would not Load() tables with unusual signatures.
1254Now ignore ACPI table signature for Load() operator. Only "SSDT" is
1255acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
1256Therefore, signature validation is worthless. Apparently MS ACPI accepts such
1257signatures, ACPICA must be compatible. BZ 10454.
1258
1259Fixed a possible negative array index in AcpiUtValidateException. Added NULL
1260fields to the exception string arrays to eliminate a -1 subtraction on the
1261SubStatus field.
1262
1263Updated the debug tracking macros to reduce overall code and data size.
1264Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
1265instead of pointers to static strings. Jan Beulich and Bob Moore.
1266
1267Implemented argument count checking in control method invocation via
1268AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
1269many. This applies only to extern programmatic control method execution, not
1270method-to-method calls within the AML. Lin Ming.
1271
1272Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no
1273longer needed, especially with the removal of 16-bit support. It was replaced
1274mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on
127532/64-bit platforms is required.
1276
1277Added the C const qualifier for appropriate string constants -- mostly
1278MODULE_NAME and printf format strings. Jan Beulich.
1279
1280Example Code and Data Size: These are the sizes for the OS-independent
1281acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1282debug version of the code includes the debug output trace mechanism and has a
1283much larger code and data size.
1284
1285  Previous Release:
1286    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1287    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1288  Current Release:
1289    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1290    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1291
12922) iASL Compiler/Disassembler and Tools:
1293
1294Implemented ACPI table revision ID validation in the disassembler. Zero is
1295always invalid. For DSDTs, the ID controls the interpreter integer width. 1
1296means 32-bit and this is unusual. 2 or greater is 64-bit.
1297
1298----------------------------------------
129921 March 2008. Summary of changes for version 20080321:
1300
13011) ACPI CA Core Subsystem:
1302
1303Implemented an additional change to the GPE support in order to suppress
1304spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
1305disable incoming GPEs that are neither enabled nor disabled -- meaning that
1306the GPE is unknown to the system. This should prevent future interrupt floods
1307from that GPE. BZ 6217 (Zhang Rui)
1308
1309Fixed a problem where NULL package elements were not returned to the
1310AcpiEvaluateObject interface correctly. The element was simply ignored
1311instead of returning a NULL ACPI_OBJECT package element, potentially causing
1312a buffer overflow and/or confusing the caller who expected a fixed number of
1313elements. BZ 10132 (Lin Ming, Bob Moore)
1314
1315Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
1316Qword), Field, BankField, and IndexField operators when invoked from inside
1317an executing control method. In this case, these operators created namespace
1318nodes that were incorrectly left marked as permanent nodes instead of
1319temporary nodes. This could cause a problem if there is race condition
1320between an exiting control method and a running namespace walk. (Reported by
1321Linn Crosetto)
1322
1323Fixed a problem where the CreateField and CreateXXXField operators would
1324incorrectly allow duplicate names (the name of the field) with no exception
1325generated.
1326
1327Implemented several changes for Notify handling. Added support for new Notify
1328values (ACPI 2.0+) and improved the Notify debug output. Notify on
1329PowerResource objects is no longer allowed, as per the ACPI specification.
1330(Bob Moore, Zhang Rui)
1331
1332All Reference Objects returned via the AcpiEvaluateObject interface are now
1333marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for
1334NULL objects - either NULL package elements or unresolved named references.
1335
1336Fixed a problem where an extraneous debug message was produced for package
1337objects (when debugging enabled). The message "Package List length larger
1338than NumElements count" is now produced in the correct case, and is now an
1339error message rather than a debug message. Added a debug message for the
1340opposite case, where NumElements is larger than the Package List (the package
1341will be padded out with NULL elements as per the ACPI spec.)
1342
1343Implemented several improvements for the output of the ASL "Debug" object to
1344clarify and keep all data for a given object on one output line.
1345
1346Fixed two size calculation issues with the variable-length Start Dependent
1347resource descriptor.
1348
1349Example Code and Data Size: These are the sizes for the OS-independent
1350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1351debug version of the code includes the debug output trace mechanism and has
1352a much larger code and data size.
1353
1354  Previous Release:
1355    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1356    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1357  Current Release:
1358    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1359    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1360
13612) iASL Compiler/Disassembler and Tools:
1362
1363Fixed a problem with the use of the Switch operator where execution of the
1364containing method by multiple concurrent threads could cause an
1365AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
1366actual Switch opcode, it must be simulated with local named temporary
1367variables and if/else pairs. The solution chosen was to mark any method that
1368uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
1369
1370----------------------------------------
137113 February 2008. Summary of changes for version 20080213:
1372
13731) ACPI CA Core Subsystem:
1374
1375Implemented another MS compatibility design change for GPE/Notify handling.
1376GPEs are now cleared/enabled asynchronously to allow all pending notifies to
1377complete first. It is expected that the OSL will queue the enable request
1378behind all pending notify requests (may require changes to the local host OSL
1379in AcpiOsExecute). Alexey Starikovskiy.
1380
1381Fixed a problem where buffer and package objects passed as arguments to a
1382control method via the external AcpiEvaluateObject interface could cause an
1383AE_AML_INTERNAL exception depending on the order and type of operators
1384executed by the target control method.
1385
1386Fixed a problem where resource descriptor size optimization could cause a
1387problem when a _CRS resource template is passed to a _SRS method. The _SRS
1388resource template must use the same descriptors (with the same size) as
1389returned from _CRS. This change affects the following resource descriptors:
1390IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
1391
1392Fixed a problem where a CopyObject to RegionField, BankField, and IndexField
1393objects did not perform an implicit conversion as it should. These types must
1394retain their initial type permanently as per the ACPI specification. However,
1395a CopyObject to all other object types should not perform an implicit
1396conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
1397
1398Fixed a problem with the AcpiGetDevices interface where the mechanism to
1399match device CIDs did not examine the entire list of available CIDs, but
1400instead aborted on the first non-matching CID. Andrew Patterson.
1401
1402Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was
1403inadvertently changed to return a 16-bit value instead of a 32-bit value,
1404truncating the upper dword of a 64-bit value. This macro is only used to
1405display debug output, so no incorrect calculations were made. Also,
1406reimplemented the macro so that a 64-bit shift is not performed by
1407inefficient compilers.
1408
1409Added missing va_end statements that should correspond with each va_start
1410statement.
1411
1412Example Code and Data Size: These are the sizes for the OS-independent
1413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1414debug version of the code includes the debug output trace mechanism and has
1415a much larger code and data size.
1416
1417  Previous Release:
1418    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1419    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1420  Current Release:
1421    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1422    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1423
14242) iASL Compiler/Disassembler and Tools:
1425
1426Implemented full disassembler support for the following new ACPI tables:
1427BERT, EINJ, and ERST. Implemented partial disassembler support for the
1428complicated HEST table. These tables support the Windows Hardware Error
1429Architecture (WHEA).
1430
1431----------------------------------------
143223 January 2008. Summary of changes for version 20080123:
1433
14341) ACPI CA Core Subsystem:
1435
1436Added the 2008 copyright to all module headers and signons. This affects
1437virtually every file in the ACPICA core subsystem, the iASL compiler, and
1438the tools/utilities.
1439
1440Fixed a problem with the SizeOf operator when used with Package and Buffer
1441objects. These objects have deferred execution for some arguments, and the
1442execution is now completed before the SizeOf is executed. This problem caused
1443unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ
14449558
1445
1446Implemented an enhancement to the interpreter "slack mode". In the absence of
1447an explicit return or an implicitly returned object from the last executed
1448opcode, a control method will now implicitly return an integer of value 0 for
1449Microsoft compatibility. (Lin Ming) BZ 392
1450
1451Fixed a problem with the Load operator where an exception was not returned in
1452the case where the table is already loaded. (Lin Ming) BZ 463
1453
1454Implemented support for the use of DDBHandles as an Indexed Reference, as per
1455the ACPI spec. (Lin Ming) BZ 486
1456
1457Implemented support for UserTerm (Method invocation) for the Unload operator
1458as per the ACPI spec. (Lin Ming) BZ 580
1459
1460Fixed a problem with the LoadTable operator where the OemId and OemTableId
1461input strings could cause unexpected failures if they were shorter than the
1462maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
1463
1464Implemented support for UserTerm (Method invocation) for the Unload operator
1465as per the ACPI spec. (Lin Ming) BZ 580
1466
1467Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST,
1468IBFT, UEFI, WDAT. Disassembler support is forthcoming.
1469
1470Example Code and Data Size: These are the sizes for the OS-independent
1471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1472debug version of the code includes the debug output trace mechanism and has
1473a much larger code and data size.
1474
1475  Previous Release:
1476    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1477    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1478  Current Release:
1479    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1480    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1481
14822) iASL Compiler/Disassembler and Tools:
1483
1484Implemented support in the disassembler for checksum validation on incoming
1485binary DSDTs and SSDTs. If incorrect, a message is displayed within the table
1486header dump at the start of the disassembly.
1487
1488Implemented additional debugging information in the namespace listing file
1489created during compilation. In addition to the namespace hierarchy, the full
1490pathname to each namespace object is displayed.
1491
1492Fixed a problem with the disassembler where invalid ACPI tables could cause
1493faults or infinite loops.
1494
1495Fixed an unexpected parse error when using the optional "parameter types"
1496list in a control method declaration. (Lin Ming) BZ 397
1497
1498Fixed a problem where two External declarations with the same name did not
1499cause an error (Lin Ming) BZ 509
1500
1501Implemented support for full TermArgs (adding Argx, Localx and method
1502invocation) for the ParameterData parameter to the LoadTable operator. (Lin
1503Ming) BZ 583,587
1504
1505----------------------------------------
150619 December 2007. Summary of changes for version 20071219:
1507
15081) ACPI CA Core Subsystem:
1509
1510Implemented full support for deferred execution for the TermArg string
1511arguments for DataTableRegion. This enables forward references and full
1512operand resolution for the three string arguments. Similar to OperationRegion
1513deferred argument execution.) Lin Ming. BZ 430
1514
1515Implemented full argument resolution support for the BankValue argument to
1516BankField. Previously, only constants were supported, now any TermArg may be
1517used. Lin Ming BZ 387, 393
1518
1519Fixed a problem with AcpiGetDevices where the search of a branch of the
1520device tree could be terminated prematurely. In accordance with the ACPI
1521specification, the search down the current branch is terminated if a device
1522is both not present and not functional (instead of just not present.) Yakui
1523Zhao.
1524
1525Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if
1526the underlying AML code changed the GPE enable registers. Now, any unknown
1527incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled
1528instead of simply ignored. Rui Zhang.
1529
1530Fixed a problem with Index Fields where the Index register was incorrectly
1531limited to a maximum of 32 bits. Now any size may be used.
1532
1533Fixed a couple memory leaks associated with "implicit return" objects when
1534the AML Interpreter slack mode is enabled. Lin Ming BZ 349
1535
1536Example Code and Data Size: These are the sizes for the OS-independent
1537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1538debug version of the code includes the debug output trace mechanism and has
1539a much larger code and data size.
1540
1541  Previous Release:
1542    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1543    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1544  Current Release:
1545    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1546    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1547
1548----------------------------------------
154914 November 2007. Summary of changes for version 20071114:
1550
15511) ACPI CA Core Subsystem:
1552
1553Implemented event counters for each of the Fixed Events, the ACPI SCI
1554(interrupt) itself, and control methods executed. Named
1555AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These
1556should be useful for debugging and statistics.
1557
1558Implemented a new external interface, AcpiGetStatistics, to retrieve the
1559contents of the various event counters. Returns the current values for
1560AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
1561AcpiMethodCount. The interface can be expanded in the future if new counters
1562are added. Device drivers should use this interface rather than access the
1563counters directly.
1564
1565Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
1566the ShortDivide function worked incorrectly, causing problems with the BCD
1567functions with large input values. A truncation from 64-bit to 32-bit
1568inadvertently occurred. Internal BZ 435. Lin Ming
1569
1570Fixed a problem with Index references passed as method arguments. References
1571passed as arguments to control methods were dereferenced immediately (before
1572control was passed to the called method). The references are now correctly
1573passed directly to the called method. BZ 5389. Lin Ming
1574
1575Fixed a problem with CopyObject used in conjunction with the Index operator.
1576The reference was incorrectly dereferenced before the copy. The reference is
1577now correctly copied. BZ 5391. Lin Ming
1578
1579Fixed a problem with Control Method references within Package objects. These
1580references are now correctly generated. This completes the package
1581construction overhaul that began in version 20071019.
1582
1583Example Code and Data Size: These are the sizes for the OS-independent
1584acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1585debug version of the code includes the debug output trace mechanism and has
1586a much larger code and data size.
1587
1588  Previous Release:
1589    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
1590    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
1591  Current Release:
1592    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1593    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1594
1595
15962) iASL Compiler/Disassembler and Tools:
1597
1598The AcpiExec utility now installs handlers for all of the predefined
1599Operation Region types. New types supported are: PCI_Config, CMOS, and
1600PCIBARTarget.
1601
1602Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
1603bit) address fields for the DSDT and FACS within the FADT were not being
1604used, causing truncation of the upper 32-bits of these addresses. Lin Ming
1605and Bob Moore
1606
1607----------------------------------------
160819 October 2007. Summary of changes for version 20071019:
1609
16101) ACPI CA Core Subsystem:
1611
1612Fixed a problem with the Alias operator when the target of the alias is a
1613named ASL operator that opens a new scope -- Scope, Device, PowerResource,
1614Processor, and ThermalZone. In these cases, any children of the original
1615operator could not be accessed via the alias, potentially causing unexpected
1616AE_NOT_FOUND exceptions. (BZ 9067)
1617
1618Fixed a problem with the Package operator where all named references were
1619created as object references and left otherwise unresolved. According to the
1620ACPI specification, a Package can only contain Data Objects or references to
1621control methods. The implication is that named references to Data Objects
1622(Integer, Buffer, String, Package, BufferField, Field) should be resolved
1623immediately upon package creation. This is the approach taken with this
1624change. References to all other named objects (Methods, Devices, Scopes,
1625etc.) are all now properly created as reference objects. (BZ 5328)
1626
1627Reverted a change to Notify handling that was introduced in version
162820070508. This version changed the Notify handling from asynchronous to
1629fully synchronous (Device driver Notify handling with respect to the Notify
1630ASL operator). It was found that this change caused more problems than it
1631solved and was removed by most users.
1632
1633Fixed a problem with the Increment and Decrement operators where the type of
1634the target object could be unexpectedly and incorrectly changed. (BZ 353)
1635Lin Ming.
1636
1637Fixed a problem with the Load and LoadTable operators where the table
1638location within the namespace was ignored. Instead, the table was always
1639loaded into the root or current scope. Lin Ming.
1640
1641Fixed a problem with the Load operator when loading a table from a buffer
1642object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
1643
1644Fixed a problem with the Debug object where a store of a DdbHandle reference
1645object to the Debug object could cause a fault.
1646
1647Added a table checksum verification for the Load operator, in the case where
1648the load is from a buffer. (BZ 578).
1649
1650Implemented additional parameter validation for the LoadTable operator. The
1651length of the input strings SignatureString, OemIdString, and OemTableId are
1652now checked for maximum lengths. (BZ 582) Lin Ming.
1653
1654Example Code and Data Size: These are the sizes for the OS-independent
1655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1656debug version of the code includes the debug output trace mechanism and has
1657a much larger code and data size.
1658
1659  Previous Release:
1660    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
1661    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
1662  Current Release:
1663    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
1664    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
1665
1666
16672) iASL Compiler/Disassembler:
1668
1669Fixed a problem where if a single file was specified and the file did not
1670exist, no error message was emitted. (Introduced with wildcard support in
1671version 20070917.)
1672
1673----------------------------------------
167419 September 2007. Summary of changes for version 20070919:
1675
16761) ACPI CA Core Subsystem:
1677
1678Designed and implemented new external interfaces to install and remove
1679handlers for ACPI table-related events. Current events that are defined are
1680LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
1681they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
1682AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
1683
1684Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
1685(acpi_serialized option on Linux) could cause some systems to hang during
1686initialization. (Bob Moore) BZ 8171
1687
1688Fixed a problem where objects of certain types (Device, ThermalZone,
1689Processor, PowerResource) can be not found if they are declared and
1690referenced from within the same control method (Lin Ming) BZ 341
1691
1692Example Code and Data Size: These are the sizes for the OS-independent
1693acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1694debug version of the code includes the debug output trace mechanism and has
1695a much larger code and data size.
1696
1697  Previous Release:
1698    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
1699    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
1700  Current Release:
1701    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
1702    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
1703
1704
17052) iASL Compiler/Disassembler:
1706
1707Implemented support to allow multiple files to be compiled/disassembled in a
1708single invocation. This includes command line wildcard support for both the
1709Windows and Unix versions of the compiler. This feature simplifies the
1710disassembly and compilation of multiple ACPI tables in a single directory.
1711
1712----------------------------------------
171308 May 2007. Summary of changes for version 20070508:
1714
17151) ACPI CA Core Subsystem:
1716
1717Implemented a Microsoft compatibility design change for the handling of the
1718Notify AML operator. Previously, notify handlers were dispatched and
1719executed completely asynchronously in a deferred thread. The new design
1720still executes the notify handlers in a different thread, but the original
1721thread that executed the Notify() now waits at a synchronization point for
1722the notify handler to complete. Some machines depend on a synchronous Notify
1723operator in order to operate correctly.
1724
1725Implemented support to allow Package objects to be passed as method
1726arguments to the external AcpiEvaluateObject interface. Previously, this
1727would return the AE_NOT_IMPLEMENTED exception. This feature had not been
1728implemented since there were no reserved control methods that required it
1729until recently.
1730
1731Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that
1732contained invalid non-zero values in reserved fields could cause later
1733failures because these fields have meaning in later revisions of the FADT.
1734For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields
1735are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
1736
1737Fixed a problem where the Global Lock handle was not properly updated if a
1738thread that acquired the Global Lock via executing AML code then attempted
1739to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe
1740Liu.
1741
1742Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
1743could be corrupted if the interrupt being removed was at the head of the
1744list. Reported by Linn Crosetto.
1745
1746Example Code and Data Size: These are the sizes for the OS-independent
1747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1748debug version of the code includes the debug output trace mechanism and has
1749a much larger code and data size.
1750
1751  Previous Release:
1752    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1753    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
1754  Current Release:
1755    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
1756    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
1757
1758----------------------------------------
175920 March 2007. Summary of changes for version 20070320:
1760
17611) ACPI CA Core Subsystem:
1762
1763Implemented a change to the order of interpretation and evaluation of AML
1764operand objects within the AML interpreter. The interpreter now evaluates
1765operands in the order that they appear in the AML stream (and the
1766corresponding ASL code), instead of in the reverse order (after the entire
1767operand list has been parsed). The previous behavior caused several subtle
1768incompatibilities with the Microsoft AML interpreter as well as being
1769somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
1770
1771Implemented a change to the ACPI Global Lock support. All interfaces to the
1772global lock now allow the same thread to acquire the lock multiple times.
1773This affects the AcpiAcquireGlobalLock external interface to the global lock
1774as well as the internal use of the global lock to support AML fields -- a
1775control method that is holding the global lock can now simultaneously access
1776AML fields that require global lock protection. Previously, in both cases,
1777this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to
1778AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
1779Controller. There is no change to the behavior of the AML Acquire operator,
1780as this can already be used to acquire a mutex multiple times by the same
1781thread. BZ 8066. With assistance from Alexey Starikovskiy.
1782
1783Fixed a problem where invalid objects could be referenced in the AML
1784Interpreter after error conditions. During operand evaluation, ensure that
1785the internal "Return Object" field is cleared on error and only valid
1786pointers are stored there. Caused occasional access to deleted objects that
1787resulted in "large reference count" warning messages. Valery Podrezov.
1788
1789Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on
1790deeply nested control method invocations. BZ 7873, local BZ 487. Valery
1791Podrezov.
1792
1793Fixed an internal problem with the handling of result objects on the
1794interpreter result stack. BZ 7872. Valery Podrezov.
1795
1796Removed obsolete code that handled the case where AML_NAME_OP is the target
1797of a reference (Reference.Opcode). This code was no longer necessary. BZ
17987874. Valery Podrezov.
1799
1800Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a
1801remnant from the previously discontinued 16-bit support.
1802
1803Example Code and Data Size: These are the sizes for the OS-independent
1804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1805debug version of the code includes the debug output trace mechanism and has
1806a much larger code and data size.
1807
1808  Previous Release:
1809    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1810    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1811  Current Release:
1812    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1813    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
1814
1815----------------------------------------
181626 January 2007. Summary of changes for version 20070126:
1817
18181) ACPI CA Core Subsystem:
1819
1820Added the 2007 copyright to all module headers and signons. This affects
1821virtually every file in the ACPICA core subsystem, the iASL compiler, and
1822the utilities.
1823
1824Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
1825during a table load. A bad pointer was passed in the case where the DSDT is
1826overridden, causing a fault in this case.
1827
1828Example Code and Data Size: These are the sizes for the OS-independent
1829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1830debug version of the code includes the debug output trace mechanism and has
1831a much larger code and data size.
1832
1833  Previous Release:
1834    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1835    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1836  Current Release:
1837    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1838    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1839
1840----------------------------------------
184115 December 2006. Summary of changes for version 20061215:
1842
18431) ACPI CA Core Subsystem:
1844
1845Support for 16-bit ACPICA has been completely removed since it is no longer
1846necessary and it clutters the code. All 16-bit macros, types, and
1847conditional compiles have been removed, cleaning up and simplifying the code
1848across the entire subsystem. DOS support is no longer needed since the
1849bootable Linux firmware kit is now available.
1850
1851The handler for the Global Lock is now removed during AcpiTerminate to
1852enable a clean subsystem restart, via the implementation of the
1853AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
1854HP)
1855
1856Implemented enhancements to the multithreading support within the debugger
1857to enable improved multithreading debugging and evaluation of the subsystem.
1858(Valery Podrezov)
1859
1860Debugger: Enhanced the Statistics/Memory command to emit the total (maximum)
1861memory used during the execution, as well as the maximum memory consumed by
1862each of the various object types. (Valery Podrezov)
1863
1864Example Code and Data Size: These are the sizes for the OS-independent
1865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1866debug version of the code includes the debug output trace mechanism and has
1867a much larger code and data size.
1868
1869  Previous Release:
1870    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
1871    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
1872  Current Release:
1873    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
1874    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
1875
1876
18772) iASL Compiler/Disassembler and Tools:
1878
1879AcpiExec: Implemented a new option (-m) to display full memory use
1880statistics upon subsystem/program termination. (Valery Podrezov)
1881
1882----------------------------------------
188309 November 2006. Summary of changes for version 20061109:
1884
18851) ACPI CA Core Subsystem:
1886
1887Optimized the Load ASL operator in the case where the source operand is an
1888operation region. Simply map the operation region memory, instead of
1889performing a bytewise read. (Region must be of type SystemMemory, see
1890below.)
1891
1892Fixed the Load ASL operator for the case where the source operand is a
1893region field. A buffer object is also allowed as the source operand. BZ 480
1894
1895Fixed a problem where the Load ASL operator allowed the source operand to be
1896an operation region of any type. It is now restricted to regions of type
1897SystemMemory, as per the ACPI specification. BZ 481
1898
1899Additional cleanup and optimizations for the new Table Manager code.
1900
1901AcpiEnable will now fail if all of the required ACPI tables are not loaded
1902(FADT, FACS, DSDT). BZ 477
1903
1904Added #pragma pack(8/4) to acobject.h to ensure that the structures in this
1905header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
1906manually optimized to be aligned and will not work if it is byte-packed.
1907
1908Example Code and Data Size: These are the sizes for the OS-independent
1909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1910debug version of the code includes the debug output trace mechanism and has
1911a much larger code and data size.
1912
1913  Previous Release:
1914    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1915    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1916  Current Release:
1917    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
1918    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
1919
1920
19212) iASL Compiler/Disassembler and Tools:
1922
1923Fixed a problem where the presence of the _OSI predefined control method
1924within complex expressions could cause an internal compiler error.
1925
1926AcpiExec: Implemented full region support for multiple address spaces.
1927SpaceId is now part of the REGION object. BZ 429
1928
1929----------------------------------------
193011 October 2006. Summary of changes for version 20061011:
1931
19321) ACPI CA Core Subsystem:
1933
1934Completed an AML interpreter performance enhancement for control method
1935execution. Previously a 2-pass parse/execution, control methods are now
1936completely parsed and executed in a single pass. This improves overall
1937interpreter performance by ~25%, reduces code size, and reduces CPU stack
1938use. (Valery Podrezov + interpreter changes in version 20051202 that
1939eliminated namespace loading during the pass one parse.)
1940
1941Implemented _CID support for PCI Root Bridge detection. If the _HID does not
1942match the predefined PCI Root Bridge IDs, the _CID list (if present) is now
1943obtained and also checked for an ID match.
1944
1945Implemented additional support for the PCI _ADR execution: upsearch until a
1946device scope is found before executing _ADR. This allows PCI_Config
1947operation regions to be declared locally within control methods underneath
1948PCI device objects.
1949
1950Fixed a problem with a possible race condition between threads executing
1951AcpiWalkNamespace and the AML interpreter. This condition was removed by
1952modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
1953entries created during any concurrent control method execution. An
1954additional namespace race condition is known to exist between
1955AcpiWalkNamespace and the Load/Unload ASL operators and is still under
1956investigation.
1957
1958Restructured the AML ParseLoop function, breaking it into several
1959subfunctions in order to reduce CPU stack use and improve maintainability.
1960(Mikhail Kouzmich)
1961
1962AcpiGetHandle: Fix for parameter validation to detect invalid combinations
1963of prefix handle and pathname. BZ 478
1964
1965Example Code and Data Size: These are the sizes for the OS-independent
1966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1967debug version of the code includes the debug output trace mechanism and has
1968a much larger code and data size.
1969
1970  Previous Release:
1971    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1972    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
1973  Current Release:
1974    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1975    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1976
19772) iASL Compiler/Disassembler and Tools:
1978
1979Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager
1980to restore original behavior.
1981
1982----------------------------------------
198327 September 2006. Summary of changes for version 20060927:
1984
19851) ACPI CA Core Subsystem:
1986
1987Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
1988These functions now use a spinlock for mutual exclusion and the interrupt
1989level indication flag is not needed.
1990
1991Fixed a problem with the Global Lock where the lock could appear to be
1992obtained before it is actually obtained. The global lock semaphore was
1993inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
1994Suietov.
1995
1996Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during
1997a read from a buffer or region field. (BZ 458) Fiodor Suietov.
1998
1999Example Code and Data Size: These are the sizes for the OS-independent
2000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2001debug version of the code includes the debug output trace mechanism and has
2002a much larger code and data size.
2003
2004  Previous Release:
2005    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2006    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
2007  Current Release:
2008    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2009    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
2010
2011
20122) iASL Compiler/Disassembler and Tools:
2013
2014Fixed a compilation problem with the pre-defined Resource Descriptor field
2015names where an "object does not exist" error could be incorrectly generated
2016if the parent ResourceTemplate pathname places the template within a
2017different namespace scope than the current scope. (BZ 7212)
2018
2019Fixed a problem where the compiler could hang after syntax errors detected
2020in an ElseIf construct. (BZ 453)
2021
2022Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
2023operator. An incorrect output filename was produced when this parameter was
2024a null string (""). Now, the original input filename is used as the AML
2025output filename, with an ".aml" extension.
2026
2027Implemented a generic batch command mode for the AcpiExec utility (execute
2028any AML debugger command) (Valery Podrezov).
2029
2030----------------------------------------
203112 September 2006. Summary of changes for version 20060912:
2032
20331) ACPI CA Core Subsystem:
2034
2035Enhanced the implementation of the "serialized mode" of the interpreter
2036(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
2037specified, instead of creating a serialization semaphore per control method,
2038the interpreter lock is simply no longer released before a blocking
2039operation during control method execution. This effectively makes the AML
2040Interpreter single-threaded. The overhead of a semaphore per-method is
2041eliminated.
2042
2043Fixed a regression where an error was no longer emitted if a control method
2044attempts to create 2 objects of the same name. This once again returns
2045AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that
2046will dynamically serialize the control method to possible prevent future
2047errors. (BZ 440)
2048
2049Integrated a fix for a problem with PCI Express HID detection in the PCI
2050Config Space setup procedure. (BZ 7145)
2051
2052Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
2053AcpiHwInitialize function - the FADT registers are now validated when the
2054table is loaded.
2055
2056Added two new warnings during FADT verification - 1) if the FADT is larger
2057than the largest known FADT version, and 2) if there is a mismatch between a
205832-bit block address and the 64-bit X counterpart (when both are non-zero.)
2059
2060Example Code and Data Size: These are the sizes for the OS-independent
2061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2062debug version of the code includes the debug output trace mechanism and has
2063a much larger code and data size.
2064
2065  Previous Release:
2066    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
2067    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
2068  Current Release:
2069    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2070    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
2071
2072
20732) iASL Compiler/Disassembler and Tools:
2074
2075Fixed a problem with the implementation of the Switch() operator where the
2076temporary variable was declared too close to the actual Switch, instead of
2077at method level. This could cause a problem if the Switch() operator is
2078within a while loop, causing an error on the second iteration. (BZ 460)
2079
2080Disassembler - fix for error emitted for unknown type for target of scope
2081operator. Now, ignore it and continue.
2082
2083Disassembly of an FADT now verifies the input FADT and reports any errors
2084found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
2085
2086Disassembly of raw data buffers with byte initialization data now prefixes
2087each output line with the current buffer offset.
2088
2089Disassembly of ASF! table now includes all variable-length data fields at
2090the end of some of the subtables.
2091
2092The disassembler now emits a comment if a buffer appears to be a
2093ResourceTemplate, but cannot be disassembled as such because the EndTag does
2094not appear at the very end of the buffer.
2095
2096AcpiExec - Added the "-t" command line option to enable the serialized mode
2097of the AML interpreter.
2098
2099----------------------------------------
210031 August 2006. Summary of changes for version 20060831:
2101
21021) ACPI CA Core Subsystem:
2103
2104Miscellaneous fixes for the Table Manager:
2105- Correctly initialize internal common FADT for all 64-bit "X" fields
2106- Fixed a couple table mapping issues during table load
2107- Fixed a couple alignment issues for IA64
2108- Initialize input array to zero in AcpiInitializeTables
2109- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
2110AcpiGetTableByIndex
2111
2112Change for GPE support: when a "wake" GPE is received, all wake GPEs are now
2113immediately disabled to prevent the waking GPE from firing again and to
2114prevent other wake GPEs from interrupting the wake process.
2115
2116Added the AcpiGpeCount global that tracks the number of processed GPEs, to
2117be used for debugging systems with a large number of ACPI interrupts.
2118
2119Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
2120both the ACPICA headers and the disassembler.
2121
2122Example Code and Data Size: These are the sizes for the OS-independent
2123acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2124debug version of the code includes the debug output trace mechanism and has
2125a much larger code and data size.
2126
2127  Previous Release:
2128    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
2129    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
2130  Current Release:
2131    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
2132    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
2133
2134
21352) iASL Compiler/Disassembler and Tools:
2136
2137Disassembler support for the DMAR ACPI table.
2138
2139----------------------------------------
214023 August 2006. Summary of changes for version 20060823:
2141
21421) ACPI CA Core Subsystem:
2143
2144The Table Manager component has been completely redesigned and
2145reimplemented. The new design is much simpler, and reduces the overall code
2146and data size of the kernel-resident ACPICA by approximately 5%. Also, it is
2147now possible to obtain the ACPI tables very early during kernel
2148initialization, even before dynamic memory management is initialized.
2149(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
2150
2151Obsolete ACPICA interfaces:
2152
2153- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init
2154time).
2155- AcpiLoadTable: Not needed.
2156- AcpiUnloadTable: Not needed.
2157
2158New ACPICA interfaces:
2159
2160- AcpiInitializeTables: Must be called before the table manager can be used.
2161- AcpiReallocateRootTable: Used to transfer the root table to dynamically
2162allocated memory after it becomes available.
2163- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
2164in the RSDT/XSDT.
2165
2166Other ACPICA changes:
2167
2168- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use
2169AcpiOsUnmapMemory to free this mapping.
2170- AcpiGetTable returns the actual mapped table. The mapping is managed
2171internally and must not be deleted by the caller. Use of this interface
2172causes no additional dynamic memory allocation.
2173- AcpiFindRootPointer: Support for physical addressing has been eliminated,
2174it appeared to be unused.
2175- The interface to AcpiOsMapMemory has changed to be consistent with the
2176other allocation interfaces.
2177- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary
2178parameters.
2179- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
2180bit platforms. Was previously 64 bits on all platforms.
2181- The interface to the ACPI Global Lock acquire/release macros have changed
2182slightly since ACPICA no longer keeps a local copy of the FACS with a
2183constructed pointer to the actual global lock.
2184
2185Porting to the new table manager:
2186
2187- AcpiInitializeTables: Must be called once, and can be called anytime
2188during the OS initialization process. It allows the host to specify an area
2189of memory to be used to store the internal version of the RSDT/XSDT (root
2190table). This allows the host to access ACPI tables before memory management
2191is initialized and running.
2192- AcpiReallocateRootTable: Can be called after memory management is running
2193to copy the root table to a dynamically allocated array, freeing up the
2194scratch memory specified in the call to AcpiInitializeTables.
2195- AcpiSubsystemInitialize: This existing interface is independent of the
2196Table Manager, and does not have to be called before the Table Manager can
2197be used, it only must be called before the rest of ACPICA can be used.
2198- ACPI Tables: Some changes have been made to the names and structure of the
2199actbl.h and actbl1.h header files and may require changes to existing code.
2200For example, bitfields have been completely removed because of their lack of
2201portability across C compilers.
2202- Update interfaces to the Global Lock acquire/release macros if local
2203versions are used. (see acwin.h)
2204
2205Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
2206
2207New files: tbfind.c
2208
2209Example Code and Data Size: These are the sizes for the OS-independent
2210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2211debug version of the code includes the debug output trace mechanism and has
2212a much larger code and data size.
2213
2214  Previous Release:
2215    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2216    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2217  Current Release:
2218    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
2219    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
2220
2221
22222) iASL Compiler/Disassembler and Tools:
2223
2224No changes for this release.
2225
2226----------------------------------------
222721 July 2006. Summary of changes for version 20060721:
2228
22291) ACPI CA Core Subsystem:
2230
2231The full source code for the ASL test suite used to validate the iASL
2232compiler and the ACPICA core subsystem is being released with the ACPICA
2233source for the first time. The source is contained in a separate package and
2234consists of over 1100 files that exercise all ASL/AML operators. The package
2235should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
2236Suietov)
2237
2238Completed a new design and implementation for support of the ACPI Global
2239Lock. On the OS side, the global lock is now treated as a standard AML
2240mutex. Previously, multiple OS threads could "acquire" the global lock
2241simultaneously. However, this could cause the BIOS to be starved out of the
2242lock - especially in cases such as the Embedded Controller driver where
2243there is a tight coupling between the OS and the BIOS.
2244
2245Implemented an optimization for the ACPI Global Lock interrupt mechanism.
2246The Global Lock interrupt handler no longer queues the execution of a
2247separate thread to signal the global lock semaphore. Instead, the semaphore
2248is signaled directly from the interrupt handler.
2249
2250Implemented support within the AML interpreter for package objects that
2251contain a larger AML length (package list length) than the package element
2252count. In this case, the length of the package is truncated to match the
2253package element count. Some BIOS code apparently modifies the package length
2254on the fly, and this change supports this behavior. Provides compatibility
2255with the MS AML interpreter. (With assistance from Fiodor Suietov)
2256
2257Implemented a temporary fix for the BankValue parameter of a Bank Field to
2258support all constant values, now including the Zero and One opcodes.
2259Evaluation of this parameter must eventually be converted to a full TermArg
2260evaluation. A not-implemented error is now returned (temporarily) for non-
2261constant values for this parameter.
2262
2263Fixed problem reports (Fiodor Suietov) integrated:
2264- Fix for premature object deletion after CopyObject on Operation Region (BZ
2265350)
2266
2267Example Code and Data Size: These are the sizes for the OS-independent
2268acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2269debug version of the code includes the debug output trace mechanism and has
2270a much larger code and data size.
2271
2272  Previous Release:
2273    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
2274    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
2275  Current Release:
2276    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2277    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2278
2279
22802) iASL Compiler/Disassembler and Tools:
2281
2282No changes for this release.
2283
2284----------------------------------------
228507 July 2006. Summary of changes for version 20060707:
2286
22871) ACPI CA Core Subsystem:
2288
2289Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
2290that do not allow the initialization of address pointers within packed
2291structures - even though the hardware itself may support misaligned
2292transfers. Some of the debug data structures are packed by default to
2293minimize size.
2294
2295Added an error message for the case where AcpiOsGetThreadId() returns zero.
2296A non-zero value is required by the core ACPICA code to ensure the proper
2297operation of AML mutexes and recursive control methods.
2298
2299The DSDT is now the only ACPI table that determines whether the AML
2300interpreter is in 32-bit or 64-bit mode. Not really a functional change, but
2301the hooks for per-table 32/64 switching have been removed from the code. A
2302clarification to the ACPI specification is forthcoming in ACPI 3.0B.
2303
2304Fixed a possible leak of an OwnerID in the error path of
2305AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
2306deletion to a single place in AcpiTbUninstallTable to correct possible leaks
2307when using the AcpiTbDeleteTablesByType interface (with assistance from
2308Lance Ortiz.)
2309
2310Fixed a problem with Serialized control methods where the semaphore
2311associated with the method could be over-signaled after multiple method
2312invocations.
2313
2314Fixed two issues with the locking of the internal namespace data structure.
2315Both the Unload() operator and AcpiUnloadTable interface now lock the
2316namespace during the namespace deletion associated with the table unload
2317(with assistance from Linn Crosetto.)
2318
2319Fixed problem reports (Valery Podrezov) integrated:
2320- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
2321
2322Fixed problem reports (Fiodor Suietov) integrated:
2323- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
2324- On Address Space handler deletion, needless deactivation call (BZ 374)
2325- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
2326- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone
2327(BZ 376)
2328- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
2329- Minimum Length of RSDT should be validated (BZ 379)
2330- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
2331Handler (BZ (380)
2332- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded
2333(BZ 381)
2334
2335Example Code and Data Size: These are the sizes for the OS-independent
2336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2337debug version of the code includes the debug output trace mechanism and has
2338a much larger code and data size.
2339
2340  Previous Release:
2341    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2342    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2343  Current Release:
2344    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2345    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2346
2347
23482) iASL Compiler/Disassembler and Tools:
2349
2350Fixed problem reports:
2351Compiler segfault when ASL contains a long (>1024) String declaration (BZ
2352436)
2353
2354----------------------------------------
235523 June 2006. Summary of changes for version 20060623:
2356
23571) ACPI CA Core Subsystem:
2358
2359Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
2360allows the type to be customized to the host OS for improved efficiency
2361(since a spinlock is usually a very small object.)
2362
2363Implemented support for "ignored" bits in the ACPI registers. According to
2364the ACPI specification, these bits should be preserved when writing the
2365registers via a read/modify/write cycle. There are 3 bits preserved in this
2366manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
2367
2368Implemented the initial deployment of new OSL mutex interfaces. Since some
2369host operating systems have separate mutex and semaphore objects, this
2370feature was requested. The base code now uses mutexes (and the new mutex
2371interfaces) wherever a binary semaphore was used previously. However, for
2372the current release, the mutex interfaces are defined as macros to map them
2373to the existing semaphore interfaces. Therefore, no OSL changes are required
2374at this time. (See acpiosxf.h)
2375
2376Fixed several problems with the support for the control method SyncLevel
2377parameter. The SyncLevel now works according to the ACPI specification and
2378in concert with the Mutex SyncLevel parameter, since the current SyncLevel
2379is a property of the executing thread. Mutual exclusion for control methods
2380is now implemented with a mutex instead of a semaphore.
2381
2382Fixed three instances of the use of the C shift operator in the bitfield
2383support code (exfldio.c) to avoid the use of a shift value larger than the
2384target data width. The behavior of C compilers is undefined in this case and
2385can cause unpredictable results, and therefore the case must be detected and
2386avoided. (Fiodor Suietov)
2387
2388Added an info message whenever an SSDT or OEM table is loaded dynamically
2389via the Load() or LoadTable() ASL operators. This should improve debugging
2390capability since it will show exactly what tables have been loaded (beyond
2391the tables present in the RSDT/XSDT.)
2392
2393Example Code and Data Size: These are the sizes for the OS-independent
2394acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2395debug version of the code includes the debug output trace mechanism and has
2396a much larger code and data size.
2397
2398  Previous Release:
2399    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2400    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2401  Current Release:
2402    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2403    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2404
2405
24062) iASL Compiler/Disassembler and Tools:
2407
2408No changes for this release.
2409
2410----------------------------------------
241108 June 2006. Summary of changes for version 20060608:
2412
24131) ACPI CA Core Subsystem:
2414
2415Converted the locking mutex used for the ACPI hardware to a spinlock. This
2416change should eliminate all problems caused by attempting to acquire a
2417semaphore at interrupt level, and it means that all ACPICA external
2418interfaces that directly access the ACPI hardware can be safely called from
2419interrupt level. OSL code that implements the semaphore interfaces should be
2420able to eliminate any workarounds for being called at interrupt level.
2421
2422Fixed a regression introduced in 20060526 where the ACPI device
2423initialization could be prematurely aborted with an AE_NOT_FOUND if a device
2424did not have an optional _INI method.
2425
2426Fixed an IndexField issue where a write to the Data Register should be
2427limited in size to the AccessSize (width) of the IndexField itself. (BZ 433,
2428Fiodor Suietov)
2429
2430Fixed problem reports (Valery Podrezov) integrated:
2431- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
2432
2433Fixed problem reports (Fiodor Suietov) integrated:
2434- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
2435
2436Removed four global mutexes that were obsolete and were no longer being
2437used.
2438
2439Example Code and Data Size: These are the sizes for the OS-independent
2440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2441debug version of the code includes the debug output trace mechanism and has
2442a much larger code and data size.
2443
2444  Previous Release:
2445    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2446    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2447  Current Release:
2448    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2449    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2450
2451
24522) iASL Compiler/Disassembler and Tools:
2453
2454Fixed a fault when using -g option (get tables from registry) on Windows
2455machines.
2456
2457Fixed problem reports integrated:
2458- Generate error if CreateField NumBits parameter is zero. (BZ 405)
2459- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
2460Suietov)
2461- Global table revision override (-r) is ignored (BZ 413)
2462
2463----------------------------------------
246426 May 2006. Summary of changes for version 20060526:
2465
24661) ACPI CA Core Subsystem:
2467
2468Restructured, flattened, and simplified the internal interfaces for
2469namespace object evaluation - resulting in smaller code, less CPU stack use,
2470and fewer interfaces. (With assistance from Mikhail Kouzmich)
2471
2472Fixed a problem with the CopyObject operator where the first parameter was
2473not typed correctly for the parser, interpreter, compiler, and disassembler.
2474Caused various errors and unexpected behavior.
2475
2476Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
2477produced incorrect results with some C compilers. Since the behavior of C
2478compilers when the shift value is larger than the datatype width is
2479apparently not well defined, the interpreter now detects this condition and
2480simply returns zero as expected in all such cases. (BZ 395)
2481
2482Fixed problem reports (Valery Podrezov) integrated:
2483- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
2484- Allow interpreter to handle nested method declarations (BZ 5361)
2485
2486Fixed problem reports (Fiodor Suietov) integrated:
2487- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
2488- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
2489- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
2490- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
2491- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
2492- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
2493- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
2494- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
2495- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
2496- Status of the Global Initialization Handler call not used (BZ 366)
2497- Incorrect object parameter to Global Initialization Handler (BZ 367)
2498
2499Example Code and Data Size: These are the sizes for the OS-independent
2500acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2501debug version of the code includes the debug output trace mechanism and has
2502a much larger code and data size.
2503
2504  Previous Release:
2505    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2506    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2507  Current Release:
2508    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2509    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2510
2511
25122) iASL Compiler/Disassembler and Tools:
2513
2514Modified the parser to allow the names IO, DMA, and IRQ to be used as
2515namespace identifiers with no collision with existing resource descriptor
2516macro names. This provides compatibility with other ASL compilers and is
2517most useful for disassembly/recompilation of existing tables without parse
2518errors. (With assistance from Thomas Renninger)
2519
2520Disassembler: fixed an incorrect disassembly problem with the
2521DataTableRegion and CopyObject operators. Fixed a possible fault during
2522disassembly of some Alias operators.
2523
2524----------------------------------------
252512 May 2006. Summary of changes for version 20060512:
2526
25271) ACPI CA Core Subsystem:
2528
2529Replaced the AcpiOsQueueForExecution interface with a new interface named
2530AcpiOsExecute. The major difference is that the new interface does not have
2531a Priority parameter, this appeared to be useless and has been replaced by a
2532Type parameter. The Type tells the host what type of execution is being
2533requested, such as global lock handler, notify handler, GPE handler, etc.
2534This allows the host to queue and execute the request as appropriate for the
2535request type, possibly using different work queues and different priorities
2536for the various request types. This enables fixes for multithreading
2537deadlock problems such as BZ #5534, and will require changes to all existing
2538OS interface layers. (Alexey Starikovskiy and Bob Moore)
2539
2540Fixed a possible memory leak associated with the support for the so-called
2541"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
2542Suietov)
2543
2544Fixed a problem with the Load() operator where a table load from an
2545operation region could overwrite an internal table buffer by up to 7 bytes
2546and cause alignment faults on IPF systems. (With assistance from Luming Yu)
2547
2548Example Code and Data Size: These are the sizes for the OS-independent
2549acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2550debug version of the code includes the debug output trace mechanism and has
2551a much larger code and data size.
2552
2553  Previous Release:
2554    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
2555    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
2556  Current Release:
2557    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2558    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2559
2560
2561
25622) iASL Compiler/Disassembler and Tools:
2563
2564Disassembler: Implemented support to cross reference the internal namespace
2565and automatically generate ASL External() statements for symbols not defined
2566within the current table being disassembled. This will simplify the
2567disassembly and recompilation of interdependent tables such as SSDTs since
2568these statements will no longer have to be added manually.
2569
2570Disassembler: Implemented experimental support to automatically detect
2571invocations of external control methods and generate appropriate External()
2572statements. This is problematic because the AML cannot be correctly parsed
2573until the number of arguments for each control method is known. Currently,
2574standalone method invocations and invocations as the source operand of a
2575Store() statement are supported.
2576
2577Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
2578LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
2579LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
2580more readable and likely closer to the original ASL source.
2581
2582----------------------------------------
258321 April 2006. Summary of changes for version 20060421:
2584
25851) ACPI CA Core Subsystem:
2586
2587Removed a device initialization optimization introduced in 20051216 where
2588the _STA method was not run unless an _INI was also present for the same
2589device. This optimization could cause problems because it could allow _INI
2590methods to be run within a not-present device subtree. (If a not-present
2591device had no _INI, _STA would not be run, the not-present status would not
2592be discovered, and the children of the device would be incorrectly
2593traversed.)
2594
2595Implemented a new _STA optimization where namespace subtrees that do not
2596contain _INI are identified and ignored during device initialization.
2597Selectively running _STA can significantly improve boot time on large
2598machines (with assistance from Len Brown.)
2599
2600Implemented support for the device initialization case where the returned
2601_STA flags indicate a device not-present but functioning. In this case, _INI
2602is not run, but the device children are examined for presence, as per the
2603ACPI specification.
2604
2605Implemented an additional change to the IndexField support in order to
2606conform to MS behavior. The value written to the Index Register is not
2607simply a byte offset, it is a byte offset in units of the access width of
2608the parent Index Field. (Fiodor Suietov)
2609
2610Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
2611interface is called during the creation of all AML operation regions, and
2612allows the host OS to exert control over what addresses it will allow the
2613AML code to access. Operation Regions whose addresses are disallowed will
2614cause a runtime exception when they are actually accessed (will not affect
2615or abort table loading.) See oswinxf or osunixxf for an example
2616implementation.
2617
2618Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
2619interface allows the host OS to match the various "optional"
2620interface/behavior strings for the _OSI predefined control method as
2621appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
2622for an example implementation.
2623
2624Restructured and corrected various problems in the exception handling code
2625paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
2626(with assistance from Takayoshi Kochi.)
2627
2628Modified the Linux source converter to ignore quoted string literals while
2629converting identifiers from mixed to lower case. This will correct problems
2630with the disassembler and other areas where such strings must not be
2631modified.
2632
2633The ACPI_FUNCTION_* macros no longer require quotes around the function
2634name. This allows the Linux source converter to convert the names, now that
2635the converter ignores quoted strings.
2636
2637Example Code and Data Size: These are the sizes for the OS-independent
2638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2639debug version of the code includes the debug output trace mechanism and has
2640a much larger code and data size.
2641
2642  Previous Release:
2643
2644    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
2645    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
2646  Current Release:
2647    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
2648    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
2649
2650
26512) iASL Compiler/Disassembler and Tools:
2652
2653Implemented 3 new warnings for iASL, and implemented multiple warning levels
2654(w2 flag).
2655
26561) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not
2657WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
2658check for the possible timeout, a warning is issued.
2659
26602) Useless operators: If an ASL operator does not specify an optional target
2661operand and it also does not use the function return value from the
2662operator, a warning is issued since the operator effectively does nothing.
2663
26643) Unreferenced objects: If a namespace object is created, but never
2665referenced, a warning is issued. This is a warning level 2 since there are
2666cases where this is ok, such as when a secondary table is loaded that uses
2667the unreferenced objects. Even so, care is taken to only flag objects that
2668don't look like they will ever be used. For example, the reserved methods
2669(starting with an underscore) are usually not referenced because it is
2670expected that the OS will invoke them.
2671
2672----------------------------------------
267331 March 2006. Summary of changes for version 20060331:
2674
26751) ACPI CA Core Subsystem:
2676
2677Implemented header file support for the following additional ACPI tables:
2678ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support,
2679all current and known ACPI tables are now defined in the ACPICA headers and
2680are available for use by device drivers and other software.
2681
2682Implemented support to allow tables that contain ACPI names with invalid
2683characters to be loaded. Previously, this would cause the table load to
2684fail, but since there are several known cases of such tables on existing
2685machines, this change was made to enable ACPI support for them. Also, this
2686matches the behavior of the Microsoft ACPI implementation.
2687
2688Fixed a couple regressions introduced during the memory optimization in the
268920060317 release. The namespace node definition required additional
2690reorganization and an internal datatype that had been changed to 8-bit was
2691restored to 32-bit. (Valery Podrezov)
2692
2693Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
2694could be passed through to AcpiOsReleaseObject which is unexpected. Such
2695null pointers are now trapped and ignored, matching the behavior of the
2696previous implementation before the deployment of AcpiOsReleaseObject.
2697(Valery Podrezov, Fiodor Suietov)
2698
2699Fixed a memory mapping leak during the deletion of a SystemMemory operation
2700region where a cached memory mapping was not deleted. This became a
2701noticeable problem for operation regions that are defined within frequently
2702used control methods. (Dana Meyers)
2703
2704Reorganized the ACPI table header files into two main files: one for the
2705ACPI tables consumed by the ACPICA core, and another for the miscellaneous
2706ACPI tables that are consumed by the drivers and other software. The various
2707FADT definitions were merged into one common section and three different
2708tables (ACPI 1.0, 1.0+, and 2.0)
2709
2710Example Code and Data Size: These are the sizes for the OS-independent
2711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2712debug version of the code includes the debug output trace mechanism and has
2713a much larger code and data size.
2714
2715  Previous Release:
2716    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
2717    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
2718  Current Release:
2719    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
2720    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
2721
2722
27232) iASL Compiler/Disassembler and Tools:
2724
2725Disassembler: Implemented support to decode and format all non-AML ACPI
2726tables (tables other than DSDTs and SSDTs.) This includes the new tables
2727added to the ACPICA headers, therefore all current and known ACPI tables are
2728supported.
2729
2730Disassembler: The change to allow ACPI names with invalid characters also
2731enables the disassembly of such tables. Invalid characters within names are
2732changed to '*' to make the name printable; the iASL compiler will still
2733generate an error for such names, however, since this is an invalid ACPI
2734character.
2735
2736Implemented an option for AcpiXtract (-a) to extract all tables found in the
2737input file. The default invocation extracts only the DSDTs and SSDTs.
2738
2739Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
2740makefile for the AcpiXtract utility.
2741
2742----------------------------------------
274317 March 2006. Summary of changes for version 20060317:
2744
27451) ACPI CA Core Subsystem:
2746
2747Implemented the use of a cache object for all internal namespace nodes.
2748Since there are about 1000 static nodes in a typical system, this will
2749decrease memory use for cache implementations that minimize per-allocation
2750overhead (such as a slab allocator.)
2751
2752Removed the reference count mechanism for internal namespace nodes, since it
2753was deemed unnecessary. This reduces the size of each namespace node by
2754about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
2755and 32 bytes for the 64-bit case.
2756
2757Optimized several internal data structures to reduce object size on 64-bit
2758platforms by packing data within the 64-bit alignment. This includes the
2759frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
2760instances corresponding to the namespace objects.
2761
2762Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
2763and "Windows 2006".
2764
2765Split the allocation tracking mechanism out to a separate file, from
2766utalloc.c to uttrack.c. This mechanism appears to be only useful for
2767application-level code. Kernels may wish to not include uttrack.c in
2768distributions.
2769
2770Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated
2771code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
2772macros.)
2773
2774Code and Data Size: These are the sizes for the acpica.lib produced by the
2775Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
2776driver or OSPM code. The debug version of the code includes the debug output
2777trace mechanism and has a much larger code and data size. Note that these
2778values will vary depending on the efficiency of the compiler and the
2779compiler options used during generation.
2780
2781  Previous Release:
2782    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2783    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
2784  Current Release:
2785    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
2786    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
2787
2788
27892) iASL Compiler/Disassembler and Tools:
2790
2791Implemented an ANSI C version of the acpixtract utility. This version will
2792automatically extract the DSDT and all SSDTs from the input acpidump text
2793file and dump the binary output to separate files. It can also display a
2794summary of the input file including the headers for each table found and
2795will extract any single ACPI table, with any signature. (See
2796source/tools/acpixtract)
2797
2798----------------------------------------
279910 March 2006. Summary of changes for version 20060310:
2800
28011) ACPI CA Core Subsystem:
2802
2803Tagged all external interfaces to the subsystem with the new
2804ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
2805kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
2806macro. The default definition is NULL.
2807
2808Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
2809This allows the host to define this as necessary to simplify kernel
2810integration. The default definition is ACPI_NATIVE_UINT.
2811
2812Fixed two interpreter problems related to error processing, the deletion of
2813objects, and placing invalid pointers onto the internal operator result
2814stack. BZ 6028, 6151 (Valery Podrezov)
2815
2816Increased the reference count threshold where a warning is emitted for large
2817reference counts in order to eliminate unnecessary warnings on systems with
2818large namespaces (especially 64-bit.) Increased the value from 0x400 to
28190x800.
2820
2821Due to universal disagreement as to the meaning of the 'c' in the calloc()
2822function, the ACPI_MEM_CALLOCATE macro has been renamed to
2823ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
2824ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
2825ACPI_FREE.
2826
2827Code and Data Size: These are the sizes for the acpica.lib produced by the
2828Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
2829driver or OSPM code. The debug version of the code includes the debug output
2830trace mechanism and has a much larger code and data size. Note that these
2831values will vary depending on the efficiency of the compiler and the
2832compiler options used during generation.
2833
2834  Previous Release:
2835    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
2836    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
2837  Current Release:
2838    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2839    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
2840
2841
28422) iASL Compiler/Disassembler:
2843
2844Disassembler: implemented support for symbolic resource descriptor
2845references. If a CreateXxxxField operator references a fixed offset within a
2846resource descriptor, a name is assigned to the descriptor and the offset is
2847translated to the appropriate resource tag and pathname. The addition of
2848this support brings the disassembled code very close to the original ASL
2849source code and helps eliminate run-time errors when the disassembled code
2850is modified (and recompiled) in such a way as to invalidate the original
2851fixed offsets.
2852
2853Implemented support for a Descriptor Name as the last parameter to the ASL
2854Register() macro. This parameter was inadvertently left out of the ACPI
2855specification, and will be added for ACPI 3.0b.
2856
2857Fixed a problem where the use of the "_OSI" string (versus the full path
2858"\_OSI") caused an internal compiler error. ("No back ptr to op")
2859
2860Fixed a problem with the error message that occurs when an invalid string is
2861used for a _HID object (such as one with an embedded asterisk: "*PNP010A".)
2862The correct message is now displayed.
2863
2864----------------------------------------
286517 February 2006. Summary of changes for version 20060217:
2866
28671) ACPI CA Core Subsystem:
2868
2869Implemented a change to the IndexField support to match the behavior of the
2870Microsoft AML interpreter. The value written to the Index register is now a
2871byte offset, no longer an index based upon the width of the Data register.
2872This should fix IndexField problems seen on some machines where the Data
2873register is not exactly one byte wide. The ACPI specification will be
2874clarified on this point.
2875
2876Fixed a problem where several resource descriptor types could overrun the
2877internal descriptor buffer due to size miscalculation: VendorShort,
2878VendorLong, and Interrupt. This was noticed on IA64 machines, but could
2879affect all platforms.
2880
2881Fixed a problem where individual resource descriptors were misaligned within
2882the internal buffer, causing alignment faults on IA64 platforms.
2883
2884Code and Data Size: These are the sizes for the acpica.lib produced by the
2885Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
2886driver or OSPM code. The debug version of the code includes the debug output
2887trace mechanism and has a much larger code and data size. Note that these
2888values will vary depending on the efficiency of the compiler and the
2889compiler options used during generation.
2890
2891  Previous Release:
2892    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2893    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2894  Current Release:
2895    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
2896    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
2897
2898
28992) iASL Compiler/Disassembler:
2900
2901Implemented support for new reserved names: _WDG and _WED are Microsoft
2902extensions for Windows Instrumentation Management, _TDL is a new ACPI-
2903defined method (Throttling Depth Limit.)
2904
2905Fixed a problem where a zero-length VendorShort or VendorLong resource
2906descriptor was incorrectly emitted as a descriptor of length one.
2907
2908----------------------------------------
290910 February 2006. Summary of changes for version 20060210:
2910
29111) ACPI CA Core Subsystem:
2912
2913Removed a couple of extraneous ACPI_ERROR messages that appeared during
2914normal execution. These became apparent after the conversion from
2915ACPI_DEBUG_PRINT.
2916
2917Fixed a problem where the CreateField operator could hang if the BitIndex or
2918NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
2919
2920Fixed a problem where a DeRefOf operation on a buffer object incorrectly
2921failed with an exception. This also fixes a couple of related RefOf and
2922DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
2923
2924Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of
2925AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ
29265480)
2927
2928Implemented a memory cleanup at the end of the execution of each iteration
2929of an AML While() loop, preventing the accumulation of outstanding objects.
2930(Valery Podrezov, BZ 5427)
2931
2932Eliminated a chunk of duplicate code in the object resolution code. (Valery
2933Podrezov, BZ 5336)
2934
2935Fixed several warnings during the 64-bit code generation.
2936
2937The AcpiSrc source code conversion tool now inserts one line of whitespace
2938after an if() statement that is followed immediately by a comment, improving
2939readability of the Linux code.
2940
2941Code and Data Size: The current and previous library sizes for the core
2942subsystem are shown below. These are the code and data sizes for the
2943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2944values do not include any ACPI driver or OSPM code. The debug version of the
2945code includes the debug output trace mechanism and has a much larger code
2946and data size. Note that these values will vary depending on the efficiency
2947of the compiler and the compiler options used during generation.
2948
2949  Previous Release:
2950    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
2951    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
2952  Current Release:
2953    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2954    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2955
2956
29572) iASL Compiler/Disassembler:
2958
2959Fixed a problem with the disassembly of a BankField operator with a complex
2960expression for the BankValue parameter.
2961
2962----------------------------------------
296327 January 2006. Summary of changes for version 20060127:
2964
29651) ACPI CA Core Subsystem:
2966
2967Implemented support in the Resource Manager to allow unresolved namestring
2968references within resource package objects for the _PRT method. This support
2969is in addition to the previously implemented unresolved reference support
2970within the AML parser. If the interpreter slack mode is enabled, these
2971unresolved references will be passed through to the caller as a NULL package
2972entry.
2973
2974Implemented and deployed new macros and functions for error and warning
2975messages across the subsystem. These macros are simpler and generate less
2976code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
2977ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
2978macros remain defined to allow ACPI drivers time to migrate to the new
2979macros.
2980
2981Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
2982Acquire/Release Lock OSL interfaces.
2983
2984Fixed a problem where Alias ASL operators are sometimes not correctly
2985resolved, in both the interpreter and the iASL compiler.
2986
2987Fixed several problems with the implementation of the ConcatenateResTemplate
2988ASL operator. As per the ACPI specification, zero length buffers are now
2989treated as a single EndTag. One-length buffers always cause a fatal
2990exception. Non-zero length buffers that do not end with a full 2-byte EndTag
2991cause a fatal exception.
2992
2993Fixed a possible structure overwrite in the AcpiGetObjectInfo external
2994interface. (With assistance from Thomas Renninger)
2995
2996Code and Data Size: The current and previous library sizes for the core
2997subsystem are shown below. These are the code and data sizes for the
2998acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2999values do not include any ACPI driver or OSPM code. The debug version of the
3000code includes the debug output trace mechanism and has a much larger code
3001and data size. Note that these values will vary depending on the efficiency
3002of the compiler and the compiler options used during generation.
3003
3004  Previous Release:
3005    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
3006    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
3007  Current Release:
3008    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
3009    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
3010
3011
30122) iASL Compiler/Disassembler:
3013
3014Fixed an internal error that was generated for any forward references to ASL
3015Alias objects.
3016
3017----------------------------------------
301813 January 2006. Summary of changes for version 20060113:
3019
30201) ACPI CA Core Subsystem:
3021
3022Added 2006 copyright to all module headers and signons. This affects
3023virtually every file in the ACPICA core subsystem, iASL compiler, and the
3024utilities.
3025
3026Enhanced the ACPICA error reporting in order to simplify user migration to
3027the non-debug version of ACPICA. Replaced all instances of the
3028ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
3029levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
3030respectively. This preserves all error and warning messages in the non-debug
3031version of the ACPICA code (this has been referred to as the "debug lite"
3032option.) Over 200 cases were converted to create a total of over 380
3033error/warning messages across the ACPICA code. This increases the code and
3034data size of the default non-debug version of the code somewhat (about 13K),
3035but all error/warning reporting may be disabled if desired (and code
3036eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
3037configuration option. The size of the debug version of ACPICA remains about
3038the same.
3039
3040Fixed a memory leak within the AML Debugger "Set" command. One object was
3041not properly deleted for every successful invocation of the command.
3042
3043Code and Data Size: The current and previous library sizes for the core
3044subsystem are shown below. These are the code and data sizes for the
3045acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3046values do not include any ACPI driver or OSPM code. The debug version of the
3047code includes the debug output trace mechanism and has a much larger code
3048and data size. Note that these values will vary depending on the efficiency
3049of the compiler and the compiler options used during generation.
3050
3051  Previous Release:
3052    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
3053    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
3054  Current Release:
3055    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
3056    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
3057
3058
30592) iASL Compiler/Disassembler:
3060
3061The compiler now officially supports the ACPI 3.0a specification that was
3062released on December 30, 2005. (Specification is available at www.acpi.info)
3063
3064----------------------------------------
306516 December 2005. Summary of changes for version 20051216:
3066
30671) ACPI CA Core Subsystem:
3068
3069Implemented optional support to allow unresolved names within ASL Package
3070objects. A null object is inserted in the package when a named reference
3071cannot be located in the current namespace. Enabled via the interpreter
3072slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
3073that contain such code.
3074
3075Implemented an optimization to the initialization sequence that can improve
3076boot time. During ACPI device initialization, the _STA method is now run if
3077and only if the _INI method exists. The _STA method is used to determine if
3078the device is present; An _INI can only be run if _STA returns present, but
3079it is a waste of time to run the _STA method if the _INI does not exist.
3080(Prototype and assistance from Dong Wei)
3081
3082Implemented use of the C99 uintptr_t for the pointer casting macros if it is
3083available in the current compiler. Otherwise, the default (void *) cast is
3084used as before.
3085
3086Fixed some possible memory leaks found within the execution path of the
3087Break, Continue, If, and CreateField operators. (Valery Podrezov)
3088
3089Fixed a problem introduced in the 20051202 release where an exception is
3090generated during method execution if a control method attempts to declare
3091another method.
3092
3093Moved resource descriptor string constants that are used by both the AML
3094disassembler and AML debugger to the common utilities directory so that
3095these components are independent.
3096
3097Implemented support in the AcpiExec utility (-e switch) to globally ignore
3098exceptions during control method execution (method is not aborted.)
3099
3100Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
3101generation.
3102
3103Code and Data Size: The current and previous library sizes for the core
3104subsystem are shown below. These are the code and data sizes for the
3105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3106values do not include any ACPI driver or OSPM code. The debug version of the
3107code includes the debug output trace mechanism and has a much larger code
3108and data size. Note that these values will vary depending on the efficiency
3109of the compiler and the compiler options used during generation.
3110
3111  Previous Release:
3112    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3113    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
3114  Current Release:
3115    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
3116    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
3117
3118
31192) iASL Compiler/Disassembler:
3120
3121Fixed a problem where a CPU stack overflow fault could occur if a recursive
3122method call was made from within a Return statement.
3123
3124----------------------------------------
312502 December 2005. Summary of changes for version 20051202:
3126
31271) ACPI CA Core Subsystem:
3128
3129Modified the parsing of control methods to no longer create namespace
3130objects during the first pass of the parse. Objects are now created only
3131during the execute phase, at the moment the namespace creation operator is
3132encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
3133should eliminate ALREADY_EXISTS exceptions seen on some machines where
3134reentrant control methods are protected by an AML mutex. The mutex will now
3135correctly block multiple threads from attempting to create the same object
3136more than once.
3137
3138Increased the number of available Owner Ids for namespace object tracking
3139from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on
3140some machines with a large number of ACPI tables (either static or dynamic).
3141
3142Fixed a problem with the AcpiExec utility where a fault could occur when the
3143-b switch (batch mode) is used.
3144
3145Enhanced the namespace dump routine to output the owner ID for each
3146namespace object.
3147
3148Code and Data Size: The current and previous library sizes for the core
3149subsystem are shown below. These are the code and data sizes for the
3150acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3151values do not include any ACPI driver or OSPM code. The debug version of the
3152code includes the debug output trace mechanism and has a much larger code
3153and data size. Note that these values will vary depending on the efficiency
3154of the compiler and the compiler options used during generation.
3155
3156  Previous Release:
3157    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3158    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3159  Current Release:
3160    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3161    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
3162
3163
31642) iASL Compiler/Disassembler:
3165
3166Fixed a parse error during compilation of certain Switch/Case constructs. To
3167simplify the parse, the grammar now allows for multiple Default statements
3168and this error is now detected and flagged during the analysis phase.
3169
3170Disassembler: The disassembly now includes the contents of the original
3171table header within a comment at the start of the file. This includes the
3172name and version of the original ASL compiler.
3173
3174----------------------------------------
317517 November 2005. Summary of changes for version 20051117:
3176
31771) ACPI CA Core Subsystem:
3178
3179Fixed a problem in the AML parser where the method thread count could be
3180decremented below zero if any errors occurred during the method parse phase.
3181This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines.
3182This also fixed a related regression with the mechanism that detects and
3183corrects methods that cannot properly handle reentrancy (related to the
3184deployment of the new OwnerId mechanism.)
3185
3186Eliminated the pre-parsing of control methods (to detect errors) during
3187table load. Related to the problem above, this was causing unwind issues if
3188any errors occurred during the parse, and it seemed to be overkill. A table
3189load should not be aborted if there are problems with any single control
3190method, thus rendering this feature rather pointless.
3191
3192Fixed a problem with the new table-driven resource manager where an internal
3193buffer overflow could occur for small resource templates.
3194
3195Implemented a new external interface, AcpiGetVendorResource. This interface
3196will find and return a vendor-defined resource descriptor within a _CRS or
3197_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
3198
3199Removed the length limit (200) on string objects as per the upcoming ACPI
32003.0A specification. This affects the following areas of the interpreter: 1)
3201any implicit conversion of a Buffer to a String, 2) a String object result
3202of the ASL Concatentate operator, 3) the String object result of the ASL
3203ToString operator.
3204
3205Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER
3206on a semaphore object would incorrectly timeout. This allows the
3207multithreading features of the AcpiExec utility to work properly under
3208Windows.
3209
3210Updated the Linux makefiles for the iASL compiler and AcpiExec to include
3211the recently added file named "utresrc.c".
3212
3213Code and Data Size: The current and previous library sizes for the core
3214subsystem are shown below. These are the code and data sizes for the
3215acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3216values do not include any ACPI driver or OSPM code. The debug version of the
3217code includes the debug output trace mechanism and has a much larger code
3218and data size. Note that these values will vary depending on the efficiency
3219of the compiler and the compiler options used during generation.
3220
3221  Previous Release:
3222    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3223    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3224  Current Release:
3225    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3226    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3227
3228
32292) iASL Compiler/Disassembler:
3230
3231Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
3232specification. For the iASL compiler, this means that string literals within
3233the source ASL can be of any length.
3234
3235Enhanced the listing output to dump the AML code for resource descriptors
3236immediately after the ASL code for each descriptor, instead of in a block at
3237the end of the entire resource template.
3238
3239Enhanced the compiler debug output to dump the entire original parse tree
3240constructed during the parse phase, before any transforms are applied to the
3241tree. The transformed tree is dumped also.
3242
3243----------------------------------------
324402 November 2005. Summary of changes for version 20051102:
3245
32461) ACPI CA Core Subsystem:
3247
3248Modified the subsystem initialization sequence to improve GPE support. The
3249GPE initialization has been split into two parts in order to defer execution
3250of the _PRW methods (Power Resources for Wake) until after the hardware is
3251fully initialized and the SCI handler is installed. This allows the _PRW
3252methods to access fields protected by the Global Lock. This will fix systems
3253where a NO_GLOBAL_LOCK exception has been seen during initialization.
3254
3255Converted the ACPI internal object disassemble and display code within the
3256AML debugger to fully table-driven operation, reducing code size and
3257increasing maintainability.
3258
3259Fixed a regression with the ConcatenateResTemplate() ASL operator introduced
3260in the 20051021 release.
3261
3262Implemented support for "local" internal ACPI object types within the
3263debugger "Object" command and the AcpiWalkNamespace external interfaces.
3264These local types include RegionFields, BankFields, IndexFields, Alias, and
3265reference objects.
3266
3267Moved common AML resource handling code into a new file, "utresrc.c". This
3268code is shared by both the Resource Manager and the AML Debugger.
3269
3270Code and Data Size: The current and previous library sizes for the core
3271subsystem are shown below. These are the code and data sizes for the
3272acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3273values do not include any ACPI driver or OSPM code. The debug version of the
3274code includes the debug output trace mechanism and has a much larger code
3275and data size. Note that these values will vary depending on the efficiency
3276of the compiler and the compiler options used during generation.
3277
3278  Previous Release:
3279    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3280    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3281  Current Release:
3282    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3283    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3284
3285
32862) iASL Compiler/Disassembler:
3287
3288Fixed a problem with very large initializer lists (more than 4000 elements)
3289for both Buffer and Package objects where the parse stack could overflow.
3290
3291Enhanced the pre-compile source code scan for non-ASCII characters to ignore
3292characters within comment fields. The scan is now always performed and is no
3293longer optional, detecting invalid characters within a source file
3294immediately rather than during the parse phase or later.
3295
3296Enhanced the ASL grammar definition to force early reductions on all list-
3297style grammar elements so that the overall parse stack usage is greatly
3298reduced. This should improve performance and reduce the possibility of parse
3299stack overflow.
3300
3301Eliminated all reduce/reduce conflicts in the iASL parser generation. Also,
3302with the addition of a %expected statement, the compiler generates from
3303source with no warnings.
3304
3305Fixed a possible segment fault in the disassembler if the input filename
3306does not contain a "dot" extension (Thomas Renninger).
3307
3308----------------------------------------
330921 October 2005. Summary of changes for version 20051021:
3310
33111) ACPI CA Core Subsystem:
3312
3313Implemented support for the EM64T and other x86-64 processors. This
3314essentially entails recognizing that these processors support non-aligned
3315memory transfers. Previously, all 64-bit processors were assumed to lack
3316hardware support for non-aligned transfers.
3317
3318Completed conversion of the Resource Manager to nearly full table-driven
3319operation. Specifically, the resource conversion code (convert AML to
3320internal format and the reverse) and the debug code to dump internal
3321resource descriptors are fully table-driven, reducing code and data size and
3322improving maintainability.
3323
3324The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
3325on 64-bit processors instead of a fixed 32-bit word. (With assistance from
3326Alexey Starikovskiy)
3327
3328Implemented support within the resource conversion code for the Type-
3329Specific byte within the various ACPI 3.0 *WordSpace macros.
3330
3331Fixed some issues within the resource conversion code for the type-specific
3332flags for both Memory and I/O address resource descriptors. For Memory,
3333implemented support for the MTP and TTP flags. For I/O, split the TRS and
3334TTP flags into two separate fields.
3335
3336Code and Data Size: The current and previous library sizes for the core
3337subsystem are shown below. These are the code and data sizes for the
3338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3339values do not include any ACPI driver or OSPM code. The debug version of the
3340code includes the debug output trace mechanism and has a much larger code
3341and data size. Note that these values will vary depending on the efficiency
3342of the compiler and the compiler options used during generation.
3343
3344  Previous Release:
3345    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3346    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3347  Current Release:
3348    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3349    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3350
3351
3352
33532) iASL Compiler/Disassembler:
3354
3355Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
3356corresponding ResourceSource string was not also present in a resource
3357descriptor declaration. This restriction caused problems with existing
3358AML/ASL code that includes the Index byte without the string. When such AML
3359was disassembled, it could not be compiled without modification. Further,
3360the modified code created a resource template with a different size than the
3361original, breaking code that used fixed offsets into the resource template
3362buffer.
3363
3364Removed a recent feature of the disassembler to ignore a lone ResourceIndex
3365byte. This byte is now emitted if present so that the exact AML can be
3366reproduced when the disassembled code is recompiled.
3367
3368Improved comments and text alignment for the resource descriptor code
3369emitted by the disassembler.
3370
3371Implemented disassembler support for the ACPI 3.0 AccessSize field within a
3372Register() resource descriptor.
3373
3374----------------------------------------
337530 September 2005. Summary of changes for version 20050930:
3376
33771) ACPI CA Core Subsystem:
3378
3379Completed a major overhaul of the Resource Manager code - specifically,
3380optimizations in the area of the AML/internal resource conversion code. The
3381code has been optimized to simplify and eliminate duplicated code, CPU stack
3382use has been decreased by optimizing function parameters and local
3383variables, and naming conventions across the manager have been standardized
3384for clarity and ease of maintenance (this includes function, parameter,
3385variable, and struct/typedef names.) The update may force changes in some
3386driver code, depending on how resources are handled by the host OS.
3387
3388All Resource Manager dispatch and information tables have been moved to a
3389single location for clarity and ease of maintenance. One new file was
3390created, named "rsinfo.c".
3391
3392The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
3393guarantee that the argument is not evaluated twice, making them less prone
3394to macro side-effects. However, since there exists the possibility of
3395additional stack use if a particular compiler cannot optimize them (such as
3396in the debug generation case), the original macros are optionally available.
3397Note that some invocations of the return_VALUE macro may now cause size
3398mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to
3399eliminate these. (From Randy Dunlap)
3400
3401Implemented a new mechanism to enable debug tracing for individual control
3402methods. A new external interface, AcpiDebugTrace, is provided to enable
3403this mechanism. The intent is to allow the host OS to easily enable and
3404disable tracing for problematic control methods. This interface can be
3405easily exposed to a user or debugger interface if desired. See the file
3406psxface.c for details.
3407
3408AcpiUtCallocate will now return a valid pointer if a length of zero is
3409specified - a length of one is used and a warning is issued. This matches
3410the behavior of AcpiUtAllocate.
3411
3412Code and Data Size: The current and previous library sizes for the core
3413subsystem are shown below. These are the code and data sizes for the
3414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3415values do not include any ACPI driver or OSPM code. The debug version of the
3416code includes the debug output trace mechanism and has a much larger code
3417and data size. Note that these values will vary depending on the efficiency
3418of the compiler and the compiler options used during generation.
3419
3420  Previous Release:
3421    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3422    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3423  Current Release:
3424    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3425    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3426
3427
34282) iASL Compiler/Disassembler:
3429
3430A remark is issued if the effective compile-time length of a package or
3431buffer is zero. Previously, this was a warning.
3432
3433----------------------------------------
343416 September 2005. Summary of changes for version 20050916:
3435
34361) ACPI CA Core Subsystem:
3437
3438Fixed a problem within the Resource Manager where support for the Generic
3439Register descriptor was not fully implemented. This descriptor is now fully
3440recognized, parsed, disassembled, and displayed.
3441
3442Completely restructured the Resource Manager code to utilize table-driven
3443dispatch and lookup, eliminating many of the large switch() statements. This
3444reduces overall subsystem code size and code complexity. Affects the
3445resource parsing and construction, disassembly, and debug dump output.
3446
3447Cleaned up and restructured the debug dump output for all resource
3448descriptors. Improved readability of the output and reduced code size.
3449
3450Fixed a problem where changes to internal data structures caused the
3451optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
3452
3453Code and Data Size: The current and previous library sizes for the core
3454subsystem are shown below. These are the code and data sizes for the
3455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3456values do not include any ACPI driver or OSPM code. The debug version of the
3457code includes the debug output trace mechanism and has a much larger code
3458and data size. Note that these values will vary depending on the efficiency
3459of the compiler and the compiler options used during generation.
3460
3461  Previous Release:
3462    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3463    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3464  Current Release:
3465    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3466    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3467
3468
34692) iASL Compiler/Disassembler:
3470
3471Updated the disassembler to automatically insert an EndDependentFn() macro
3472into the ASL stream if this macro is missing in the original AML code,
3473simplifying compilation of the resulting ASL module.
3474
3475Fixed a problem in the disassembler where a disassembled ResourceSource
3476string (within a large resource descriptor) was not surrounded by quotes and
3477not followed by a comma, causing errors when the resulting ASL module was
3478compiled. Also, escape sequences within a ResourceSource string are now
3479handled correctly (especially "\\")
3480
3481----------------------------------------
348202 September 2005. Summary of changes for version 20050902:
3483
34841) ACPI CA Core Subsystem:
3485
3486Fixed a problem with the internal Owner ID allocation and deallocation
3487mechanisms for control method execution and recursive method invocation.
3488This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
3489messages seen on some systems. Recursive method invocation depth is
3490currently limited to 255. (Alexey Starikovskiy)
3491
3492Completely eliminated all vestiges of support for the "module-level
3493executable code" until this support is fully implemented and debugged. This
3494should eliminate the NO_RETURN_VALUE exceptions seen during table load on
3495some systems that invoke this support.
3496
3497Fixed a problem within the resource manager code where the transaction flags
3498for a 64-bit address descriptor were handled incorrectly in the type-
3499specific flag byte.
3500
3501Consolidated duplicate code within the address descriptor resource manager
3502code, reducing overall subsystem code size.
3503
3504Fixed a fault when using the AML debugger "disassemble" command to
3505disassemble individual control methods.
3506
3507Removed references to the "release_current" directory within the Unix
3508release package.
3509
3510Code and Data Size: The current and previous core subsystem library sizes
3511are shown below. These are the code and data sizes for the acpica.lib
3512produced by the Microsoft Visual C++ 6.0 compiler. These values do not
3513include any ACPI driver or OSPM code. The debug version of the code includes
3514the debug output trace mechanism and has a much larger code and data size.
3515Note that these values will vary depending on the efficiency of the compiler
3516and the compiler options used during generation.
3517
3518  Previous Release:
3519    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3520    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3521  Current Release:
3522    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3523    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3524
3525
35262) iASL Compiler/Disassembler:
3527
3528Implemented an error check for illegal duplicate values in the interrupt and
3529dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
3530Interrupt().
3531
3532Implemented error checking for the Irq() and IrqNoFlags() macros to detect
3533too many values in the interrupt list (16 max) and invalid values in the
3534list (range 0 - 15)
3535
3536The maximum length string literal within an ASL file is now restricted to
3537200 characters as per the ACPI specification.
3538
3539Fixed a fault when using the -ln option (generate namespace listing).
3540
3541Implemented an error check to determine if a DescriptorName within a
3542resource descriptor has already been used within the current scope.
3543
3544----------------------------------------
354515 August 2005.  Summary of changes for version 20050815:
3546
35471) ACPI CA Core Subsystem:
3548
3549Implemented a full bytewise compare to determine if a table load request is
3550attempting to load a duplicate table. The compare is performed if the table
3551signatures and table lengths match. This will allow different tables with
3552the same OEM Table ID and revision to be loaded - probably against the ACPI
3553specification, but discovered in the field nonetheless.
3554
3555Added the changes.txt logfile to each of the zipped release packages.
3556
3557Code and Data Size: Current and previous core subsystem library sizes are
3558shown below. These are the code and data sizes for the acpica.lib produced
3559by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3560any ACPI driver or OSPM code. The debug version of the code includes the
3561debug output trace mechanism and has a much larger code and data size. Note
3562that these values will vary depending on the efficiency of the compiler and
3563the compiler options used during generation.
3564
3565  Previous Release:
3566    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3567    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
3568  Current Release:
3569    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3570    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3571
3572
35732) iASL Compiler/Disassembler:
3574
3575Fixed a problem where incorrect AML code could be generated for Package
3576objects if optimization is disabled (via the -oa switch).
3577
3578Fixed a problem with where incorrect AML code is generated for variable-
3579length packages when the package length is not specified and the number of
3580initializer values is greater than 255.
3581
3582
3583----------------------------------------
358429 July 2005.  Summary of changes for version 20050729:
3585
35861) ACPI CA Core Subsystem:
3587
3588Implemented support to ignore an attempt to install/load a particular ACPI
3589table more than once. Apparently there exists BIOS code that repeatedly
3590attempts to load the same SSDT upon certain events. With assistance from
3591Venkatesh Pallipadi.
3592
3593Restructured the main interface to the AML parser in order to correctly
3594handle all exceptional conditions. This will prevent leakage of the OwnerId
3595resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
3596machines. With assistance from Alexey Starikovskiy.
3597
3598Support for "module level code" has been disabled in this version due to a
3599number of issues that have appeared on various machines. The support can be
3600enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
3601compilation. When the issues are fully resolved, the code will be enabled by
3602default again.
3603
3604Modified the internal functions for debug print support to define the
3605FunctionName parameter as a (const char *) for compatibility with compiler
3606built-in macros such as __FUNCTION__, etc.
3607
3608Linted the entire ACPICA source tree for both 32-bit and 64-bit.
3609
3610Implemented support to display an object count summary for the AML Debugger
3611commands Object and Methods.
3612
3613Code and Data Size: Current and previous core subsystem library sizes are
3614shown below. These are the code and data sizes for the acpica.lib produced
3615by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3616any ACPI driver or OSPM code. The debug version of the code includes the
3617debug output trace mechanism and has a much larger code and data size. Note
3618that these values will vary depending on the efficiency of the compiler and
3619the compiler options used during generation.
3620
3621  Previous Release:
3622    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
3623    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
3624  Current Release:
3625    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3626    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
3627
3628
36292) iASL Compiler/Disassembler:
3630
3631Fixed a regression that appeared in the 20050708 version of the compiler
3632where an error message was inadvertently emitted for invocations of the _OSI
3633reserved control method.
3634
3635----------------------------------------
363608 July 2005.  Summary of changes for version 20050708:
3637
36381) ACPI CA Core Subsystem:
3639
3640The use of the CPU stack in the debug version of the subsystem has been
3641considerably reduced. Previously, a debug structure was declared in every
3642function that used the debug macros. This structure has been removed in
3643favor of declaring the individual elements as parameters to the debug
3644functions. This reduces the cumulative stack use during nested execution of
3645ACPI function calls at the cost of a small increase in the code size of the
3646debug version of the subsystem. With assistance from Alexey Starikovskiy and
3647Len Brown.
3648
3649Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
3650headers to define a macro that will return the current function name at
3651runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by
3652the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
3653compiler-dependent header, the function name is saved on the CPU stack (one
3654pointer per function.) This mechanism is used because apparently there
3655exists no standard ANSI-C defined macro that that returns the function name.
3656
3657Redesigned and reimplemented the "Owner ID" mechanism used to track
3658namespace objects created/deleted by ACPI tables and control method
3659execution. A bitmap is now used to allocate and free the IDs, thus solving
3660the wraparound problem present in the previous implementation. The size of
3661the namespace node descriptor was reduced by 2 bytes as a result (Alexey
3662Starikovskiy).
3663
3664Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield
3665flag definitions within the headers for the predefined ACPI tables. These
3666have been replaced by UINT8_BIT in order to increase the code portability of
3667the subsystem. If the use of UINT8 remains a problem, we may be forced to
3668eliminate bitfields entirely because of a lack of portability.
3669
3670Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This
3671is a frequently used function and this improvement increases the performance
3672of the entire subsystem (Alexey Starikovskiy).
3673
3674Fixed several possible memory leaks and the inverse - premature object
3675deletion (Alexey Starikovskiy).
3676
3677Code and Data Size: Current and previous core subsystem library sizes are
3678shown below. These are the code and data sizes for the acpica.lib produced
3679by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3680any ACPI driver or OSPM code. The debug version of the code includes the
3681debug output trace mechanism and has a much larger code and data size. Note
3682that these values will vary depending on the efficiency of the compiler and
3683the compiler options used during generation.
3684
3685  Previous Release:
3686    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
3687    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
3688  Current Release:
3689    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
3690    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
3691
3692----------------------------------------
369324 June 2005.  Summary of changes for version 20050624:
3694
36951) ACPI CA Core Subsystem:
3696
3697Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
3698the host-defined cache object. This allows the OSL implementation to define
3699and type this object in any manner desired, simplifying the OSL
3700implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
3701Linux, and should be defined in the OS-specific header file for other
3702operating systems as required.
3703
3704Changed the interface to AcpiOsAcquireObject to directly return the
3705requested object as the function return (instead of ACPI_STATUS.) This
3706change was made for performance reasons, since this is the purpose of the
3707interface in the first place. AcpiOsAcquireObject is now similar to the
3708AcpiOsAllocate interface.
3709
3710Implemented a new AML debugger command named Businfo. This command displays
3711information about all devices that have an associate _PRT object. The _ADR,
3712_HID, _UID, and _CID are displayed for these devices.
3713
3714Modified the initialization sequence in AcpiInitializeSubsystem to call the
3715OSL interface AcpiOslInitialize first, before any local initialization. This
3716change was required because the global initialization now calls OSL
3717interfaces.
3718
3719Enhanced the Dump command to display the entire contents of Package objects
3720(including all sub-objects and their values.)
3721
3722Restructured the code base to split some files because of size and/or
3723because the code logically belonged in a separate file. New files are listed
3724below. All makefiles and project files included in the ACPI CA release have
3725been updated.
3726    utilities/utcache.c           /* Local cache interfaces */
3727    utilities/utmutex.c           /* Local mutex support */
3728    utilities/utstate.c           /* State object support */
3729    interpreter/parser/psloop.c   /* Main AML parse loop */
3730
3731Code and Data Size: Current and previous core subsystem library sizes are
3732shown below. These are the code and data sizes for the acpica.lib produced
3733by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3734any ACPI driver or OSPM code. The debug version of the code includes the
3735debug output trace mechanism and has a much larger code and data size. Note
3736that these values will vary depending on the efficiency of the compiler and
3737the compiler options used during generation.
3738
3739  Previous Release:
3740    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
3741    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
3742  Current Release:
3743    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
3744    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
3745
3746
37472) iASL Compiler/Disassembler:
3748
3749Fixed a regression introduced in version 20050513 where the use of a Package
3750object within a Case() statement caused a compile time exception. The
3751original behavior has been restored (a Match() operator is emitted.)
3752
3753----------------------------------------
375417 June 2005.  Summary of changes for version 20050617:
3755
37561) ACPI CA Core Subsystem:
3757
3758Moved the object cache operations into the OS interface layer (OSL) to allow
3759the host OS to handle these operations if desired (for example, the Linux
3760OSL will invoke the slab allocator). This support is optional; the compile
3761time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
3762code in the ACPI CA core. The new OSL interfaces are shown below. See
3763utalloc.c for an example implementation, and acpiosxf.h for the exact
3764interface definitions. With assistance from Alexey Starikovskiy.
3765    AcpiOsCreateCache
3766    AcpiOsDeleteCache
3767    AcpiOsPurgeCache
3768    AcpiOsAcquireObject
3769    AcpiOsReleaseObject
3770
3771Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return
3772and restore a flags parameter. This fits better with many OS lock models.
3773Note: the current execution state (interrupt handler or not) is no longer
3774passed to these interfaces. If necessary, the OSL must determine this state
3775by itself, a simple and fast operation. With assistance from Alexey
3776Starikovskiy.
3777
3778Fixed a problem in the ACPI table handling where a valid XSDT was assumed
3779present if the revision of the RSDP was 2 or greater. According to the ACPI
3780specification, the XSDT is optional in all cases, and the table manager
3781therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
3782Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
3783only the RSDT.
3784
3785Fixed an interpreter problem with the Mid() operator in the case of an input
3786string where the resulting output string is of zero length. It now correctly
3787returns a valid, null terminated string object instead of a string object
3788with a null pointer.
3789
3790Fixed a problem with the control method argument handling to allow a store
3791to an Arg object that already contains an object of type Device. The Device
3792object is now correctly overwritten. Previously, an error was returned.
3793
3794
3795Enhanced the debugger Find command to emit object values in addition to the
3796found object pathnames. The output format is the same as the dump namespace
3797command.
3798
3799Enhanced the debugger Set command. It now has the ability to set the value
3800of any Named integer object in the namespace (Previously, only method locals
3801and args could be set.)
3802
3803Code and Data Size: Current and previous core subsystem library sizes are
3804shown below. These are the code and data sizes for the acpica.lib produced
3805by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3806any ACPI driver or OSPM code. The debug version of the code includes the
3807debug output trace mechanism and has a much larger code and data size. Note
3808that these values will vary depending on the efficiency of the compiler and
3809the compiler options used during generation.
3810
3811  Previous Release:
3812    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
3813    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
3814  Current Release:
3815    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
3816    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
3817
3818
38192) iASL Compiler/Disassembler:
3820
3821Fixed a regression in the disassembler where if/else/while constructs were
3822output incorrectly. This problem was introduced in the previous release
3823(20050526). This problem also affected the single-step disassembly in the
3824debugger.
3825
3826Fixed a problem where compiling the reserved _OSI method would randomly (but
3827rarely) produce compile errors.
3828
3829Enhanced the disassembler to emit compilable code in the face of incorrect
3830AML resource descriptors. If the optional ResourceSourceIndex is present,
3831but the ResourceSource is not, do not emit the ResourceSourceIndex in the
3832disassembly. Otherwise, the resulting code cannot be compiled without
3833errors.
3834
3835----------------------------------------
383626 May 2005.  Summary of changes for version 20050526:
3837
38381) ACPI CA Core Subsystem:
3839
3840Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
3841the module level (not within a control method.) These opcodes are executed
3842exactly once at the time the table is loaded. This type of code was legal up
3843until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in
3844order to provide backwards compatibility with earlier BIOS implementations.
3845This eliminates the "Encountered executable code at module level" warning
3846that was previously generated upon detection of such code.
3847
3848Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
3849inadvertently be generated during the lookup of namespace objects in the
3850second pass parse of ACPI tables and control methods. It appears that this
3851problem could occur during the resolution of forward references to namespace
3852objects.
3853
3854Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
3855corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
3856allows the deadlock detection debug code to be compiled out in the normal
3857case, improving mutex performance (and overall subsystem performance)
3858considerably.
3859
3860Implemented a handful of miscellaneous fixes for possible memory leaks on
3861error conditions and error handling control paths. These fixes were
3862suggested by FreeBSD and the Coverity Prevent source code analysis tool.
3863
3864Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
3865to prevent a fault in this error case.
3866
3867Code and Data Size: Current and previous core subsystem library sizes are
3868shown below. These are the code and data sizes for the acpica.lib produced
3869by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3870any ACPI driver or OSPM code. The debug version of the code includes the
3871debug output trace mechanism and has a much larger code and data size. Note
3872that these values will vary depending on the efficiency of the compiler and
3873the compiler options used during generation.
3874
3875  Previous Release:
3876    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3877    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3878  Current Release:
3879    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
3880    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
3881
3882
38832) iASL Compiler/Disassembler:
3884
3885Implemented support to allow Type 1 and Type 2 ASL operators to appear at
3886the module level (not within a control method.) These operators will be
3887executed once at the time the table is loaded. This type of code was legal
3888up until the release of ACPI 2.0B (2002) and is now supported by the iASL
3889compiler in order to provide backwards compatibility with earlier BIOS ASL
3890code.
3891
3892The ACPI integer width (specified via the table revision ID or the -r
3893override, 32 or 64 bits) is now used internally during compile-time constant
3894folding to ensure that constants are truncated to 32 bits if necessary.
3895Previously, the revision ID value was only emitted in the AML table header.
3896
3897An error message is now generated for the Mutex and Method operators if the
3898SyncLevel parameter is outside the legal range of 0 through 15.
3899
3900Fixed a problem with the Method operator ParameterTypes list handling (ACPI
39013.0). Previously, more than 2 types or 2 arguments generated a syntax error.
3902The actual underlying implementation of method argument typechecking is
3903still under development, however.
3904
3905----------------------------------------
390613 May 2005.  Summary of changes for version 20050513:
3907
39081) ACPI CA Core Subsystem:
3909
3910Implemented support for PCI Express root bridges -- added support for device
3911PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
3912
3913The interpreter now automatically truncates incoming 64-bit constants to 32
3914bits if currently executing out of a 32-bit ACPI table (Revision < 2). This
3915also affects the iASL compiler constant folding. (Note: as per below, the
3916iASL compiler no longer allows 64-bit constants within 32-bit tables.)
3917
3918Fixed a problem where string and buffer objects with "static" pointers
3919(pointers to initialization data within an ACPI table) were not handled
3920consistently. The internal object copy operation now always copies the data
3921to a newly allocated buffer, regardless of whether the source object is
3922static or not.
3923
3924Fixed a problem with the FromBCD operator where an implicit result
3925conversion was improperly performed while storing the result to the target
3926operand. Since this is an "explicit conversion" operator, the implicit
3927conversion should never be performed on the output.
3928
3929Fixed a problem with the CopyObject operator where a copy to an existing
3930named object did not always completely overwrite the existing object stored
3931at name. Specifically, a buffer-to-buffer copy did not delete the existing
3932buffer.
3933
3934Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
3935structs for consistency.
3936
3937Code and Data Size: Current and previous core subsystem library sizes are
3938shown below. These are the code and data sizes for the acpica.lib produced
3939by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3940any ACPI driver or OSPM code. The debug version of the code includes the
3941debug output trace mechanism and has a much larger code and data size. Note
3942that these values will vary depending on the efficiency of the compiler and
3943the compiler options used during generation.
3944
3945  Previous Release:
3946    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3947    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3948  Current Release: (Same sizes)
3949    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3950    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3951
3952
39532) iASL Compiler/Disassembler:
3954
3955The compiler now emits a warning if an attempt is made to generate a 64-bit
3956integer constant from within a 32-bit ACPI table (Revision < 2). The integer
3957is truncated to 32 bits.
3958
3959Fixed a problem with large package objects: if the static length of the
3960package is greater than 255, the "variable length package" opcode is
3961emitted. Previously, this caused an error. This requires an update to the
3962ACPI spec, since it currently (incorrectly) states that packages larger than
3963255 elements are not allowed.
3964
3965The disassembler now correctly handles variable length packages and packages
3966larger than 255 elements.
3967
3968----------------------------------------
396908 April 2005.  Summary of changes for version 20050408:
3970
39711) ACPI CA Core Subsystem:
3972
3973Fixed three cases in the interpreter where an "index" argument to an ASL
3974function was still (internally) 32 bits instead of the required 64 bits.
3975This was the Index argument to the Index, Mid, and Match operators.
3976
3977The "strupr" function is now permanently local (AcpiUtStrupr), since this is
3978not a POSIX-defined function and not present in most kernel-level C
3979libraries. All references to the C library strupr function have been removed
3980from the headers.
3981
3982Completed the deployment of static functions/prototypes. All prototypes with
3983the static attribute have been moved from the headers to the owning C file.
3984
3985Implemented an extract option (-e) for the AcpiBin utility (AML binary
3986utility). This option allows the utility to extract individual ACPI tables
3987from the output of AcpiDmp. It provides the same functionality of the
3988acpixtract.pl perl script without the worry of setting the correct perl
3989options. AcpiBin runs on Windows and has not yet been generated/validated in
3990the Linux/Unix environment (but should be soon).
3991
3992Updated and fixed the table dump option for AcpiBin (-d). This option
3993converts a single ACPI table to a hex/ascii file, similar to the output of
3994AcpiDmp.
3995
3996Code and Data Size: Current and previous core subsystem library sizes are
3997shown below. These are the code and data sizes for the acpica.lib produced
3998by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3999any ACPI driver or OSPM code. The debug version of the code includes the
4000debug output trace mechanism and has a much larger code and data size. Note
4001that these values will vary depending on the efficiency of the compiler and
4002the compiler options used during generation.
4003
4004  Previous Release:
4005    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
4006    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
4007  Current Release:
4008    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4009    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4010
4011
40122) iASL Compiler/Disassembler:
4013
4014Disassembler fix: Added a check to ensure that the table length found in the
4015ACPI table header within the input file is not longer than the actual input
4016file size. This indicates some kind of file or table corruption.
4017
4018----------------------------------------
401929 March 2005.  Summary of changes for version 20050329:
4020
40211) ACPI CA Core Subsystem:
4022
4023An error is now generated if an attempt is made to create a Buffer Field of
4024length zero (A CreateField with a length operand of zero.)
4025
4026The interpreter now issues a warning whenever executable code at the module
4027level is detected during ACPI table load. This will give some idea of the
4028prevalence of this type of code.
4029
4030Implemented support for references to named objects (other than control
4031methods) within package objects.
4032
4033Enhanced package object output for the debug object. Package objects are now
4034completely dumped, showing all elements.
4035
4036Enhanced miscellaneous object output for the debug object. Any object can
4037now be written to the debug object (for example, a device object can be
4038written, and the type of the object will be displayed.)
4039
4040The "static" qualifier has been added to all local functions across both the
4041core subsystem and the iASL compiler.
4042
4043The number of "long" lines (> 80 chars) within the source has been
4044significantly reduced, by about 1/3.
4045
4046Cleaned up all header files to ensure that all CA/iASL functions are
4047prototyped (even static functions) and the formatting is consistent.
4048
4049Two new header files have been added, acopcode.h and acnames.h.
4050
4051Removed several obsolete functions that were no longer used.
4052
4053Code and Data Size: Current and previous core subsystem library sizes are
4054shown below. These are the code and data sizes for the acpica.lib produced
4055by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4056any ACPI driver or OSPM code. The debug version of the code includes the
4057debug output trace mechanism and has a much larger code and data size. Note
4058that these values will vary depending on the efficiency of the compiler and
4059the compiler options used during generation.
4060
4061  Previous Release:
4062    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4063    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
4064  Current Release:
4065    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
4066    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
4067
4068
4069
40702) iASL Compiler/Disassembler:
4071
4072Fixed a problem with the resource descriptor generation/support. For the
4073ResourceSourceIndex and the ResourceSource fields, both must be present, or
4074both must be not present - can't have one without the other.
4075
4076The compiler now returns non-zero from the main procedure if any errors have
4077occurred during the compilation.
4078
4079
4080----------------------------------------
408109 March 2005.  Summary of changes for version 20050309:
4082
40831) ACPI CA Core Subsystem:
4084
4085The string-to-buffer implicit conversion code has been modified again after
4086a change to the ACPI specification.  In order to match the behavior of the
4087other major ACPI implementation, the target buffer is no longer truncated if
4088the source string is smaller than an existing target buffer. This change
4089requires an update to the ACPI spec, and should eliminate the recent
4090AE_AML_BUFFER_LIMIT issues.
4091
4092The "implicit return" support was rewritten to a new algorithm that solves
4093the general case. Rather than attempt to determine when a method is about to
4094exit, the result of every ASL operator is saved momentarily until the very
4095next ASL operator is executed. Therefore, no matter how the method exits,
4096there will always be a saved implicit return value. This feature is only
4097enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
4098AE_AML_NO_RETURN_VALUE errors when enabled.
4099
4100Implemented implicit conversion support for the predicate (operand) of the
4101If, Else, and While operators. String and Buffer arguments are automatically
4102converted to Integers.
4103
4104Changed the string-to-integer conversion behavior to match the new ACPI
4105errata: "If no integer object exists, a new integer is created. The ASCII
4106string is interpreted as a hexadecimal constant. Each string character is
4107interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
4108with the first character as the most significant digit, and ending with the
4109first non-hexadecimal character or end-of-string." This means that the first
4110non-hex character terminates the conversion and this is the code that was
4111changed.
4112
4113Fixed a problem where the ObjectType operator would fail (fault) when used
4114on an Index of a Package which pointed to a null package element. The
4115operator now properly returns zero (Uninitialized) in this case.
4116
4117Fixed a problem where the While operator used excessive memory by not
4118properly popping the result stack during execution. There was no memory leak
4119after execution, however. (Code provided by Valery Podrezov.)
4120
4121Fixed a problem where references to control methods within Package objects
4122caused the method to be invoked, instead of producing a reference object
4123pointing to the method.
4124
4125Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
4126improve performance and reduce code size. (Code provided by Alexey
4127Starikovskiy.)
4128
4129Code and Data Size: Current and previous core subsystem library sizes are
4130shown below. These are the code and data sizes for the acpica.lib produced
4131by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4132any ACPI driver or OSPM code. The debug version of the code includes the
4133debug output trace mechanism and has a much larger code and data size. Note
4134that these values will vary depending on the efficiency of the compiler and
4135the compiler options used during generation.
4136
4137  Previous Release:
4138    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4139    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
4140  Current Release:
4141    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4142    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
4143
4144
41452) iASL Compiler/Disassembler:
4146
4147Fixed a problem with the Return operator with no arguments. Since the AML
4148grammar for the byte encoding requires an operand for the Return opcode, the
4149compiler now emits a Return(Zero) for this case.  An ACPI specification
4150update has been written for this case.
4151
4152For tables other than the DSDT, namepath optimization is automatically
4153disabled. This is because SSDTs can be loaded anywhere in the namespace, the
4154compiler has no knowledge of where, and thus cannot optimize namepaths.
4155
4156Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
4157inadvertently omitted from the ACPI specification, and will require an
4158update to the spec.
4159
4160The source file scan for ASCII characters is now optional (-a). This change
4161was made because some vendors place non-ascii characters within comments.
4162However, the scan is simply a brute-force byte compare to ensure all
4163characters in the file are in the range 0x00 to 0x7F.
4164
4165Fixed a problem with the CondRefOf operator where the compiler was
4166inappropriately checking for the existence of the target. Since the point of
4167the operator is to check for the existence of the target at run-time, the
4168compiler no longer checks for the target existence.
4169
4170Fixed a problem where errors generated from the internal AML interpreter
4171during constant folding were not handled properly, causing a fault.
4172
4173Fixed a problem with overly aggressive range checking for the Stall
4174operator. The valid range (max 255) is now only checked if the operand is of
4175type Integer. All other operand types cannot be statically checked.
4176
4177Fixed a problem where control method references within the RefOf, DeRefOf,
4178and ObjectType operators were not treated properly. They are now treated as
4179actual references, not method invocations.
4180
4181Fixed and enhanced the "list namespace" option (-ln). This option was broken
4182a number of releases ago.
4183
4184Improved error handling for the Field, IndexField, and BankField operators.
4185The compiler now cleanly reports and recovers from errors in the field
4186component (FieldUnit) list.
4187
4188Fixed a disassembler problem where the optional ResourceDescriptor fields
4189TRS and TTP were not always handled correctly.
4190
4191Disassembler - Comments in output now use "//" instead of "/*"
4192
4193----------------------------------------
419428 February 2005.  Summary of changes for version 20050228:
4195
41961) ACPI CA Core Subsystem:
4197
4198Fixed a problem where the result of an Index() operator (an object
4199reference) must increment the reference count on the target object for the
4200life of the object reference.
4201
4202Implemented AML Interpreter and Debugger support for the new ACPI 3.0
4203Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace
4204resource descriptors.
4205
4206Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
4207Space Descriptor" string, indicating interpreter support for the descriptors
4208above.
4209
4210Implemented header support for the new ACPI 3.0 FADT flag bits.
4211
4212Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1
4213status/enable registers.
4214
4215Updated header support for the MADT processor local Apic struct and MADT
4216platform interrupt source struct for new ACPI 3.0 fields.
4217
4218Implemented header support for the SRAT and SLIT ACPI tables.
4219
4220Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag
4221at runtime.
4222
4223Code and Data Size: Current and previous core subsystem library sizes are
4224shown below. These are the code and data sizes for the acpica.lib produced
4225by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4226any ACPI driver or OSPM code. The debug version of the code includes the
4227debug output trace mechanism and has a much larger code and data size. Note
4228that these values will vary depending on the efficiency of the compiler and
4229the compiler options used during generation.
4230
4231  Previous Release:
4232    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4233    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4234  Current Release:
4235    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4236    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
4237
4238
42392) iASL Compiler/Disassembler:
4240
4241Fixed a problem with the internal 64-bit String-to-integer conversion with
4242strings less than two characters long.
4243
4244Fixed a problem with constant folding where the result of the Index()
4245operator can not be considered a constant. This means that Index() cannot be
4246a type3 opcode and this will require an update to the ACPI specification.
4247
4248Disassembler: Implemented support for the TTP, MTP, and TRS resource
4249descriptor fields. These fields were inadvertently ignored and not output in
4250the disassembly of the resource descriptor.
4251
4252
4253 ----------------------------------------
425411 February 2005.  Summary of changes for version 20050211:
4255
42561) ACPI CA Core Subsystem:
4257
4258Implemented ACPI 3.0 support for implicit conversion within the Match()
4259operator. MatchObjects can now be of type integer, buffer, or string instead
4260of just type integer.  Package elements are implicitly converted to the type
4261of the MatchObject. This change aligns the behavior of Match() with the
4262behavior of the other logical operators (LLess(), etc.) It also requires an
4263errata change to the ACPI specification as this support was intended for
4264ACPI 3.0, but was inadvertently omitted.
4265
4266Fixed a problem with the internal implicit "to buffer" conversion. Strings
4267that are converted to buffers will cause buffer truncation if the string is
4268smaller than the target buffer. Integers that are converted to buffers will
4269not cause buffer truncation, only zero extension (both as per the ACPI
4270spec.) The problem was introduced when code was added to truncate the
4271buffer, but this should not be performed in all cases, only the string case.
4272
4273Fixed a problem with the Buffer and Package operators where the interpreter
4274would get confused if two such operators were used as operands to an ASL
4275operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
4276stack was not being popped after the execution of these operators, resulting
4277in an AE_NO_RETURN_VALUE exception.
4278
4279Fixed a problem with constructs of the form Store(Index(...),...). The
4280reference object returned from Index was inadvertently resolved to an actual
4281value. This problem was introduced in version 20050114 when the behavior of
4282Store() was modified to restrict the object types that can be used as the
4283source operand (to match the ACPI specification.)
4284
4285Reduced excessive stack use within the AcpiGetObjectInfo procedure.
4286
4287Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
4288
4289Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
4290
4291Code and Data Size: Current and previous core subsystem library sizes are
4292shown below. These are the code and data sizes for the acpica.lib produced
4293by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4294any ACPI driver or OSPM code. The debug version of the code includes the
4295debug output trace mechanism and has a much larger code and data size. Note
4296that these values will vary depending on the efficiency of the compiler and
4297the compiler options used during generation.
4298
4299  Previous Release:
4300    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
4301    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
4302  Current Release:
4303    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4304    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4305
4306
43072) iASL Compiler/Disassembler:
4308
4309Fixed a code generation problem in the constant folding optimization code
4310where incorrect code was generated if a constant was reduced to a buffer
4311object (i.e., a reduced type 5 opcode.)
4312
4313Fixed a typechecking problem for the ToBuffer operator. Caused by an
4314incorrect return type in the internal opcode information table.
4315
4316----------------------------------------
431725 January 2005.  Summary of changes for version 20050125:
4318
43191) ACPI CA Core Subsystem:
4320
4321Fixed a recently introduced problem with the Global Lock where the
4322underlying semaphore was not created.  This problem was introduced in
4323version 20050114, and caused an AE_AML_NO_OPERAND exception during an
4324Acquire() operation on _GL.
4325
4326The local object cache is now optional, and is disabled by default. Both
4327AcpiExec and the iASL compiler enable the cache because they run in user
4328mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
4329to enable the local cache.
4330
4331Fixed an issue in the internal function AcpiUtEvaluateObject concerning the
4332optional "implicit return" support where an error was returned if no return
4333object was expected, but one was implicitly returned. AE_OK is now returned
4334in this case and the implicitly returned object is deleted.
4335AcpiUtEvaluateObject is only occasionally used, and only to execute reserved
4336methods such as _STA and _INI where the return type is known up front.
4337
4338Fixed a few issues with the internal convert-to-integer code. It now returns
4339an error if an attempt is made to convert a null string, a string of only
4340blanks/tabs, or a zero-length buffer. This affects both implicit conversion
4341and explicit conversion via the ToInteger() operator.
4342
4343The internal debug code in AcpiUtAcquireMutex has been commented out. It is
4344not needed for normal operation and should increase the performance of the
4345entire subsystem. The code remains in case it is needed for debug purposes
4346again.
4347
4348The AcpiExec source and makefile are included in the Unix/Linux package for
4349the first time.
4350
4351Code and Data Size: Current and previous core subsystem library sizes are
4352shown below. These are the code and data sizes for the acpica.lib produced
4353by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4354any ACPI driver or OSPM code. The debug version of the code includes the
4355debug output trace mechanism and has a much larger code and data size. Note
4356that these values will vary depending on the efficiency of the compiler and
4357the compiler options used during generation.
4358
4359  Previous Release:
4360    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4361    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4362  Current Release:
4363    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
4364    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
4365
43662) iASL Compiler/Disassembler:
4367
4368Switch/Case support: A warning is now issued if the type of the Switch value
4369cannot be determined at compile time. For example, Switch(Arg0) will
4370generate the warning, and the type is assumed to be an integer. As per the
4371ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the
4372warning.
4373
4374Switch/Case support: Implemented support for buffer and string objects as
4375the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
4376buffers and strings.
4377
4378Switch/Case support: The emitted code for the LEqual() comparisons now uses
4379the switch value as the first operand, not the second. The case value is now
4380the second operand, and this allows the case value to be implicitly
4381converted to the type of the switch value, not the other way around.
4382
4383Switch/Case support: Temporary variables are now emitted immediately within
4384the control method, not at the global level. This means that there are now
438536 temps available per-method, not 36 temps per-module as was the case with
4386the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
4387
4388----------------------------------------
438914 January 2005.  Summary of changes for version 20050114:
4390
4391Added 2005 copyright to all module headers.  This affects every module in
4392the core subsystem, iASL compiler, and the utilities.
4393
43941) ACPI CA Core Subsystem:
4395
4396Fixed an issue with the String-to-Buffer conversion code where the string
4397null terminator was not included in the buffer after conversion, but there
4398is existing ASL that assumes the string null terminator is included. This is
4399the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
4400introduced in the previous version when the code was updated to correctly
4401set the converted buffer size as per the ACPI specification. The ACPI spec
4402is ambiguous and will be updated to specify that the null terminator must be
4403included in the converted buffer. This also affects the ToBuffer() ASL
4404operator.
4405
4406Fixed a problem with the Mid() ASL/AML operator where it did not work
4407correctly on Buffer objects. Newly created sub-buffers were not being marked
4408as initialized.
4409
4410
4411Fixed a problem in AcpiTbFindTable where incorrect string compares were
4412performed on the OemId and OemTableId table header fields.  These fields are
4413not null terminated, so strncmp is now used instead of strcmp.
4414
4415Implemented a restriction on the Store() ASL/AML operator to align the
4416behavior with the ACPI specification.  Previously, any object could be used
4417as the source operand.  Now, the only objects that may be used are Integers,
4418Buffers, Strings, Packages, Object References, and DDB Handles.  If
4419necessary, the original behavior can be restored by enabling the
4420EnableInterpreterSlack flag.
4421
4422Enhanced the optional "implicit return" support to allow an implicit return
4423value from methods that are invoked externally via the AcpiEvaluateObject
4424interface.  This enables implicit returns from the _STA and _INI methods,
4425for example.
4426
4427Changed the Revision() ASL/AML operator to return the current version of the
4428AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned
4429the supported ACPI version (This is the function of the _REV method).
4430
4431Updated the _REV predefined method to return the currently supported version
4432of ACPI, now 3.
4433
4434Implemented batch mode option for the AcpiExec utility (-b).
4435
4436Code and Data Size: Current and previous core subsystem library sizes are
4437shown below. These are the code and data sizes for the acpica.lib produced
4438by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4439any ACPI driver or OSPM code. The debug version of the code includes the
4440debug output trace mechanism and has a much larger code and data size. Note
4441that these values will vary depending on the efficiency of the compiler and
4442the compiler options used during generation.
4443
4444  Previous Release:
4445    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4446    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4447  Current Release:
4448    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4449    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4450
4451----------------------------------------
445210 December 2004.  Summary of changes for version 20041210:
4453
4454ACPI 3.0 support is nearing completion in both the iASL compiler and the
4455ACPI CA core subsystem.
4456
44571) ACPI CA Core Subsystem:
4458
4459Fixed a problem in the ToDecimalString operator where the resulting string
4460length was incorrectly calculated. The length is now calculated exactly,
4461eliminating incorrect AE_STRING_LIMIT exceptions.
4462
4463Fixed a problem in the ToHexString operator to allow a maximum 200 character
4464string to be produced.
4465
4466Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
4467routine where the length of the resulting buffer was not truncated to the
4468new size (if the target buffer already existed).
4469
4470Code and Data Size: Current and previous core subsystem library sizes are
4471shown below. These are the code and data sizes for the acpica.lib produced
4472by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4473any ACPI driver or OSPM code. The debug version of the code includes the
4474debug output trace mechanism and has a much larger code and data size. Note
4475that these values will vary depending on the efficiency of the compiler and
4476the compiler options used during generation.
4477
4478  Previous Release:
4479    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4480    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4481  Current Release:
4482    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4483    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4484
4485
44862) iASL Compiler/Disassembler:
4487
4488Implemented the new ACPI 3.0 resource template macros - DWordSpace,
4489ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
4490Includes support in the disassembler.
4491
4492Implemented support for the new (ACPI 3.0) parameter to the Register macro,
4493AccessSize.
4494
4495Fixed a problem where the _HE resource name for the Interrupt macro was
4496referencing bit 0 instead of bit 1.
4497
4498Implemented check for maximum 255 interrupts in the Interrupt macro.
4499
4500Fixed a problem with the predefined resource descriptor names where
4501incorrect AML code was generated if the offset within the resource buffer
4502was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
4503but did not update the surrounding package lengths.
4504
4505Changes to the Dma macro:  All channels within the channel list must be in
4506the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
4507optional (default is BusMaster).
4508
4509Implemented check for maximum 7 data bytes for the VendorShort macro.
4510
4511The ReadWrite parameter is now optional for the Memory32 and similar macros.
4512
4513----------------------------------------
451403 December 2004.  Summary of changes for version 20041203:
4515
45161) ACPI CA Core Subsystem:
4517
4518The low-level field insertion/extraction code (exfldio) has been completely
4519rewritten to eliminate unnecessary complexity, bugs, and boundary
4520conditions.
4521
4522Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString
4523operators where the input operand could be inadvertently deleted if no
4524conversion was necessary (e.g., if the input to ToInteger was an Integer
4525object.)
4526
4527Fixed a problem with the ToDecimalString and ToHexString where an incorrect
4528exception code was returned if the resulting string would be > 200 chars.
4529AE_STRING_LIMIT is now returned.
4530
4531Fixed a problem with the Concatenate operator where AE_OK was always
4532returned, even if the operation failed.
4533
4534Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
4535semaphores to be allocated.
4536
4537Code and Data Size: Current and previous core subsystem library sizes are
4538shown below. These are the code and data sizes for the acpica.lib produced
4539by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4540any ACPI driver or OSPM code. The debug version of the code includes the
4541debug output trace mechanism and has a much larger code and data size. Note
4542that these values will vary depending on the efficiency of the compiler and
4543the compiler options used during generation.
4544
4545  Previous Release:
4546    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4547    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4548  Current Release:
4549    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4550    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4551
4552
45532) iASL Compiler/Disassembler:
4554
4555Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
4556recently introduced in 20041119.
4557
4558Fixed a problem with the ToUUID macro where the upper nybble of each buffer
4559byte was inadvertently set to zero.
4560
4561----------------------------------------
456219 November 2004.  Summary of changes for version 20041119:
4563
45641) ACPI CA Core Subsystem:
4565
4566Fixed a problem in the internal ConvertToInteger routine where new integers
4567were not truncated to 32 bits for 32-bit ACPI tables. This routine converts
4568buffers and strings to integers.
4569
4570Implemented support to store a value to an Index() on a String object. This
4571is an ACPI 2.0 feature that had not yet been implemented.
4572
4573Implemented new behavior for storing objects to individual package elements
4574(via the Index() operator). The previous behavior was to invoke the implicit
4575conversion rules if an object was already present at the index.  The new
4576behavior is to simply delete any existing object and directly store the new
4577object. Although the ACPI specification seems unclear on this subject, other
4578ACPI implementations behave in this manner.  (This is the root of the
4579AE_BAD_HEX_CONSTANT issue.)
4580
4581Modified the RSDP memory scan mechanism to support the extended checksum for
4582ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
4583RSDP signature is found with a valid checksum.
4584
4585Code and Data Size: Current and previous core subsystem library sizes are
4586shown below. These are the code and data sizes for the acpica.lib produced
4587by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4588any ACPI driver or OSPM code. The debug version of the code includes the
4589debug output trace mechanism and has a much larger code and data size. Note
4590that these values will vary depending on the efficiency of the compiler and
4591the compiler options used during generation.
4592
4593  Previous Release:
4594    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4595    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4596  Current Release:
4597    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4598    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4599
4600
46012) iASL Compiler/Disassembler:
4602
4603Fixed a missing semicolon in the aslcompiler.y file.
4604
4605----------------------------------------
460605 November 2004.  Summary of changes for version 20041105:
4607
46081) ACPI CA Core Subsystem:
4609
4610Implemented support for FADT revision 2.  This was an interim table (between
4611ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
4612
4613Implemented optional support to allow uninitialized LocalX and ArgX
4614variables in a control method.  The variables are initialized to an Integer
4615object with a value of zero.  This support is enabled by setting the
4616AcpiGbl_EnableInterpreterSlack flag to TRUE.
4617
4618Implemented support for Integer objects for the SizeOf operator.  Either 4
4619or 8 is returned, depending on the current integer size (32-bit or 64-bit,
4620depending on the parent table revision).
4621
4622Fixed a problem in the implementation of the SizeOf and ObjectType operators
4623where the operand was resolved to a value too early, causing incorrect
4624return values for some objects.
4625
4626Fixed some possible memory leaks during exceptional conditions.
4627
4628Code and Data Size: Current and previous core subsystem library sizes are
4629shown below. These are the code and data sizes for the acpica.lib produced
4630by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4631any ACPI driver or OSPM code. The debug version of the code includes the
4632debug output trace mechanism and has a much larger code and data size. Note
4633that these values will vary depending on the efficiency of the compiler and
4634the compiler options used during generation.
4635
4636  Previous Release:
4637    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4638    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
4639  Current Release:
4640    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4641    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4642
4643
46442) iASL Compiler/Disassembler:
4645
4646Implemented support for all ACPI 3.0 reserved names and methods.
4647
4648Implemented all ACPI 3.0 grammar elements in the front-end, including
4649support for semicolons.
4650
4651Implemented the ACPI 3.0 Function() and ToUUID() macros
4652
4653Fixed a problem in the disassembler where a Scope() operator would not be
4654emitted properly if the target of the scope was in another table.
4655
4656----------------------------------------
465715 October 2004.  Summary of changes for version 20041015:
4658
4659Note:  ACPI CA is currently undergoing an in-depth and complete formal
4660evaluation to test/verify the following areas. Other suggestions are
4661welcome. This will result in an increase in the frequency of releases and
4662the number of bug fixes in the next few months.
4663  - Functional tests for all ASL/AML operators
4664  - All implicit/explicit type conversions
4665  - Bit fields and operation regions
4666  - 64-bit math support and 32-bit-only "truncated" math support
4667  - Exceptional conditions, both compiler and interpreter
4668  - Dynamic object deletion and memory leaks
4669  - ACPI 3.0 support when implemented
4670  - External interfaces to the ACPI subsystem
4671
4672
46731) ACPI CA Core Subsystem:
4674
4675Fixed two alignment issues on 64-bit platforms - within debug statements in
4676AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address
4677field within the non-aligned ACPI generic address structure.
4678
4679Fixed a problem in the Increment and Decrement operators where incorrect
4680operand resolution could result in the inadvertent modification of the
4681original integer when the integer is passed into another method as an
4682argument and the arg is then incremented/decremented.
4683
4684Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit
4685BCD number were truncated during conversion.
4686
4687Fixed a problem in the ToDecimal operator where the length of the resulting
4688string could be set incorrectly too long if the input operand was a Buffer
4689object.
4690
4691Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0)
4692within a buffer would prematurely terminate a compare between buffer
4693objects.
4694
4695Added a check for string overflow (>200 characters as per the ACPI
4696specification) during the Concatenate operator with two string operands.
4697
4698Code and Data Size: Current and previous core subsystem library sizes are
4699shown below. These are the code and data sizes for the acpica.lib produced
4700by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4701any ACPI driver or OSPM code. The debug version of the code includes the
4702debug output trace mechanism and has a much larger code and data size. Note
4703that these values will vary depending on the efficiency of the compiler and
4704the compiler options used during generation.
4705
4706  Previous Release:
4707    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4708    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
4709  Current Release:
4710    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4711    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
4712
4713
4714
47152) iASL Compiler/Disassembler:
4716
4717Allow the use of the ObjectType operator on uninitialized Locals and Args
4718(returns 0 as per the ACPI specification).
4719
4720Fixed a problem where the compiler would fault if there was a syntax error
4721in the FieldName of all of the various CreateXXXField operators.
4722
4723Disallow the use of lower case letters within the EISAID macro, as per the
4724ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where
4725U is an uppercase letter and N is a hex digit.
4726
4727
4728----------------------------------------
472906 October 2004.  Summary of changes for version 20041006:
4730
47311) ACPI CA Core Subsystem:
4732
4733Implemented support for the ACPI 3.0 Timer operator. This ASL function
4734implements a 64-bit timer with 100 nanosecond granularity.
4735
4736Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
4737implement the ACPI 3.0 Timer operator.  This allows the host OS to implement
4738the timer with the best clock available. Also, it keeps the core subsystem
4739out of the clock handling business, since the host OS (usually) performs
4740this function.
4741
4742Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
4743functions use a 64-bit address which is part of the packed ACPI Generic
4744Address Structure. Since the structure is non-aligned, the alignment macros
4745are now used to extract the address to a local variable before use.
4746
4747Fixed a problem where the ToInteger operator assumed all input strings were
4748hexadecimal. The operator now handles both decimal strings and hex strings
4749(prefixed with "0x").
4750
4751Fixed a problem where the string length in the string object created as a
4752result of the internal ConvertToString procedure could be incorrect. This
4753potentially affected all implicit conversions and also the ToDecimalString
4754and ToHexString operators.
4755
4756Fixed two problems in the ToString operator. If the length parameter was
4757zero, an incorrect string object was created and the value of the input
4758length parameter was inadvertently changed from zero to Ones.
4759
4760Fixed a problem where the optional ResourceSource string in the ExtendedIRQ
4761resource macro was ignored.
4762
4763Simplified the interfaces to the internal division functions, reducing code
4764size and complexity.
4765
4766Code and Data Size: Current and previous core subsystem library sizes are
4767shown below. These are the code and data sizes for the acpica.lib produced
4768by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4769any ACPI driver or OSPM code. The debug version of the code includes the
4770debug output trace mechanism and has a much larger code and data size. Note
4771that these values will vary depending on the efficiency of the compiler and
4772the compiler options used during generation.
4773
4774  Previous Release:
4775    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
4776    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
4777  Current Release:
4778    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4779    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
4780
4781
47822) iASL Compiler/Disassembler:
4783
4784Implemented support for the ACPI 3.0 Timer operator.
4785
4786Fixed a problem where the Default() operator was inadvertently ignored in a
4787Switch/Case block.  This was a problem in the translation of the Switch
4788statement to If...Else pairs.
4789
4790Added support to allow a standalone Return operator, with no parentheses (or
4791operands).
4792
4793Fixed a problem with code generation for the ElseIf operator where the
4794translated Else...If parse tree was improperly constructed leading to the
4795loss of some code.
4796
4797----------------------------------------
479822 September 2004.  Summary of changes for version 20040922:
4799
48001) ACPI CA Core Subsystem:
4801
4802Fixed a problem with the implementation of the LNot() operator where "Ones"
4803was not returned for the TRUE case. Changed the code to return Ones instead
4804of (!Arg) which was usually 1. This change affects iASL constant folding for
4805this operator also.
4806
4807Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
4808initialized properly -- Now zero the entire buffer in this case where the
4809buffer already exists.
4810
4811Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
4812Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
4813related code considerably. This will require changes/updates to all OS
4814interface layers (OSLs.)
4815
4816Implemented a new external interface, AcpiInstallExceptionHandler, to allow
4817a system exception handler to be installed. This handler is invoked upon any
4818run-time exception that occurs during control method execution.
4819
4820Added support for the DSDT in AcpiTbFindTable. This allows the
4821DataTableRegion() operator to access the local copy of the DSDT.
4822
4823Code and Data Size: Current and previous core subsystem library sizes are
4824shown below. These are the code and data sizes for the acpica.lib produced
4825by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4826any ACPI driver or OSPM code. The debug version of the code includes the
4827debug output trace mechanism and has a much larger code and data size. Note
4828that these values will vary depending on the efficiency of the compiler and
4829the compiler options used during generation.
4830
4831  Previous Release:
4832    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
4833    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
4834  Current Release:
4835    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
4836    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
4837
4838
48392) iASL Compiler/Disassembler:
4840
4841Fixed a problem with constant folding and the LNot operator. LNot was
4842returning 1 in the TRUE case, not Ones as per the ACPI specification. This
4843could result in the generation of an incorrect folded/reduced constant.
4844
4845End-Of-File is now allowed within a "//"-style comment.  A parse error no
4846longer occurs if such a comment is at the very end of the input ASL source
4847file.
4848
4849Implemented the "-r" option to override the Revision in the table header.
4850The initial use of this option will be to simplify the evaluation of the AML
4851interpreter by allowing a single ASL source module to be compiled for either
485232-bit or 64-bit integers.
4853
4854
4855----------------------------------------
485627 August 2004.  Summary of changes for version 20040827:
4857
48581) ACPI CA Core Subsystem:
4859
4860- Implemented support for implicit object conversion in the non-numeric
4861logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
4862LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
4863the second operand is implicitly converted on the fly to match the type of
4864the first operand.  For example:
4865
4866    LEqual (Source1, Source2)
4867
4868Source1 and Source2 must each evaluate to an integer, a string, or a buffer.
4869The data type of Source1 dictates the required type of Source2. Source2 is
4870implicitly converted if necessary to match the type of Source1.
4871
4872- Updated and corrected the behavior of the string conversion support.  The
4873rules concerning conversion of buffers to strings (according to the ACPI
4874specification) are as follows:
4875
4876ToDecimalString - explicit byte-wise conversion of buffer to string of
4877decimal values (0-255) separated by commas. ToHexString - explicit byte-wise
4878conversion of buffer to string of hex values (0-FF) separated by commas.
4879ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte
4880copy with no transform except NULL terminated. Any other implicit buffer-to-
4881string conversion - byte-wise conversion of buffer to string of hex values
4882(0-FF) separated by spaces.
4883
4884- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
4885
4886- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
4887one byte too short in the case of a node in the root scope.  This could
4888cause a fault during debug output.
4889
4890- Code and Data Size: Current and previous core subsystem library sizes are
4891shown below.  These are the code and data sizes for the acpica.lib produced
4892by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4893any ACPI driver or OSPM code.  The debug version of the code includes the
4894debug output trace mechanism and has a much larger code and data size.  Note
4895that these values will vary depending on the efficiency of the compiler and
4896the compiler options used during generation.
4897
4898  Previous Release:
4899    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4900    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4901  Current Release:
4902    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
4903    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
4904
4905
49062) iASL Compiler/Disassembler:
4907
4908- Fixed a Linux generation error.
4909
4910
4911----------------------------------------
491216 August 2004.  Summary of changes for version 20040816:
4913
49141) ACPI CA Core Subsystem:
4915
4916Designed and implemented support within the AML interpreter for the so-
4917called "implicit return".  This support returns the result of the last ASL
4918operation within a control method, in the absence of an explicit Return()
4919operator.  A few machines depend on this behavior, even though it is not
4920explicitly supported by the ASL language.  It is optional support that can
4921be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
4922
4923Removed support for the PCI_Config address space from the internal low level
4924hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
4925support was not used internally, and would not work correctly anyway because
4926the PCI bus number and segment number were not supported.  There are
4927separate interfaces for PCI configuration space access because of the unique
4928interface.
4929
4930Code and Data Size: Current and previous core subsystem library sizes are
4931shown below.  These are the code and data sizes for the acpica.lib produced
4932by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4933any ACPI driver or OSPM code.  The debug version of the code includes the
4934debug output trace mechanism and has a much larger code and data size.  Note
4935that these values will vary depending on the efficiency of the compiler and
4936the compiler options used during generation.
4937
4938  Previous Release:
4939    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4940    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
4941  Current Release:
4942    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4943    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4944
4945
49462) iASL Compiler/Disassembler:
4947
4948Fixed a problem where constants in ASL expressions at the root level (not
4949within a control method) could be inadvertently truncated during code
4950generation.  This problem was introduced in the 20040715 release.
4951
4952
4953----------------------------------------
495415 July 2004.  Summary of changes for version 20040715:
4955
49561) ACPI CA Core Subsystem:
4957
4958Restructured the internal HW GPE interfaces to pass/track the current state
4959of interrupts (enabled/disabled) in order to avoid possible deadlock and
4960increase flexibility of the interfaces.
4961
4962Implemented a "lexicographical compare" for String and Buffer objects within
4963the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
4964as per further clarification to the ACPI specification.  Behavior is similar
4965to C library "strcmp".
4966
4967Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
4968external function.  In the 32-bit non-debug case, the stack use has been
4969reduced from 168 bytes to 32 bytes.
4970
4971Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack,
4972whose purpose is to allow the AML interpreter to forgive certain bad AML
4973constructs.  Default setting is FALSE.
4974
4975Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO
4976support code.  If enabled, it allows field access to go beyond the end of a
4977region definition if the field is within the region length rounded up to the
4978next access width boundary (a common coding error.)
4979
4980Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
4981ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these
4982symbols are lowercased by the latest version of the AcpiSrc tool.
4983
4984The prototypes for the PCI interfaces in acpiosxf.h have been updated to
4985rename "Register" to simply "Reg" to prevent certain compilers from
4986complaining.
4987
4988Code and Data Size: Current and previous core subsystem library sizes are
4989shown below.  These are the code and data sizes for the acpica.lib produced
4990by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4991any ACPI driver or OSPM code.  The debug version of the code includes the
4992debug output trace mechanism and has a much larger code and data size.  Note
4993that these values will vary depending on the efficiency of the compiler and
4994the compiler options used during generation.
4995
4996  Previous Release:
4997    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4998    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
4999  Current Release:
5000    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5001    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
5002
5003
50042) iASL Compiler/Disassembler:
5005
5006Implemented full support for Package objects within the Case() operator.
5007Note: The Break() operator is currently not supported within Case blocks
5008(TermLists) as there is some question about backward compatibility with ACPI
50091.0 interpreters.
5010
5011
5012Fixed a problem where complex terms were not supported properly within the
5013Switch() operator.
5014
5015Eliminated extraneous warning for compiler-emitted reserved names of the
5016form "_T_x".  (Used in Switch/Case operators.)
5017
5018Eliminated optimization messages for "_T_x" objects and small constants
5019within the DefinitionBlock operator.
5020
5021
5022----------------------------------------
502315 June 2004.  Summary of changes for version 20040615:
5024
50251) ACPI CA Core Subsystem:
5026
5027Implemented support for Buffer and String objects (as per ACPI 2.0) for the
5028following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
5029LLessEqual.
5030
5031All directory names in the entire source package are lower case, as they
5032were in earlier releases.
5033
5034Implemented "Disassemble" command in the AML debugger that will disassemble
5035a single control method.
5036
5037Code and Data Size: Current and previous core subsystem library sizes are
5038shown below.  These are the code and data sizes for the acpica.lib produced
5039by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5040any ACPI driver or OSPM code.  The debug version of the code includes the
5041debug output trace mechanism and has a much larger code and data size.  Note
5042that these values will vary depending on the efficiency of the compiler and
5043the compiler options used during generation.
5044
5045  Previous Release:
5046    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
5047    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
5048
5049  Current Release:
5050    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5051    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
5052
5053
50542) iASL Compiler/Disassembler:
5055
5056Implemented support for Buffer and String objects (as per ACPI 2.0) for the
5057following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
5058LLessEqual.
5059
5060All directory names in the entire source package are lower case, as they
5061were in earlier releases.
5062
5063Fixed a fault when using the -g or -d<nofilename> options if the FADT was
5064not found.
5065
5066Fixed an issue with the Windows version of the compiler where later versions
5067of Windows place the FADT in the registry under the name "FADT" and not
5068"FACP" as earlier versions did.  This applies when using the -g or -
5069d<nofilename> options.  The compiler now looks for both strings as
5070necessary.
5071
5072Fixed a problem with compiler namepath optimization where a namepath within
5073the Scope() operator could not be optimized if the namepath was a subpath of
5074the current scope path.
5075
5076----------------------------------------
507727 May 2004.  Summary of changes for version 20040527:
5078
50791) ACPI CA Core Subsystem:
5080
5081Completed a new design and implementation for EBDA (Extended BIOS Data Area)
5082support in the RSDP scan code.  The original code improperly scanned for the
5083EBDA by simply scanning from memory location 0 to 0x400.  The correct method
5084is to first obtain the EBDA pointer from within the BIOS data area, then
5085scan 1K of memory starting at the EBDA pointer.  There appear to be few if
5086any machines that place the RSDP in the EBDA, however.
5087
5088Integrated a fix for a possible fault during evaluation of BufferField
5089arguments.  Obsolete code that was causing the problem was removed.
5090
5091Found and fixed a problem in the Field Support Code where data could be
5092corrupted on a bit field read that starts on an aligned boundary but does
5093not end on an aligned boundary.  Merged the read/write "datum length"
5094calculation code into a common procedure.
5095
5096Rolled in a couple of changes to the FreeBSD-specific header.
5097
5098
5099Code and Data Size: Current and previous core subsystem library sizes are
5100shown below.  These are the code and data sizes for the acpica.lib produced
5101by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5102any ACPI driver or OSPM code.  The debug version of the code includes the
5103debug output trace mechanism and has a much larger code and data size.  Note
5104that these values will vary depending on the efficiency of the compiler and
5105the compiler options used during generation.
5106
5107  Previous Release:
5108    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5109    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
5110  Current Release:
5111    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
5112    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
5113
5114
51152) iASL Compiler/Disassembler:
5116
5117Fixed a generation warning produced by some overly-verbose compilers for a
511864-bit constant.
5119
5120----------------------------------------
512114 May 2004.  Summary of changes for version 20040514:
5122
51231) ACPI CA Core Subsystem:
5124
5125Fixed a problem where hardware GPE enable bits sometimes not set properly
5126during and after GPE method execution.  Result of 04/27 changes.
5127
5128Removed extra "clear all GPEs" when sleeping/waking.
5129
5130Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
5131AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to
5132the new AcpiEv* calls as appropriate.
5133
5134ACPI_OS_NAME was removed from the OS-specific headers.  The default name is
5135now "Microsoft Windows NT" for maximum compatibility.  However this can be
5136changed by modifying the acconfig.h file.
5137
5138Allow a single invocation of AcpiInstallNotifyHandler for a handler that
5139traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
5140
5141Run _INI methods on ThermalZone objects.  This is against the ACPI
5142specification, but there is apparently ASL code in the field that has these
5143_INI methods, and apparently "other" AML interpreters execute them.
5144
5145Performed a full 16/32/64 bit lint that resulted in some small changes.
5146
5147Added a sleep simulation command to the AML debugger to test sleep code.
5148
5149Code and Data Size: Current and previous core subsystem library sizes are
5150shown below.  These are the code and data sizes for the acpica.lib produced
5151by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5152any ACPI driver or OSPM code.  The debug version of the code includes the
5153debug output trace mechanism and has a much larger code and data size.  Note
5154that these values will vary depending on the efficiency of the compiler and
5155the compiler options used during generation.
5156
5157  Previous Release:
5158    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5159    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
5160  Current Release:
5161    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5162    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
5163
5164----------------------------------------
516527 April 2004.  Summary of changes for version 20040427:
5166
51671) ACPI CA Core Subsystem:
5168
5169Completed a major overhaul of the GPE handling within ACPI CA.  There are
5170now three types of GPEs:  wake-only, runtime-only, and combination wake/run.
5171The only GPEs allowed to be combination wake/run are for button-style
5172devices such as a control-method power button, control-method sleep button,
5173or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not
5174referenced by any _PRW methods are marked for "runtime" and hardware
5175enabled.  Any GPE that is referenced by a _PRW method is marked for "wake"
5176(and disabled at runtime).  However, at sleep time, only those GPEs that
5177have been specifically enabled for wake via the AcpiEnableGpe interface will
5178actually be hardware enabled.
5179
5180A new external interface has been added, AcpiSetGpeType(), that is meant to
5181be used by device drivers to force a GPE to a particular type.  It will be
5182especially useful for the drivers for the button devices mentioned above.
5183
5184Completed restructuring of the ACPI CA initialization sequence so that
5185default operation region handlers are installed before GPEs are initialized
5186and the _PRW methods are executed.  This will prevent errors when the _PRW
5187methods attempt to access system memory or I/O space.
5188
5189GPE enable/disable no longer reads the GPE enable register.  We now keep the
5190enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
5191thus no longer depend on the hardware to maintain these bits.
5192
5193Always clear the wake status and fixed/GPE status bits before sleep, even
5194for state S5.
5195
5196Improved the AML debugger output for displaying the GPE blocks and their
5197current status.
5198
5199Added new strings for the _OSI method, of the form "Windows 2001 SPx" where
5200x = 0,1,2,3,4.
5201
5202Fixed a problem where the physical address was incorrectly calculated when
5203the Load() operator was used to directly load from an Operation Region (vs.
5204loading from a Field object.)  Also added check for minimum table length for
5205this case.
5206
5207Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
5208mutex release.
5209
5210Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
5211consistency with the other fields returned.
5212
5213Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
5214structure for each GPE in the system, so the size of this structure is
5215important.
5216
5217CPU stack requirement reduction:  Cleaned up the method execution and object
5218evaluation paths so that now a parameter structure is passed, instead of
5219copying the various method parameters over and over again.
5220
5221In evregion.c:  Correctly exit and reenter the interpreter region if and
5222only if dispatching an operation region request to a user-installed handler.
5223Do not exit/reenter when dispatching to a default handler (e.g., default
5224system memory or I/O handlers)
5225
5226
5227Notes for updating drivers for the new GPE support.  The following changes
5228must be made to ACPI-related device drivers that are attached to one or more
5229GPEs: (This information will be added to the ACPI CA Programmer Reference.)
5230
52311) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
5232explicitly call AcpiEnableGpe.
52332) There is a new interface called AcpiSetGpeType. This should be called
5234before enabling the GPE.  Also, this interface will automatically disable
5235the GPE if it is currently enabled.
52363) AcpiEnableGpe no longer supports a GPE type flag.
5237
5238Specific drivers that must be changed:
52391) EC driver:
5240    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
5241AeGpeHandler, NULL);
5242    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
5243    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
5244
52452) Button Drivers (Power, Lid, Sleep):
5246Run _PRW method under parent device
5247If _PRW exists: /* This is a control-method button */
5248    Extract GPE number and possibly GpeDevice
5249    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
5250    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
5251
5252For all other devices that have _PRWs, we automatically set the GPE type to
5253ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This
5254must be done on a selective basis, usually requiring some kind of user app
5255to allow the user to pick the wake devices.
5256
5257
5258Code and Data Size: Current and previous core subsystem library sizes are
5259shown below.  These are the code and data sizes for the acpica.lib produced
5260by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5261any ACPI driver or OSPM code.  The debug version of the code includes the
5262debug output trace mechanism and has a much larger code and data size.  Note
5263that these values will vary depending on the efficiency of the compiler and
5264the compiler options used during generation.
5265
5266  Previous Release:
5267    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5268    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5269  Current Release:
5270
5271    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5272    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
5273
5274
5275
5276----------------------------------------
527702 April 2004.  Summary of changes for version 20040402:
5278
52791) ACPI CA Core Subsystem:
5280
5281Fixed an interpreter problem where an indirect store through an ArgX
5282parameter was incorrectly applying the "implicit conversion rules" during
5283the store.  From the ACPI specification: "If the target is a method local or
5284argument (LocalX or ArgX), no conversion is performed and the result is
5285stored directly to the target".  The new behavior is to disable implicit
5286conversion during ALL stores to an ArgX.
5287
5288Changed the behavior of the _PRW method scan to ignore any and all errors
5289returned by a given _PRW.  This prevents the scan from aborting from the
5290failure of any single _PRW.
5291
5292Moved the runtime configuration parameters from the global init procedure to
5293static variables in acglobal.h.  This will allow the host to override the
5294default values easily.
5295
5296Code and Data Size: Current and previous core subsystem library sizes are
5297shown below.  These are the code and data sizes for the acpica.lib produced
5298by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5299any ACPI driver or OSPM code.  The debug version of the code includes the
5300debug output trace mechanism and has a much larger code and data size.  Note
5301that these values will vary depending on the efficiency of the compiler and
5302the compiler options used during generation.
5303
5304  Previous Release:
5305    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5306    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5307  Current Release:
5308    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5309    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5310
5311
53122) iASL Compiler/Disassembler:
5313
5314iASL now fully disassembles SSDTs.  However, External() statements are not
5315generated automatically for unresolved symbols at this time.  This is a
5316planned feature for future implementation.
5317
5318Fixed a scoping problem in the disassembler that occurs when the type of the
5319target of a Scope() operator is overridden.  This problem caused an
5320incorrectly nested internal namespace to be constructed.
5321
5322Any warnings or errors that are emitted during disassembly are now commented
5323out automatically so that the resulting file can be recompiled without any
5324hand editing.
5325
5326----------------------------------------
532726 March 2004.  Summary of changes for version 20040326:
5328
53291) ACPI CA Core Subsystem:
5330
5331Implemented support for "wake" GPEs via interaction between GPEs and the
5332_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
5333identified as a WAKE GPE and by default will no longer be enabled at
5334runtime.  Previously, we were blindly enabling all GPEs with a corresponding
5335_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We
5336believe this has been the cause of thousands of "spurious" GPEs on some
5337systems.
5338
5339This new GPE behavior is can be reverted to the original behavior (enable
5340ALL GPEs at runtime) via a runtime flag.
5341
5342Fixed a problem where aliased control methods could not access objects
5343properly.  The proper scope within the namespace was not initialized
5344(transferred to the target of the aliased method) before executing the
5345target method.
5346
5347Fixed a potential race condition on internal object deletion on the return
5348object in AcpiEvaluateObject.
5349
5350Integrated a fix for resource descriptors where both _MEM and _MTP were
5351being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
5352wide, 0x0F instead of 0x03.)
5353
5354Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a
5355fault in some cases.
5356
5357Updated Notify() values for debug statements in evmisc.c
5358
5359Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
5360
5361Code and Data Size: Current and previous core subsystem library sizes are
5362shown below.  These are the code and data sizes for the acpica.lib produced
5363by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5364any ACPI driver or OSPM code.  The debug version of the code includes the
5365debug output trace mechanism and has a much larger code and data size.  Note
5366that these values will vary depending on the efficiency of the compiler and
5367the compiler options used during generation.
5368
5369  Previous Release:
5370
5371    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5372    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5373  Current Release:
5374    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5375    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5376
5377----------------------------------------
537811 March 2004.  Summary of changes for version 20040311:
5379
53801) ACPI CA Core Subsystem:
5381
5382Fixed a problem where errors occurring during the parse phase of control
5383method execution did not abort cleanly.  For example, objects created and
5384installed in the namespace were not deleted.  This caused all subsequent
5385invocations of the method to return the AE_ALREADY_EXISTS exception.
5386
5387Implemented a mechanism to force a control method to "Serialized" execution
5388if the method attempts to create namespace objects. (The root of the
5389AE_ALREADY_EXISTS problem.)
5390
5391Implemented support for the predefined _OSI "internal" control method.
5392Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
5393"Windows 2001.1", and can be easily upgraded for new strings as necessary.
5394This feature will allow "other" operating systems to execute the fully
5395tested, "Windows" code path through the ASL code
5396
5397Global Lock Support:  Now allows multiple acquires and releases with any
5398internal thread.  Removed concept of "owning thread" for this special mutex.
5399
5400Fixed two functions that were inappropriately declaring large objects on the
5401CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during
5402method execution considerably.
5403
5404Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
5405S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
5406
5407Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
5408defined on the machine.
5409
5410Implemented two runtime options:  One to force all control method execution
5411to "Serialized" to mimic Windows behavior, another to disable _OSI support
5412if it causes problems on a given machine.
5413
5414Code and Data Size: Current and previous core subsystem library sizes are
5415shown below.  These are the code and data sizes for the acpica.lib produced
5416by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5417any ACPI driver or OSPM code.  The debug version of the code includes the
5418debug output trace mechanism and has a much larger code and data size.  Note
5419that these values will vary depending on the efficiency of the compiler and
5420the compiler options used during generation.
5421
5422  Previous Release:
5423    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5424    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5425  Current Release:
5426    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5427    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5428
54292) iASL Compiler/Disassembler:
5430
5431Fixed an array size problem for FreeBSD that would cause the compiler to
5432fault.
5433
5434----------------------------------------
543520 February 2004.  Summary of changes for version 20040220:
5436
5437
54381) ACPI CA Core Subsystem:
5439
5440Implemented execution of _SxD methods for Device objects in the
5441GetObjectInfo interface.
5442
5443Fixed calls to _SST method to pass the correct arguments.
5444
5445Added a call to _SST on wake to restore to "working" state.
5446
5447Check for End-Of-Buffer failure case in the WalkResources interface.
5448
5449Integrated fix for 64-bit alignment issue in acglobal.h by moving two
5450structures to the beginning of the file.
5451
5452After wake, clear GPE status register(s) before enabling GPEs.
5453
5454After wake, clear/enable power button.  (Perhaps we should clear/enable all
5455fixed events upon wake.)
5456
5457Fixed a couple of possible memory leaks in the Namespace manager.
5458
5459Integrated latest acnetbsd.h file.
5460
5461----------------------------------------
546211 February 2004.  Summary of changes for version 20040211:
5463
5464
54651) ACPI CA Core Subsystem:
5466
5467Completed investigation and implementation of the call-by-reference
5468mechanism for control method arguments.
5469
5470Fixed a problem where a store of an object into an indexed package could
5471fail if the store occurs within a different method than the method that
5472created the package.
5473
5474Fixed a problem where the ToDecimal operator could return incorrect results.
5475
5476Fixed a problem where the CopyObject operator could fail on some of the more
5477obscure objects (e.g., Reference objects.)
5478
5479Improved the output of the Debug object to display buffer, package, and
5480index objects.
5481
5482Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
5483the expected result.
5484
5485Added permanent ACPI_REPORT_ERROR macros for all instances of the
5486ACPI_AML_INTERNAL exception.
5487
5488Integrated latest version of acfreebsd.h
5489
5490----------------------------------------
549116 January 2004.  Summary of changes for version 20040116:
5492
5493The purpose of this release is primarily to update the copyright years in
5494each module, thus causing a huge number of diffs.  There are a few small
5495functional changes, however.
5496
54971) ACPI CA Core Subsystem:
5498
5499Improved error messages when there is a problem finding one or more of the
5500required base ACPI tables
5501
5502Reintroduced the definition of APIC_HEADER in actbl.h
5503
5504Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
5505
5506Removed extraneous reference to NewObj in dsmthdat.c
5507
55082) iASL compiler
5509
5510Fixed a problem introduced in December that disabled the correct disassembly
5511of Resource Templates
5512
5513
5514----------------------------------------
551503 December 2003.  Summary of changes for version 20031203:
5516
55171) ACPI CA Core Subsystem:
5518
5519Changed the initialization of Operation Regions during subsystem
5520init to perform two entire walks of the ACPI namespace; The first
5521to initialize the regions themselves, the second to execute the
5522_REG methods.  This fixed some interdependencies across _REG
5523methods found on some machines.
5524
5525Fixed a problem where a Store(Local0, Local1) could simply update
5526the object reference count, and not create a new copy of the
5527object if the Local1 is uninitialized.
5528
5529Implemented support for the _SST reserved method during sleep
5530transitions.
5531
5532Implemented support to clear the SLP_TYP and SLP_EN bits when
5533waking up, this is apparently required by some machines.
5534
5535When sleeping, clear the wake status only if SleepState is not S5.
5536
5537Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
5538pointer arithmetic advanced a string pointer too far.
5539
5540Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
5541could be returned if the requested table has not been loaded.
5542
5543Within the support for IRQ resources, restructured the handling of
5544the active and edge/level bits.
5545
5546Fixed a few problems in AcpiPsxExecute() where memory could be
5547leaked under certain error conditions.
5548
5549Improved error messages for the cases where the ACPI mode could
5550not be entered.
5551
5552Code and Data Size: Current and previous core subsystem library
5553sizes are shown below.  These are the code and data sizes for the
5554acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5555these values do not include any ACPI driver or OSPM code.  The
5556debug version of the code includes the debug output trace
5557mechanism and has a much larger code and data size.  Note that
5558these values will vary depending on the efficiency of the compiler
5559and the compiler options used during generation.
5560
5561  Previous Release (20031029):
5562    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
5563    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
5564  Current Release:
5565    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5566    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5567
55682) iASL Compiler/Disassembler:
5569
5570Implemented a fix for the iASL disassembler where a bad index was
5571generated.  This was most noticeable on 64-bit platforms
5572
5573
5574----------------------------------------
557529 October 2003.  Summary of changes for version 20031029:
5576
55771) ACPI CA Core Subsystem:
5578
5579
5580Fixed a problem where a level-triggered GPE with an associated
5581_Lxx control method was incorrectly cleared twice.
5582
5583Fixed a problem with the Field support code where an access can
5584occur beyond the end-of-region if the field is non-aligned but
5585extends to the very end of the parent region (resulted in an
5586AE_AML_REGION_LIMIT exception.)
5587
5588Fixed a problem with ACPI Fixed Events where an RT Clock handler
5589would not get invoked on an RTC event.  The RTC event bitmasks for
5590the PM1 registers were not being initialized properly.
5591
5592Implemented support for executing _STA and _INI methods for
5593Processor objects.  Although this is currently not part of the
5594ACPI specification, there is existing ASL code that depends on the
5595init-time execution of these methods.
5596
5597Implemented and deployed a GetDescriptorName function to decode
5598the various types of internal descriptors.  Guards against null
5599descriptors during debug output also.
5600
5601Implemented and deployed a GetNodeName function to extract the 4-
5602character namespace node name.  This function simplifies the debug
5603and error output, as well as guarding against null pointers during
5604output.
5605
5606Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
5607simplify the debug and error output of 64-bit integers.  This
5608macro replaces the HIDWORD and LODWORD macros for dumping these
5609integers.
5610
5611Updated the implementation of the Stall() operator to only call
5612AcpiOsStall(), and also return an error if the operand is larger
5613than 255.  This preserves the required behavior of not
5614relinquishing the processor, as would happen if AcpiOsSleep() was
5615called for "long stalls".
5616
5617Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
5618initialized are now treated as NOOPs.
5619
5620Cleaned up a handful of warnings during 64-bit generation.
5621
5622Fixed a reported error where and incorrect GPE number was passed
5623to the GPE dispatch handler.  This value is only used for error
5624output, however.  Used this opportunity to clean up and streamline
5625the GPE dispatch code.
5626
5627Code and Data Size: Current and previous core subsystem library
5628sizes are shown below.  These are the code and data sizes for the
5629acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5630these values do not include any ACPI driver or OSPM code.  The
5631
5632debug version of the code includes the debug output trace
5633mechanism and has a much larger code and data size.  Note that
5634these values will vary depending on the efficiency of the compiler
5635and the compiler options used during generation.
5636
5637  Previous Release (20031002):
5638    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
5639    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
5640  Current Release:
5641    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
5642    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
5643
5644
56452) iASL Compiler/Disassembler:
5646
5647Updated the iASL compiler to return an error if the operand to the
5648Stall() operator is larger than 255.
5649
5650
5651----------------------------------------
565202 October 2003.  Summary of changes for version 20031002:
5653
5654
56551) ACPI CA Core Subsystem:
5656
5657Fixed a problem with Index Fields where the index was not
5658incremented for fields that require multiple writes to the
5659index/data registers (Fields that are wider than the data
5660register.)
5661
5662Fixed a problem with all Field objects where a write could go
5663beyond the end-of-field if the field was larger than the access
5664granularity and therefore required multiple writes to complete the
5665request.  An extra write beyond the end of the field could happen
5666inadvertently.
5667
5668Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
5669would incorrectly be returned if the width of the Data Register
5670was larger than the specified field access width.
5671
5672Completed fixes for LoadTable() and Unload() and verified their
5673operation.  Implemented full support for the "DdbHandle" object
5674throughout the ACPI CA subsystem.
5675
5676Implemented full support for the MADT and ECDT tables in the ACPI
5677CA header files.  Even though these tables are not directly
5678consumed by ACPI CA, the header definitions are useful for ACPI
5679device drivers.
5680
5681Integrated resource descriptor fixes posted to the Linux ACPI
5682list.  This included checks for minimum descriptor length, and
5683support for trailing NULL strings within descriptors that have
5684optional string elements.
5685
5686Code and Data Size: Current and previous core subsystem library
5687sizes are shown below.  These are the code and data sizes for the
5688acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5689these values do not include any ACPI driver or OSPM code.  The
5690debug version of the code includes the debug output trace
5691mechanism and has a much larger code and data size.  Note that
5692these values will vary depending on the efficiency of the compiler
5693and the compiler options used during generation.
5694
5695  Previous Release (20030918):
5696    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
5697    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
5698  Current Release:
5699    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
5700    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
5701
5702
57032) iASL Compiler:
5704
5705Implemented detection of non-ASCII characters within the input
5706source ASL file.  This catches attempts to compile binary (AML)
5707files early in the compile, with an informative error message.
5708
5709Fixed a problem where the disassembler would fault if the output
5710filename could not be generated or if the output file could not be
5711opened.
5712
5713----------------------------------------
571418 September 2003.  Summary of changes for version 20030918:
5715
5716
57171) ACPI CA Core Subsystem:
5718
5719Found and fixed a longstanding problem with the late execution of
5720the various deferred AML opcodes (such as Operation Regions,
5721Buffer Fields, Buffers, and Packages).  If the name string
5722specified for the name of the new object placed the object in a
5723scope other than the current scope, the initialization/execution
5724of the opcode failed.  The solution to this problem was to
5725implement a mechanism where the late execution of such opcodes
5726does not attempt to lookup/create the name a second time in an
5727incorrect scope.  This fixes the "region size computed
5728incorrectly" problem.
5729
5730Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
5731Global Lock AE_BAD_PARAMETER error.
5732
5733Fixed several 64-bit issues with prototypes, casting and data
5734types.
5735
5736Removed duplicate prototype from acdisasm.h
5737
5738Fixed an issue involving EC Operation Region Detach (Shaohua Li)
5739
5740Code and Data Size: Current and previous core subsystem library
5741sizes are shown below.  These are the code and data sizes for the
5742acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5743these values do not include any ACPI driver or OSPM code.  The
5744debug version of the code includes the debug output trace
5745mechanism and has a much larger code and data size.  Note that
5746these values will vary depending on the efficiency of the compiler
5747and the compiler options used during generation.
5748
5749  Previous Release:
5750
5751    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
5752    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
5753  Current Release:
5754    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
5755    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
5756
5757
57582) Linux:
5759
5760Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
5761correct sleep time in seconds.
5762
5763----------------------------------------
576414 July 2003.  Summary of changes for version 20030619:
5765
57661) ACPI CA Core Subsystem:
5767
5768Parse SSDTs in order discovered, as opposed to reverse order
5769(Hrvoje Habjanic)
5770
5771Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
5772Klausner,
5773   Nate Lawson)
5774
5775
57762) Linux:
5777
5778Dynamically allocate SDT list (suggested by Andi Kleen)
5779
5780proc function return value cleanups (Andi Kleen)
5781
5782Correctly handle NMI watchdog during long stalls (Andrew Morton)
5783
5784Make it so acpismp=force works (reported by Andrew Morton)
5785
5786
5787----------------------------------------
578819 June 2003.  Summary of changes for version 20030619:
5789
57901) ACPI CA Core Subsystem:
5791
5792Fix To/FromBCD, eliminating the need for an arch-specific #define.
5793
5794Do not acquire a semaphore in the S5 shutdown path.
5795
5796Fix ex_digits_needed for 0. (Takayoshi Kochi)
5797
5798Fix sleep/stall code reversal. (Andi Kleen)
5799
5800Revert a change having to do with control method calling
5801semantics.
5802
58032) Linux:
5804
5805acpiphp update (Takayoshi Kochi)
5806
5807Export acpi_disabled for sonypi (Stelian Pop)
5808
5809Mention acpismp=force in config help
5810
5811Re-add acpitable.c and acpismp=force. This improves backwards
5812
5813compatibility and also cleans up the code to a significant degree.
5814
5815Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
5816
5817----------------------------------------
581822 May 2003.  Summary of changes for version 20030522:
5819
58201) ACPI CA Core Subsystem:
5821
5822Found and fixed a reported problem where an AE_NOT_FOUND error
5823occurred occasionally during _BST evaluation.  This turned out to
5824be an Owner ID allocation issue where a called method did not get
5825a new ID assigned to it.  Eventually, (after 64k calls), the Owner
5826ID UINT16 would wraparound so that the ID would be the same as the
5827caller's and the called method would delete the caller's
5828namespace.
5829
5830Implemented extended error reporting for control methods that are
5831aborted due to a run-time exception.  Output includes the exact
5832AML instruction that caused the method abort, a dump of the method
5833locals and arguments at the time of the abort, and a trace of all
5834nested control method calls.
5835
5836Modified the interpreter to allow the creation of buffers of zero
5837length from the AML code. Implemented new code to ensure that no
5838attempt is made to actually allocate a memory buffer (of length
5839zero) - instead, a simple buffer object with a NULL buffer pointer
5840and length zero is created.  A warning is no longer issued when
5841the AML attempts to create a zero-length buffer.
5842
5843Implemented a workaround for the "leading asterisk issue" in
5844_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
5845asterisk is automatically removed if present in any HID, UID, or
5846CID strings.  The iASL compiler will still flag this asterisk as
5847an error, however.
5848
5849Implemented full support for _CID methods that return a package of
5850multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
5851now additionally returns a device _CID list if present.  This
5852required a change to the external interface in order to pass an
5853ACPI_BUFFER object as a parameter since the _CID list is of
5854variable length.
5855
5856Fixed a problem with the new AE_SAME_HANDLER exception where
5857handler initialization code did not know about this exception.
5858
5859Code and Data Size: Current and previous core subsystem library
5860sizes are shown below.  These are the code and data sizes for the
5861acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5862these values do not include any ACPI driver or OSPM code.  The
5863debug version of the code includes the debug output trace
5864mechanism and has a much larger code and data size.  Note that
5865these values will vary depending on the efficiency of the compiler
5866and the compiler options used during generation.
5867
5868  Previous Release (20030509):
5869    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
5870    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
5871  Current Release:
5872    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
5873    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
5874
5875
58762) Linux:
5877
5878Fixed a bug in which we would reinitialize the ACPI interrupt
5879after it was already working, thus disabling all ACPI and the IRQs
5880for any other device sharing the interrupt. (Thanks to Stian
5881Jordet)
5882
5883Toshiba driver update (John Belmonte)
5884
5885Return only 0 or 1 for our interrupt handler status (Andrew
5886Morton)
5887
5888
58893) iASL Compiler:
5890
5891Fixed a reported problem where multiple (nested) ElseIf()
5892statements were not handled correctly by the compiler, resulting
5893in incorrect warnings and incorrect AML code.  This was a problem
5894in both the ASL parser and the code generator.
5895
5896
58974) Documentation:
5898
5899Added changes to existing interfaces, new exception codes, and new
5900text concerning reference count object management versus garbage
5901collection.
5902
5903----------------------------------------
590409 May 2003.  Summary of changes for version 20030509.
5905
5906
59071) ACPI CA Core Subsystem:
5908
5909Changed the subsystem initialization sequence to hold off
5910installation of address space handlers until the hardware has been
5911initialized and the system has entered ACPI mode.  This is because
5912the installation of space handlers can cause _REG methods to be
5913run.  Previously, the _REG methods could potentially be run before
5914ACPI mode was enabled.
5915
5916Fixed some memory leak issues related to address space handler and
5917notify handler installation.  There were some problems with the
5918reference count mechanism caused by the fact that the handler
5919objects are shared across several namespace objects.
5920
5921Fixed a reported problem where reference counts within the
5922namespace were not properly updated when named objects created by
5923method execution were deleted.
5924
5925Fixed a reported problem where multiple SSDTs caused a deletion
5926issue during subsystem termination.  Restructured the table data
5927structures to simplify the linked lists and the related code.
5928
5929Fixed a problem where the table ID associated with secondary
5930tables (SSDTs) was not being propagated into the namespace objects
5931created by those tables.  This would only present a problem for
5932tables that are unloaded at run-time, however.
5933
5934Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
5935type as the length parameter (instead of UINT32).
5936
5937Solved a long-standing problem where an ALREADY_EXISTS error
5938appears on various systems.  This problem could happen when there
5939are multiple PCI_Config operation regions under a single PCI root
5940bus.  This doesn't happen very frequently, but there are some
5941systems that do this in the ASL.
5942
5943Fixed a reported problem where the internal DeleteNode function
5944was incorrectly handling the case where a namespace node was the
5945first in the parent's child list, and had additional peers (not
5946the only child, but first in the list of children.)
5947
5948Code and Data Size: Current core subsystem library sizes are shown
5949below.  These are the code and data sizes for the acpica.lib
5950produced by the Microsoft Visual C++ 6.0 compiler, and these
5951values do not include any ACPI driver or OSPM code.  The debug
5952version of the code includes the debug output trace mechanism and
5953has a much larger code and data size.  Note that these values will
5954vary depending on the efficiency of the compiler and the compiler
5955options used during generation.
5956
5957  Previous Release
5958    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
5959    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
5960  Current Release:
5961    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
5962    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
5963
5964
59652) Linux:
5966
5967Allow ":" in OS override string (Ducrot Bruno)
5968
5969Kobject fix (Greg KH)
5970
5971
59723 iASL Compiler/Disassembler:
5973
5974Fixed a problem in the generation of the C source code files (AML
5975is emitted in C source statements for BIOS inclusion) where the
5976Ascii dump that appears within a C comment at the end of each line
5977could cause a compile time error if the AML sequence happens to
5978have an open comment or close comment sequence embedded.
5979
5980
5981----------------------------------------
598224 April 2003.  Summary of changes for version 20030424.
5983
5984
59851) ACPI CA Core Subsystem:
5986
5987Support for big-endian systems has been implemented.  Most of the
5988support has been invisibly added behind big-endian versions of the
5989ACPI_MOVE_* macros.
5990
5991Fixed a problem in AcpiHwDisableGpeBlock() and
5992AcpiHwClearGpeBlock() where an incorrect offset was passed to the
5993low level hardware write routine.  The offset parameter was
5994actually eliminated from the low level read/write routines because
5995they had become obsolete.
5996
5997Fixed a problem where a handler object was deleted twice during
5998the removal of a fixed event handler.
5999
6000
60012) Linux:
6002
6003A fix for SMP systems with link devices was contributed by
6004
6005Compaq's Dan Zink.
6006
6007(2.5) Return whether we handled the interrupt in our IRQ handler.
6008(Linux ISRs no longer return void, so we can propagate the handler
6009return value from the ACPI CA core back to the OS.)
6010
6011
6012
60133) Documentation:
6014
6015The ACPI CA Programmer Reference has been updated to reflect new
6016interfaces and changes to existing interfaces.
6017
6018----------------------------------------
601928 March 2003.  Summary of changes for version 20030328.
6020
60211) ACPI CA Core Subsystem:
6022
6023The GPE Block Device support has been completed.  New interfaces
6024are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
6025interfaces (enable, disable, clear, getstatus) have been split
6026into separate interfaces for Fixed Events and General Purpose
6027Events (GPEs) in order to support GPE Block Devices properly.
6028
6029Fixed a problem where the error message "Failed to acquire
6030semaphore" would appear during operations on the embedded
6031controller (EC).
6032
6033Code and Data Size: Current core subsystem library sizes are shown
6034below.  These are the code and data sizes for the acpica.lib
6035produced by the Microsoft Visual C++ 6.0 compiler, and these
6036values do not include any ACPI driver or OSPM code.  The debug
6037version of the code includes the debug output trace mechanism and
6038has a much larger code and data size.  Note that these values will
6039vary depending on the efficiency of the compiler and the compiler
6040options used during generation.
6041
6042  Previous Release
6043    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
6044    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
6045  Current Release:
6046    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
6047    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
6048
6049
6050----------------------------------------
605128 February 2003.  Summary of changes for version 20030228.
6052
6053
60541) ACPI CA Core Subsystem:
6055
6056The GPE handling and dispatch code has been completely overhauled
6057in preparation for support of GPE Block Devices (ID ACPI0006).
6058This affects internal data structures and code only; there should
6059be no differences visible externally.  One new file has been
6060added, evgpeblk.c
6061
6062The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
6063fields that are used to determine the GPE block lengths.  The
6064REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
6065structures are ignored.  This is per the ACPI specification but it
6066isn't very clear.  The full 256 Block 0/1 GPEs are now supported
6067(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
6068
6069In the SCI interrupt handler, removed the read of the PM1_CONTROL
6070register to look at the SCI_EN bit.  On some machines, this read
6071causes an SMI event and greatly slows down SCI events.  (This may
6072in fact be the cause of slow battery status response on some
6073systems.)
6074
6075Fixed a problem where a store of a NULL string to a package object
6076could cause the premature deletion of the object.  This was seen
6077during execution of the battery _BIF method on some systems,
6078resulting in no battery data being returned.
6079
6080Added AcpiWalkResources interface to simplify parsing of resource
6081lists.
6082
6083Code and Data Size: Current core subsystem library sizes are shown
6084below.  These are the code and data sizes for the acpica.lib
6085produced by the Microsoft Visual C++ 6.0 compiler, and these
6086values do not include any ACPI driver or OSPM code.  The debug
6087version of the code includes the debug output trace mechanism and
6088has a much larger code and data size.  Note that these values will
6089vary depending on the efficiency of the compiler and the compiler
6090options used during generation.
6091
6092  Previous Release
6093    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6094    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6095  Current Release:
6096    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
6097    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
6098
6099
61002) Linux
6101
6102S3 fixes (Ole Rohne)
6103
6104Update ACPI PHP driver with to use new acpi_walk_resource API
6105(Bjorn Helgaas)
6106
6107Add S4BIOS support (Pavel Machek)
6108
6109Map in entire table before performing checksum (John Stultz)
6110
6111Expand the mem= cmdline to allow the specification of reserved and
6112ACPI DATA blocks (Pavel Machek)
6113
6114Never use ACPI on VISWS
6115
6116Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
6117
6118Revert a change that allowed P_BLK lengths to be 4 or 5. This is
6119causing us to think that some systems support C2 when they really
6120don't.
6121
6122Do not count processor objects for non-present CPUs (Thanks to
6123Dominik Brodowski)
6124
6125
61263) iASL Compiler:
6127
6128Fixed a problem where ASL include files could not be found and
6129opened.
6130
6131Added support for the _PDC reserved name.
6132
6133
6134----------------------------------------
613522 January 2003.  Summary of changes for version 20030122.
6136
6137
61381) ACPI CA Core Subsystem:
6139
6140Added a check for constructs of the form:  Store (Local0, Local0)
6141where Local0 is not initialized.  Apparently, some BIOS
6142programmers believe that this is a NOOP.  Since this store doesn't
6143do anything anyway, the new prototype behavior will ignore this
6144error.  This is a case where we can relax the strict checking in
6145the interpreter in the name of compatibility.
6146
6147
61482) Linux
6149
6150The AcpiSrc Source Conversion Utility has been released with the
6151Linux package for the first time.  This is the utility that is
6152used to convert the ACPI CA base source code to the Linux version.
6153
6154(Both) Handle P_BLK lengths shorter than 6 more gracefully
6155
6156(Both) Move more headers to include/acpi, and delete an unused
6157header.
6158
6159(Both) Move drivers/acpi/include directory to include/acpi
6160
6161(Both) Boot functions don't use cmdline, so don't pass it around
6162
6163(Both) Remove include of unused header (Adrian Bunk)
6164
6165(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
6166the
6167former now also includes the latter, acpiphp.h only needs the one,
6168now.
6169
6170(2.5) Make it possible to select method of bios restoring after S3
6171resume. [=> no more ugly ifdefs] (Pavel Machek)
6172
6173(2.5) Make proc write interfaces work (Pavel Machek)
6174
6175(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
6176
6177(2.5) Break out ACPI Perf code into its own module, under cpufreq
6178(Dominik Brodowski)
6179
6180(2.4) S4BIOS support (Ducrot Bruno)
6181
6182(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
6183Visinoni)
6184
6185
61863) iASL Compiler:
6187
6188Added support to disassemble SSDT and PSDTs.
6189
6190Implemented support to obtain SSDTs from the Windows registry if
6191available.
6192
6193
6194----------------------------------------
619509 January 2003.  Summary of changes for version 20030109.
6196
61971) ACPI CA Core Subsystem:
6198
6199Changed the behavior of the internal Buffer-to-String conversion
6200function.  The current ACPI specification states that the contents
6201of the buffer are "converted to a string of two-character
6202hexadecimal numbers, each separated by a space".  Unfortunately,
6203this definition is not backwards compatible with existing ACPI 1.0
6204implementations (although the behavior was not defined in the ACPI
62051.0 specification).  The new behavior simply copies data from the
6206buffer to the string until a null character is found or the end of
6207the buffer is reached.  The new String object is always null
6208terminated.  This problem was seen during the generation of _BIF
6209battery data where incorrect strings were returned for battery
6210type, etc.  This will also require an errata to the ACPI
6211specification.
6212
6213Renamed all instances of NATIVE_UINT and NATIVE_INT to
6214ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
6215
6216Copyright in all module headers (both Linux and non-Linux) has be
6217updated to 2003.
6218
6219Code and Data Size: Current core subsystem library sizes are shown
6220below.  These are the code and data sizes for the acpica.lib
6221produced by the Microsoft Visual C++ 6.0 compiler, and these
6222values do not include any ACPI driver or OSPM code.  The debug
6223version of the code includes the debug output trace mechanism and
6224has a much larger code and data size.  Note that these values will
6225vary depending on the efficiency of the compiler and the compiler
6226options used during generation.
6227
6228  Previous Release
6229    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6230    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6231  Current Release:
6232    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6233    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6234
6235
62362) Linux
6237
6238Fixed an oops on module insertion/removal (Matthew Tippett)
6239
6240(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
6241
6242(2.5) Replace pr_debug (Randy Dunlap)
6243
6244(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
6245
6246(Both) Eliminate spawning of thread from timer callback, in favor
6247of schedule_work()
6248
6249(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
6250
6251(Both) Added define for Fixed Function HW region (Matthew Wilcox)
6252
6253(Both) Add missing statics to button.c (Pavel Machek)
6254
6255Several changes have been made to the source code translation
6256utility that generates the Linux Code in order to make the code
6257more "Linux-like":
6258
6259All typedefs on structs and unions have been removed in keeping
6260with the Linux coding style.
6261
6262Removed the non-Linux SourceSafe module revision number from each
6263module header.
6264
6265Completed major overhaul of symbols to be lowercased for linux.
6266Doubled the number of symbols that are lowercased.
6267
6268Fixed a problem where identifiers within procedure headers and
6269within quotes were not fully lower cased (they were left with a
6270starting capital.)
6271
6272Some C macros whose only purpose is to allow the generation of 16-
6273bit code are now completely removed in the Linux code, increasing
6274readability and maintainability.
6275
6276----------------------------------------
6277
627812 December 2002.  Summary of changes for version 20021212.
6279
6280
62811) ACPI CA Core Subsystem:
6282
6283Fixed a problem where the creation of a zero-length AML Buffer
6284would cause a fault.
6285
6286Fixed a problem where a Buffer object that pointed to a static AML
6287buffer (in an ACPI table) could inadvertently be deleted, causing
6288memory corruption.
6289
6290Fixed a problem where a user buffer (passed in to the external
6291ACPI CA interfaces) could be overwritten if the buffer was too
6292small to complete the operation, causing memory corruption.
6293
6294Fixed a problem in the Buffer-to-String conversion code where a
6295string of length one was always returned, regardless of the size
6296of the input Buffer object.
6297
6298Removed the NATIVE_CHAR data type across the entire source due to
6299lack of need and lack of consistent use.
6300
6301Code and Data Size: Current core subsystem library sizes are shown
6302below.  These are the code and data sizes for the acpica.lib
6303produced by the Microsoft Visual C++ 6.0 compiler, and these
6304values do not include any ACPI driver or OSPM code.  The debug
6305version of the code includes the debug output trace mechanism and
6306has a much larger code and data size.  Note that these values will
6307vary depending on the efficiency of the compiler and the compiler
6308options used during generation.
6309
6310  Previous Release
6311    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6312    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6313  Current Release:
6314    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6315    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6316
6317
6318----------------------------------------
631905 December 2002.  Summary of changes for version 20021205.
6320
63211) ACPI CA Core Subsystem:
6322
6323Fixed a problem where a store to a String or Buffer object could
6324cause corruption of the DSDT if the object type being stored was
6325the same as the target object type and the length of the object
6326being stored was equal to or smaller than the original (existing)
6327target object.  This was seen to cause corruption of battery _BIF
6328buffers if the _BIF method modified the buffer on the fly.
6329
6330Fixed a problem where an internal error was generated if a control
6331method invocation was used in an OperationRegion, Buffer, or
6332Package declaration.  This was caused by the deferred parsing of
6333the control method and thus the deferred creation of the internal
6334method object.  The solution to this problem was to create the
6335internal method object at the moment the method is encountered in
6336the first pass - so that subsequent references to the method will
6337able to obtain the required parameter count and thus properly
6338parse the method invocation.  This problem presented itself as an
6339AE_AML_INTERNAL during the pass 1 parse phase during table load.
6340
6341Fixed a problem where the internal String object copy routine did
6342not always allocate sufficient memory for the target String object
6343and caused memory corruption.  This problem was seen to cause
6344"Allocation already present in list!" errors as memory allocation
6345became corrupted.
6346
6347Implemented a new function for the evaluation of namespace objects
6348that allows the specification of the allowable return object
6349types.  This simplifies a lot of code that checks for a return
6350object of one or more specific objects returned from the
6351evaluation (such as _STA, etc.)  This may become and external
6352function if it would be useful to ACPI-related drivers.
6353
6354Completed another round of prefixing #defines with "ACPI_" for
6355clarity.
6356
6357Completed additional code restructuring to allow more modular
6358linking for iASL compiler and AcpiExec.  Several files were split
6359creating new files.  New files:  nsparse.c dsinit.c evgpe.c
6360
6361Implemented an abort mechanism to terminate an executing control
6362method via the AML debugger.  This feature is useful for debugging
6363control methods that depend (wait) for specific hardware
6364responses.
6365
6366Code and Data Size: Current core subsystem library sizes are shown
6367below.  These are the code and data sizes for the acpica.lib
6368produced by the Microsoft Visual C++ 6.0 compiler, and these
6369values do not include any ACPI driver or OSPM code.  The debug
6370version of the code includes the debug output trace mechanism and
6371has a much larger code and data size.  Note that these values will
6372vary depending on the efficiency of the compiler and the compiler
6373options used during generation.
6374
6375  Previous Release
6376    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6377    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6378  Current Release:
6379    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6380    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6381
6382
63832) iASL Compiler/Disassembler
6384
6385Fixed a compiler code generation problem for "Interrupt" Resource
6386Descriptors.  If specified in the ASL, the optional "Resource
6387Source Index" and "Resource Source" fields were not inserted into
6388the correct location within the AML resource descriptor, creating
6389an invalid descriptor.
6390
6391Fixed a disassembler problem for "Interrupt" resource descriptors.
6392The optional "Resource Source Index" and "Resource Source" fields
6393were ignored.
6394
6395
6396----------------------------------------
639722 November 2002.  Summary of changes for version 20021122.
6398
6399
64001) ACPI CA Core Subsystem:
6401
6402Fixed a reported problem where an object stored to a Method Local
6403or Arg was not copied to a new object during the store - the
6404object pointer was simply copied to the Local/Arg.  This caused
6405all subsequent operations on the Local/Arg to also affect the
6406original source of the store operation.
6407
6408Fixed a problem where a store operation to a Method Local or Arg
6409was not completed properly if the Local/Arg contained a reference
6410(from RefOf) to a named field.  The general-purpose store-to-
6411namespace-node code is now used so that this case is handled
6412automatically.
6413
6414Fixed a problem where the internal object copy routine would cause
6415a protection fault if the object being copied was a Package and
6416contained either 1) a NULL package element or 2) a nested sub-
6417package.
6418
6419Fixed a problem with the GPE initialization that resulted from an
6420ambiguity in the ACPI specification.  One section of the
6421specification states that both the address and length of the GPE
6422block must be zero if the block is not supported.  Another section
6423implies that only the address need be zero if the block is not
6424supported.  The code has been changed so that both the address and
6425the length must be non-zero to indicate a valid GPE block (i.e.,
6426if either the address or the length is zero, the GPE block is
6427invalid.)
6428
6429Code and Data Size: Current core subsystem library sizes are shown
6430below.  These are the code and data sizes for the acpica.lib
6431produced by the Microsoft Visual C++ 6.0 compiler, and these
6432values do not include any ACPI driver or OSPM code.  The debug
6433version of the code includes the debug output trace mechanism and
6434has a much larger code and data size.  Note that these values will
6435vary depending on the efficiency of the compiler and the compiler
6436options used during generation.
6437
6438  Previous Release
6439    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6440    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6441  Current Release:
6442    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6443    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6444
6445
64462) Linux
6447
6448Cleaned up EC driver. Exported an external EC read/write
6449interface. By going through this, other drivers (most notably
6450sonypi) will be able to serialize access to the EC.
6451
6452
64533) iASL Compiler/Disassembler
6454
6455Implemented support to optionally generate include files for both
6456ASM and C (the -i switch).  This simplifies BIOS development by
6457automatically creating include files that contain external
6458declarations for the symbols that are created within the
6459
6460(optionally generated) ASM and C AML source files.
6461
6462
6463----------------------------------------
646415 November 2002.  Summary of changes for version 20021115.
6465
64661) ACPI CA Core Subsystem:
6467
6468Fixed a memory leak problem where an error during resolution of
6469
6470method arguments during a method invocation from another method
6471failed to cleanup properly by deleting all successfully resolved
6472argument objects.
6473
6474Fixed a problem where the target of the Index() operator was not
6475correctly constructed if the source object was a package.  This
6476problem has not been detected because the use of a target operand
6477with Index() is very rare.
6478
6479Fixed a problem with the Index() operator where an attempt was
6480made to delete the operand objects twice.
6481
6482Fixed a problem where an attempt was made to delete an operand
6483twice during execution of the CondRefOf() operator if the target
6484did not exist.
6485
6486Implemented the first of perhaps several internal create object
6487functions that create and initialize a specific object type.  This
6488consolidates duplicated code wherever the object is created, thus
6489shrinking the size of the subsystem.
6490
6491Implemented improved debug/error messages for errors that occur
6492during nested method invocations.  All executing method pathnames
6493are displayed (with the error) as the call stack is unwound - thus
6494simplifying debug.
6495
6496Fixed a problem introduced in the 10/02 release that caused
6497premature deletion of a buffer object if a buffer was used as an
6498ASL operand where an integer operand is required (Thus causing an
6499implicit object conversion from Buffer to Integer.)  The change in
6500the 10/02 release was attempting to fix a memory leak (albeit
6501incorrectly.)
6502
6503Code and Data Size: Current core subsystem library sizes are shown
6504below.  These are the code and data sizes for the acpica.lib
6505produced by the Microsoft Visual C++ 6.0 compiler, and these
6506values do not include any ACPI driver or OSPM code.  The debug
6507version of the code includes the debug output trace mechanism and
6508has a much larger code and data size.  Note that these values will
6509vary depending on the efficiency of the compiler and the compiler
6510options used during generation.
6511
6512  Previous Release
6513    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6514    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6515  Current Release:
6516    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6517    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6518
6519
65202) Linux
6521
6522Changed the implementation of the ACPI semaphores to use down()
6523instead of down_interruptable().  It is important that the
6524execution of ACPI control methods not be interrupted by signals.
6525Methods must run to completion, or the system may be left in an
6526unknown/unstable state.
6527
6528Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
6529(Shawn Starr)
6530
6531
65323) iASL Compiler/Disassembler
6533
6534
6535Changed the default location of output files.  All output files
6536are now placed in the current directory by default instead of in
6537the directory of the source file.  This change may affect some
6538existing makefiles, but it brings the behavior of the compiler in
6539line with other similar tools.  The location of the output files
6540can be overridden with the -p command line switch.
6541
6542
6543----------------------------------------
654411 November 2002.  Summary of changes for version 20021111.
6545
6546
65470) ACPI Specification 2.0B is released and is now available at:
6548http://www.acpi.info/index.html
6549
6550
65511) ACPI CA Core Subsystem:
6552
6553Implemented support for the ACPI 2.0 SMBus Operation Regions.
6554This includes the early detection and handoff of the request to
6555the SMBus region handler (avoiding all of the complex field
6556support code), and support for the bidirectional return packet
6557from an SMBus write operation.  This paves the way for the
6558development of SMBus drivers in each host operating system.
6559
6560Fixed a problem where the semaphore WAIT_FOREVER constant was
6561defined as 32 bits, but must be 16 bits according to the ACPI
6562specification.  This had the side effect of causing ASL
6563Mutex/Event timeouts even though the ASL code requested a wait
6564forever.  Changed all internal references to the ACPI timeout
6565parameter to 16 bits to prevent future problems.  Changed the name
6566of WAIT_FOREVER to ACPI_WAIT_FOREVER.
6567
6568Code and Data Size: Current core subsystem library sizes are shown
6569below.  These are the code and data sizes for the acpica.lib
6570produced by the Microsoft Visual C++ 6.0 compiler, and these
6571values do not include any ACPI driver or OSPM code.  The debug
6572version of the code includes the debug output trace mechanism and
6573has a much larger code and data size.  Note that these values will
6574vary depending on the efficiency of the compiler and the compiler
6575options used during generation.
6576
6577  Previous Release
6578    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6579    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
6580  Current Release:
6581    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6582    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6583
6584
65852) Linux
6586
6587Module loading/unloading fixes (John Cagle)
6588
6589
65903) iASL Compiler/Disassembler
6591
6592Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
6593
6594Implemented support for the disassembly of all SMBus protocol
6595keywords (SMBQuick, SMBWord, etc.)
6596
6597----------------------------------------
659801 November 2002.  Summary of changes for version 20021101.
6599
6600
66011) ACPI CA Core Subsystem:
6602
6603Fixed a problem where platforms that have a GPE1 block but no GPE0
6604block were not handled correctly.  This resulted in a "GPE
6605overlap" error message.  GPE0 is no longer required.
6606
6607Removed code added in the previous release that inserted nodes
6608into the namespace in alphabetical order.  This caused some side-
6609effects on various machines.  The root cause of the problem is
6610still under investigation since in theory, the internal ordering
6611of the namespace nodes should not matter.
6612
6613
6614Enhanced error reporting for the case where a named object is not
6615found during control method execution.  The full ACPI namepath
6616(name reference) of the object that was not found is displayed in
6617this case.
6618
6619Note: as a result of the overhaul of the namespace object types in
6620the previous release, the namespace nodes for the predefined
6621scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
6622instead of ACPI_TYPE_ANY.  This simplifies the namespace
6623management code but may affect code that walks the namespace tree
6624looking for specific object types.
6625
6626Code and Data Size: Current core subsystem library sizes are shown
6627below.  These are the code and data sizes for the acpica.lib
6628produced by the Microsoft Visual C++ 6.0 compiler, and these
6629values do not include any ACPI driver or OSPM code.  The debug
6630version of the code includes the debug output trace mechanism and
6631has a much larger code and data size.  Note that these values will
6632vary depending on the efficiency of the compiler and the compiler
6633options used during generation.
6634
6635  Previous Release
6636    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
6637    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
6638  Current Release:
6639    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6640    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
6641
6642
66432) Linux
6644
6645Fixed a problem introduced in the previous release where the
6646Processor and Thermal objects were not recognized and installed in
6647/proc.  This was related to the scope type change described above.
6648
6649
66503) iASL Compiler/Disassembler
6651
6652Implemented the -g option to get all of the required ACPI tables
6653from the registry and save them to files (Windows version of the
6654compiler only.)  The required tables are the FADT, FACS, and DSDT.
6655
6656Added ACPI table checksum validation during table disassembly in
6657order to catch corrupted tables.
6658
6659
6660----------------------------------------
666122 October 2002.  Summary of changes for version 20021022.
6662
66631) ACPI CA Core Subsystem:
6664
6665Implemented a restriction on the Scope operator that the target
6666must already exist in the namespace at the time the operator is
6667encountered (during table load or method execution).  In other
6668words, forward references are not allowed and Scope() cannot
6669create a new object. This changes the previous behavior where the
6670interpreter would create the name if not found.  This new behavior
6671correctly enables the search-to-root algorithm during namespace
6672lookup of the target name.  Because of this upsearch, this fixes
6673the known Compaq _SB_.OKEC problem and makes both the AML
6674interpreter and iASL compiler compatible with other ACPI
6675implementations.
6676
6677Completed a major overhaul of the internal ACPI object types for
6678the ACPI Namespace and the associated operand objects.  Many of
6679these types had become obsolete with the introduction of the two-
6680pass namespace load.  This cleanup simplifies the code and makes
6681the entire namespace load mechanism much clearer and easier to
6682understand.
6683
6684Improved debug output for tracking scope opening/closing to help
6685diagnose scoping issues.  The old scope name as well as the new
6686scope name are displayed.  Also improved error messages for
6687problems with ASL Mutex objects and error messages for GPE
6688problems.
6689
6690Cleaned up the namespace dump code, removed obsolete code.
6691
6692All string output (for all namespace/object dumps) now uses the
6693common ACPI string output procedure which handles escapes properly
6694and does not emit non-printable characters.
6695
6696Fixed some issues with constants in the 64-bit version of the
6697local C library (utclib.c)
6698
6699
67002) Linux
6701
6702EC Driver:  No longer attempts to acquire the Global Lock at
6703interrupt level.
6704
6705
67063) iASL Compiler/Disassembler
6707
6708Implemented ACPI 2.0B grammar change that disallows all Type 1 and
67092 opcodes outside of a control method.  This means that the
6710"executable" operators (versus the "namespace" operators) cannot
6711be used at the table level; they can only be used within a control
6712method.
6713
6714Implemented the restriction on the Scope() operator where the
6715target must already exist in the namespace at the time the
6716operator is encountered (during ASL compilation). In other words,
6717forward references are not allowed and Scope() cannot create a new
6718object.  This makes the iASL compiler compatible with other ACPI
6719implementations and makes the Scope() implementation adhere to the
6720ACPI specification.
6721
6722Fixed a problem where namepath optimization for the Alias operator
6723was optimizing the wrong path (of the two namepaths.)  This caused
6724a "Missing alias link" error message.
6725
6726Fixed a problem where an "unknown reserved name" warning could be
6727incorrectly generated for names like "_SB" when the trailing
6728underscore is not used in the original ASL.
6729
6730Fixed a problem where the reserved name check did not handle
6731NamePaths with multiple NameSegs correctly.  The first nameseg of
6732the NamePath was examined instead of the last NameSeg.
6733
6734
6735----------------------------------------
6736
673702 October 2002.  Summary of changes for this release.
6738
6739
67401) ACPI CA Core Subsystem version 20021002:
6741
6742Fixed a problem where a store/copy of a string to an existing
6743string did not always set the string length properly in the String
6744object.
6745
6746Fixed a reported problem with the ToString operator where the
6747behavior was identical to the ToHexString operator instead of just
6748simply converting a raw buffer to a string data type.
6749
6750Fixed a problem where CopyObject and the other "explicit"
6751conversion operators were not updating the internal namespace node
6752type as part of the store operation.
6753
6754Fixed a memory leak during implicit source operand conversion
6755where the original object was not deleted if it was converted to a
6756new object of a different type.
6757
6758Enhanced error messages for all problems associated with namespace
6759lookups.  Common procedure generates and prints the lookup name as
6760well as the formatted status.
6761
6762Completed implementation of a new design for the Alias support
6763within the namespace.  The existing design did not handle the case
6764where a new object was assigned to one of the two names due to the
6765use of an explicit conversion operator, resulting in the two names
6766pointing to two different objects.  The new design simply points
6767the Alias name to the original name node - not to the object.
6768This results in a level of indirection that must be handled in the
6769name resolution mechanism.
6770
6771Code and Data Size: Current core subsystem library sizes are shown
6772below.  These are the code and data sizes for the acpica.lib
6773produced by the Microsoft Visual C++ 6.0 compiler, and these
6774values do not include any ACPI driver or OSPM code.  The debug
6775version of the code includes the debug output trace mechanism and
6776has a larger code and data size.  Note that these values will vary
6777depending on the efficiency of the compiler and the compiler
6778options used during generation.
6779
6780  Previous Release
6781    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
6782    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
6783  Current Release:
6784    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
6785    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
6786
6787
67882) Linux
6789
6790Initialize thermal driver's timer before it is used. (Knut
6791Neumann)
6792
6793Allow handling negative celsius values. (Kochi Takayoshi)
6794
6795Fix thermal management and make trip points. R/W (Pavel Machek)
6796
6797Fix /proc/acpi/sleep. (P. Christeas)
6798
6799IA64 fixes. (David Mosberger)
6800
6801Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
6802
6803Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
6804Brodowski)
6805
6806
68073) iASL Compiler/Disassembler
6808
6809Clarified some warning/error messages.
6810
6811
6812----------------------------------------
681318 September 2002.  Summary of changes for this release.
6814
6815
68161) ACPI CA Core Subsystem version 20020918:
6817
6818Fixed a reported problem with reference chaining (via the Index()
6819and RefOf() operators) in the ObjectType() and SizeOf() operators.
6820The definition of these operators includes the dereferencing of
6821all chained references to return information on the base object.
6822
6823Fixed a problem with stores to indexed package elements - the
6824existing code would not complete the store if an "implicit
6825conversion" was not performed.  In other words, if the existing
6826object (package element) was to be replaced completely, the code
6827didn't handle this case.
6828
6829Relaxed typechecking on the ASL "Scope" operator to allow the
6830target name to refer to an object of type Integer, String, or
6831Buffer, in addition to the scoping object types (Device,
6832predefined Scopes, Processor, PowerResource, and ThermalZone.)
6833This allows existing AML code that has workarounds for a bug in
6834Windows to function properly.  A warning is issued, however.  This
6835affects both the AML interpreter and the iASL compiler. Below is
6836an example of this type of ASL code:
6837
6838      Name(DEB,0x00)
6839      Scope(DEB)
6840      {
6841
6842Fixed some reported problems with 64-bit integer support in the
6843local implementation of C library functions (clib.c)
6844
6845
68462) Linux
6847
6848Use ACPI fix map region instead of IOAPIC region, since it is
6849undefined in non-SMP.
6850
6851Ensure that the SCI has the proper polarity and trigger, even on
6852systems that do not have an interrupt override entry in the MADT.
6853
68542.5 big driver reorganization (Pat Mochel)
6855
6856Use early table mapping code from acpitable.c (Andi Kleen)
6857
6858New blacklist entries (Andi Kleen)
6859
6860Blacklist improvements. Split blacklist code out into a separate
6861file. Move checking the blacklist to very early. Previously, we
6862would use ACPI tables, and then halfway through init, check the
6863blacklist -- too late. Now, it's early enough to completely fall-
6864back to non-ACPI.
6865
6866
68673) iASL Compiler/Disassembler version 20020918:
6868
6869Fixed a problem where the typechecking code didn't know that an
6870alias could point to a method.  In other words, aliases were not
6871being dereferenced during typechecking.
6872
6873
6874----------------------------------------
687529 August 2002.  Summary of changes for this release.
6876
68771) ACPI CA Core Subsystem Version 20020829:
6878
6879If the target of a Scope() operator already exists, it must be an
6880object type that actually opens a scope -- such as a Device,
6881Method, Scope, etc.  This is a fatal runtime error.  Similar error
6882check has been added to the iASL compiler also.
6883
6884Tightened up the namespace load to disallow multiple names in the
6885same scope.  This previously was allowed if both objects were of
6886the same type.  (i.e., a lookup was the same as entering a new
6887name).
6888
6889
68902) Linux
6891
6892Ensure that the ACPI interrupt has the proper trigger and
6893polarity.
6894
6895local_irq_disable is extraneous. (Matthew Wilcox)
6896
6897Make "acpi=off" actually do what it says, and not use the ACPI
6898interpreter *or* the tables.
6899
6900Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
6901Takayoshi)
6902
6903
69043) iASL Compiler/Disassembler  Version 20020829:
6905
6906Implemented namepath optimization for name declarations.  For
6907example, a declaration like "Method (\_SB_.ABCD)" would get
6908optimized to "Method (ABCD)" if the declaration is within the
6909\_SB_ scope.  This optimization is in addition to the named
6910reference path optimization first released in the previous
6911version. This would seem to complete all possible optimizations
6912for namepaths within the ASL/AML.
6913
6914If the target of a Scope() operator already exists, it must be an
6915object type that actually opens a scope -- such as a Device,
6916Method, Scope, etc.
6917
6918Implemented a check and warning for unreachable code in the same
6919block below a Return() statement.
6920
6921Fixed a problem where the listing file was not generated if the
6922compiler aborted if the maximum error count was exceeded (200).
6923
6924Fixed a problem where the typechecking of method return values was
6925broken.  This includes the check for a return value when the
6926method is invoked as a TermArg (a return value is expected.)
6927
6928Fixed a reported problem where EOF conditions during a quoted
6929string or comment caused a fault.
6930
6931
6932----------------------------------------
693315 August 2002.  Summary of changes for this release.
6934
69351) ACPI CA Core Subsystem Version 20020815:
6936
6937Fixed a reported problem where a Store to a method argument that
6938contains a reference did not perform the indirect store correctly.
6939This problem was created during the conversion to the new
6940reference object model - the indirect store to a method argument
6941code was not updated to reflect the new model.
6942
6943Reworked the ACPI mode change code to better conform to ACPI 2.0,
6944handle corner cases, and improve code legibility (Kochi Takayoshi)
6945
6946Fixed a problem with the pathname parsing for the carat (^)
6947prefix.  The heavy use of the carat operator by the new namepath
6948optimization in the iASL compiler uncovered a problem with the AML
6949interpreter handling of this prefix.  In the case where one or
6950more carats precede a single nameseg, the nameseg was treated as
6951standalone and the search rule (to root) was inadvertently
6952applied.  This could cause both the iASL compiler and the
6953interpreter to find the wrong object or to miss the error that
6954should occur if the object does not exist at that exact pathname.
6955
6956Found and fixed the problem where the HP Pavilion DSDT would not
6957load.  This was a relatively minor tweak to the table loading code
6958(a problem caused by the unexpected encounter with a method
6959invocation not within a control method), but it does not solve the
6960overall issue of the execution of AML code at the table level.
6961This investigation is still ongoing.
6962
6963Code and Data Size: Current core subsystem library sizes are shown
6964below.  These are the code and data sizes for the acpica.lib
6965produced by the Microsoft Visual C++ 6.0 compiler, and these
6966values do not include any ACPI driver or OSPM code.  The debug
6967version of the code includes the debug output trace mechanism and
6968has a larger code and data size.  Note that these values will vary
6969depending on the efficiency of the compiler and the compiler
6970options used during generation.
6971
6972  Previous Release
6973    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
6974    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
6975  Current Release:
6976    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
6977    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
6978
6979
69802) Linux
6981
6982Remove redundant slab.h include (Brad Hards)
6983
6984Fix several bugs in thermal.c (Herbert Nachtnebel)
6985
6986Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
6987
6988Change acpi_system_suspend to use updated irq functions (Pavel
6989Machek)
6990
6991Export acpi_get_firmware_table (Matthew Wilcox)
6992
6993Use proper root proc entry for ACPI (Kochi Takayoshi)
6994
6995Fix early-boot table parsing (Bjorn Helgaas)
6996
6997
69983) iASL Compiler/Disassembler
6999
7000Reworked the compiler options to make them more consistent and to
7001use two-letter options where appropriate.  We were running out of
7002sensible letters.   This may break some makefiles, so check the
7003current options list by invoking the compiler with no parameters.
7004
7005Completed the design and implementation of the ASL namepath
7006optimization option for the compiler.  This option optimizes all
7007references to named objects to the shortest possible path.  The
7008first attempt tries to utilize a single nameseg (4 characters) and
7009the "search-to-root" algorithm used by the interpreter.  If that
7010cannot be used (because either the name is not in the search path
7011or there is a conflict with another object with the same name),
7012the pathname is optimized using the carat prefix (usually a
7013shorter string than specifying the entire path from the root.)
7014
7015Implemented support to obtain the DSDT from the Windows registry
7016(when the disassembly option is specified with no input file).
7017Added this code as the implementation for AcpiOsTableOverride in
7018the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
7019utility) to scan memory for the DSDT to the AcpiOsTableOverride
7020function in the DOS OSL to make the disassembler truly OS
7021independent.
7022
7023Implemented a new option to disassemble and compile in one step.
7024When used without an input filename, this option will grab the
7025DSDT from the local machine, disassemble it, and compile it in one
7026step.
7027
7028Added a warning message for invalid escapes (a backslash followed
7029by any character other than the allowable escapes).  This catches
7030the quoted string error "\_SB_" (which should be "\\_SB_" ).
7031
7032Also, there are numerous instances in the ACPI specification where
7033this error occurs.
7034
7035Added a compiler option to disable all optimizations.  This is
7036basically the "compatibility mode" because by using this option,
7037the AML code will come out exactly the same as other ASL
7038compilers.
7039
7040Added error messages for incorrectly ordered dependent resource
7041functions.  This includes: missing EndDependentFn macro at end of
7042dependent resource list, nested dependent function macros (both
7043start and end), and missing StartDependentFn macro.  These are
7044common errors that should be caught at compile time.
7045
7046Implemented _OSI support for the disassembler and compiler.  _OSI
7047must be included in the namespace for proper disassembly (because
7048the disassembler must know the number of arguments.)
7049
7050Added an "optimization" message type that is optional (off by
7051default).  This message is used for all optimizations - including
7052constant folding, integer optimization, and namepath optimization.
7053
7054----------------------------------------
705525 July 2002.  Summary of changes for this release.
7056
7057
70581) ACPI CA Core Subsystem Version 20020725:
7059
7060The AML Disassembler has been enhanced to produce compilable ASL
7061code and has been integrated into the iASL compiler (see below) as
7062well as the single-step disassembly for the AML debugger and the
7063disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
7064resource templates and macros are fully supported.  The
7065disassembler has been tested on over 30 different AML files,
7066producing identical AML when the resulting disassembled ASL file
7067is recompiled with the same ASL compiler.
7068
7069Modified the Resource Manager to allow zero interrupts and zero
7070dma channels during the GetCurrentResources call.  This was
7071causing problems on some platforms.
7072
7073Added the AcpiOsRedirectOutput interface to the OSL to simplify
7074output redirection for the AcpiOsPrintf and AcpiOsVprintf
7075interfaces.
7076
7077Code and Data Size: Current core subsystem library sizes are shown
7078below.  These are the code and data sizes for the acpica.lib
7079produced by the Microsoft Visual C++ 6.0 compiler, and these
7080values do not include any ACPI driver or OSPM code.  The debug
7081version of the code includes the debug output trace mechanism and
7082has a larger code and data size.  Note that these values will vary
7083depending on the efficiency of the compiler and the compiler
7084options used during generation.
7085
7086  Previous Release
7087    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
7088    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
7089  Current Release:
7090    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
7091    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
7092
7093
70942) Linux
7095
7096Fixed a panic in the EC driver (Dominik Brodowski)
7097
7098Implemented checksum of the R/XSDT itself during Linux table scan
7099(Richard Schaal)
7100
7101
71023) iASL compiler
7103
7104The AML disassembler is integrated into the compiler.  The "-d"
7105option invokes the disassembler  to completely disassemble an
7106input AML file, producing as output a text ASL file with the
7107extension ".dsl" (to avoid name collisions with existing .asl
7108source files.)  A future enhancement will allow the disassembler
7109to obtain the BIOS DSDT from the registry under Windows.
7110
7111Fixed a problem with the VendorShort and VendorLong resource
7112descriptors where an invalid AML sequence was created.
7113
7114Implemented a fix for BufferData term in the ASL parser.  It was
7115inadvertently defined twice, allowing invalid syntax to pass and
7116causing reduction conflicts.
7117
7118Fixed a problem where the Ones opcode could get converted to a
7119value of zero if "Ones" was used where a byte, word or dword value
7120was expected.  The 64-bit value is now truncated to the correct
7121size with the correct value.
7122
7123
7124
7125----------------------------------------
712602 July 2002.  Summary of changes for this release.
7127
7128
71291) ACPI CA Core Subsystem Version 20020702:
7130
7131The Table Manager code has been restructured to add several new
7132features.  Tables that are not required by the core subsystem
7133(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
7134validated in any way and are returned from AcpiGetFirmwareTable if
7135requested.  The AcpiOsTableOverride interface is now called for
7136each table that is loaded by the subsystem in order to allow the
7137host to override any table it chooses.  Previously, only the DSDT
7138could be overridden.  Added one new files, tbrsdt.c and
7139tbgetall.c.
7140
7141Fixed a problem with the conversion of internal package objects to
7142external objects (when a package is returned from a control
7143method.)  The return buffer length was set to zero instead of the
7144proper length of the package object.
7145
7146Fixed a reported problem with the use of the RefOf and DeRefOf
7147operators when passing reference arguments to control methods.  A
7148new type of Reference object is used internally for references
7149produced by the RefOf operator.
7150
7151Added additional error messages in the Resource Manager to explain
7152AE_BAD_DATA errors when they occur during resource parsing.
7153
7154Split the AcpiEnableSubsystem into two primitives to enable a
7155finer granularity initialization sequence.  These two calls should
7156be called in this order: AcpiEnableSubsystem (flags),
7157AcpiInitializeObjects (flags).  The flags parameter remains the
7158same.
7159
7160
71612) Linux
7162
7163Updated the ACPI utilities module to understand the new style of
7164fully resolved package objects that are now returned from the core
7165subsystem.  This eliminates errors of the form:
7166
7167    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
7168    acpi_utils-0430 [145] acpi_evaluate_reference:
7169        Invalid element in package (not a device reference)
7170
7171The method evaluation utility uses the new buffer allocation
7172scheme instead of calling AcpiEvaluate Object twice.
7173
7174Added support for ECDT. This allows the use of the Embedded
7175
7176Controller before the namespace has been fully initialized, which
7177is necessary for ACPI 2.0 support, and for some laptops to
7178initialize properly. (Laptops using ECDT are still rare, so only
7179limited testing was performed of the added functionality.)
7180
7181Fixed memory leaks in the EC driver.
7182
7183Eliminated a brittle code structure in acpi_bus_init().
7184
7185Eliminated the acpi_evaluate() helper function in utils.c. It is
7186no longer needed since acpi_evaluate_object can optionally
7187allocate memory for the return object.
7188
7189Implemented fix for keyboard hang when getting battery readings on
7190some systems (Stephen White)
7191
7192PCI IRQ routing update (Dominik Brodowski)
7193
7194Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
7195support
7196
7197----------------------------------------
719811 June 2002.  Summary of changes for this release.
7199
7200
72011) ACPI CA Core Subsystem Version 20020611:
7202
7203Fixed a reported problem where constants such as Zero and One
7204appearing within _PRT packages were not handled correctly within
7205the resource manager code.  Originally reported against the ASL
7206compiler because the code generator now optimizes integers to
7207their minimal AML representation (i.e. AML constants if possible.)
7208The _PRT code now handles all AML constant opcodes correctly
7209(Zero, One, Ones, Revision).
7210
7211Fixed a problem with the Concatenate operator in the AML
7212interpreter where a buffer result object was incorrectly marked as
7213not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
7214
7215All package sub-objects are now fully resolved before they are
7216returned from the external ACPI interfaces.  This means that name
7217strings are resolved to object handles, and constant operators
7218(Zero, One, Ones, Revision) are resolved to Integers.
7219
7220Implemented immediate resolution of the AML Constant opcodes
7221(Zero, One, Ones, Revision) to Integer objects upon detection
7222within the AML stream. This has simplified and reduced the
7223generated code size of the subsystem by eliminating about 10
7224switch statements for these constants (which previously were
7225contained in Reference objects.)  The complicating issues are that
7226the Zero opcode is used as a "placeholder" for unspecified
7227optional target operands and stores to constants are defined to be
7228no-ops.
7229
7230Code and Data Size: Current core subsystem library sizes are shown
7231below. These are the code and data sizes for the acpica.lib
7232produced by the Microsoft Visual C++ 6.0 compiler, and these
7233values do not include any ACPI driver or OSPM code.  The debug
7234version of the code includes the debug output trace mechanism and
7235has a larger code and data size.  Note that these values will vary
7236depending on the efficiency of the compiler and the compiler
7237options used during generation.
7238
7239  Previous Release
7240    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7241    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7242  Current Release:
7243    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
7244    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
7245
7246
72472) Linux
7248
7249
7250Added preliminary support for obtaining _TRA data for PCI root
7251bridges (Bjorn Helgaas).
7252
7253
72543) iASL Compiler Version X2046:
7255
7256Fixed a problem where the "_DDN" reserved name was defined to be a
7257control method with one argument.  There are no arguments, and
7258_DDN does not have to be a control method.
7259
7260Fixed a problem with the Linux version of the compiler where the
7261source lines printed with error messages were the wrong lines.
7262This turned out to be the "LF versus CR/LF" difference between
7263Windows and Unix.  This appears to be the longstanding issue
7264concerning listing output and error messages.
7265
7266Fixed a problem with the Linux version of compiler where opcode
7267names within error messages were wrong.  This was caused by a
7268slight difference in the output of the Flex tool on Linux versus
7269Windows.
7270
7271Fixed a problem with the Linux compiler where the hex output files
7272contained some garbage data caused by an internal buffer overrun.
7273
7274
7275----------------------------------------
727617 May 2002.  Summary of changes for this release.
7277
7278
72791) ACPI CA Core Subsystem Version 20020517:
7280
7281Implemented a workaround to an BIOS bug discovered on the HP
7282OmniBook where the FADT revision number and the table size are
7283inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
7284behavior is to fallback to using only the ACPI 1.0 fields of the
7285FADT if the table is too small to be a ACPI 2.0 table as claimed
7286by the revision number.  Although this is a BIOS bug, this is a
7287case where the workaround is simple enough and with no side
7288effects, so it seemed prudent to add it.  A warning message is
7289issued, however.
7290
7291Implemented minimum size checks for the fixed-length ACPI tables -
7292- the FADT and FACS, as well as consistency checks between the
7293revision number and the table size.
7294
7295Fixed a reported problem in the table override support where the
7296new table pointer was incorrectly treated as a physical address
7297instead of a logical address.
7298
7299Eliminated the use of the AE_AML_ERROR exception and replaced it
7300with more descriptive codes.
7301
7302Fixed a problem where an exception would occur if an ASL Field was
7303defined with no named Field Units underneath it (used by some
7304index fields).
7305
7306Code and Data Size: Current core subsystem library sizes are shown
7307below.  These are the code and data sizes for the acpica.lib
7308produced by the Microsoft Visual C++ 6.0 compiler, and these
7309values do not include any ACPI driver or OSPM code.  The debug
7310version of the code includes the debug output trace mechanism and
7311has a larger code and data size.  Note that these values will vary
7312depending on the efficiency of the compiler and the compiler
7313options used during generation.
7314
7315  Previous Release
7316    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7317    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7318  Current Release:
7319    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7320    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7321
7322
7323
73242) Linux
7325
7326Much work done on ACPI init (MADT and PCI IRQ routing support).
7327(Paul D. and Dominik Brodowski)
7328
7329Fix PCI IRQ-related panic on boot (Sam Revitch)
7330
7331Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
7332
7333Fix "MHz" typo (Dominik Brodowski)
7334
7335Fix RTC year 2000 issue (Dominik Brodowski)
7336
7337Preclude multiple button proc entries (Eric Brunet)
7338
7339Moved arch-specific code out of include/platform/aclinux.h
7340
73413) iASL Compiler Version X2044:
7342
7343Implemented error checking for the string used in the EISAID macro
7344(Usually used in the definition of the _HID object.)  The code now
7345strictly enforces the PnP format - exactly 7 characters, 3
7346uppercase letters and 4 hex digits.
7347
7348If a raw string is used in the definition of the _HID object
7349(instead of the EISAID macro), the string must contain all
7350alphanumeric characters (e.g., "*PNP0011" is not allowed because
7351of the asterisk.)
7352
7353Implemented checking for invalid use of ACPI reserved names for
7354most of the name creation operators (Name, Device, Event, Mutex,
7355OperationRegion, PowerResource, Processor, and ThermalZone.)
7356Previously, this check was only performed for control methods.
7357
7358Implemented an additional check on the Name operator to emit an
7359error if a reserved name that must be implemented in ASL as a
7360control method is used.  We know that a reserved name must be a
7361method if it is defined with input arguments.
7362
7363The warning emitted when a namespace object reference is not found
7364during the cross reference phase has been changed into an error.
7365The "External" directive should be used for names defined in other
7366modules.
7367
7368
73694) Tools and Utilities
7370
7371The 16-bit tools (adump16 and aexec16) have been regenerated and
7372tested.
7373
7374Fixed a problem with the output of both acpidump and adump16 where
7375the indentation of closing parentheses and brackets was not
7376
7377aligned properly with the parent block.
7378
7379
7380----------------------------------------
738103 May 2002.  Summary of changes for this release.
7382
7383
73841) ACPI CA Core Subsystem Version 20020503:
7385
7386Added support a new OSL interface that allows the host operating
7387
7388system software to override the DSDT found in the firmware -
7389AcpiOsTableOverride.  With this interface, the OSL can examine the
7390version of the firmware DSDT and replace it with a different one
7391if desired.
7392
7393Added new external interfaces for accessing ACPI registers from
7394device drivers and other system software - AcpiGetRegister and
7395AcpiSetRegister.  This was simply an externalization of the
7396existing AcpiHwBitRegister interfaces.
7397
7398Fixed a regression introduced in the previous build where the
7399ASL/AML CreateField operator always returned an error,
7400"destination must be a NS Node".
7401
7402Extended the maximum time (before failure) to successfully enable
7403ACPI mode to 3 seconds.
7404
7405Code and Data Size: Current core subsystem library sizes are shown
7406below.  These are the code and data sizes for the acpica.lib
7407produced by the Microsoft Visual C++ 6.0 compiler, and these
7408values do not include any ACPI driver or OSPM code.  The debug
7409version of the code includes the debug output trace mechanism and
7410has a larger code and data size.  Note that these values will vary
7411depending on the efficiency of the compiler and the compiler
7412options used during generation.
7413
7414  Previous Release
7415    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7416    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7417  Current Release:
7418    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7419    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7420
7421
74222) Linux
7423
7424Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
7425free. While 3 out of 4 of our in-house systems work fine, the last
7426one still hangs when testing the LAPIC timer.
7427
7428Renamed many files in 2.5 kernel release to omit "acpi_" from the
7429name.
7430
7431Added warning on boot for Presario 711FR.
7432
7433Sleep improvements (Pavel Machek)
7434
7435ACPI can now be built without CONFIG_PCI enabled.
7436
7437IA64: Fixed memory map functions (JI Lee)
7438
7439
74403) iASL Compiler Version X2043:
7441
7442Added support to allow the compiler to be integrated into the MS
7443VC++ development environment for one-button compilation of single
7444files or entire projects -- with error-to-source-line mapping.
7445
7446Implemented support for compile-time constant folding for the
7447Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
7448specification.  This allows the ASL writer to use expressions
7449instead of Integer/Buffer/String constants in terms that must
7450evaluate to constants at compile time and will also simplify the
7451emitted AML in any such sub-expressions that can be folded
7452(evaluated at compile-time.)  This increases the size of the
7453compiler significantly because a portion of the ACPI CA AML
7454interpreter is included within the compiler in order to pre-
7455evaluate constant expressions.
7456
7457
7458Fixed a problem with the "Unicode" ASL macro that caused the
7459compiler to fault.  (This macro is used in conjunction with the
7460_STR reserved name.)
7461
7462Implemented an AML opcode optimization to use the Zero, One, and
7463Ones opcodes where possible to further reduce the size of integer
7464constants and thus reduce the overall size of the generated AML
7465code.
7466
7467Implemented error checking for new reserved terms for ACPI version
74682.0A.
7469
7470Implemented the -qr option to display the current list of ACPI
7471reserved names known to the compiler.
7472
7473Implemented the -qc option to display the current list of ASL
7474operators that are allowed within constant expressions and can
7475therefore be folded at compile time if the operands are constants.
7476
7477
74784) Documentation
7479
7480Updated the Programmer's Reference for new interfaces, data types,
7481and memory allocation model options.
7482
7483Updated the iASL Compiler User Reference to apply new format and
7484add information about new features and options.
7485
7486----------------------------------------
748719 April 2002.  Summary of changes for this release.
7488
74891) ACPI CA Core Subsystem Version 20020419:
7490
7491The source code base for the Core Subsystem has been completely
7492cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
7493versions.  The Lint option files used are included in the
7494/acpi/generate/lint directory.
7495
7496Implemented enhanced status/error checking across the entire
7497Hardware manager subsystem.  Any hardware errors (reported from
7498the OSL) are now bubbled up and will abort a running control
7499method.
7500
7501
7502Fixed a problem where the per-ACPI-table integer width (32 or 64)
7503was stored only with control method nodes, causing a fault when
7504non-control method code was executed during table loading.  The
7505solution implemented uses a global variable to indicate table
7506width across the entire ACPI subsystem.  Therefore, ACPI CA does
7507not support mixed integer widths across different ACPI tables
7508(DSDT, SSDT).
7509
7510Fixed a problem where NULL extended fields (X fields) in an ACPI
75112.0 ACPI FADT caused the table load to fail.  Although the
7512existing ACPI specification is a bit fuzzy on this topic, the new
7513behavior is to fall back on a ACPI 1.0 field if the corresponding
7514ACPI 2.0 X field is zero (even though the table revision indicates
7515a full ACPI 2.0 table.)  The ACPI specification will be updated to
7516clarify this issue.
7517
7518Fixed a problem with the SystemMemory operation region handler
7519where memory was always accessed byte-wise even if the AML-
7520specified access width was larger than a byte.  This caused
7521problems on systems with memory-mapped I/O.  Memory is now
7522accessed with the width specified.  On systems that do not support
7523non-aligned transfers, a check is made to guarantee proper address
7524alignment before proceeding in order to avoid an AML-caused
7525alignment fault within the kernel.
7526
7527
7528Fixed a problem with the ExtendedIrq resource where only one byte
7529of the 4-byte Irq field was extracted.
7530
7531Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
7532function was out of date and required a rewrite.
7533
7534Code and Data Size: Current core subsystem library sizes are shown
7535below.  These are the code and data sizes for the acpica.lib
7536produced by the Microsoft Visual C++ 6.0 compiler, and these
7537values do not include any ACPI driver or OSPM code.  The debug
7538version of the code includes the debug output trace mechanism and
7539has a larger code and data size.  Note that these values will vary
7540depending on the efficiency of the compiler and the compiler
7541options used during generation.
7542
7543  Previous Release
7544    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
7545    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
7546  Current Release:
7547    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7548    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7549
7550
75512) Linux
7552
7553PCI IRQ routing fixes (Dominik Brodowski)
7554
7555
75563) iASL Compiler Version X2042:
7557
7558Implemented an additional compile-time error check for a field
7559unit whose size + minimum access width would cause a run-time
7560access beyond the end-of-region.  Previously, only the field size
7561itself was checked.
7562
7563The Core subsystem and iASL compiler now share a common parse
7564object in preparation for compile-time evaluation of the type
75653/4/5 ASL operators.
7566
7567
7568----------------------------------------
7569Summary of changes for this release: 03_29_02
7570
75711) ACPI CA Core Subsystem Version 20020329:
7572
7573Implemented support for late evaluation of TermArg operands to
7574Buffer and Package objects.  This allows complex expressions to be
7575used in the declarations of these object types.
7576
7577Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
75781.0, if the field was larger than 32 bits, it was returned as a
7579buffer - otherwise it was returned as an integer.  In ACPI 2.0,
7580the field is returned as a buffer only if the field is larger than
758164 bits.  The TableRevision is now considered when making this
7582conversion to avoid incompatibility with existing ASL code.
7583
7584Implemented logical addressing for AcpiOsGetRootPointer.  This
7585allows an RSDP with either a logical or physical address.  With
7586this support, the host OS can now override all ACPI tables with
7587one logical RSDP.  Includes implementation of  "typed" pointer
7588support to allow a common data type for both physical and logical
7589pointers internally.  This required a change to the
7590AcpiOsGetRootPointer interface.
7591
7592Implemented the use of ACPI 2.0 Generic Address Structures for all
7593GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
7594mapped I/O for these ACPI features.
7595
7596Initialization now ignores not only non-required tables (All
7597tables other than the FADT, FACS, DSDT, and SSDTs), but also does
7598not validate the table headers of unrecognized tables.
7599
7600Fixed a problem where a notify handler could only be
7601installed/removed on an object of type Device.  All "notify"
7602
7603objects are now supported -- Devices, Processor, Power, and
7604Thermal.
7605
7606Removed most verbosity from the ACPI_DB_INFO debug level.  Only
7607critical information is returned when this debug level is enabled.
7608
7609Code and Data Size: Current core subsystem library sizes are shown
7610below.  These are the code and data sizes for the acpica.lib
7611produced by the Microsoft Visual C++ 6.0 compiler, and these
7612values do not include any ACPI driver or OSPM code.  The debug
7613version of the code includes the debug output trace mechanism and
7614has a larger code and data size.  Note that these values will vary
7615depending on the efficiency of the compiler and the compiler
7616options used during generation.
7617
7618  Previous Release
7619    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
7620    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
7621  Current Release:
7622    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
7623    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
7624
7625
76262) Linux:
7627
7628The processor driver (acpi_processor.c) now fully supports ACPI
76292.0-based processor performance control (e.g. Intel(R)
7630SpeedStep(TM) technology) Note that older laptops that only have
7631the Intel "applet" interface are not supported through this.  The
7632'limit' and 'performance' interface (/proc) are fully functional.
7633[Note that basic policy for controlling performance state
7634transitions will be included in the next version of ospmd.]  The
7635idle handler was modified to more aggressively use C2, and PIIX4
7636errata handling underwent a complete overhaul (big thanks to
7637Dominik Brodowski).
7638
7639Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
7640based devices in the ACPI namespace are now dynamically bound
7641(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
7642This allows, among other things, ACPI to resolve bus numbers for
7643subordinate PCI bridges.
7644
7645Enhanced PCI IRQ routing to get the proper bus number for _PRT
7646entries defined underneath PCI bridges.
7647
7648Added IBM 600E to bad bios list due to invalid _ADR value for
7649PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
7650
7651In the process of adding full MADT support (e.g. IOAPIC) for IA32
7652(acpi.c, mpparse.c) -- stay tuned.
7653
7654Added back visual differentiation between fixed-feature and
7655control-method buttons in dmesg.  Buttons are also subtyped (e.g.
7656button/power/PWRF) to simplify button identification.
7657
7658We no longer use -Wno-unused when compiling debug. Please ignore
7659any "_THIS_MODULE defined but not used" messages.
7660
7661Can now shut down the system using "magic sysrq" key.
7662
7663
76643) iASL Compiler version 2041:
7665
7666Fixed a problem where conversion errors for hex/octal/decimal
7667constants were not reported.
7668
7669Implemented a fix for the General Register template Address field.
7670This field was 8 bits when it should be 64.
7671
7672Fixed a problem where errors/warnings were no longer being emitted
7673within the listing output file.
7674
7675Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
7676exactly 4 characters, alphanumeric only.
7677
7678
7679
7680
7681----------------------------------------
7682Summary of changes for this release: 03_08_02
7683
7684
76851) ACPI CA Core Subsystem Version 20020308:
7686
7687Fixed a problem with AML Fields where the use of the "AccessAny"
7688keyword could cause an interpreter error due to attempting to read
7689or write beyond the end of the parent Operation Region.
7690
7691Fixed a problem in the SystemMemory Operation Region handler where
7692an attempt was made to map memory beyond the end of the region.
7693This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
7694errors on some Linux systems.
7695
7696Fixed a problem where the interpreter/namespace "search to root"
7697algorithm was not functioning for some object types.  Relaxed the
7698internal restriction on the search to allow upsearches for all
7699external object types as well as most internal types.
7700
7701
77022) Linux:
7703
7704We now use safe_halt() macro versus individual calls to sti | hlt.
7705
7706Writing to the processor limit interface should now work. "echo 1"
7707will increase the limit, 2 will decrease, and 0 will reset to the
7708
7709default.
7710
7711
77123) ASL compiler:
7713
7714Fixed segfault on Linux version.
7715
7716
7717----------------------------------------
7718Summary of changes for this release: 02_25_02
7719
77201) ACPI CA Core Subsystem:
7721
7722
7723Fixed a problem where the GPE bit masks were not initialized
7724properly, causing erratic GPE behavior.
7725
7726Implemented limited support for multiple calling conventions.  The
7727code can be generated with either the VPL (variable parameter
7728list, or "C") convention, or the FPL (fixed parameter list, or
7729"Pascal") convention.  The core subsystem is about 3.4% smaller
7730when generated with FPL.
7731
7732
77332) Linux
7734
7735Re-add some /proc/acpi/event functionality that was lost during
7736the rewrite
7737
7738Resolved issue with /proc events for fixed-feature buttons showing
7739up as the system device.
7740
7741Fixed checks on C2/C3 latencies to be inclusive of maximum values.
7742
7743Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
7744
7745Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
7746
7747Fixed limit interface & usage to fix bugs with passive cooling
7748hysterisis.
7749
7750Restructured PRT support.
7751
7752
7753----------------------------------------
7754Summary of changes for this label: 02_14_02
7755
7756
77571) ACPI CA Core Subsystem:
7758
7759Implemented support in AcpiLoadTable to allow loading of FACS and
7760FADT tables.
7761
7762Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
7763been removed.  All 64-bit platforms should be migrated to the ACPI
77642.0 tables.  The actbl71.h header has been removed from the source
7765tree.
7766
7767All C macros defined within the subsystem have been prefixed with
7768"ACPI_" to avoid collision with other system include files.
7769
7770Removed the return value for the two AcpiOsPrint interfaces, since
7771it is never used and causes lint warnings for ignoring the return
7772value.
7773
7774Added error checking to all internal mutex acquire and release
7775calls.  Although a failure from one of these interfaces is
7776probably a fatal system error, these checks will cause the
7777immediate abort of the currently executing method or interface.
7778
7779Fixed a problem where the AcpiSetCurrentResources interface could
7780fault.  This was a side effect of the deployment of the new memory
7781allocation model.
7782
7783Fixed a couple of problems with the Global Lock support introduced
7784in the last major build.  The "common" (1.0/2.0) internal FACS was
7785being overwritten with the FACS signature and clobbering the
7786Global Lock pointer.  Also, the actual firmware FACS was being
7787unmapped after construction of the "common" FACS, preventing
7788access to the actual Global Lock field within it.  The "common"
7789internal FACS is no longer installed as an actual ACPI table; it
7790is used simply as a global.
7791
7792Code and Data Size: Current core subsystem library sizes are shown
7793below.  These are the code and data sizes for the acpica.lib
7794produced by the Microsoft Visual C++ 6.0 compiler, and these
7795values do not include any ACPI driver or OSPM code.  The debug
7796version of the code includes the debug output trace mechanism and
7797has a larger code and data size.  Note that these values will vary
7798depending on the efficiency of the compiler and the compiler
7799options used during generation.
7800
7801  Previous Release (02_07_01)
7802    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
7803    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
7804  Current Release:
7805    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
7806    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
7807
7808
78092) Linux
7810
7811Updated Linux-specific code for core macro and OSL interface
7812changes described above.
7813
7814Improved /proc/acpi/event. It now can be opened only once and has
7815proper poll functionality.
7816
7817Fixed and restructured power management (acpi_bus).
7818
7819Only create /proc "view by type" when devices of that class exist.
7820
7821Fixed "charging/discharging" bug (and others) in acpi_battery.
7822
7823Improved thermal zone code.
7824
7825
78263) ASL Compiler, version X2039:
7827
7828
7829Implemented the new compiler restriction on ASL String hex/octal
7830escapes to non-null, ASCII values.  An error results if an invalid
7831value is used.  (This will require an ACPI 2.0 specification
7832change.)
7833
7834AML object labels that are output to the optional C and ASM source
7835are now prefixed with both the ACPI table signature and table ID
7836to help guarantee uniqueness within a large BIOS project.
7837
7838
7839----------------------------------------
7840Summary of changes for this label: 02_01_02
7841
78421) ACPI CA Core Subsystem:
7843
7844ACPI 2.0 support is complete in the entire Core Subsystem and the
7845ASL compiler. All new ACPI 2.0 operators are implemented and all
7846other changes for ACPI 2.0 support are complete.  With
7847simultaneous code and data optimizations throughout the subsystem,
7848ACPI 2.0 support has been implemented with almost no additional
7849cost in terms of code and data size.
7850
7851Implemented a new mechanism for allocation of return buffers.  If
7852the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
7853be allocated on behalf of the caller.  Consolidated all return
7854buffer validation and allocation to a common procedure.  Return
7855buffers will be allocated via the primary OSL allocation interface
7856since it appears that a separate pool is not needed by most users.
7857If a separate pool is required for these buffers, the caller can
7858still use the original mechanism and pre-allocate the buffer(s).
7859
7860Implemented support for string operands within the DerefOf
7861operator.
7862
7863Restructured the Hardware and Event managers to be table driven,
7864simplifying the source code and reducing the amount of generated
7865code.
7866
7867Split the common read/write low-level ACPI register bitfield
7868procedure into a separate read and write, simplifying the code
7869considerably.
7870
7871Obsoleted the AcpiOsCallocate OSL interface.  This interface was
7872used only a handful of times and didn't have enough critical mass
7873for a separate interface.  Replaced with a common calloc procedure
7874in the core.
7875
7876Fixed a reported problem with the GPE number mapping mechanism
7877that allows GPE1 numbers to be non-contiguous with GPE0.
7878Reorganized the GPE information and shrunk a large array that was
7879originally large enough to hold info for all possible GPEs (256)
7880to simply large enough to hold all GPEs up to the largest GPE
7881number on the machine.
7882
7883Fixed a reported problem with resource structure alignment on 64-
7884bit platforms.
7885
7886Changed the AcpiEnableEvent and AcpiDisableEvent external
7887interfaces to not require any flags for the common case of
7888enabling/disabling a GPE.
7889
7890Implemented support to allow a "Notify" on a Processor object.
7891
7892Most TBDs in comments within the source code have been resolved
7893and eliminated.
7894
7895
7896Fixed a problem in the interpreter where a standalone parent
7897prefix (^) was not handled correctly in the interpreter and
7898debugger.
7899
7900Removed obsolete and unnecessary GPE save/restore code.
7901
7902Implemented Field support in the ASL Load operator.  This allows a
7903table to be loaded from a named field, in addition to loading a
7904table directly from an Operation Region.
7905
7906Implemented timeout and handle support in the external Global Lock
7907interfaces.
7908
7909Fixed a problem in the AcpiDump utility where pathnames were no
7910longer being generated correctly during the dump of named objects.
7911
7912Modified the AML debugger to give a full display of if/while
7913predicates instead of just one AML opcode at a time.  (The
7914predicate can have several nested ASL statements.)  The old method
7915was confusing during single stepping.
7916
7917Code and Data Size: Current core subsystem library sizes are shown
7918below. These are the code and data sizes for the acpica.lib
7919produced by the Microsoft Visual C++ 6.0 compiler, and these
7920values do not include any ACPI driver or OSPM code.  The debug
7921version of the code includes the debug output trace mechanism and
7922has a larger code and data size.  Note that these values will vary
7923depending on the efficiency of the compiler and the compiler
7924options used during generation.
7925
7926  Previous Release (12_18_01)
7927     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
7928     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
7929   Current Release:
7930     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
7931     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
7932
79332) Linux
7934
7935 Implemented fix for PIIX reverse throttling errata (Processor
7936driver)
7937
7938Added new Limit interface (Processor and Thermal drivers)
7939
7940New thermal policy (Thermal driver)
7941
7942Many updates to /proc
7943
7944Battery "low" event support (Battery driver)
7945
7946Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
7947
7948IA32 - IA64 initialization unification, no longer experimental
7949
7950Menuconfig options redesigned
7951
79523) ASL Compiler, version X2037:
7953
7954Implemented several new output features to simplify integration of
7955AML code into  firmware: 1) Output the AML in C source code with
7956labels for each named ASL object.  The    original ASL source code
7957is interleaved as C comments. 2) Output the AML in ASM source code
7958with labels and interleaved ASL    source. 3) Output the AML in
7959raw hex table form, in either C or ASM.
7960
7961Implemented support for optional string parameters to the
7962LoadTable operator.
7963
7964Completed support for embedded escape sequences within string
7965literals.  The compiler now supports all single character escapes
7966as well as the Octal and Hex escapes.  Note: the insertion of a
7967null byte into a string literal (via the hex/octal escape) causes
7968the string to be immediately terminated.  A warning is issued.
7969
7970Fixed a problem where incorrect AML was generated for the case
7971where an ASL namepath consists of a single parent prefix (
7972
7973) with no trailing name segments.
7974
7975The compiler has been successfully generated with a 64-bit C
7976compiler.
7977
7978
7979
7980
7981----------------------------------------
7982Summary of changes for this label: 12_18_01
7983
79841) Linux
7985
7986Enhanced blacklist with reason and severity fields. Any table's
7987signature may now be used to identify a blacklisted system.
7988
7989Call _PIC control method to inform the firmware which interrupt
7990model the OS is using. Turn on any disabled link devices.
7991
7992Cleaned up busmgr /proc error handling (Andreas Dilger)
7993
7994 2) ACPI CA Core Subsystem:
7995
7996Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
7997while loop)
7998
7999Completed implementation of the ACPI 2.0 "Continue",
8000"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
8001operators.  All new ACPI 2.0 operators are now implemented in both
8002the ASL compiler and the AML interpreter.  The only remaining ACPI
80032.0 task is support for the String data type in the DerefOf
8004operator.  Fixed a problem with AcquireMutex where the status code
8005was lost if the caller had to actually wait for the mutex.
8006
8007Increased the maximum ASL Field size from 64K bits to 4G bits.
8008
8009Completed implementation of the external Global Lock interfaces --
8010AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
8011Handler parameters were added.
8012
8013Completed another pass at removing warnings and issues when
8014compiling with 64-bit compilers.  The code now compiles cleanly
8015with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
8016add and subtract (diff) macros have changed considerably.
8017
8018
8019Created and deployed a new ACPI_SIZE type that is 64-bits wide on
802064-bit platforms, 32-bits on all others.  This type is used
8021wherever memory allocation and/or the C sizeof() operator is used,
8022and affects the OSL memory allocation interfaces AcpiOsAllocate
8023and AcpiOsCallocate.
8024
8025Implemented sticky user breakpoints in the AML debugger.
8026
8027Code and Data Size: Current core subsystem library sizes are shown
8028below. These are the code and data sizes for the acpica.lib
8029produced by the Microsoft Visual C++ 6.0 compiler, and these
8030values do not include any ACPI driver or OSPM code.  The debug
8031version of the code includes the debug output trace mechanism and
8032has a larger code and data size. Note that these values will vary
8033depending on the efficiency of the compiler and the compiler
8034options used during generation.
8035
8036  Previous Release (12_05_01)
8037     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
8038     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
8039   Current Release:
8040     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
8041     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
8042
8043 3) ASL Compiler, version X2034:
8044
8045Now checks for (and generates an error if detected) the use of a
8046Break or Continue statement without an enclosing While statement.
8047
8048
8049Successfully generated the compiler with the Intel 64-bit C
8050compiler.
8051
8052 ----------------------------------------
8053Summary of changes for this label: 12_05_01
8054
8055 1) ACPI CA Core Subsystem:
8056
8057The ACPI 2.0 CopyObject operator is fully implemented.  This
8058operator creates a new copy of an object (and is also used to
8059bypass the "implicit conversion" mechanism of the Store operator.)
8060
8061The ACPI 2.0 semantics for the SizeOf operator are fully
8062implemented.  The change is that performing a SizeOf on a
8063reference object causes an automatic dereference of the object to
8064tha actual value before the size is evaluated. This behavior was
8065undefined in ACPI 1.0.
8066
8067The ACPI 2.0 semantics for the Extended IRQ resource descriptor
8068have been implemented.  The interrupt polarity and mode are now
8069independently set.
8070
8071Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
8072appearing in Package objects were not properly converted to
8073integers when the internal Package was converted to an external
8074object (via the AcpiEvaluateObject interface.)
8075
8076Fixed a problem with the namespace object deletion mechanism for
8077objects created by control methods.  There were two parts to this
8078problem: 1) Objects created during the initialization phase method
8079parse were not being deleted, and 2) The object owner ID mechanism
8080to track objects was broken.
8081
8082Fixed a problem where the use of the ASL Scope operator within a
8083control method would result in an invalid opcode exception.
8084
8085Fixed a problem introduced in the previous label where the buffer
8086length required for the _PRT structure was not being returned
8087correctly.
8088
8089Code and Data Size: Current core subsystem library sizes are shown
8090below. These are the code and data sizes for the acpica.lib
8091produced by the Microsoft Visual C++ 6.0 compiler, and these
8092values do not include any ACPI driver or OSPM code.  The debug
8093version of the code includes the debug output trace mechanism and
8094has a larger code and data size.  Note that these values will vary
8095depending on the efficiency of the compiler and the compiler
8096options used during generation.
8097
8098  Previous Release (11_20_01)
8099     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
8100     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
8101
8102  Current Release:
8103     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
8104     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
8105
8106 2) Linux:
8107
8108Updated all files to apply cleanly against 2.4.16.
8109
8110Added basic PCI Interrupt Routing Table (PRT) support for IA32
8111(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
8112version supports both static and dyanmic PRT entries, but dynamic
8113entries are treated as if they were static (not yet
8114reconfigurable).  Architecture- specific code to use this data is
8115absent on IA32 but should be available shortly.
8116
8117Changed the initialization sequence to start the ACPI interpreter
8118(acpi_init) prior to initialization of the PCI driver (pci_init)
8119in init/main.c.  This ordering is required to support PRT and
8120facilitate other (future) enhancement.  A side effect is that the
8121ACPI bus driver and certain device drivers can no longer be loaded
8122as modules.
8123
8124Modified the 'make menuconfig' options to allow PCI Interrupt
8125Routing support to be included without the ACPI Bus and other
8126device drivers.
8127
8128 3) ASL Compiler, version X2033:
8129
8130Fixed some issues with the use of the new CopyObject and
8131DataTableRegion operators.  Both are fully functional.
8132
8133 ----------------------------------------
8134Summary of changes for this label: 11_20_01
8135
8136 20 November 2001.  Summary of changes for this release.
8137
8138 1) ACPI CA Core Subsystem:
8139
8140Updated Index support to match ACPI 2.0 semantics.  Storing a
8141Integer, String, or Buffer to an Index of a Buffer will store only
8142the least-significant byte of the source to the Indexed buffer
8143byte.  Multiple writes are not performed.
8144
8145Fixed a problem where the access type used in an AccessAs ASL
8146operator was not recorded correctly into the field object.
8147
8148Fixed a problem where ASL Event objects were created in a
8149signalled state. Events are now created in an unsignalled state.
8150
8151The internal object cache is now purged after table loading and
8152initialization to reduce the use of dynamic kernel memory -- on
8153the assumption that object use is greatest during the parse phase
8154of the entire table (versus the run-time use of individual control
8155methods.)
8156
8157ACPI 2.0 variable-length packages are now fully operational.
8158
8159Code and Data Size: Code and Data optimizations have permitted new
8160feature development with an actual reduction in the library size.
8161Current core subsystem library sizes are shown below.  These are
8162the code and data sizes for the acpica.lib produced by the
8163Microsoft Visual C++ 6.0 compiler, and these values do not include
8164any ACPI driver or OSPM code.  The debug version of the code
8165includes the debug output trace mechanism and has a larger code
8166and data size.  Note that these values will vary depending on the
8167efficiency of the compiler and the compiler options used during
8168generation.
8169
8170  Previous Release (11_09_01):
8171     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
8172     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
8173
8174  Current Release:
8175     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
8176     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
8177
8178 2) Linux:
8179
8180Enhanced the ACPI boot-time initialization code to allow the use
8181of Local APIC tables for processor enumeration on IA-32, and to
8182pave the way for a fully MPS-free boot (on SMP systems) in the
8183near future.  This functionality replaces
8184arch/i386/kernel/acpitables.c, which was introduced in an earlier
81852.4.15-preX release.  To enable this feature you must add
8186"acpi_boot=on" to the kernel command line -- see the help entry
8187for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
8188the works...
8189
8190Restructured the configuration options to allow boot-time table
8191parsing support without inclusion of the ACPI Interpreter (and
8192other) code.
8193
8194NOTE: This release does not include fixes for the reported events,
8195power-down, and thermal passive cooling issues (coming soon).
8196
8197 3) ASL Compiler:
8198
8199Added additional typechecking for Fields within restricted access
8200Operation Regions.  All fields within EC and CMOS regions must be
8201declared with ByteAcc. All fields withing SMBus regions must be
8202declared with the BufferAcc access type.
8203
8204Fixed a problem where the listing file output of control methods
8205no longer interleaved the actual AML code with the ASL source
8206code.
8207
8208
8209
8210
8211----------------------------------------
8212Summary of changes for this label: 11_09_01
8213
82141) ACPI CA Core Subsystem:
8215
8216Implemented ACPI 2.0-defined support for writes to fields with a
8217Buffer, String, or Integer source operand that is smaller than the
8218target field. In these cases, the source operand is zero-extended
8219to fill the target field.
8220
8221Fixed a problem where a Field starting bit offset (within the
8222parent operation region) was calculated incorrectly if the
8223
8224alignment of the field differed from the access width.  This
8225affected CreateWordField, CreateDwordField, CreateQwordField, and
8226possibly other fields that use the "AccessAny" keyword.
8227
8228Fixed a problem introduced in the 11_02_01 release where indirect
8229stores through method arguments did not operate correctly.
8230
82312) Linux:
8232
8233Implemented boot-time ACPI table parsing support
8234(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
8235facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
8236legacy BIOS interfaces (e.g. MPS) for the configuration of system
8237processors, memory, and interrupts during setup_arch().  Note that
8238this patch does not include the required architecture-specific
8239changes required to apply this information -- subsequent patches
8240will be posted for both IA32 and IA64 to achieve this.
8241
8242Added low-level sleep support for IA32 platforms, courtesy of Pat
8243Mochel. This allows IA32 systems to transition to/from various
8244sleeping states (e.g. S1, S3), although the lack of a centralized
8245driver model and power-manageable drivers will prevent its
8246(successful) use on most systems.
8247
8248Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
8249submenu, unified IA32 and IA64 options, added new "Boot using ACPI
8250tables" option, etc.
8251
8252Increased the default timeout for the EC driver from 1ms to 10ms
8253(1000 cycles of 10us) to try to address AE_TIME errors during EC
8254transactions.
8255
8256 ----------------------------------------
8257Summary of changes for this label: 11_02_01
8258
82591) ACPI CA Core Subsystem:
8260
8261ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
8262(QWordAcc keyword). All ACPI 2.0 64-bit support is now
8263implemented.
8264
8265OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
8266changes to support ACPI 2.0 Qword field access.  Read/Write
8267PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
8268accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
8269the value parameter for the address space handler interface is now
8270an ACPI_INTEGER.  OSL implementations of these interfaces must now
8271handle the case where the Width parameter is 64.
8272
8273Index Fields: Fixed a problem where unaligned bit assembly and
8274disassembly for IndexFields was not supported correctly.
8275
8276Index and Bank Fields:  Nested Index and Bank Fields are now
8277supported. During field access, a check is performed to ensure
8278that the value written to an Index or Bank register is not out of
8279the range of the register.  The Index (or Bank) register is
8280written before each access to the field data. Future support will
8281include allowing individual IndexFields to be wider than the
8282DataRegister width.
8283
8284Fields: Fixed a problem where the AML interpreter was incorrectly
8285attempting to write beyond the end of a Field/OpRegion.  This was
8286a boundary case that occurred when a DWORD field was written to a
8287BYTE access OpRegion, forcing multiple writes and causing the
8288interpreter to write one datum too many.
8289
8290Fields: Fixed a problem with Field/OpRegion access where the
8291starting bit address of a field was incorrectly calculated if the
8292current access type was wider than a byte (WordAcc, DwordAcc, or
8293QwordAcc).
8294
8295Fields: Fixed a problem where forward references to individual
8296FieldUnits (individual Field names within a Field definition) were
8297not resolved during the AML table load.
8298
8299Fields: Fixed a problem where forward references from a Field
8300definition to the parent Operation Region definition were not
8301resolved during the AML table load.
8302
8303Fields: Duplicate FieldUnit names within a scope are now detected
8304during AML table load.
8305
8306Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
8307returned an incorrect name for the root node.
8308
8309Code and Data Size: Code and Data optimizations have permitted new
8310feature development with an actual reduction in the library size.
8311Current core subsystem library sizes are shown below.  These are
8312the code and data sizes for the acpica.lib produced by the
8313Microsoft Visual C++ 6.0 compiler, and these values do not include
8314any ACPI driver or OSPM code.  The debug version of the code
8315includes the debug output trace mechanism and has a larger code
8316and data size.  Note that these values will vary depending on the
8317efficiency of the compiler and the compiler options used during
8318generation.
8319
8320  Previous Release (10_18_01):
8321     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8322     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8323
8324  Current Release:
8325     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
8326     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
8327
8328 2) Linux:
8329
8330Improved /proc processor output (Pavel Machek) Re-added
8331MODULE_LICENSE("GPL") to all modules.
8332
8333 3) ASL Compiler version X2030:
8334
8335Duplicate FieldUnit names within a scope are now detected and
8336flagged as errors.
8337
8338 4) Documentation:
8339
8340Programmer Reference updated to reflect OSL and address space
8341handler interface changes described above.
8342
8343----------------------------------------
8344Summary of changes for this label: 10_18_01
8345
8346ACPI CA Core Subsystem:
8347
8348Fixed a problem with the internal object reference count mechanism
8349that occasionally caused premature object deletion. This resolves
8350all of the outstanding problem reports where an object is deleted
8351in the middle of an interpreter evaluation.  Although this problem
8352only showed up in rather obscure cases, the solution to the
8353problem involved an adjustment of all reference counts involving
8354objects attached to namespace nodes.
8355
8356Fixed a problem with Field support in the interpreter where
8357writing to an aligned field whose length is an exact multiple (2
8358or greater) of the field access granularity would cause an attempt
8359to write beyond the end of the field.
8360
8361The top level AML opcode execution functions within the
8362interpreter have been renamed with a more meaningful and
8363consistent naming convention.  The modules exmonad.c and
8364exdyadic.c were eliminated.  New modules are exoparg1.c,
8365exoparg2.c, exoparg3.c, and exoparg6.c.
8366
8367Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
8368
8369Fixed a problem where the AML debugger was causing some internal
8370objects to not be deleted during subsystem termination.
8371
8372Fixed a problem with the external AcpiEvaluateObject interface
8373where the subsystem would fault if the named object to be
8374evaluated refered to a constant such as Zero, Ones, etc.
8375
8376Fixed a problem with IndexFields and BankFields where the
8377subsystem would fault if the index, data, or bank registers were
8378not defined in the same scope as the field itself.
8379
8380Added printf format string checking for compilers that support
8381this feature.  Corrected more than 50 instances of issues with
8382format specifiers within invocations of ACPI_DEBUG_PRINT
8383throughout the core subsystem code.
8384
8385The ASL "Revision" operator now returns the ACPI support level
8386implemented in the core - the value "2" since the ACPI 2.0 support
8387is more than 50% implemented.
8388
8389Enhanced the output of the AML debugger "dump namespace" command
8390to output in a more human-readable form.
8391
8392Current core subsystem library code sizes are shown below.  These
8393
8394are the code and data sizes for the acpica.lib produced by the
8395Microsoft Visual C++ 6.0 compiler, and these values do not include
8396any ACPI driver or OSPM code.  The debug version of the code
8397includes the full debug trace mechanism -- leading to a much
8398
8399larger code and data size.  Note that these values will vary
8400depending on the efficiency of the compiler and the compiler
8401options used during generation.
8402
8403     Previous Label (09_20_01):
8404     Non-Debug Version:    65K Code,     5K Data,     70K Total
8405     Debug Version:       138K Code,    58K Data,    196K Total
8406
8407     This Label:
8408
8409     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8410     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8411
8412Linux:
8413
8414Implemented a "Bad BIOS Blacklist" to track machines that have
8415known ASL/AML problems.
8416
8417Enhanced the /proc interface for the thermal zone driver and added
8418support for _HOT (the critical suspend trip point).  The 'info'
8419file now includes threshold/policy information, and allows setting
8420of _SCP (cooling preference) and _TZP (polling frequency) values
8421to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
8422frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
8423preference to the passive/quiet mode (if supported by the ASL).
8424
8425Implemented a workaround for a gcc bug that resuted in an OOPs
8426when loading the control method battery driver.
8427
8428 ----------------------------------------
8429Summary of changes for this label: 09_20_01
8430
8431 ACPI CA Core Subsystem:
8432
8433The AcpiEnableEvent and AcpiDisableEvent interfaces have been
8434modified to allow individual GPE levels to be flagged as wake-
8435enabled (i.e., these GPEs are to remain enabled when the platform
8436sleeps.)
8437
8438The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
8439support wake-enabled GPEs.  This means that upon entering the
8440sleep state, all GPEs that are not wake-enabled are disabled.
8441When leaving the sleep state, these GPEs are reenabled.
8442
8443A local double-precision divide/modulo module has been added to
8444enhance portability to OS kernels where a 64-bit math library is
8445not available.  The new module is "utmath.c".
8446
8447Several optimizations have been made to reduce the use of CPU
8448stack.  Originally over 2K, the maximum stack usage is now below
84492K at 1860  bytes (1.82k)
8450
8451Fixed a problem with the AcpiGetFirmwareTable interface where the
8452root table pointer was not mapped into a logical address properly.
8453
8454Fixed a problem where a NULL pointer was being dereferenced in the
8455interpreter code for the ASL Notify operator.
8456
8457Fixed a problem where the use of the ASL Revision operator
8458returned an error. This operator now returns the current version
8459of the ACPI CA core subsystem.
8460
8461Fixed a problem where objects passed as control method parameters
8462to AcpiEvaluateObject were always deleted at method termination.
8463However, these objects may end up being stored into the namespace
8464by the called method.  The object reference count mechanism was
8465applied to these objects instead of a force delete.
8466
8467Fixed a problem where static strings or buffers (contained in the
8468AML code) that are declared as package elements within the ASL
8469code could cause a fault because the interpreter would attempt to
8470delete them.  These objects are now marked with the "static
8471object" flag to prevent any attempt to delete them.
8472
8473Implemented an interpreter optimization to use operands directly
8474from the state object instead of extracting the operands to local
8475variables.  This reduces stack use and code size, and improves
8476performance.
8477
8478The module exxface.c was eliminated as it was an unnecessary extra
8479layer of code.
8480
8481Current core subsystem library code sizes are shown below.  These
8482are the code and data sizes for the acpica.lib produced by the
8483Microsoft Visual C++ 6.0 compiler, and these values do not include
8484any ACPI driver or OSPM code.  The debug version of the code
8485includes the full debug trace mechanism -- leading to a much
8486larger code and data size.  Note that these values will vary
8487depending on the efficiency of the compiler and the compiler
8488options used during generation.
8489
8490  Non-Debug Version:  65K Code,   5K Data,   70K Total
8491(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
8492Total  (Previously 195K)
8493
8494Linux:
8495
8496Support for ACPI 2.0 64-bit integers has been added.   All ACPI
8497Integer objects are now 64 bits wide
8498
8499All Acpi data types and structures are now in lower case.  Only
8500Acpi macros are upper case for differentiation.
8501
8502 Documentation:
8503
8504Changes to the external interfaces as described above.
8505
8506 ----------------------------------------
8507Summary of changes for this label: 08_31_01
8508
8509 ACPI CA Core Subsystem:
8510
8511A bug with interpreter implementation of the ASL Divide operator
8512was found and fixed.  The implicit function return value (not the
8513explicit store operands) was returning the remainder instead of
8514the quotient.  This was a longstanding bug and it fixes several
8515known outstanding issues on various platforms.
8516
8517The ACPI_DEBUG_PRINT and function trace entry/exit macros have
8518been further optimized for size.  There are 700 invocations of the
8519DEBUG_PRINT macro alone, so each optimization reduces the size of
8520the debug version of the subsystem significantly.
8521
8522A stack trace mechanism has been implemented.  The maximum stack
8523usage is about 2K on 32-bit platforms.  The debugger command "stat
8524stack" will display the current maximum stack usage.
8525
8526All public symbols and global variables within the subsystem are
8527now prefixed with the string "Acpi".  This keeps all of the
8528symbols grouped together in a kernel map, and avoids conflicts
8529with other kernel subsystems.
8530
8531Most of the internal fixed lookup tables have been moved into the
8532code segment via the const operator.
8533
8534Several enhancements have been made to the interpreter to both
8535reduce the code size and improve performance.
8536
8537Current core subsystem library code sizes are shown below.  These
8538are the code and data sizes for the acpica.lib produced by the
8539Microsoft Visual C++ 6.0 compiler, and these values do not include
8540any ACPI driver or OSPM code.  The debug version of the code
8541includes the full debug trace mechanism which contains over 700
8542invocations of the DEBUG_PRINT macro, 500 function entry macro
8543invocations, and over 900 function exit macro invocations --
8544leading to a much larger code and data size.  Note that these
8545values will vary depending on the efficiency of the compiler and
8546the compiler options used during generation.
8547
8548        Non-Debug Version:  64K Code,   5K Data,   69K Total
8549Debug Version:     137K Code,  58K Data,  195K Total
8550
8551 Linux:
8552
8553Implemented wbinvd() macro, pending a kernel-wide definition.
8554
8555Fixed /proc/acpi/event to handle poll() and short reads.
8556
8557 ASL Compiler, version X2026:
8558
8559Fixed a problem introduced in the previous label where the AML
8560
8561code emitted for package objects produced packages with zero
8562length.
8563
8564 ----------------------------------------
8565Summary of changes for this label: 08_16_01
8566
8567ACPI CA Core Subsystem:
8568
8569The following ACPI 2.0 ASL operators have been implemented in the
8570AML interpreter (These are already supported by the Intel ASL
8571compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
8572ToBuffer.  Support for 64-bit AML constants is implemented in the
8573AML parser, debugger, and disassembler.
8574
8575The internal memory tracking mechanism (leak detection code) has
8576been upgraded to reduce the memory overhead (a separate tracking
8577block is no longer allocated for each memory allocation), and now
8578supports all of the internal object caches.
8579
8580The data structures and code for the internal object caches have
8581been coelesced and optimized so that there is a single cache and
8582memory list data structure and a single group of functions that
8583implement generic cache management.  This has reduced the code
8584size in both the debug and release versions of the subsystem.
8585
8586The DEBUG_PRINT macro(s) have been optimized for size and replaced
8587by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
8588different, because it generates a single call to an internal
8589function.  This results in a savings of about 90 bytes per
8590invocation, resulting in an overall code and data savings of about
859116% in the debug version of the subsystem.
8592
8593 Linux:
8594
8595Fixed C3 disk corruption problems and re-enabled C3 on supporting
8596machines.
8597
8598Integrated low-level sleep code by Patrick Mochel.
8599
8600Further tweaked source code Linuxization.
8601
8602Other minor fixes.
8603
8604 ASL Compiler:
8605
8606Support for ACPI 2.0 variable length packages is fixed/completed.
8607
8608Fixed a problem where the optional length parameter for the ACPI
86092.0 ToString operator.
8610
8611Fixed multiple extraneous error messages when a syntax error is
8612detected within the declaration line of a control method.
8613
8614 ----------------------------------------
8615Summary of changes for this label: 07_17_01
8616
8617ACPI CA Core Subsystem:
8618
8619Added a new interface named AcpiGetFirmwareTable to obtain any
8620ACPI table via the ACPI signature.  The interface can be called at
8621any time during kernel initialization, even before the kernel
8622virtual memory manager is initialized and paging is enabled.  This
8623allows kernel subsystems to obtain ACPI tables very early, even
8624before the ACPI CA subsystem is initialized.
8625
8626Fixed a problem where Fields defined with the AnyAcc attribute
8627could be resolved to the incorrect address under the following
8628conditions: 1) the field width is larger than 8 bits and 2) the
8629parent operation region is not defined on a DWORD boundary.
8630
8631Fixed a problem where the interpreter is not being locked during
8632namespace initialization (during execution of the _INI control
8633methods), causing an error when an attempt is made to release it
8634later.
8635
8636ACPI 2.0 support in the AML Interpreter has begun and will be
8637ongoing throughout the rest of this year.  In this label, The Mod
8638operator is implemented.
8639
8640Added a new data type to contain full PCI addresses named
8641ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
8642and Function values.
8643
8644 Linux:
8645
8646Enhanced the Linux version of the source code to change most
8647capitalized ACPI type names to lowercase. For example, all
8648instances of ACPI_STATUS are changed to acpi_status.  This will
8649result in a large diff, but the change is strictly cosmetic and
8650aligns the CA code closer to the Linux coding standard.
8651
8652OSL Interfaces:
8653
8654The interfaces to the PCI configuration space have been changed to
8655add the PCI Segment number and to split the single 32-bit combined
8656DeviceFunction field into two 16-bit fields.  This was
8657accomplished by moving the four values that define an address in
8658PCI configuration space (segment, bus, device, and function) to
8659the new ACPI_PCI_ID structure.
8660
8661The changes to the PCI configuration space interfaces led to a
8662reexamination of the complete set of address space access
8663interfaces for PCI, I/O, and Memory.  The previously existing 18
8664interfaces have proven difficult to maintain (any small change
8665must be propagated across at least 6 interfaces) and do not easily
8666allow for future expansion to 64 bits if necessary.  Also, on some
8667systems, it would not be appropriate to demultiplex the access
8668width (8, 16, 32,or 64) before calling the OSL if the
8669corresponding native OS interfaces contain a similar access width
8670parameter.  For these reasons, the 18 address space interfaces
8671have been replaced by these 6 new ones:
8672
8673AcpiOsReadPciConfiguration
8674AcpiOsWritePciConfiguration
8675AcpiOsReadMemory
8676AcpiOsWriteMemory
8677AcpiOsReadPort
8678AcpiOsWritePort
8679
8680Added a new interface named AcpiOsGetRootPointer to allow the OSL
8681to perform the platform and/or OS-specific actions necessary to
8682obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
8683interface will simply call down to the CA core to perform the low-
8684memory search for the table.  On IA-64, the RSDP is obtained from
8685EFI.  Migrating this interface to the OSL allows the CA core to
8686
8687remain OS and platform independent.
8688
8689Added a new interface named AcpiOsSignal to provide a generic
8690"function code and pointer" interface for various miscellaneous
8691signals and notifications that must be made to the host OS.   The
8692first such signals are intended to support the ASL Fatal and
8693Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
8694interface has been obsoleted.
8695
8696The definition of the AcpiFormatException interface has been
8697changed to simplify its use.  The caller no longer must supply a
8698buffer to the call; A pointer to a const string is now returned
8699directly.  This allows the call to be easily used in printf
8700statements, etc. since the caller does not have to manage a local
8701buffer.
8702
8703
8704 ASL Compiler, Version X2025:
8705
8706The ACPI 2.0 Switch/Case/Default operators have been implemented
8707and are fully functional.  They will work with all ACPI 1.0
8708interpreters, since the operators are simply translated to If/Else
8709pairs.
8710
8711The ACPI 2.0 ElseIf operator is implemented and will also work
8712with 1.0 interpreters, for the same reason.
8713
8714Implemented support for ACPI 2.0 variable-length packages.  These
8715packages have a separate opcode, and their size is determined by
8716the interpreter at run-time.
8717
8718Documentation The ACPI CA Programmer Reference has been updated to
8719reflect the new interfaces and changes to existing interfaces.
8720
8721 ------------------------------------------
8722Summary of changes for this label: 06_15_01
8723
8724 ACPI CA Core Subsystem:
8725
8726Fixed a problem where a DWORD-accessed field within a Buffer
8727object would get its byte address inadvertently rounded down to
8728the nearest DWORD.  Buffers are always Byte-accessible.
8729
8730 ASL Compiler, version X2024:
8731
8732Fixed a problem where the Switch() operator would either fault or
8733hang the compiler.  Note however, that the AML code for this ACPI
87342.0 operator is not yet implemented.
8735
8736Compiler uses the new AcpiOsGetTimer interface to obtain compile
8737timings.
8738
8739Implementation of the CreateField operator automatically converts
8740a reference to a named field within a resource descriptor from a
8741byte offset to a bit offset if required.
8742
8743Added some missing named fields from the resource descriptor
8744support. These are the names that are automatically created by the
8745compiler to reference fields within a descriptor.  They are only
8746valid at compile time and are not passed through to the AML
8747interpreter.
8748
8749Resource descriptor named fields are now typed as Integers and
8750subject to compile-time typechecking when used in expressions.
8751
8752 ------------------------------------------
8753Summary of changes for this label: 05_18_01
8754
8755 ACPI CA Core Subsystem:
8756
8757Fixed a couple of problems in the Field support code where bits
8758from adjacent fields could be returned along with the proper field
8759bits. Restructured the field support code to improve performance,
8760readability and maintainability.
8761
8762New DEBUG_PRINTP macro automatically inserts the procedure name
8763into the output, saving hundreds of copies of procedure name
8764strings within the source, shrinking the memory footprint of the
8765debug version of the core subsystem.
8766
8767 Source Code Structure:
8768
8769The source code directory tree was restructured to reflect the
8770current organization of the component architecture.  Some files
8771and directories have been moved and/or renamed.
8772
8773 Linux:
8774
8775Fixed leaking kacpidpc processes.
8776
8777Fixed queueing event data even when /proc/acpi/event is not
8778opened.
8779
8780 ASL Compiler, version X2020:
8781
8782Memory allocation performance enhancement - over 24X compile time
8783improvement on large ASL files.  Parse nodes and namestring
8784buffers are now allocated from a large internal compiler buffer.
8785
8786The temporary .SRC file is deleted unless the "-s" option is
8787specified
8788
8789The "-d" debug output option now sends all output to the .DBG file
8790instead of the console.
8791
8792"External" second parameter is now optional
8793
8794"ElseIf" syntax now properly allows the predicate
8795
8796Last operand to "Load" now recognized as a Target operand
8797
8798Debug object can now be used anywhere as a normal object.
8799
8800ResourceTemplate now returns an object of type BUFFER
8801
8802EISAID now returns an object of type INTEGER
8803
8804"Index" now works with a STRING operand
8805
8806"LoadTable" now accepts optional parameters
8807
8808"ToString" length parameter is now optional
8809
8810"Interrupt (ResourceType," parse error fixed.
8811
8812"Register" with a user-defined region space parse error fixed
8813
8814Escaped backslash at the end of a string ("\\") scan/parse error
8815fixed
8816
8817"Revision" is now an object of type INTEGER.
8818
8819
8820
8821------------------------------------------
8822Summary of changes for this label: 05_02_01
8823
8824Linux:
8825
8826/proc/acpi/event now blocks properly.
8827
8828Removed /proc/sys/acpi. You can still dump your DSDT from
8829/proc/acpi/dsdt.
8830
8831 ACPI CA Core Subsystem:
8832
8833Fixed a problem introduced in the previous label where some of the
8834"small" resource descriptor types were not recognized.
8835
8836Improved error messages for the case where an ASL Field is outside
8837the range of the parent operation region.
8838
8839 ASL Compiler, version X2018:
8840
8841
8842Added error detection for ASL Fields that extend beyond the length
8843of the parent operation region (only if the length of the region
8844is known at compile time.)  This includes fields that have a
8845minimum access width that is smaller than the parent region, and
8846individual field units that are partially or entirely beyond the
8847extent of the parent.
8848
8849
8850
8851------------------------------------------
8852Summary of changes for this label: 04_27_01
8853
8854 ACPI CA Core Subsystem:
8855
8856Fixed a problem where the namespace mutex could be released at the
8857wrong time during execution of AcpiRemoveAddressSpaceHandler.
8858
8859Added optional thread ID output for debug traces, to simplify
8860debugging of multiple threads.  Added context switch notification
8861when the debug code realizes that a different thread is now
8862executing ACPI code.
8863
8864Some additional external data types have been prefixed with the
8865string "ACPI_" for consistency.  This may effect existing code.
8866The data types affected are the external callback typedefs - e.g.,
8867
8868WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
8869
8870 Linux:
8871
8872Fixed an issue with the OSL semaphore implementation where a
8873thread was waking up with an error from receiving a SIGCHLD
8874signal.
8875
8876Linux version of ACPI CA now uses the system C library for string
8877manipulation routines instead of a local implementation.
8878
8879Cleaned up comments and removed TBDs.
8880
8881 ASL Compiler, version X2017:
8882
8883Enhanced error detection and reporting for all file I/O
8884operations.
8885
8886 Documentation:
8887
8888Programmer Reference updated to version 1.06.
8889
8890
8891
8892------------------------------------------
8893Summary of changes for this label: 04_13_01
8894
8895 ACPI CA Core Subsystem:
8896
8897Restructured support for BufferFields and RegionFields.
8898BankFields support is now fully operational.  All known 32-bit
8899limitations on field sizes have been removed.  Both BufferFields
8900and (Operation) RegionFields are now supported by the same field
8901management code.
8902
8903Resource support now supports QWORD address and IO resources. The
890416/32/64 bit address structures and the Extended IRQ structure
8905have been changed to properly handle Source Resource strings.
8906
8907A ThreadId of -1 is now used to indicate a "mutex not acquired"
8908condition internally and must never be returned by AcpiOsThreadId.
8909This reserved value was changed from 0 since Unix systems allow a
8910thread ID of 0.
8911
8912Linux:
8913
8914Driver code reorganized to enhance portability
8915
8916Added a kernel configuration option to control ACPI_DEBUG
8917
8918Fixed the EC driver to honor _GLK.
8919
8920ASL Compiler, version X2016:
8921
8922Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
8923address space was set to 0, not 0x7f as it should be.
8924
8925 ------------------------------------------
8926Summary of changes for this label: 03_13_01
8927
8928 ACPI CA Core Subsystem:
8929
8930During ACPI initialization, the _SB_._INI method is now run if
8931present.
8932
8933Notify handler fix - notifies are deferred until the parent method
8934completes execution.  This fixes the "mutex already acquired"
8935issue seen occasionally.
8936
8937Part of the "implicit conversion" rules in ACPI 2.0 have been
8938found to cause compatibility problems with existing ASL/AML.  The
8939convert "result-to-target-type" implementation has been removed
8940for stores to method Args and Locals.  Source operand conversion
8941is still fully implemented.  Possible changes to ACPI 2.0
8942specification pending.
8943
8944Fix to AcpiRsCalculatePciRoutingTableLength to return correct
8945length.
8946
8947Fix for compiler warnings for 64-bit compiles.
8948
8949 Linux:
8950
8951/proc output aligned for easier parsing.
8952
8953Release-version compile problem fixed.
8954
8955New kernel configuration options documented in Configure.help.
8956
8957IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
8958context" message.
8959
8960 OSPM:
8961
8962Power resource driver integrated with bus manager.
8963
8964Fixed kernel fault during active cooling for thermal zones.
8965
8966Source Code:
8967
8968The source code tree has been restructured.
8969
8970
8971
8972------------------------------------------
8973Summary of changes for this label: 03_02_01
8974
8975 Linux OS Services Layer (OSL):
8976
8977Major revision of all Linux-specific code.
8978
8979Modularized all ACPI-specific drivers.
8980
8981Added new thermal zone and power resource drivers.
8982
8983Revamped /proc interface (new functionality is under /proc/acpi).
8984
8985New kernel configuration options.
8986
8987 Linux known issues:
8988
8989New kernel configuration options not documented in Configure.help
8990yet.
8991
8992
8993Module dependencies not currently implemented. If used, they
8994should be loaded in this order: busmgr, power, ec, system,
8995processor, battery, ac_adapter, button, thermal.
8996
8997Modules will not load if CONFIG_MODVERSION is set.
8998
8999IBM 600E - entering S5 may reboot instead of shutting down.
9000
9001IBM 600E - Sleep button may generate "Invalid <NULL> context"
9002message.
9003
9004Some systems may fail with "execution mutex already acquired"
9005message.
9006
9007 ACPI CA Core Subsystem:
9008
9009Added a new OSL Interface, AcpiOsGetThreadId.  This was required
9010for the  deadlock detection code. Defined to return a non-zero, 32-
9011bit thread ID for the currently executing thread.  May be a non-
9012zero constant integer on single-thread systems.
9013
9014Implemented deadlock detection for internal subsystem mutexes.  We
9015may add conditional compilation for this code (debug only) later.
9016
9017ASL/AML Mutex object semantics are now fully supported.  This
9018includes multiple acquires/releases by owner and support for the
9019
9020Mutex SyncLevel parameter.
9021
9022A new "Force Release" mechanism automatically frees all ASL
9023Mutexes that have been acquired but not released when a thread
9024exits the interpreter.  This forces conformance to the ACPI spec
9025("All mutexes must be released when an invocation exits") and
9026prevents deadlocked ASL threads.  This mechanism can be expanded
9027(later) to monitor other resource acquisitions if OEM ASL code
9028continues to misbehave (which it will).
9029
9030Several new ACPI exception codes have been added for the Mutex
9031support.
9032
9033Recursive method calls are now allowed and supported (the ACPI
9034spec does in fact allow recursive method calls.)  The number of
9035recursive calls is subject to the restrictions imposed by the
9036SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
9037parameter.
9038
9039Implemented support for the SyncLevel parameter for control
9040methods (ACPI 2.0 feature)
9041
9042Fixed a deadlock problem when multiple threads attempted to use
9043the interpreter.
9044
9045Fixed a problem where the string length of a String package
9046element was not always set in a package returned from
9047AcpiEvaluateObject.
9048
9049Fixed a problem where the length of a String package element was
9050not always included in the length of the overall package returned
9051from AcpiEvaluateObject.
9052
9053Added external interfaces (Acpi*) to the ACPI debug memory
9054manager.  This manager keeps a list of all outstanding
9055allocations, and can therefore detect memory leaks and attempts to
9056free memory blocks more than once. Useful for code such as the
9057power manager, etc.  May not be appropriate for device drivers.
9058Performance with the debug code enabled is slow.
9059
9060The ACPI Global Lock is now an optional hardware element.
9061
9062 ASL Compiler Version X2015:
9063
9064Integrated changes to allow the compiler to be generated on
9065multiple platforms.
9066
9067Linux makefile added to generate the compiler on Linux
9068
9069 Source Code:
9070
9071All platform-specific headers have been moved to their own
9072subdirectory, Include/Platform.
9073
9074New source file added, Interpreter/ammutex.c
9075
9076New header file, Include/acstruct.h
9077
9078 Documentation:
9079
9080The programmer reference has been updated for the following new
9081interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
9082
9083 ------------------------------------------
9084Summary of changes for this label: 02_08_01
9085
9086Core ACPI CA Subsystem: Fixed a problem where an error was
9087incorrectly returned if the return resource buffer was larger than
9088the actual data (in the resource interfaces).
9089
9090References to named objects within packages are resolved to the
9091
9092full pathname string before packages are returned directly (via
9093the AcpiEvaluateObject interface) or indirectly via the resource
9094interfaces.
9095
9096Linux OS Services Layer (OSL):
9097
9098Improved /proc battery interface.
9099
9100
9101Added C-state debugging output and other miscellaneous fixes.
9102
9103ASL Compiler Version X2014:
9104
9105All defined method arguments can now be used as local variables,
9106including the ones that are not actually passed in as parameters.
9107The compiler tracks initialization of the arguments and issues an
9108exception if they are used without prior assignment (just like
9109locals).
9110
9111The -o option now specifies a filename prefix that is used for all
9112output files, including the AML output file.  Otherwise, the
9113default behavior is as follows:  1) the AML goes to the file
9114specified in the DSDT.  2) all other output files use the input
9115source filename as the base.
9116
9117 ------------------------------------------
9118Summary of changes for this label: 01_25_01
9119
9120Core ACPI CA Subsystem: Restructured the implementation of object
9121store support within the  interpreter.  This includes support for
9122the Store operator as well  as any ASL operators that include a
9123target operand.
9124
9125Partially implemented support for Implicit Result-to-Target
9126conversion. This is when a result object is converted on the fly
9127to the type of  an existing target object.  Completion of this
9128support is pending  further analysis of the ACPI specification
9129concerning this matter.
9130
9131CPU-specific code has been removed from the subsystem (hardware
9132directory).
9133
9134New Power Management Timer functions added
9135
9136Linux OS Services Layer (OSL): Moved system state transition code
9137to the core, fixed it, and modified  Linux OSL accordingly.
9138
9139Fixed C2 and C3 latency calculations.
9140
9141
9142We no longer use the compilation date for the version message on
9143initialization, but retrieve the version from AcpiGetSystemInfo().
9144
9145Incorporated for fix Sony VAIO machines.
9146
9147Documentation:  The Programmer Reference has been updated and
9148reformatted.
9149
9150
9151ASL Compiler:  Version X2013: Fixed a problem where the line
9152numbering and error reporting could get out  of sync in the
9153presence of multiple include files.
9154
9155 ------------------------------------------
9156Summary of changes for this label: 01_15_01
9157
9158Core ACPI CA Subsystem:
9159
9160Implemented support for type conversions in the execution of the
9161ASL  Concatenate operator (The second operand is converted to
9162match the type  of the first operand before concatenation.)
9163
9164Support for implicit source operand conversion is partially
9165implemented.   The ASL source operand types Integer, Buffer, and
9166String are freely  interchangeable for most ASL operators and are
9167converted by the interpreter  on the fly as required.  Implicit
9168Target operand conversion (where the  result is converted to the
9169target type before storing) is not yet implemented.
9170
9171Support for 32-bit and 64-bit BCD integers is implemented.
9172
9173Problem fixed where a field read on an aligned field could cause a
9174read  past the end of the field.
9175
9176New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
9177does not return a value, but the caller expects one.  (The ASL
9178compiler flags this as a warning.)
9179
9180ASL Compiler:
9181
9182Version X2011:
91831. Static typechecking of all operands is implemented. This
9184prevents the use of invalid objects (such as using a Package where
9185an Integer is required) at compile time instead of at interpreter
9186run-time.
91872. The ASL source line is printed with ALL errors and warnings.
91883. Bug fix for source EOF without final linefeed.
91894. Debug option is split into a parse trace and a namespace trace.
91905. Namespace output option (-n) includes initial values for
9191integers and strings.
91926. Parse-only option added for quick syntax checking.
91937. Compiler checks for duplicate ACPI name declarations
9194
9195Version X2012:
91961. Relaxed typechecking to allow interchangeability between
9197strings, integers, and buffers.  These types are now converted by
9198the interpreter at runtime.
91992. Compiler reports time taken by each internal subsystem in the
9200debug         output file.
9201
9202
9203 ------------------------------------------
9204Summary of changes for this label: 12_14_00
9205
9206ASL Compiler:
9207
9208This is the first official release of the compiler. Since the
9209compiler requires elements of the Core Subsystem, this label
9210synchronizes everything.
9211
9212------------------------------------------
9213Summary of changes for this label: 12_08_00
9214
9215
9216Fixed a problem where named references within the ASL definition
9217of both OperationRegions and CreateXXXFields did not work
9218properly.  The symptom was an AE_AML_OPERAND_TYPE during
9219initialization of the region/field. This is similar (but not
9220related internally) to the problem that was fixed in the last
9221label.
9222
9223Implemented both 32-bit and 64-bit support for the BCD ASL
9224functions ToBCD and FromBCD.
9225
9226Updated all legal headers to include "2000" in the copyright
9227years.
9228
9229 ------------------------------------------
9230Summary of changes for this label: 12_01_00
9231
9232Fixed a problem where method invocations within the ASL definition
9233of both OperationRegions and CreateXXXFields did not work
9234properly.  The symptom was an AE_AML_OPERAND_TYPE during
9235initialization of the region/field:
9236
9237  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
9238[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
9239(0x3005)
9240
9241Fixed a problem where operators with more than one nested
9242subexpression would fail.  The symptoms were varied, by mostly
9243AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
9244problem that has gone unnoticed until now.
9245
9246  Subtract (Add (1,2), Multiply (3,4))
9247
9248Fixed a problem where AcpiGetHandle didn't quite get fixed in the
9249previous build (The prefix part of a relative path was handled
9250incorrectly).
9251
9252Fixed a problem where Operation Region initialization failed if
9253the operation region name was a "namepath" instead of a simple
9254"nameseg". Symptom was an AE_NO_OPERAND error.
9255
9256Fixed a problem where an assignment to a local variable via the
9257indirect RefOf mechanism only worked for the first such
9258assignment.  Subsequent assignments were ignored.
9259
9260 ------------------------------------------
9261Summary of changes for this label: 11_15_00
9262
9263ACPI 2.0 table support with backwards support for ACPI 1.0 and the
92640.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
9265the AML  interpreter does NOT have support for the new 2.0 ASL
9266grammar terms at this time.
9267
9268All ACPI hardware access is via the GAS structures in the ACPI 2.0
9269FADT.
9270
9271All physical memory addresses across all platforms are now 64 bits
9272wide. Logical address width remains dependent on the platform
9273(i.e., "void *").
9274
9275AcpiOsMapMemory interface changed to a 64-bit physical address.
9276
9277The AML interpreter integer size is now 64 bits, as per the ACPI
92782.0 specification.
9279
9280For backwards compatibility with ACPI 1.0, ACPI tables with a
9281revision number less than 2 use 32-bit integers only.
9282
9283Fixed a problem where the evaluation of OpRegion operands did not
9284always resolve them to numbers properly.
9285
9286------------------------------------------
9287Summary of changes for this label: 10_20_00
9288
9289Fix for CBN_._STA issue.  This fix will allow correct access to
9290CBN_ OpRegions when the _STA returns 0x8.
9291
9292Support to convert ACPI constants (Ones, Zeros, One) to actual
9293values before a package object is returned
9294
9295Fix for method call as predicate to if/while construct causing
9296incorrect if/while behavior
9297
9298Fix for Else block package lengths sometimes calculated wrong (if
9299block > 63 bytes)
9300
9301Fix for Processor object length field, was always zero
9302
9303Table load abort if FACP sanity check fails
9304
9305Fix for problem with Scope(name) if name already exists
9306
9307Warning emitted if a named object referenced cannot be found
9308(resolved) during method execution.
9309
9310
9311
9312
9313
9314------------------------------------------
9315Summary of changes for this label: 9_29_00
9316
9317New table initialization interfaces: AcpiInitializeSubsystem no
9318longer has any parameters AcpiFindRootPointer - Find the RSDP (if
9319necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
9320>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
9321AcpiLoadTables
9322
9323Note: These interface changes require changes to all existing OSDs
9324
9325The PCI_Config default address space handler is always installed
9326at the root namespace object.
9327
9328-------------------------------------------
9329Summary of changes for this label: 09_15_00
9330
9331The new initialization architecture is implemented.  New
9332interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
9333AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
9334
9335(Namespace is automatically loaded when a table is loaded)
9336
9337The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
933852 bytes to 32 bytes.  There is usually one of these for every
9339namespace object, so the memory savings is significant.
9340
9341Implemented just-in-time evaluation of the CreateField operators.
9342
9343Bug fixes for IA-64 support have been integrated.
9344
9345Additional code review comments have been implemented
9346
9347The so-called "third pass parse" has been replaced by a final walk
9348through the namespace to initialize all operation regions (address
9349spaces) and fields that have not yet been initialized during the
9350execution of the various _INI and REG methods.
9351
9352New file - namespace/nsinit.c
9353
9354-------------------------------------------
9355Summary of changes for this label: 09_01_00
9356
9357Namespace manager data structures have been reworked to change the
9358primary  object from a table to a single object.  This has
9359resulted in dynamic memory  savings of 3X within the namespace and
93602X overall in the ACPI CA subsystem.
9361
9362Fixed problem where the call to AcpiEvFindPciRootBuses was
9363inadvertently left  commented out.
9364
9365Reduced the warning count when generating the source with the GCC
9366compiler.
9367
9368Revision numbers added to each module header showing the
9369SourceSafe version of the file.  Please refer to this version
9370number when giving us feedback or comments on individual modules.
9371
9372The main object types within the subsystem have been renamed to
9373clarify their  purpose:
9374
9375ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
9376ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
9377ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
9378
9379NOTE: no changes to the initialization sequence are included in
9380this label.
9381
9382-------------------------------------------
9383Summary of changes for this label: 08_23_00
9384
9385Fixed problem where TerminateControlMethod was being called
9386multiple times per  method
9387
9388Fixed debugger problem where single stepping caused a semaphore to
9389be  oversignalled
9390
9391Improved performance through additional parse object caching -
9392added  ACPI_EXTENDED_OP type
9393
9394-------------------------------------------
9395Summary of changes for this label: 08_10_00
9396
9397Parser/Interpreter integration:  Eliminated the creation of
9398complete parse trees  for ACPI tables and control methods.
9399Instead, parse subtrees are created and  then deleted as soon as
9400they are processed (Either entered into the namespace or  executed
9401by the interpreter).  This reduces the use of dynamic kernel
9402memory  significantly. (about 10X)
9403
9404Exception codes broken into classes and renumbered.  Be sure to
9405recompile all  code that includes acexcep.h.  Hopefully we won't
9406have to renumber the codes  again now that they are split into
9407classes (environment, programmer, AML code,  ACPI table, and
9408internal).
9409
9410Fixed some additional alignment issues in the Resource Manager
9411subcomponent
9412
9413Implemented semaphore tracking in the AcpiExec utility, and fixed
9414several places  where mutexes/semaphores were being unlocked
9415without a corresponding lock  operation.  There are no known
9416semaphore or mutex "leaks" at this time.
9417
9418Fixed the case where an ASL Return operator is used to return an
9419unnamed  package.
9420
9421-------------------------------------------
9422Summary of changes for this label: 07_28_00
9423
9424Fixed a problem with the way addresses were calculated in
9425AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
9426manifested itself when a Field was  created with WordAccess or
9427DwordAccess, but the field unit defined within the  Field was less
9428
9429than a Word or Dword.
9430
9431Fixed a problem in AmlDumpOperands() module's loop to pull
9432operands off of the  operand stack to display information. The
9433problem manifested itself as a TLB  error on 64-bit systems when
9434accessing an operand stack with two or more  operands.
9435
9436Fixed a problem with the PCI configuration space handlers where
9437context was  getting confused between accesses. This required a
9438change to the generic address  space handler and address space
9439setup definitions. Handlers now get both a  global handler context
9440(this is the one passed in by the user when executing
9441AcpiInstallAddressSpaceHandler() and a specific region context
9442that is unique to  each region (For example, the _ADR, _SEG and
9443_BBN values associated with a  specific region). The generic
9444function definitions have changed to the  following:
9445
9446typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
9447UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
9448*HandlerContext, // This used to be void *Context void
9449*RegionContext); // This is an additional parameter
9450
9451typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
9452RegionHandle, UINT32 Function, void *HandlerContext,  void
9453**RegionContext); // This used to be **ReturnContext
9454
9455-------------------------------------------
9456Summary of changes for this label: 07_21_00
9457
9458Major file consolidation and rename.  All files within the
9459interpreter have been  renamed as well as most header files.  This
9460was done to prevent collisions with  existing files in the host
9461OSs -- filenames such as "config.h" and "global.h"  seem to be
9462quite common.  The VC project files have been updated.  All
9463makefiles  will require modification.
9464
9465The parser/interpreter integration continues in Phase 5 with the
9466implementation  of a complete 2-pass parse (the AML is parsed
9467twice) for each table;  This  avoids the construction of a huge
9468parse tree and therefore reduces the amount of  dynamic memory
9469required by the subsystem.  Greater use of the parse object cache
9470means that performance is unaffected.
9471
9472Many comments from the two code reviews have been rolled in.
9473
9474The 64-bit alignment support is complete.
9475
9476-------------------------------------------
9477Summary of changes for this label: 06_30_00
9478
9479With a nod and a tip of the hat to the technology of yesteryear,
9480we've added  support in the source code for 80 column output
9481devices.  The code is now mostly  constrained to 80 columns or
9482less to support environments and editors that 1)  cannot display
9483or print more than 80 characters on a single line, and 2) cannot
9484disable line wrapping.
9485
9486A major restructuring of the namespace data structure has been
9487completed.  The  result is 1) cleaner and more
9488understandable/maintainable code, and 2) a  significant reduction
9489in the dynamic memory requirement for each named ACPI  object
9490(almost half).
9491
9492-------------------------------------------
9493Summary of changes for this label: 06_23_00
9494
9495Linux support has been added.  In order to obtain approval to get
9496the ACPI CA  subsystem into the Linux kernel, we've had to make
9497quite a few changes to the  base subsystem that will affect all
9498users (all the changes are generic and OS- independent).  The
9499effects of these global changes have been somewhat far  reaching.
9500Files have been merged and/or renamed and interfaces have been
9501renamed.   The major changes are described below.
9502
9503Osd* interfaces renamed to AcpiOs* to eliminate namespace
9504pollution/confusion  within our target kernels.  All OSD
9505interfaces must be modified to match the new  naming convention.
9506
9507Files merged across the subsystem.  A number of the smaller source
9508and header  files have been merged to reduce the file count and
9509increase the density of the  existing files.  There are too many
9510to list here.  In general, makefiles that  call out individual
9511files will require rebuilding.
9512
9513Interpreter files renamed.  All interpreter files now have the
9514prefix am*  instead of ie* and is*.
9515
9516Header files renamed:  The acapi.h file is now acpixf.h.  The
9517acpiosd.h file is  now acpiosxf.h.  We are removing references to
9518the acronym "API" since it is  somewhat windowsy. The new name is
9519"external interface" or xface or xf in the  filenames.j
9520
9521
9522All manifest constants have been forced to upper case (some were
9523mixed case.)   Also, the string "ACPI_" has been prepended to many
9524(not all) of the constants,  typedefs, and structs.
9525
9526The globals "DebugLevel" and "DebugLayer" have been renamed
9527"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
9528
9529All other globals within the subsystem are now prefixed with
9530"AcpiGbl_" Internal procedures within the subsystem are now
9531prefixed with "Acpi" (with only  a few exceptions).  The original
9532two-letter abbreviation for the subcomponent  remains after "Acpi"
9533- for example, CmCallocate became AcpiCmCallocate.
9534
9535Added a source code translation/conversion utility.  Used to
9536generate the Linux  source code, it can be modified to generate
9537other types of source as well. Can  also be used to cleanup
9538existing source by removing extraneous spaces and blank  lines.
9539Found in tools/acpisrc/*
9540
9541OsdUnMapMemory was renamed to OsdUnmapMemory and then
9542AcpiOsUnmapMemory.  (UnMap  became Unmap).
9543
9544A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
9545When set to  one, this indicates that the caller wants to use the
9546
9547semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
9548both types.  However, implementers of this  call may want to use
9549different OS primitives depending on the type of semaphore
9550requested.  For example, some operating systems provide separate
9551
9552"mutex" and  "semaphore" interfaces - where the mutex interface is
9553much faster because it  doesn't have all the overhead of a full
9554semaphore implementation.
9555
9556Fixed a deadlock problem where a method that accesses the PCI
9557address space can  block forever if it is the first access to the
9558space.
9559
9560-------------------------------------------
9561Summary of changes for this label: 06_02_00
9562
9563Support for environments that cannot handle unaligned data
9564accesses (e.g.  firmware and OS environments devoid of alignment
9565handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
9566been added (via configurable macros) in  these three areas: -
9567Transfer of data from the raw AML byte stream is done via byte
9568moves instead of    word/dword/qword moves. - External objects are
9569aligned within the user buffer, including package   elements (sub-
9570objects). - Conversion of name strings to UINT32 Acpi Names is now
9571done byte-wise.
9572
9573The Store operator was modified to mimic Microsoft's
9574implementation when storing  to a Buffer Field.
9575
9576Added a check of the BM_STS bit before entering C3.
9577
9578The methods subdirectory has been obsoleted and removed.  A new
9579file, cmeval.c  subsumes the functionality.
9580
9581A 16-bit (DOS) version of AcpiExec has been developed.  The
9582makefile is under  the acpiexec directory.
9583