changes.txt revision 151937
1----------------------------------------
221 October 2005. Summary of changes for version 20051021:
3
41) ACPI CA Core Subsystem:
5
6Implemented support for the EM64T and other x86-64 processors.
7This essentially entails recognizing that these processors
8support non-aligned memory transfers. Previously, all 64-bit
9processors were assumed to lack hardware support for non-aligned
10transfers.
11
12Completed conversion of the Resource Manager to nearly full table-
13driven operation. Specifically, the resource conversion code
14(convert AML to internal format and the reverse) and the debug
15code to dump internal resource descriptors are fully table-
16driven, reducing code and data size and improving
17maintainability.
18
19The OSL interfaces for Acquire and Release Lock now use a 64-bit
20flag word on 64-bit processors instead of a fixed 32-bit word.
21(With assistance from Alexey Starikovskiy)
22
23Implemented support within the resource conversion code for the
24Type-Specific byte within the various ACPI 3.0 *WordSpace macros.
25
26Fixed some issues within the resource conversion code for the
27type-specific flags for both Memory and I/O address resource
28descriptors. For Memory, implemented support for the MTP and TTP
29flags. For I/O, split the TRS and TTP flags into two separate
30fields.
31
32Code and Data Size: The current and previous library sizes for
33the core subsystem are shown below. These are the code and data
34sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
3532-bit compiler. These values do not include any ACPI driver or
36OSPM code. The debug version of the code includes the debug
37output trace mechanism and has a much larger code and data size.
38Note that these values will vary depending on the efficiency of
39the compiler and the compiler options used during generation.
40
41  Previous Release:
42    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
43    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
44  Current Release:
45    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
46    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
47
48
492) iASL Compiler/Disassembler:
50
51Relaxed a compiler restriction that disallowed a ResourceIndex
52byte if the corresponding ResourceSource string was not also
53present in a resource descriptor declaration. This restriction
54caused problems with existing AML/ASL code that includes the
55Index byte without the string. When such AML was disassembled, it
56could not be compiled without modification. Further, the modified
57code created a resource template with a different size than the
58original, breaking code that used fixed offsets into the resource
59template buffer.
60
61Removed a recent feature of the disassembler to ignore a lone
62ResourceIndex byte. This byte is now emitted if present so that
63the exact AML can be reproduced when the disassembled code is
64recompiled.
65
66Improved comments and text alignment for the resource descriptor
67code emitted by the disassembler.
68
69Implemented disassembler support for the ACPI 3.0 AccessSize
70field within a Register() resource descriptor.
71
72----------------------------------------
7330 September 2005. Summary of changes for version 20050930:
74
751) ACPI CA Core Subsystem:
76
77Completed a major overhaul of the Resource Manager code -
78specifically, optimizations in the area of the AML/internal
79resource conversion code. The code has been optimized to simplify
80and eliminate duplicated code, CPU stack use has been decreased
81by optimizing function parameters and local variables, and naming
82conventions across the manager have been standardized for clarity
83and ease of maintenance (this includes function, parameter,
84variable, and struct/typedef names.) The update may force changes
85in some driver code, depending on how resources are handled by
86the host OS.
87
88All Resource Manager dispatch and information tables have been
89moved to a single location for clarity and ease of maintenance.
90One new file was created, named "rsinfo.c".
91
92The ACPI return macros (return_ACPI_STATUS, etc.) have been
93modified to guarantee that the argument is not evaluated twice,
94making them less prone to macro side-effects. However, since
95there exists the possibility of additional stack use if a
96particular compiler cannot optimize them (such as in the debug
97generation case), the original macros are optionally available.
98Note that some invocations of the return_VALUE macro may now
99cause size mismatch warnings; the return_UINT8 and return_UINT32
100macros are provided to eliminate these. (From Randy Dunlap)
101
102Implemented a new mechanism to enable debug tracing for
103individual control methods. A new external interface,
104AcpiDebugTrace, is provided to enable this mechanism. The intent
105is to allow the host OS to easily enable and disable tracing for
106problematic control methods. This interface can be easily exposed
107to a user or debugger interface if desired. See the file
108psxface.c for details.
109
110AcpiUtCallocate will now return a valid pointer if a length of
111zero is specified - a length of one is used and a warning is
112issued. This matches the behavior of AcpiUtAllocate.
113
114Code and Data Size: The current and previous library sizes for
115the core subsystem are shown below. These are the code and data
116sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
11732-bit compiler. These values do not include any ACPI driver or
118OSPM code. The debug version of the code includes the debug
119output trace mechanism and has a much larger code and data size.
120Note that these values will vary depending on the efficiency of
121the compiler and the compiler options used during generation.
122
123  Previous Release:
124    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
125    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
126  Current Release:
127    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
128    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
129
130
1312) iASL Compiler/Disassembler:
132
133A remark is issued if the effective compile-time length of a
134package or buffer is zero. Previously, this was a warning.
135
136----------------------------------------
13716 September 2005. Summary of changes for version 20050916:
138
1391) ACPI CA Core Subsystem:
140
141Fixed a problem within the Resource Manager where support for the
142Generic Register descriptor was not fully implemented. This
143descriptor is now fully recognized, parsed, disassembled, and
144displayed.
145
146Completely restructured the Resource Manager code to utilize
147table-driven dispatch and lookup, eliminating many of the large
148switch() statements. This reduces overall subsystem code size and
149code complexity. Affects the resource parsing and construction,
150disassembly, and debug dump output.
151
152Cleaned up and restructured the debug dump output for all
153resource descriptors. Improved readability of the output and
154reduced code size.
155
156Fixed a problem where changes to internal data structures caused
157the optional ACPI_MUTEX_DEBUG code to fail compilation if
158specified.
159
160Code and Data Size: The current and previous library sizes for
161the core subsystem are shown below. These are the code and data
162sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
16332-bit compiler. These values do not include any ACPI driver or
164OSPM code. The debug version of the code includes the debug
165output trace mechanism and has a much larger code and data size.
166Note that these values will vary depending on the efficiency of
167the compiler and the compiler options used during generation.
168
169  Previous Release:
170    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
171    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
172  Current Release:
173    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
174    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
175
176
1772) iASL Compiler/Disassembler:
178
179Updated the disassembler to automatically insert an
180EndDependentFn() macro into the ASL stream if this macro is
181missing in the original AML code, simplifying compilation of the
182resulting ASL module.
183
184Fixed a problem in the disassembler where a disassembled
185ResourceSource string (within a large resource descriptor) was
186not surrounded by quotes and not followed by a comma, causing
187errors when the resulting ASL module was compiled. Also, escape
188sequences within a ResourceSource string are now handled
189correctly (especially "\\")
190
191----------------------------------------
19202 September 2005. Summary of changes for version 20050902:
193
1941) ACPI CA Core Subsystem:
195
196Fixed a problem with the internal Owner ID allocation and
197deallocation mechanisms for control method execution and
198recursive method invocation. This should eliminate the
199OWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on
200some systems. Recursive method invocation depth is currently
201limited to 255. (Alexey Starikovskiy)
202
203Completely eliminated all vestiges of support for the "module-
204level executable code" until this support is fully implemented
205and debugged. This should eliminate the NO_RETURN_VALUE
206exceptions seen during table load on some systems that invoke
207this support.
208
209Fixed a problem within the resource manager code where the
210transaction flags for a 64-bit address descriptor were handled
211incorrectly in the type-specific flag byte.
212
213Consolidated duplicate code within the address descriptor
214resource manager code, reducing overall subsystem code size.
215
216Fixed a fault when using the AML debugger "disassemble" command
217to disassemble individual control methods.
218
219Removed references to the "release_current" directory within the
220Unix release package.
221
222Code and Data Size: The current and previous core subsystem
223library sizes are shown below. These are the code and data sizes
224for the acpica.lib produced by the Microsoft Visual C++ 6.0
225compiler. These values do not include any ACPI driver or OSPM
226code. The debug version of the code includes the debug output
227trace mechanism and has a much larger code and data size. Note
228that these values will vary depending on the efficiency of the
229compiler and the compiler options used during generation.
230
231  Previous Release:
232    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
233    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
234  Current Release:
235    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
236    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
237
238
2392) iASL Compiler/Disassembler:
240
241Implemented an error check for illegal duplicate values in the
242interrupt and dma lists for the following ASL macros: Dma(),
243Irq(), IrqNoFlags(), and Interrupt().
244
245Implemented error checking for the Irq() and IrqNoFlags() macros
246to detect too many values in the interrupt list (16 max) and
247invalid values in the list (range 0 - 15)
248
249The maximum length string literal within an ASL file is now
250restricted to 200 characters as per the ACPI specification.
251
252Fixed a fault when using the -ln option (generate namespace
253listing).
254
255Implemented an error check to determine if a DescriptorName
256within a resource descriptor has already been used within the
257current scope.
258
259----------------------------------------
26015 August 2005.  Summary of changes for version 20050815:
261
2621) ACPI CA Core Subsystem:
263
264Implemented a full bytewise compare to determine if a table load
265request is attempting to load a duplicate table. The compare is
266performed if the table signatures and table lengths match. This
267will allow different tables with the same OEM Table ID and
268revision to be loaded - probably against the ACPI specification,
269but discovered in the field nonetheless.
270
271Added the changes.txt logfile to each of the zipped release
272packages.
273
274Code and Data Size: Current and previous core subsystem library
275sizes are shown below. These are the code and data sizes for the
276acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
277these values do not include any ACPI driver or OSPM code. The
278debug version of the code includes the debug output trace
279mechanism and has a much larger code and data size. Note that
280these values will vary depending on the efficiency of the
281compiler and the compiler options used during generation.
282
283  Previous Release:
284    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
285    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
286  Current Release:
287    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
288    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
289
290
2912) iASL Compiler/Disassembler:
292
293Fixed a problem where incorrect AML code could be generated for
294Package objects if optimization is disabled (via the -oa switch).
295
296Fixed a problem with where incorrect AML code is generated for
297variable-length packages when the package length is not specified
298and the number of initializer values is greater than 255.
299
300----------------------------------------
30129 July 2005.  Summary of changes for version 20050729:
302
3031) ACPI CA Core Subsystem:
304
305Implemented support to ignore an attempt to install/load a
306particular ACPI table more than once. Apparently there exists
307BIOS code that repeatedly attempts to load the same SSDT upon
308certain events. With assistance from Venkatesh Pallipadi.
309
310Restructured the main interface to the AML parser in order to
311correctly handle all exceptional conditions. This will prevent
312leakage of the OwnerId resource and should eliminate the
313AE_OWNER_ID_LIMIT exceptions seen on some machines. With
314assistance from Alexey Starikovskiy.
315
316Support for "module level code" has been disabled in this version
317due to a number of issues that have appeared on various machines.
318The support can be enabled by defining
319ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When
320the issues are fully resolved, the code will be enabled by
321default again.
322
323Modified the internal functions for debug print support to define
324the FunctionName parameter as a (const char *) for compatibility
325with compiler built-in macros such as __FUNCTION__, etc.
326
327Linted the entire ACPICA source tree for both 32-bit and 64-bit.
328
329Implemented support to display an object count summary for the
330AML Debugger commands Object and Methods.
331
332Code and Data Size: Current and previous core subsystem library
333sizes are shown below. These are the code and data sizes for the
334acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
335these values do not include any ACPI driver or OSPM code. The
336debug version of the code includes the debug output trace
337mechanism and has a much larger code and data size. Note that
338these values will vary depending on the efficiency of the
339compiler and the compiler options used during generation.
340
341  Previous Release:
342    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
343    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
344  Current Release:
345    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
346    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
347
348
3492) iASL Compiler/Disassembler:
350
351Fixed a regression that appeared in the 20050708 version of the
352compiler where an error message was inadvertently emitted for
353invocations of the _OSI reserved control method.
354
355----------------------------------------
35608 July 2005.  Summary of changes for version 20050708:
357
3581) ACPI CA Core Subsystem:
359
360The use of the CPU stack in the debug version of the subsystem
361has been considerably reduced. Previously, a debug structure was
362declared in every function that used the debug macros. This
363structure has been removed in favor of declaring the individual
364elements as parameters to the debug functions. This reduces the
365cumulative stack use during nested execution of ACPI function
366calls at the cost of a small increase in the code size of the
367debug version of the subsystem. With assistance from Alexey
368Starikovskiy and Len Brown.
369
370Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-
371dependent headers to define a macro that will return the current
372function name at runtime (such as __FUNCTION__ or _func_, etc.)
373The function name is used by the debug trace output. If
374ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent
375header, the function name is saved on the CPU stack (one pointer
376per function.) This mechanism is used because apparently there
377exists no standard ANSI-C defined macro that that returns the
378function name.
379
380Redesigned and reimplemented the "Owner ID" mechanism used to
381track namespace objects created/deleted by ACPI tables and
382control method execution. A bitmap is now used to allocate and
383free the IDs, thus solving the wraparound problem present in the
384previous implementation. The size of the namespace node
385descriptor was reduced by 2 bytes as a result (Alexey
386Starikovskiy).
387
388Removed the UINT32_BIT and UINT16_BIT types that were used for
389the bitfield flag definitions within the headers for the
390predefined ACPI tables. These have been replaced by UINT8_BIT in
391order to increase the code portability of the subsystem. If the
392use of UINT8 remains a problem, we may be forced to eliminate
393bitfields entirely because of a lack of portability.
394
395Enhanced the performance of the AcpiUtUpdateObjectReference
396procedure. This is a frequently used function and this
397improvement increases the performance of the entire subsystem
398(Alexey Starikovskiy).
399
400Fixed several possible memory leaks and the inverse - premature
401object deletion (Alexey Starikovskiy).
402
403Code and Data Size: Current and previous core subsystem library
404sizes are shown below. These are the code and data sizes for the
405acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
406these values do not include any ACPI driver or OSPM code. The
407debug version of the code includes the debug output trace
408mechanism and has a much larger code and data size. Note that
409these values will vary depending on the efficiency of the
410compiler and the compiler options used during generation.
411
412  Previous Release:
413    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
414    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
415  Current Release:
416    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
417    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
418
419----------------------------------------
42024 June 2005.  Summary of changes for version 20050624:
421
4221) ACPI CA Core Subsystem:
423
424Modified the new OSL cache interfaces to use ACPI_CACHE_T as the
425type for the host-defined cache object. This allows the OSL
426implementation to define and type this object in any manner
427desired, simplifying the OSL implementation. For example,
428ACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be
429defined in the OS-specific header file for other operating
430systems as required.
431
432Changed the interface to AcpiOsAcquireObject to directly return
433the requested object as the function return (instead of
434ACPI_STATUS.) This change was made for performance reasons, since
435this is the purpose of the interface in the first place.
436AcpiOsAcquireObject is now similar to the AcpiOsAllocate
437interface.
438
439Implemented a new AML debugger command named Businfo. This
440command displays information about all devices that have an
441associate _PRT object. The _ADR, _HID, _UID, and _CID are
442displayed for these devices.
443
444Modified the initialization sequence in AcpiInitializeSubsystem
445to call the OSL interface AcpiOslInitialize first, before any
446local initialization. This change was required because the global
447initialization now calls OSL interfaces.
448
449Enhanced the Dump command to display the entire contents of
450Package objects (including all sub-objects and their values.)
451
452Restructured the code base to split some files because of size
453and/or because the code logically belonged in a separate file.
454New files are listed below. All makefiles and project files
455included in the ACPI CA release have been updated.
456    utilities/utcache.c           /* Local cache interfaces */
457    utilities/utmutex.c           /* Local mutex support */
458    utilities/utstate.c           /* State object support */
459    interpreter/parser/psloop.c   /* Main AML parse loop */
460
461Code and Data Size: Current and previous core subsystem library
462sizes are shown below. These are the code and data sizes for the
463acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
464these values do not include any ACPI driver or OSPM code. The
465debug version of the code includes the debug output trace
466mechanism and has a much larger code and data size. Note that
467these values will vary depending on the efficiency of the
468compiler and the compiler options used during generation.
469
470  Previous Release:
471    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
472    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
473  Current Release:
474    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
475    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
476
477
4782) iASL Compiler/Disassembler:
479
480Fixed a regression introduced in version 20050513 where the use
481of a Package object within a Case() statement caused a compile
482time exception. The original behavior has been restored (a
483Match() operator is emitted.)
484
485----------------------------------------
48617 June 2005.  Summary of changes for version 20050617:
487
4881) ACPI CA Core Subsystem:
489
490Moved the object cache operations into the OS interface layer
491(OSL) to allow the host OS to handle these operations if desired
492(for example, the Linux OSL will invoke the slab allocator). This
493support is optional; the compile time define ACPI_USE_LOCAL_CACHE
494may be used to utilize the original cache code in the ACPI CA
495core. The new OSL interfaces are shown below. See utalloc.c for
496an example implementation, and acpiosxf.h for the exact interface
497definitions. With assistance from Alexey Starikovskiy.
498    AcpiOsCreateCache
499    AcpiOsDeleteCache
500    AcpiOsPurgeCache
501    AcpiOsAcquireObject
502    AcpiOsReleaseObject
503
504Modified the interfaces to AcpiOsAcquireLock and
505AcpiOsReleaseLock to return and restore a flags parameter. This
506fits better with many OS lock models. Note: the current execution
507state (interrupt handler or not) is no longer passed to these
508interfaces. If necessary, the OSL must determine this state by
509itself, a simple and fast operation. With assistance from Alexey
510Starikovskiy.
511
512Fixed a problem in the ACPI table handling where a valid XSDT was
513assumed present if the revision of the RSDP was 2 or greater.
514According to the ACPI specification, the XSDT is optional in all
515cases, and the table manager therefore now checks for both an
516RSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is
517used. Some ACPI 2.0 compliant BIOSs contain only the RSDT.
518
519Fixed an interpreter problem with the Mid() operator in the case
520of an input string where the resulting output string is of zero
521length. It now correctly returns a valid, null terminated string
522object instead of a string object with a null pointer.
523
524Fixed a problem with the control method argument handling to
525allow a store to an Arg object that already contains an object of
526type Device. The Device object is now correctly overwritten.
527Previously, an error was returned.
528
529Enhanced the debugger Find command to emit object values in
530addition to the found object pathnames. The output format is the
531same as the dump namespace command.
532
533Enhanced the debugger Set command. It now has the ability to set
534the value of any Named integer object in the namespace
535(Previously, only method locals and args could be set.)
536
537Code and Data Size: Current and previous core subsystem library
538sizes are shown below. These are the code and data sizes for the
539acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
540these values do not include any ACPI driver or OSPM code. The
541debug version of the code includes the debug output trace
542mechanism and has a much larger code and data size. Note that
543these values will vary depending on the efficiency of the
544compiler and the compiler options used during generation.
545
546  Previous Release:
547    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
548    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
549  Current Release:
550    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
551    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
552
553
5542) iASL Compiler/Disassembler:
555
556Fixed a regression in the disassembler where if/else/while
557constructs were output incorrectly. This problem was introduced
558in the previous release (20050526). This problem also affected
559the single-step disassembly in the debugger.
560
561Fixed a problem where compiling the reserved _OSI method would
562randomly (but rarely) produce compile errors.
563
564Enhanced the disassembler to emit compilable code in the face of
565incorrect AML resource descriptors. If the optional
566ResourceSourceIndex is present, but the ResourceSource is not, do
567not emit the ResourceSourceIndex in the disassembly. Otherwise,
568the resulting code cannot be compiled without errors.
569
570----------------------------------------
57126 May 2005.  Summary of changes for version 20050526:
572
5731) ACPI CA Core Subsystem:
574
575Implemented support to execute Type 1 and Type 2 AML opcodes
576appearing at the module level (not within a control method.)
577These opcodes are executed exactly once at the time the table is
578loaded. This type of code was legal up until the release of ACPI
5792.0B (2002) and is now supported within ACPI CA in order to
580provide backwards compatibility with earlier BIOS
581implementations. This eliminates the "Encountered executable code
582at module level" warning that was previously generated upon
583detection of such code.
584
585Fixed a problem in the interpreter where an AE_NOT_FOUND
586exception could inadvertently be generated during the lookup of
587namespace objects in the second pass parse of ACPI tables and
588control methods. It appears that this problem could occur during
589the resolution of forward references to namespace objects.
590
591Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex
592function, corresponding to the same #ifdef in the
593AcpiUtAcquireMutex function. This allows the deadlock detection
594debug code to be compiled out in the normal case, improving mutex
595performance (and overall subsystem performance) considerably.
596
597Implemented a handful of miscellaneous fixes for possible memory
598leaks on error conditions and error handling control paths. These
599fixes were suggested by FreeBSD and the Coverity Prevent source
600code analysis tool.
601
602Added a check for a null RSDT pointer in AcpiGetFirmwareTable
603(tbxfroot.c) to prevent a fault in this error case.
604
605Code and Data Size: Current and previous core subsystem library
606sizes are shown below. These are the code and data sizes for the
607acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
608these values do not include any ACPI driver or OSPM code. The
609debug version of the code includes the debug output trace
610mechanism and has a much larger code and data size. Note that
611these values will vary depending on the efficiency of the
612compiler and the compiler options used during generation.
613
614  Previous Release:
615    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
616    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
617  Current Release:
618    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
619    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
620
621
6222) iASL Compiler/Disassembler:
623
624Implemented support to allow Type 1 and Type 2 ASL operators to
625appear at the module level (not within a control method.) These
626operators will be executed once at the time the table is loaded.
627This type of code was legal up until the release of ACPI 2.0B
628(2002) and is now supported by the iASL compiler in order to
629provide backwards compatibility with earlier BIOS ASL code.
630
631The ACPI integer width (specified via the table revision ID or
632the -r override, 32 or 64 bits) is now used internally during
633compile-time constant folding to ensure that constants are
634truncated to 32 bits if necessary. Previously, the revision ID
635value was only emitted in the AML table header.
636
637An error message is now generated for the Mutex and Method
638operators if the SyncLevel parameter is outside the legal range
639of 0 through 15.
640
641Fixed a problem with the Method operator ParameterTypes list
642handling (ACPI 3.0). Previously, more than 2 types or 2 arguments
643generated a syntax error.  The actual underlying implementation
644of method argument typechecking is still under development,
645however.
646
647----------------------------------------
64813 May 2005.  Summary of changes for version 20050513:
649
6501) ACPI CA Core Subsystem:
651
652Implemented support for PCI Express root bridges -- added support
653for device PNP0A08 in the root bridge search within
654AcpiEvPciConfigRegionSetup.
655
656The interpreter now automatically truncates incoming 64-bit
657constants to 32 bits if currently executing out of a 32-bit ACPI
658table (Revision < 2). This also affects the iASL compiler
659constant folding. (Note: as per below, the iASL compiler no
660longer allows 64-bit constants within 32-bit tables.)
661
662Fixed a problem where string and buffer objects with "static"
663pointers (pointers to initialization data within an ACPI table)
664were not handled consistently. The internal object copy operation
665now always copies the data to a newly allocated buffer,
666regardless of whether the source object is static or not.
667
668Fixed a problem with the FromBCD operator where an implicit
669result conversion was improperly performed while storing the
670result to the target operand. Since this is an "explicit
671conversion" operator, the implicit conversion should never be
672performed on the output.
673
674Fixed a problem with the CopyObject operator where a copy to an
675existing named object did not always completely overwrite the
676existing object stored at name. Specifically, a buffer-to-buffer
677copy did not delete the existing buffer.
678
679Replaced "InterruptLevel" with "InterruptNumber" in all GPE
680interfaces and structs for consistency.
681
682Code and Data Size: Current and previous core subsystem library
683sizes are shown below. These are the code and data sizes for the
684acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
685these values do not include any ACPI driver or OSPM code. The
686debug version of the code includes the debug output trace
687mechanism and has a much larger code and data size. Note that
688these values will vary depending on the efficiency of the
689compiler and the compiler options used during generation.
690
691  Previous Release:
692    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
693    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
694  Current Release: (Same sizes)
695    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
696    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
697
698
6992) iASL Compiler/Disassembler:
700
701The compiler now emits a warning if an attempt is made to
702generate a 64-bit integer constant from within a 32-bit ACPI
703table (Revision < 2). The integer is truncated to 32 bits.
704
705Fixed a problem with large package objects: if the static length
706of the package is greater than 255, the "variable length package"
707opcode is emitted. Previously, this caused an error. This
708requires an update to the ACPI spec, since it currently
709(incorrectly) states that packages larger than 255 elements are
710not allowed.
711
712The disassembler now correctly handles variable length packages
713and packages larger than 255 elements.
714
715----------------------------------------
71608 April 2005.  Summary of changes for version 20050408:
717
7181) ACPI CA Core Subsystem:
719
720Fixed three cases in the interpreter where an "index" argument to
721an ASL function was still (internally) 32 bits instead of the
722required 64 bits. This was the Index argument to the Index, Mid,
723and Match operators.
724
725The "strupr" function is now permanently local (AcpiUtStrupr),
726since this is not a POSIX-defined function and not present in
727most kernel-level C libraries. All references to the C library
728strupr function have been removed from the headers.
729
730Completed the deployment of static functions/prototypes. All
731prototypes with the static attribute have been moved from the
732headers to the owning C file.
733
734Implemented an extract option (-e) for the AcpiBin utility (AML
735binary utility). This option allows the utility to extract
736individual ACPI tables from the output of AcpiDmp. It provides
737the same functionality of the acpixtract.pl perl script without
738the worry of setting the correct perl options. AcpiBin runs on
739Windows and has not yet been generated/validated in the
740Linux/Unix environment (but should be soon).
741
742Updated and fixed the table dump option for AcpiBin (-d). This
743option converts a single ACPI table to a hex/ascii file, similar
744to the output of AcpiDmp.
745
746Code and Data Size: Current and previous core subsystem library
747sizes are shown below. These are the code and data sizes for the
748acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
749these values do not include any ACPI driver or OSPM code. The
750debug version of the code includes the debug output trace
751mechanism and has a much larger code and data size. Note that
752these values will vary depending on the efficiency of the
753compiler and the compiler options used during generation.
754
755  Previous Release:
756    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
757    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
758  Current Release:
759    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
760    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
761
762
7632) iASL Compiler/Disassembler:
764
765Disassembler fix: Added a check to ensure that the table length
766found in the ACPI table header within the input file is not
767longer than the actual input file size. This indicates some kind
768of file or table corruption.
769
770----------------------------------------
77129 March 2005.  Summary of changes for version 20050329:
772
7731) ACPI CA Core Subsystem:
774
775An error is now generated if an attempt is made to create a
776Buffer Field of length zero (A CreateField with a length operand
777of zero.)
778
779The interpreter now issues a warning whenever executable code at
780the module level is detected during ACPI table load. This will
781give some idea of the prevalence of this type of code.
782
783Implemented support for references to named objects (other than
784control methods) within package objects.
785
786Enhanced package object output for the debug object. Package
787objects are now completely dumped, showing all elements.
788
789Enhanced miscellaneous object output for the debug object. Any
790object can now be written to the debug object (for example, a
791device object can be written, and the type of the object will be
792displayed.)
793
794The "static" qualifier has been added to all local functions
795across both the core subsystem and the iASL compiler.
796
797The number of "long" lines (> 80 chars) within the source has
798been significantly reduced, by about 1/3.
799
800Cleaned up all header files to ensure that all CA/iASL functions
801are prototyped (even static functions) and the formatting is
802consistent.
803
804Two new header files have been added, acopcode.h and acnames.h.
805
806Removed several obsolete functions that were no longer used.
807
808Code and Data Size: Current and previous core subsystem library
809sizes are shown below. These are the code and data sizes for the
810acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
811these values do not include any ACPI driver or OSPM code. The
812debug version of the code includes the debug output trace
813mechanism and has a much larger code and data size. Note that
814these values will vary depending on the efficiency of the
815compiler and the compiler options used during generation.
816
817  Previous Release:
818    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
819    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
820  Current Release:
821    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
822    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
823
824
8252) iASL Compiler/Disassembler:
826
827Fixed a problem with the resource descriptor generation/support.
828For the ResourceSourceIndex and the ResourceSource fields, both
829must be present, or both must be not present - can't have one
830without the other.
831
832The compiler now returns non-zero from the main procedure if any
833errors have occurred during the compilation.
834
835
836----------------------------------------
83709 March 2005.  Summary of changes for version 20050309:
838
8391) ACPI CA Core Subsystem:
840
841The string-to-buffer implicit conversion code has been modified
842again after a change to the ACPI specification.  In order to
843match the behavior of the other major ACPI implementation, the
844target buffer is no longer truncated if the source string is
845smaller than an existing target buffer. This change requires an
846update to the ACPI spec, and should eliminate the recent
847AE_AML_BUFFER_LIMIT issues.
848
849The "implicit return" support was rewritten to a new algorithm
850that solves the general case. Rather than attempt to determine
851when a method is about to exit, the result of every ASL operator
852is saved momentarily until the very next ASL operator is
853executed. Therefore, no matter how the method exits, there will
854always be a saved implicit return value. This feature is only
855enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
856eliminate AE_AML_NO_RETURN_VALUE errors when enabled.
857
858Implemented implicit conversion support for the predicate
859(operand) of the If, Else, and While operators. String and Buffer
860arguments are automatically converted to Integers.
861
862Changed the string-to-integer conversion behavior to match the
863new ACPI errata: "If no integer object exists, a new integer is
864created. The ASCII string is interpreted as a hexadecimal
865constant. Each string character is interpreted as a hexadecimal
866value (`0'-`9', `A'-`F', `a', `f'), starting with the first
867character as the most significant digit, and ending with the
868first non-hexadecimal character or end-of-string." This means
869that the first non-hex character terminates the conversion and
870this is the code that was changed.
871
872Fixed a problem where the ObjectType operator would fail (fault)
873when used on an Index of a Package which pointed to a null
874package element. The operator now properly returns zero
875(Uninitialized) in this case.
876
877Fixed a problem where the While operator used excessive memory by
878not properly popping the result stack during execution. There was
879no memory leak after execution, however. (Code provided by Valery
880Podrezov.)
881
882Fixed a problem where references to control methods within
883Package objects caused the method to be invoked, instead of
884producing a reference object pointing to the method.
885
886Restructured and simplified the pswalk.c module
887(AcpiPsDeleteParseTree) to improve performance and reduce code
888size. (Code provided by Alexey Starikovskiy.)
889
890Code and Data Size: Current and previous core subsystem library
891sizes are shown below. These are the code and data sizes for the
892acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
893these values do not include any ACPI driver or OSPM code. The
894debug version of the code includes the debug output trace
895mechanism and has a much larger code and data size. Note that
896these values will vary depending on the efficiency of the
897compiler and the compiler options used during generation.
898
899  Previous Release:
900    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
901    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
902  Current Release:
903    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
904    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
905
906
9072) iASL Compiler/Disassembler:
908
909Fixed a problem with the Return operator with no arguments. Since
910the AML grammar for the byte encoding requires an operand for the
911Return opcode, the compiler now emits a Return(Zero) for this
912case.  An ACPI specification update has been written for this
913case.
914
915For tables other than the DSDT, namepath optimization is
916automatically disabled. This is because SSDTs can be loaded
917anywhere in the namespace, the compiler has no knowledge of
918where, and thus cannot optimize namepaths.
919
920Added "ProcessorObj" to the ObjectTypeKeyword list. This object
921type was inadvertently omitted from the ACPI specification, and
922will require an update to the spec.
923
924The source file scan for ASCII characters is now optional (-a).
925This change was made because some vendors place non-ascii
926characters within comments. However, the scan is simply a brute-
927force byte compare to ensure all characters in the file are in
928the range 0x00 to 0x7F.
929
930Fixed a problem with the CondRefOf operator where the compiler
931was inappropriately checking for the existence of the target.
932Since the point of the operator is to check for the existence of
933the target at run-time, the compiler no longer checks for the
934target existence.
935
936Fixed a problem where errors generated from the internal AML
937interpreter during constant folding were not handled properly,
938causing a fault.
939
940Fixed a problem with overly aggressive range checking for the
941Stall operator. The valid range (max 255) is now only checked if
942the operand is of type Integer. All other operand types cannot be
943statically checked.
944
945Fixed a problem where control method references within the RefOf,
946DeRefOf, and ObjectType operators were not treated properly. They
947are now treated as actual references, not method invocations.
948
949Fixed and enhanced the "list namespace" option (-ln). This option
950was broken a number of releases ago.
951
952Improved error handling for the Field, IndexField, and BankField
953operators. The compiler now cleanly reports and recovers from
954errors in the field component (FieldUnit) list.
955
956Fixed a disassembler problem where the optional
957ResourceDescriptor fields TRS and TTP were not always handled
958correctly.
959
960Disassembler - Comments in output now use "//" instead of "/*"
961
962----------------------------------------
96328 February 2005.  Summary of changes for version 20050228:
964
9651) ACPI CA Core Subsystem:
966
967Fixed a problem where the result of an Index() operator (an
968object reference) must increment the reference count on the
969target object for the life of the object reference.
970
971Implemented AML Interpreter and Debugger support for the new ACPI
9723.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace,
973and WordSpace resource descriptors.
974
975Implemented support in the _OSI method for the ACPI 3.0 "Extended
976Address Space Descriptor" string, indicating interpreter support
977for the descriptors above.
978
979Implemented header support for the new ACPI 3.0 FADT flag bits.
980
981Implemented header support for the new ACPI 3.0 PCI Express bits
982for the PM1 status/enable registers.
983
984Updated header support for the MADT processor local Apic struct
985and MADT platform interrupt source struct for new ACPI 3.0
986fields.
987
988Implemented header support for the SRAT and SLIT ACPI tables.
989
990Implemented the -s switch in AcpiExec to enable the
991"InterpeterSlack" flag at runtime.
992
993Code and Data Size: Current and previous core subsystem library
994sizes are shown below. These are the code and data sizes for the
995acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
996these values do not include any ACPI driver or OSPM code. The
997debug version of the code includes the debug output trace
998mechanism and has a much larger code and data size. Note that
999these values will vary depending on the efficiency of the
1000compiler and the compiler options used during generation.
1001
1002  Previous Release:
1003    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
1004    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
1005  Current Release:
1006    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
1007    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
1008
1009
10102) iASL Compiler/Disassembler:
1011
1012Fixed a problem with the internal 64-bit String-to-integer
1013conversion with strings less than two characters long.
1014
1015Fixed a problem with constant folding where the result of the
1016Index() operator can not be considered a constant. This means
1017that Index() cannot be a type3 opcode and this will require an
1018update to the ACPI specification.
1019
1020Disassembler: Implemented support for the TTP, MTP, and TRS
1021resource descriptor fields. These fields were inadvertently
1022ignored and not output in the disassembly of the resource
1023descriptor.
1024
1025
1026 ----------------------------------------
102711 February 2005.  Summary of changes for version 20050211:
1028
10291) ACPI CA Core Subsystem:
1030
1031Implemented ACPI 3.0 support for implicit conversion within the
1032Match() operator. MatchObjects can now be of type integer,
1033buffer, or string instead of just type integer.  Package elements
1034are implicitly converted to the type of the MatchObject. This
1035change aligns the behavior of Match() with the behavior of the
1036other logical operators (LLess(), etc.) It also requires an
1037errata change to the ACPI specification as this support was
1038intended for ACPI 3.0, but was inadvertently omitted.
1039
1040Fixed a problem with the internal implicit "to buffer"
1041conversion. Strings that are converted to buffers will cause
1042buffer truncation if the string is smaller than the target
1043buffer. Integers that are converted to buffers will not cause
1044buffer truncation, only zero extension (both as per the ACPI
1045spec.) The problem was introduced when code was added to truncate
1046the buffer, but this should not be performed in all cases, only
1047the string case.
1048
1049Fixed a problem with the Buffer and Package operators where the
1050interpreter would get confused if two such operators were used as
1051operands to an ASL operator (such as
1052LLess(Buffer(1){0},Buffer(1){1}). The internal result stack was
1053not being popped after the execution of these operators,
1054resulting in an AE_NO_RETURN_VALUE exception.
1055
1056Fixed a problem with constructs of the form
1057Store(Index(...),...). The reference object returned from Index
1058was inadvertently resolved to an actual value. This problem was
1059introduced in version 20050114 when the behavior of Store() was
1060modified to restrict the object types that can be used as the
1061source operand (to match the ACPI specification.)
1062
1063Reduced excessive stack use within the AcpiGetObjectInfo
1064procedure.
1065
1066Added a fix to aclinux.h to allow generation of AcpiExec on
1067Linux.
1068
1069Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS
1070struct.
1071
1072Code and Data Size: Current and previous core subsystem library
1073sizes are shown below. These are the code and data sizes for the
1074acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1075these values do not include any ACPI driver or OSPM code. The
1076debug version of the code includes the debug output trace
1077mechanism and has a much larger code and data size. Note that
1078these values will vary depending on the efficiency of the
1079compiler and the compiler options used during generation.
1080
1081  Previous Release:
1082    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
1083    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
1084  Current Release:
1085    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
1086    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
1087
1088
10892) iASL Compiler/Disassembler:
1090
1091Fixed a code generation problem in the constant folding
1092optimization code where incorrect code was generated if a
1093constant was reduced to a buffer object (i.e., a reduced type 5
1094opcode.)
1095
1096Fixed a typechecking problem for the ToBuffer operator. Caused by
1097an incorrect return type in the internal opcode information
1098table.
1099
1100----------------------------------------
110125 January 2005.  Summary of changes for version 20050125:
1102
11031) ACPI CA Core Subsystem:
1104
1105Fixed a recently introduced problem with the Global Lock where
1106the underlying semaphore was not created.  This problem was
1107introduced in version 20050114, and caused an AE_AML_NO_OPERAND
1108exception during an Acquire() operation on _GL.
1109
1110The local object cache is now optional, and is disabled by
1111default. Both AcpiExec and the iASL compiler enable the cache
1112because they run in user mode and this enhances their
1113performance. #define ACPI_ENABLE_OBJECT_CACHE to enable the local
1114cache.
1115
1116Fixed an issue in the internal function AcpiUtEvaluateObject
1117concerning the optional "implicit return" support where an error
1118was returned if no return object was expected, but one was
1119implicitly returned. AE_OK is now returned in this case and the
1120implicitly returned object is deleted. AcpiUtEvaluateObject is
1121only occasionally used, and only to execute reserved methods such
1122as _STA and _INI where the return type is known up front.
1123
1124Fixed a few issues with the internal convert-to-integer code. It
1125now returns an error if an attempt is made to convert a null
1126string, a string of only blanks/tabs, or a zero-length buffer.
1127This affects both implicit conversion and explicit conversion via
1128the ToInteger() operator.
1129
1130The internal debug code in AcpiUtAcquireMutex has been commented
1131out. It is not needed for normal operation and should increase
1132the performance of the entire subsystem. The code remains in case
1133it is needed for debug purposes again.
1134
1135The AcpiExec source and makefile are included in the Unix/Linux
1136package for the first time.
1137
1138Code and Data Size: Current and previous core subsystem library
1139sizes are shown below. These are the code and data sizes for the
1140acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1141these values do not include any ACPI driver or OSPM code. The
1142debug version of the code includes the debug output trace
1143mechanism and has a much larger code and data size. Note that
1144these values will vary depending on the efficiency of the
1145compiler and the compiler options used during generation.
1146
1147  Previous Release:
1148    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
1149    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
1150  Current Release:
1151    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
1152    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
1153
11542) iASL Compiler/Disassembler:
1155
1156Switch/Case support: A warning is now issued if the type of the
1157Switch value cannot be determined at compile time. For example,
1158Switch(Arg0) will generate the warning, and the type is assumed
1159to be an integer. As per the ACPI spec, use a construct such as
1160Switch(ToInteger(Arg0)) to eliminate the warning.
1161
1162Switch/Case support: Implemented support for buffer and string
1163objects as the switch value.  This is an ACPI 3.0 feature, now
1164that LEqual supports buffers and strings.
1165
1166Switch/Case support: The emitted code for the LEqual()
1167comparisons now uses the switch value as the first operand, not
1168the second. The case value is now the second operand, and this
1169allows the case value to be implicitly converted to the type of
1170the switch value, not the other way around.
1171
1172Switch/Case support: Temporary variables are now emitted
1173immediately within the control method, not at the global level.
1174This means that there are now 36 temps available per-method, not
117536 temps per-module as was the case with the earlier
1176implementation (_T_0 through _T_9 and _T_A through _T_Z.)
1177
1178----------------------------------------
117914 January 2005.  Summary of changes for version 20050114:
1180
1181Added 2005 copyright to all module headers.  This affects every
1182module in the core subsystem, iASL compiler, and the utilities.
1183
11841) ACPI CA Core Subsystem:
1185
1186Fixed an issue with the String-to-Buffer conversion code where
1187the string null terminator was not included in the buffer after
1188conversion, but there is existing ASL that assumes the string
1189null terminator is included. This is the root of the
1190ACPI_AML_BUFFER_LIMIT regression. This problem was introduced in
1191the previous version when the code was updated to correctly set
1192the converted buffer size as per the ACPI specification. The ACPI
1193spec is ambiguous and will be updated to specify that the null
1194terminator must be included in the converted buffer. This also
1195affects the ToBuffer() ASL operator.
1196
1197Fixed a problem with the Mid() ASL/AML operator where it did not
1198work correctly on Buffer objects. Newly created sub-buffers were
1199not being marked as initialized.
1200
1201Fixed a problem in AcpiTbFindTable where incorrect string
1202compares were performed on the OemId and OemTableId table header
1203fields.  These fields are not null terminated, so strncmp is now
1204used instead of strcmp.
1205
1206Implemented a restriction on the Store() ASL/AML operator to
1207align the behavior with the ACPI specification.  Previously, any
1208object could be used as the source operand.  Now, the only
1209objects that may be used are Integers, Buffers, Strings,
1210Packages, Object References, and DDB Handles.  If necessary, the
1211original behavior can be restored by enabling the
1212EnableInterpreterSlack flag.
1213
1214Enhanced the optional "implicit return" support to allow an
1215implicit return value from methods that are invoked externally
1216via the AcpiEvaluateObject interface.  This enables implicit
1217returns from the _STA and _INI methods, for example.
1218
1219Changed the Revision() ASL/AML operator to return the current
1220version of the AML interpreter, in the YYYYMMDD format.
1221Previously, it incorrectly returned the supported ACPI version
1222(This is the function of the _REV method).
1223
1224Updated the _REV predefined method to return the currently
1225supported version of ACPI, now 3.
1226
1227Implemented batch mode option for the AcpiExec utility (-b).
1228
1229Code and Data Size: Current and previous core subsystem library
1230sizes are shown below. These are the code and data sizes for the
1231acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1232these values do not include any ACPI driver or OSPM code. The
1233debug version of the code includes the debug output trace
1234mechanism and has a much larger code and data size. Note that
1235these values will vary depending on the efficiency of the
1236compiler and the compiler options used during generation.
1237
1238  Previous Release:
1239    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
1240    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
1241  Current Release:
1242    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
1243    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
1244
1245----------------------------------------
124610 December 2004.  Summary of changes for version 20041210:
1247
1248ACPI 3.0 support is nearing completion in both the iASL compiler
1249and the ACPI CA core subsystem.
1250
12511) ACPI CA Core Subsystem:
1252
1253Fixed a problem in the ToDecimalString operator where the
1254resulting string length was incorrectly calculated. The length is
1255now calculated exactly, eliminating incorrect AE_STRING_LIMIT
1256exceptions.
1257
1258Fixed a problem in the ToHexString operator to allow a maximum
1259200 character string to be produced.
1260
1261Fixed a problem in the internal string-to-buffer and buffer-to-
1262buffer copy routine where the length of the resulting buffer was
1263not truncated to the new size (if the target buffer already
1264existed).
1265
1266Code and Data Size: Current and previous core subsystem library
1267sizes are shown below. These are the code and data sizes for the
1268acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1269these values do not include any ACPI driver or OSPM code. The
1270debug version of the code includes the debug output trace
1271mechanism and has a much larger code and data size. Note that
1272these values will vary depending on the efficiency of the
1273compiler and the compiler options used during generation.
1274
1275  Previous Release:
1276    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
1277    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
1278  Current Release:
1279    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
1280    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
1281
1282
12832) iASL Compiler/Disassembler:
1284
1285Implemented the new ACPI 3.0 resource template macros -
1286DWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace,
1287QWordSpace, and WordSpace. Includes support in the disassembler.
1288
1289Implemented support for the new (ACPI 3.0) parameter to the
1290Register macro, AccessSize.
1291
1292Fixed a problem where the _HE resource name for the Interrupt
1293macro was referencing bit 0 instead of bit 1.
1294
1295Implemented check for maximum 255 interrupts in the Interrupt
1296macro.
1297
1298Fixed a problem with the predefined resource descriptor names
1299where incorrect AML code was generated if the offset within the
1300resource buffer was 0 or 1.  The optimizer shortened the AML code
1301to a single byte opcode but did not update the surrounding
1302package lengths.
1303
1304Changes to the Dma macro:  All channels within the channel list
1305must be in the range 0-7.  Maximum 8 channels can be specified.
1306BusMaster operand is optional (default is BusMaster).
1307
1308Implemented check for maximum 7 data bytes for the VendorShort
1309macro.
1310
1311The ReadWrite parameter is now optional for the Memory32 and
1312similar macros.
1313
1314----------------------------------------
131503 December 2004.  Summary of changes for version 20041203:
1316
13171) ACPI CA Core Subsystem:
1318
1319The low-level field insertion/extraction code (exfldio) has been
1320completely rewritten to eliminate unnecessary complexity, bugs,
1321and boundary conditions.
1322
1323Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
1324ToDecimalString operators where the input operand could be
1325inadvertently deleted if no conversion was necessary (e.g., if
1326the input to ToInteger was an Integer object.)
1327
1328Fixed a problem with the ToDecimalString and ToHexString where an
1329incorrect exception code was returned if the resulting string
1330would be > 200 chars.  AE_STRING_LIMIT is now returned.
1331
1332Fixed a problem with the Concatenate operator where AE_OK was
1333always returned, even if the operation failed.
1334
1335Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow >
1336128 semaphores to be allocated.
1337
1338Code and Data Size: Current and previous core subsystem library
1339sizes are shown below. These are the code and data sizes for the
1340acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1341these values do not include any ACPI driver or OSPM code. The
1342debug version of the code includes the debug output trace
1343mechanism and has a much larger code and data size. Note that
1344these values will vary depending on the efficiency of the
1345compiler and the compiler options used during generation.
1346
1347  Previous Release:
1348    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
1349    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
1350  Current Release:
1351    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
1352    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
1353
1354
13552) iASL Compiler/Disassembler:
1356
1357Fixed typechecking for the ObjectType and SizeOf operators.
1358Problem was recently introduced in 20041119.
1359
1360Fixed a problem with the ToUUID macro where the upper nybble of
1361each buffer byte was inadvertently set to zero.
1362
1363----------------------------------------
136419 November 2004.  Summary of changes for version 20041119:
1365
13661) ACPI CA Core Subsystem:
1367
1368Fixed a problem in the internal ConvertToInteger routine where
1369new integers were not truncated to 32 bits for 32-bit ACPI
1370tables. This routine converts buffers and strings to integers.
1371
1372Implemented support to store a value to an Index() on a String
1373object. This is an ACPI 2.0 feature that had not yet been
1374implemented.
1375
1376Implemented new behavior for storing objects to individual
1377package elements (via the Index() operator). The previous
1378behavior was to invoke the implicit conversion rules if an object
1379was already present at the index.  The new behavior is to simply
1380delete any existing object and directly store the new object.
1381Although the ACPI specification seems unclear on this subject,
1382other ACPI implementations behave in this manner.  (This is the
1383root of the AE_BAD_HEX_CONSTANT issue.)
1384
1385Modified the RSDP memory scan mechanism to support the extended
1386checksum for ACPI 2.0 (and above) RSDPs. Note that the search
1387continues until a valid RSDP signature is found with a valid
1388checksum.
1389
1390Code and Data Size: Current and previous core subsystem library
1391sizes are shown below. These are the code and data sizes for the
1392acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1393these values do not include any ACPI driver or OSPM code. The
1394debug version of the code includes the debug output trace
1395mechanism and has a much larger code and data size. Note that
1396these values will vary depending on the efficiency of the
1397compiler and the compiler options used during generation.
1398
1399  Previous Release:
1400    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
1401    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
1402  Current Release:
1403    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
1404    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
1405
1406
14072) iASL Compiler/Disassembler:
1408
1409Fixed a missing semicolon in the aslcompiler.y file.
1410
1411----------------------------------------
141205 November 2004.  Summary of changes for version 20041105:
1413
14141) ACPI CA Core Subsystem:
1415
1416Implemented support for FADT revision 2.  This was an interim
1417table (between ACPI 1.0 and ACPI 2.0) that adds support for the
1418FADT reset register.
1419
1420Implemented optional support to allow uninitialized LocalX and
1421ArgX variables in a control method.  The variables are
1422initialized to an Integer object with a value of zero.  This
1423support is enabled by setting the AcpiGbl_EnableInterpreterSlack
1424flag to TRUE.
1425
1426Implemented support for Integer objects for the SizeOf operator.
1427Either 4 or 8 is returned, depending on the current integer size
1428(32-bit or 64-bit, depending on the parent table revision).
1429
1430Fixed a problem in the implementation of the SizeOf and
1431ObjectType operators where the operand was resolved to a value
1432too early, causing incorrect return values for some objects.
1433
1434Fixed some possible memory leaks during exceptional conditions.
1435
1436Code and Data Size: Current and previous core subsystem library
1437sizes are shown below. These are the code and data sizes for the
1438acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1439these values do not include any ACPI driver or OSPM code. The
1440debug version of the code includes the debug output trace
1441mechanism and has a much larger code and data size. Note that
1442these values will vary depending on the efficiency of the
1443compiler and the compiler options used during generation.
1444
1445  Previous Release:
1446    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
1447    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
1448  Current Release:
1449    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
1450    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
1451
1452
14532) iASL Compiler/Disassembler:
1454
1455Implemented support for all ACPI 3.0 reserved names and methods.
1456
1457Implemented all ACPI 3.0 grammar elements in the front-end,
1458including support for semicolons.
1459
1460Implemented the ACPI 3.0 Function() and ToUUID() macros
1461
1462Fixed a problem in the disassembler where a Scope() operator
1463would not be emitted properly if the target of the scope was in
1464another table.
1465
1466----------------------------------------
146715 October 2004.  Summary of changes for version 20041015:
1468
1469Note:  ACPI CA is currently undergoing an in-depth and complete
1470formal evaluation to test/verify the following areas. Other
1471suggestions are welcome. This will result in an increase in the
1472frequency of releases and the number of bug fixes in the next few
1473months.
1474  - Functional tests for all ASL/AML operators
1475  - All implicit/explicit type conversions
1476  - Bit fields and operation regions
1477  - 64-bit math support and 32-bit-only "truncated" math support
1478  - Exceptional conditions, both compiler and interpreter
1479  - Dynamic object deletion and memory leaks
1480  - ACPI 3.0 support when implemented
1481  - External interfaces to the ACPI subsystem
1482
1483
14841) ACPI CA Core Subsystem:
1485
1486Fixed two alignment issues on 64-bit platforms - within debug
1487statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed
1488references to the Address field within the non-aligned ACPI
1489generic address structure.
1490
1491Fixed a problem in the Increment and Decrement operators where
1492incorrect operand resolution could result in the inadvertent
1493modification of the original integer when the integer is passed
1494into another method as an argument and the arg is then
1495incremented/decremented.
1496
1497Fixed a problem in the FromBCD operator where the upper 32-bits
1498of a 64-bit BCD number were truncated during conversion.
1499
1500Fixed a problem in the ToDecimal operator where the length of the
1501resulting string could be set incorrectly too long if the input
1502operand was a Buffer object.
1503
1504Fixed a problem in the Logical operators (LLess, etc.) where a
1505NULL byte (0) within a buffer would prematurely terminate a
1506compare between buffer objects.
1507
1508Added a check for string overflow (>200 characters as per the
1509ACPI specification) during the Concatenate operator with two
1510string operands.
1511
1512Code and Data Size: Current and previous core subsystem library
1513sizes are shown below. These are the code and data sizes for the
1514acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1515these values do not include any ACPI driver or OSPM code. The
1516debug version of the code includes the debug output trace
1517mechanism and has a much larger code and data size. Note that
1518these values will vary depending on the efficiency of the
1519compiler and the compiler options used during generation.
1520
1521  Previous Release:
1522    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
1523    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
1524  Current Release:
1525    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
1526    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
1527
1528
15292) iASL Compiler/Disassembler:
1530
1531Allow the use of the ObjectType operator on uninitialized Locals
1532and Args (returns 0 as per the ACPI specification).
1533
1534Fixed a problem where the compiler would fault if there was a
1535syntax error in the FieldName of all of the various
1536CreateXXXField operators.
1537
1538Disallow the use of lower case letters within the EISAID macro,
1539as per the ACPI specification.  All EISAID strings must be of the
1540form "UUUNNNN" Where U is an uppercase letter and N is a hex
1541digit.
1542
1543
1544----------------------------------------
154506 October 2004.  Summary of changes for version 20041006:
1546
15471) ACPI CA Core Subsystem:
1548
1549Implemented support for the ACPI 3.0 Timer operator. This ASL
1550function implements a 64-bit timer with 100 nanosecond
1551granularity.
1552
1553Defined a new OSL interface, AcpiOsGetTimer. This interface is
1554used to implement the ACPI 3.0 Timer operator.  This allows the
1555host OS to implement the timer with the best clock available.
1556Also, it keeps the core subsystem out of the clock handling
1557business, since the host OS (usually) performs this function.
1558
1559Fixed an alignment issue on 64-bit platforms. The
1560HwLowLevelRead(Write) functions use a 64-bit address which is
1561part of the packed ACPI Generic Address Structure. Since the
1562structure is non-aligned, the alignment macros are now used to
1563extract the address to a local variable before use.
1564
1565Fixed a problem where the ToInteger operator assumed all input
1566strings were hexadecimal. The operator now handles both decimal
1567strings and hex strings (prefixed with "0x").
1568
1569Fixed a problem where the string length in the string object
1570created as a result of the internal ConvertToString procedure
1571could be incorrect. This potentially affected all implicit
1572conversions and also the ToDecimalString and ToHexString
1573operators.
1574
1575Fixed two problems in the ToString operator. If the length
1576parameter was zero, an incorrect string object was created and
1577the value of the input length parameter was inadvertently changed
1578from zero to Ones.
1579
1580Fixed a problem where the optional ResourceSource string in the
1581ExtendedIRQ resource macro was ignored.
1582
1583Simplified the interfaces to the internal division functions,
1584reducing code size and complexity.
1585
1586Code and Data Size: Current and previous core subsystem library
1587sizes are shown below. These are the code and data sizes for the
1588acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1589these values do not include any ACPI driver or OSPM code. The
1590debug version of the code includes the debug output trace
1591mechanism and has a much larger code and data size. Note that
1592these values will vary depending on the efficiency of the
1593compiler and the compiler options used during generation.
1594
1595  Previous Release:
1596    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
1597    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
1598  Current Release:
1599    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
1600    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
1601
1602
16032) iASL Compiler/Disassembler:
1604
1605Implemented support for the ACPI 3.0 Timer operator.
1606
1607Fixed a problem where the Default() operator was inadvertently
1608ignored in a Switch/Case block.  This was a problem in the
1609translation of the Switch statement to If...Else pairs.
1610
1611Added support to allow a standalone Return operator, with no
1612parentheses (or operands).
1613
1614Fixed a problem with code generation for the ElseIf operator
1615where the translated Else...If parse tree was improperly
1616constructed leading to the loss of some code.
1617
1618----------------------------------------
161922 September 2004.  Summary of changes for version 20040922:
1620
16211) ACPI CA Core Subsystem:
1622
1623Fixed a problem with the implementation of the LNot() operator
1624where "Ones" was not returned for the TRUE case. Changed the code
1625to return Ones instead of (!Arg) which was usually 1. This change
1626affects iASL constant folding for this operator also.
1627
1628Fixed a problem in AcpiUtInitializeBuffer where an existing
1629buffer was not initialized properly -- Now zero the entire buffer
1630in this case where the buffer already exists.
1631
1632Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
1633Milliseconds) to simply (ACPI_INTEGER Milliseconds). This
1634simplifies all related code considerably. This will require
1635changes/updates to all OS interface layers (OSLs.)
1636
1637Implemented a new external interface,
1638AcpiInstallExceptionHandler, to allow a system exception handler
1639to be installed. This handler is invoked upon any run-time
1640exception that occurs during control method execution.
1641
1642Added support for the DSDT in AcpiTbFindTable. This allows the
1643DataTableRegion() operator to access the local copy of the DSDT.
1644
1645Code and Data Size: Current and previous core subsystem library
1646sizes are shown below. These are the code and data sizes for the
1647acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1648these values do not include any ACPI driver or OSPM code. The
1649debug version of the code includes the debug output trace
1650mechanism and has a much larger code and data size. Note that
1651these values will vary depending on the efficiency of the
1652compiler and the compiler options used during generation.
1653
1654  Previous Release:
1655    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
1656    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
1657  Current Release:
1658    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
1659    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
1660
1661
16622) iASL Compiler/Disassembler:
1663
1664Fixed a problem with constant folding and the LNot operator. LNot
1665was returning 1 in the TRUE case, not Ones as per the ACPI
1666specification. This could result in the generation of an
1667incorrect folded/reduced constant.
1668
1669End-Of-File is now allowed within a "//"-style comment.  A parse
1670error no longer occurs if such a comment is at the very end of
1671the input ASL source file.
1672
1673Implemented the "-r" option to override the Revision in the table
1674header. The initial use of this option will be to simplify the
1675evaluation of the AML interpreter by allowing a single ASL source
1676module to be compiled for either 32-bit or 64-bit integers.
1677
1678
1679----------------------------------------
168027 August 2004.  Summary of changes for version 20040827:
1681
16821) ACPI CA Core Subsystem:
1683
1684- Implemented support for implicit object conversion in the non-
1685numeric logical operators (LEqual, LGreater, LGreaterEqual,
1686LLess, LLessEqual, and LNotEqual.)  Any combination of
1687Integers/Strings/Buffers may now be used; the second operand is
1688implicitly converted on the fly to match the type of the first
1689operand.  For example:
1690
1691    LEqual (Source1, Source2)
1692
1693Source1 and Source2 must each evaluate to an integer, a string,
1694or a buffer. The data type of Source1 dictates the required type
1695of Source2. Source2 is implicitly converted if necessary to match
1696the type of Source1.
1697
1698- Updated and corrected the behavior of the string conversion
1699support.  The rules concerning conversion of buffers to strings
1700(according to the ACPI specification) are as follows:
1701
1702ToDecimalString - explicit byte-wise conversion of buffer to
1703string of decimal values (0-255) separated by commas. ToHexString
1704- explicit byte-wise conversion of buffer to string of hex values
1705(0-FF) separated by commas. ToString - explicit byte-wise
1706conversion of buffer to string.  Byte-by-byte copy with no
1707transform except NULL terminated. Any other implicit buffer-to-
1708string conversion - byte-wise conversion of buffer to string of
1709hex values (0-FF) separated by spaces.
1710
1711- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
1712
1713- Fixed a problem in AcpiNsGetPathnameLength where the returned
1714length was one byte too short in the case of a node in the root
1715scope.  This could cause a fault during debug output.
1716
1717- Code and Data Size: Current and previous core subsystem library
1718sizes are shown below.  These are the code and data sizes for the
1719acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1720these values do not include any ACPI driver or OSPM code.  The
1721debug version of the code includes the debug output trace
1722mechanism and has a much larger code and data size.  Note that
1723these values will vary depending on the efficiency of the
1724compiler and the compiler options used during generation.
1725
1726  Previous Release:
1727    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
1728    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
1729  Current Release:
1730    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
1731    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
1732
1733
17342) iASL Compiler/Disassembler:
1735
1736- Fixed a Linux generation error.
1737
1738
1739----------------------------------------
174016 August 2004.  Summary of changes for version 20040816:
1741
17421) ACPI CA Core Subsystem:
1743
1744Designed and implemented support within the AML interpreter for
1745the so-called "implicit return".  This support returns the result
1746of the last ASL operation within a control method, in the absence
1747of an explicit Return() operator.  A few machines depend on this
1748behavior, even though it is not explicitly supported by the ASL
1749language.  It is optional support that can be enabled at runtime
1750via the AcpiGbl_EnableInterpeterSlack flag.
1751
1752Removed support for the PCI_Config address space from the
1753internal low level hardware interfaces (AcpiHwLowLevelRead and
1754AcpiHwLowLevelWrite).  This support was not used internally, and
1755would not work correctly anyway because the PCI bus number and
1756segment number were not supported.  There are separate interfaces
1757for PCI configuration space access because of the unique
1758interface.
1759
1760Code and Data Size: Current and previous core subsystem library
1761sizes are shown below.  These are the code and data sizes for the
1762acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1763these values do not include any ACPI driver or OSPM code.  The
1764debug version of the code includes the debug output trace
1765mechanism and has a much larger code and data size.  Note that
1766these values will vary depending on the efficiency of the
1767compiler and the compiler options used during generation.
1768
1769  Previous Release:
1770    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
1771    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
1772  Current Release:
1773    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
1774    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
1775
1776
17772) iASL Compiler/Disassembler:
1778
1779Fixed a problem where constants in ASL expressions at the root
1780level (not within a control method) could be inadvertently
1781truncated during code generation.  This problem was introduced in
1782the 20040715 release.
1783
1784
1785----------------------------------------
178615 July 2004.  Summary of changes for version 20040715:
1787
17881) ACPI CA Core Subsystem:
1789
1790Restructured the internal HW GPE interfaces to pass/track the
1791current state of interrupts (enabled/disabled) in order to avoid
1792possible deadlock and increase flexibility of the interfaces.
1793
1794Implemented a "lexicographical compare" for String and Buffer
1795objects within the logical operators -- LGreater, LLess,
1796LGreaterEqual, and LLessEqual -- as per further clarification to
1797the ACPI specification.  Behavior is similar to C library
1798"strcmp".
1799
1800Completed a major reduction in CPU stack use for the
1801AcpiGetFirmwareTable external function.  In the 32-bit non-debug
1802case, the stack use has been reduced from 168 bytes to 32 bytes.
1803
1804Deployed a new run-time configuration flag,
1805AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML
1806interpreter to forgive certain bad AML constructs.  Default
1807setting is FALSE.
1808
1809Implemented the first use of AcpiGbl_EnableInterpreterSlack in
1810the Field IO support code.  If enabled, it allows field access to
1811go beyond the end of a region definition if the field is within
1812the region length rounded up to the next access width boundary (a
1813common coding error.)
1814
1815Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and
1816OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency
1817with other ACPI symbols.  Also, these symbols are lowercased by
1818the latest version of the AcpiSrc tool.
1819
1820The prototypes for the PCI interfaces in acpiosxf.h have been
1821updated to rename "Register" to simply "Reg" to prevent certain
1822compilers from complaining.
1823
1824Code and Data Size: Current and previous core subsystem library
1825sizes are shown below.  These are the code and data sizes for the
1826acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1827these values do not include any ACPI driver or OSPM code.  The
1828debug version of the code includes the debug output trace
1829mechanism and has a much larger code and data size.  Note that
1830these values will vary depending on the efficiency of the
1831compiler and the compiler options used during generation.
1832
1833  Previous Release:
1834    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
1835    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
1836  Current Release:
1837    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
1838    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
1839
1840
18412) iASL Compiler/Disassembler:
1842
1843Implemented full support for Package objects within the Case()
1844operator.  Note: The Break() operator is currently not supported
1845within Case blocks (TermLists) as there is some question about
1846backward compatibility with ACPI 1.0 interpreters.
1847
1848Fixed a problem where complex terms were not supported properly
1849within the Switch() operator.
1850
1851Eliminated extraneous warning for compiler-emitted reserved names
1852of the form "_T_x".  (Used in Switch/Case operators.)
1853
1854Eliminated optimization messages for "_T_x" objects and small
1855constants within the DefinitionBlock operator.
1856
1857
1858----------------------------------------
185915 June 2004.  Summary of changes for version 20040615:
1860
18611) ACPI CA Core Subsystem:
1862
1863Implemented support for Buffer and String objects (as per ACPI
18642.0) for the following ASL operators:  LEqual, LGreater, LLess,
1865LGreaterEqual, and LLessEqual.
1866
1867All directory names in the entire source package are lower case,
1868as they were in earlier releases.
1869
1870Implemented "Disassemble" command in the AML debugger that will
1871disassemble a single control method.
1872
1873Code and Data Size: Current and previous core subsystem library
1874sizes are shown below.  These are the code and data sizes for the
1875acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1876these values do not include any ACPI driver or OSPM code.  The
1877debug version of the code includes the debug output trace
1878mechanism and has a much larger code and data size.  Note that
1879these values will vary depending on the efficiency of the
1880compiler and the compiler options used during generation.
1881
1882  Previous Release:
1883    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
1884    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
1885  Current Release:
1886    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
1887    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
1888
1889
18902) iASL Compiler/Disassembler:
1891
1892Implemented support for Buffer and String objects (as per ACPI
18932.0) for the following ASL operators:  LEqual, LGreater, LLess,
1894LGreaterEqual, and LLessEqual.
1895
1896All directory names in the entire source package are lower case,
1897as they were in earlier releases.
1898
1899Fixed a fault when using the -g or -d<nofilename> options if the
1900FADT was not found.
1901
1902Fixed an issue with the Windows version of the compiler where
1903later versions of Windows place the FADT in the registry under
1904the name "FADT" and not "FACP" as earlier versions did.  This
1905applies when using the -g or -d<nofilename> options.  The
1906compiler now looks for both strings as necessary.
1907
1908Fixed a problem with compiler namepath optimization where a
1909namepath within the Scope() operator could not be optimized if
1910the namepath was a subpath of the current scope path.
1911
1912----------------------------------------
191327 May 2004.  Summary of changes for version 20040527:
1914
19151) ACPI CA Core Subsystem:
1916
1917Completed a new design and implementation for EBDA (Extended BIOS
1918Data Area) support in the RSDP scan code.  The original code
1919improperly scanned for the EBDA by simply scanning from memory
1920location 0 to 0x400.  The correct method is to first obtain the
1921EBDA pointer from within the BIOS data area, then scan 1K of
1922memory starting at the EBDA pointer.  There appear to be few if
1923any machines that place the RSDP in the EBDA, however.
1924
1925Integrated a fix for a possible fault during evaluation of
1926BufferField arguments.  Obsolete code that was causing the
1927problem was removed.
1928
1929Found and fixed a problem in the Field Support Code where data
1930could be corrupted on a bit field read that starts on an aligned
1931boundary but does not end on an aligned boundary.  Merged the
1932read/write "datum length" calculation code into a common
1933procedure.
1934
1935Rolled in a couple of changes to the FreeBSD-specific header.
1936
1937Code and Data Size: Current and previous core subsystem library
1938sizes are shown below.  These are the code and data sizes for the
1939acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1940these values do not include any ACPI driver or OSPM code.  The
1941debug version of the code includes the debug output trace
1942mechanism and has a much larger code and data size.  Note that
1943these values will vary depending on the efficiency of the
1944compiler and the compiler options used during generation.
1945
1946  Previous Release:
1947    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
1948    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
1949  Current Release:
1950    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
1951    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
1952
1953
19542) iASL Compiler/Disassembler:
1955
1956Fixed a generation warning produced by some overly-verbose
1957compilers for a 64-bit constant.
1958
1959----------------------------------------
196014 May 2004.  Summary of changes for version 20040514:
1961
19621) ACPI CA Core Subsystem:
1963
1964Fixed a problem where hardware GPE enable bits sometimes not set
1965properly during and after GPE method execution.  Result of 04/27
1966changes.
1967
1968Removed extra "clear all GPEs" when sleeping/waking.
1969
1970Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the
1971single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the
1972functions above to the new AcpiEv* calls as appropriate.
1973
1974ACPI_OS_NAME was removed from the OS-specific headers.  The
1975default name is now "Microsoft Windows NT" for maximum
1976compatibility.  However this can be changed by modifying the
1977acconfig.h file.
1978
1979Allow a single invocation of AcpiInstallNotifyHandler for a
1980handler that traps both types of notifies (System, Device).  Use
1981ACPI_ALL_NOTIFY flag.
1982
1983Run _INI methods on ThermalZone objects.  This is against the
1984ACPI specification, but there is apparently ASL code in the field
1985that has these _INI methods, and apparently "other" AML
1986interpreters execute them.
1987
1988Performed a full 16/32/64 bit lint that resulted in some small
1989changes.
1990
1991Added a sleep simulation command to the AML debugger to test
1992sleep code.
1993
1994Code and Data Size: Current and previous core subsystem library
1995sizes are shown below.  These are the code and data sizes for the
1996acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1997these values do not include any ACPI driver or OSPM code.  The
1998debug version of the code includes the debug output trace
1999mechanism and has a much larger code and data size.  Note that
2000these values will vary depending on the efficiency of the
2001compiler and the compiler options used during generation.
2002
2003  Previous Release:
2004    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
2005    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
2006  Current Release:
2007    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
2008    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
2009
2010----------------------------------------
201127 April 2004.  Summary of changes for version 20040427:
2012
20131) ACPI CA Core Subsystem:
2014
2015Completed a major overhaul of the GPE handling within ACPI CA.
2016There are now three types of GPEs:  wake-only, runtime-only, and
2017combination wake/run.  The only GPEs allowed to be combination
2018wake/run are for button-style devices such as a control-method
2019power button, control-method sleep button, or a notebook lid
2020switch.  GPEs that have an _Lxx or _Exx method and are not
2021referenced by any _PRW methods are marked for "runtime" and
2022hardware enabled.  Any GPE that is referenced by a _PRW method is
2023marked for "wake" (and disabled at runtime).  However, at sleep
2024time, only those GPEs that have been specifically enabled for
2025wake via the AcpiEnableGpe interface will actually be hardware
2026enabled.
2027
2028A new external interface has been added, AcpiSetGpeType(), that
2029is meant to be used by device drivers to force a GPE to a
2030particular type.  It will be especially useful for the drivers
2031for the button devices mentioned above.
2032
2033Completed restructuring of the ACPI CA initialization sequence so
2034that default operation region handlers are installed before GPEs
2035are initialized and the _PRW methods are executed.  This will
2036prevent errors when the _PRW methods attempt to access system
2037memory or I/O space.
2038
2039GPE enable/disable no longer reads the GPE enable register.  We
2040now keep the enable info for runtime and wake separate and in the
2041GPE_EVENT_INFO.  We thus no longer depend on the hardware to
2042maintain these bits.
2043
2044Always clear the wake status and fixed/GPE status bits before
2045sleep, even for state S5.
2046
2047Improved the AML debugger output for displaying the GPE blocks
2048and their current status.
2049
2050Added new strings for the _OSI method, of the form "Windows 2001
2051SPx" where x = 0,1,2,3,4.
2052
2053Fixed a problem where the physical address was incorrectly
2054calculated when the Load() operator was used to directly load
2055from an Operation Region (vs. loading from a Field object.)  Also
2056added check for minimum table length for this case.
2057
2058Fix for multiple mutex acquisition.  Restore original thread
2059SyncLevel on mutex release.
2060
2061Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
2062consistency with the other fields returned.
2063
2064Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one
2065such structure for each GPE in the system, so the size of this
2066structure is important.
2067
2068CPU stack requirement reduction:  Cleaned up the method execution
2069and object evaluation paths so that now a parameter structure is
2070passed, instead of copying the various method parameters over and
2071over again.
2072
2073In evregion.c:  Correctly exit and reenter the interpreter region
2074if and only if dispatching an operation region request to a user-
2075installed handler.  Do not exit/reenter when dispatching to a
2076default handler (e.g., default system memory or I/O handlers)
2077
2078
2079Notes for updating drivers for the new GPE support.  The
2080following changes must be made to ACPI-related device drivers
2081that are attached to one or more GPEs: (This information will be
2082added to the ACPI CA Programmer Reference.)
2083
20841) AcpiInstallGpeHandler no longer automatically enables the GPE,
2085you must explicitly call AcpiEnableGpe.
20862) There is a new interface called AcpiSetGpeType. This should be
2087called before enabling the GPE.  Also, this interface will
2088automatically disable the GPE if it is currently enabled.
20893) AcpiEnableGpe no longer supports a GPE type flag.
2090
2091Specific drivers that must be changed:
20921) EC driver:
2093    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
2094AeGpeHandler, NULL);
2095    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
2096    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
2097
20982) Button Drivers (Power, Lid, Sleep):
2099Run _PRW method under parent device
2100If _PRW exists: /* This is a control-method button */
2101    Extract GPE number and possibly GpeDevice
2102    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
2103    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
2104
2105For all other devices that have _PRWs, we automatically set the
2106GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically
2107(wake) enabled.  This must be done on a selective basis, usually
2108requiring some kind of user app to allow the user to pick the
2109wake devices.
2110
2111
2112Code and Data Size: Current and previous core subsystem library
2113sizes are shown below.  These are the code and data sizes for the
2114acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2115these values do not include any ACPI driver or OSPM code.  The
2116debug version of the code includes the debug output trace
2117mechanism and has a much larger code and data size.  Note that
2118these values will vary depending on the efficiency of the
2119compiler and the compiler options used during generation.
2120
2121  Previous Release:
2122    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
2123    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
2124  Current Release:
2125    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
2126    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
2127
2128
2129
2130----------------------------------------
213102 April 2004.  Summary of changes for version 20040402:
2132
21331) ACPI CA Core Subsystem:
2134
2135Fixed an interpreter problem where an indirect store through an
2136ArgX parameter was incorrectly applying the "implicit conversion
2137rules" during the store.  From the ACPI specification: "If the
2138target is a method local or argument (LocalX or ArgX), no
2139conversion is performed and the result is stored directly to the
2140target".  The new behavior is to disable implicit conversion
2141during ALL stores to an ArgX.
2142
2143Changed the behavior of the _PRW method scan to ignore any and
2144all errors returned by a given _PRW.  This prevents the scan from
2145aborting from the failure of any single _PRW.
2146
2147Moved the runtime configuration parameters from the global init
2148procedure to static variables in acglobal.h.  This will allow the
2149host to override the default values easily.
2150
2151Code and Data Size: Current and previous core subsystem library
2152sizes are shown below.  These are the code and data sizes for the
2153acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2154these values do not include any ACPI driver or OSPM code.  The
2155debug version of the code includes the debug output trace
2156mechanism and has a much larger code and data size.  Note that
2157these values will vary depending on the efficiency of the
2158compiler and the compiler options used during generation.
2159
2160  Previous Release:
2161    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
2162    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
2163  Current Release:
2164    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
2165    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
2166
2167
21682) iASL Compiler/Disassembler:
2169
2170iASL now fully disassembles SSDTs.  However, External()
2171statements are not generated automatically for unresolved symbols
2172at this time.  This is a planned feature for future
2173implementation.
2174
2175Fixed a scoping problem in the disassembler that occurs when the
2176type of the target of a Scope() operator is overridden.  This
2177problem caused an incorrectly nested internal namespace to be
2178constructed.
2179
2180Any warnings or errors that are emitted during disassembly are
2181now commented out automatically so that the resulting file can be
2182recompiled without any hand editing.
2183
2184----------------------------------------
218526 March 2004.  Summary of changes for version 20040326:
2186
21871) ACPI CA Core Subsystem:
2188
2189Implemented support for "wake" GPEs via interaction between GPEs
2190and the _PRW methods.  Every GPE that is pointed to by one or
2191more _PRWs is identified as a WAKE GPE and by default will no
2192longer be enabled at runtime.  Previously, we were blindly
2193enabling all GPEs with a corresponding _Lxx or _Exx method - but
2194most of these turn out to be WAKE GPEs anyway.  We believe this
2195has been the cause of thousands of "spurious" GPEs on some
2196systems.
2197
2198This new GPE behavior is can be reverted to the original behavior
2199(enable ALL GPEs at runtime) via a runtime flag.
2200
2201Fixed a problem where aliased control methods could not access
2202objects properly.  The proper scope within the namespace was not
2203initialized (transferred to the target of the aliased method)
2204before executing the target method.
2205
2206Fixed a potential race condition on internal object deletion on
2207the return object in AcpiEvaluateObject.
2208
2209Integrated a fix for resource descriptors where both _MEM and
2210_MTP were being extracted instead of just _MEM.  (i.e. bitmask
2211was incorrectly too wide, 0x0F instead of 0x03.)
2212
2213Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
2214preventing a fault in some cases.
2215
2216Updated Notify() values for debug statements in evmisc.c
2217
2218Return proper status from AcpiUtMutexInitialize, not just simply
2219AE_OK.
2220
2221Code and Data Size: Current and previous core subsystem library
2222sizes are shown below.  These are the code and data sizes for the
2223acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2224these values do not include any ACPI driver or OSPM code.  The
2225debug version of the code includes the debug output trace
2226mechanism and has a much larger code and data size.  Note that
2227these values will vary depending on the efficiency of the
2228compiler and the compiler options used during generation.
2229
2230  Previous Release:
2231    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
2232    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
2233  Current Release:
2234    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
2235    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
2236
2237----------------------------------------
223811 March 2004.  Summary of changes for version 20040311:
2239
22401) ACPI CA Core Subsystem:
2241
2242Fixed a problem where errors occurring during the parse phase of
2243control method execution did not abort cleanly.  For example,
2244objects created and installed in the namespace were not deleted.
2245This caused all subsequent invocations of the method to return
2246the AE_ALREADY_EXISTS exception.
2247
2248Implemented a mechanism to force a control method to "Serialized"
2249execution if the method attempts to create namespace objects.
2250(The root of the AE_ALREADY_EXISTS problem.)
2251
2252Implemented support for the predefined _OSI "internal" control
2253method.  Initial supported strings are "Linux", "Windows 2000",
2254"Windows 2001", and "Windows 2001.1", and can be easily upgraded
2255for new strings as necessary.  This feature will allow "other"
2256operating systems to execute the fully tested, "Windows" code
2257path through the ASL code
2258
2259Global Lock Support:  Now allows multiple acquires and releases
2260with any internal thread.  Removed concept of "owning thread" for
2261this special mutex.
2262
2263Fixed two functions that were inappropriately declaring large
2264objects on the CPU stack:  PsParseLoop, NsEvaluateRelative.
2265Reduces the stack usage during method execution considerably.
2266
2267Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where
2268the S4Bios_f field was incorrectly defined as UINT32 instead of
2269UINT32_BIT.
2270
2271Fixed a problem where AcpiEvGpeDetect would fault if there were
2272no GPEs defined on the machine.
2273
2274Implemented two runtime options:  One to force all control method
2275execution to "Serialized" to mimic Windows behavior, another to
2276disable _OSI support if it causes problems on a given machine.
2277
2278Code and Data Size: Current and previous core subsystem library
2279sizes are shown below.  These are the code and data sizes for the
2280acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2281these values do not include any ACPI driver or OSPM code.  The
2282debug version of the code includes the debug output trace
2283mechanism and has a much larger code and data size.  Note that
2284these values will vary depending on the efficiency of the
2285compiler and the compiler options used during generation.
2286
2287  Previous Release:
2288    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
2289    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
2290  Current Release:
2291    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
2292    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
2293
22942) iASL Compiler/Disassembler:
2295
2296Fixed an array size problem for FreeBSD that would cause the
2297compiler to fault.
2298
2299----------------------------------------
230020 February 2004.  Summary of changes for version 20040220:
2301
23021) ACPI CA Core Subsystem:
2303
2304Implemented execution of _SxD methods for Device objects in the
2305GetObjectInfo interface.
2306
2307Fixed calls to _SST method to pass the correct arguments.
2308
2309Added a call to _SST on wake to restore to "working" state.
2310
2311Check for End-Of-Buffer failure case in the WalkResources
2312interface.
2313
2314Integrated fix for 64-bit alignment issue in acglobal.h by moving
2315two structures to the beginning of the file.
2316
2317After wake, clear GPE status register(s) before enabling GPEs.
2318
2319After wake, clear/enable power button.  (Perhaps we should
2320clear/enable all fixed events upon wake.)
2321
2322Fixed a couple of possible memory leaks in the Namespace manager.
2323
2324Integrated latest acnetbsd.h file.
2325
2326----------------------------------------
232711 February 2004.  Summary of changes for version 20040211:
2328
23291) ACPI CA Core Subsystem:
2330
2331Completed investigation and implementation of the call-by-
2332reference mechanism for control method arguments.
2333
2334Fixed a problem where a store of an object into an indexed
2335package could fail if the store occurs within a different method
2336than the method that created the package.
2337
2338Fixed a problem where the ToDecimal operator could return
2339incorrect results.
2340
2341Fixed a problem where the CopyObject operator could fail on some
2342of the more obscure objects (e.g., Reference objects.)
2343
2344Improved the output of the Debug object to display buffer,
2345package, and index objects.
2346
2347Fixed a problem where constructs of the form "RefOf (ArgX)" did
2348not return the expected result.
2349
2350Added permanent ACPI_REPORT_ERROR macros for all instances of the
2351ACPI_AML_INTERNAL exception.
2352
2353Integrated latest version of acfreebsd.h
2354
2355----------------------------------------
235616 January 2004.  Summary of changes for version 20040116:
2357
2358The purpose of this release is primarily to update the copyright
2359years in each module, thus causing a huge number of diffs.  There
2360are a few small functional changes, however.
2361
23621) ACPI CA Core Subsystem:
2363
2364Improved error messages when there is a problem finding one or
2365more of the required base ACPI tables
2366
2367Reintroduced the definition of APIC_HEADER in actbl.h
2368
2369Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
2370
2371Removed extraneous reference to NewObj in dsmthdat.c
2372
23732) iASL compiler
2374
2375Fixed a problem introduced in December that disabled the correct
2376disassembly of Resource Templates
2377
2378
2379----------------------------------------
238003 December 2003.  Summary of changes for version 20031203:
2381
23821) ACPI CA Core Subsystem:
2383
2384Changed the initialization of Operation Regions during subsystem
2385init to perform two entire walks of the ACPI namespace; The first
2386to initialize the regions themselves, the second to execute the
2387_REG methods.  This fixed some interdependencies across _REG
2388methods found on some machines.
2389
2390Fixed a problem where a Store(Local0, Local1) could simply update
2391the object reference count, and not create a new copy of the
2392object if the Local1 is uninitialized.
2393
2394Implemented support for the _SST reserved method during sleep
2395transitions.
2396
2397Implemented support to clear the SLP_TYP and SLP_EN bits when
2398waking up, this is apparently required by some machines.
2399
2400When sleeping, clear the wake status only if SleepState is not
2401S5.
2402
2403Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
2404pointer arithmetic advanced a string pointer too far.
2405
2406Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
2407could be returned if the requested table has not been loaded.
2408
2409Within the support for IRQ resources, restructured the handling
2410of
2411the active and edge/level bits.
2412
2413Fixed a few problems in AcpiPsxExecute() where memory could be
2414leaked under certain error conditions.
2415
2416Improved error messages for the cases where the ACPI mode could
2417not be entered.
2418
2419Code and Data Size: Current and previous core subsystem library
2420sizes are shown below.  These are the code and data sizes for the
2421acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2422these values do not include any ACPI driver or OSPM code.  The
2423debug version of the code includes the debug output trace
2424mechanism and has a much larger code and data size.  Note that
2425these values will vary depending on the efficiency of the
2426compiler
2427and the compiler options used during generation.
2428
2429  Previous Release (20031029):
2430    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
2431    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
2432  Current Release:
2433    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
2434    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
2435
24362) iASL Compiler/Disassembler:
2437
2438Implemented a fix for the iASL disassembler where a bad index was
2439generated.  This was most noticeable on 64-bit platforms
2440
2441
2442----------------------------------------
244329 October 2003.  Summary of changes for version 20031029:
2444
24451) ACPI CA Core Subsystem:
2446
2447Fixed a problem where a level-triggered GPE with an associated
2448_Lxx control method was incorrectly cleared twice.
2449
2450Fixed a problem with the Field support code where an access can
2451occur beyond the end-of-region if the field is non-aligned but
2452extends to the very end of the parent region (resulted in an
2453AE_AML_REGION_LIMIT exception.)
2454
2455Fixed a problem with ACPI Fixed Events where an RT Clock handler
2456would not get invoked on an RTC event.  The RTC event bitmasks
2457for
2458the PM1 registers were not being initialized properly.
2459
2460Implemented support for executing _STA and _INI methods for
2461Processor objects.  Although this is currently not part of the
2462ACPI specification, there is existing ASL code that depends on
2463the
2464init-time execution of these methods.
2465
2466Implemented and deployed a GetDescriptorName function to decode
2467the various types of internal descriptors.  Guards against null
2468descriptors during debug output also.
2469
2470Implemented and deployed a GetNodeName function to extract the 4-
2471character namespace node name.  This function simplifies the
2472debug
2473and error output, as well as guarding against null pointers
2474during
2475output.
2476
2477Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
2478simplify the debug and error output of 64-bit integers.  This
2479macro replaces the HIDWORD and LODWORD macros for dumping these
2480integers.
2481
2482Updated the implementation of the Stall() operator to only call
2483AcpiOsStall(), and also return an error if the operand is larger
2484than 255.  This preserves the required behavior of not
2485relinquishing the processor, as would happen if AcpiOsSleep() was
2486called for "long stalls".
2487
2488Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
2489initialized are now treated as NOOPs.
2490
2491Cleaned up a handful of warnings during 64-bit generation.
2492
2493Fixed a reported error where and incorrect GPE number was passed
2494to the GPE dispatch handler.  This value is only used for error
2495output, however.  Used this opportunity to clean up and
2496streamline
2497the GPE dispatch code.
2498
2499Code and Data Size: Current and previous core subsystem library
2500sizes are shown below.  These are the code and data sizes for the
2501acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2502these values do not include any ACPI driver or OSPM code.  The
2503debug version of the code includes the debug output trace
2504mechanism and has a much larger code and data size.  Note that
2505these values will vary depending on the efficiency of the
2506compiler
2507and the compiler options used during generation.
2508
2509  Previous Release (20031002):
2510    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
2511    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
2512  Current Release:
2513    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
2514    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
2515
2516
25172) iASL Compiler/Disassembler:
2518
2519Updated the iASL compiler to return an error if the operand to
2520the
2521Stall() operator is larger than 255.
2522
2523
2524----------------------------------------
252502 October 2003.  Summary of changes for version 20031002:
2526
2527
25281) ACPI CA Core Subsystem:
2529
2530Fixed a problem with Index Fields where the index was not
2531incremented for fields that require multiple writes to the
2532index/data registers (Fields that are wider than the data
2533register.)
2534
2535Fixed a problem with all Field objects where a write could go
2536beyond the end-of-field if the field was larger than the access
2537granularity and therefore required multiple writes to complete
2538the
2539request.  An extra write beyond the end of the field could happen
2540inadvertently.
2541
2542Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
2543would incorrectly be returned if the width of the Data Register
2544was larger than the specified field access width.
2545
2546Completed fixes for LoadTable() and Unload() and verified their
2547operation.  Implemented full support for the "DdbHandle" object
2548throughout the ACPI CA subsystem.
2549
2550Implemented full support for the MADT and ECDT tables in the ACPI
2551CA header files.  Even though these tables are not directly
2552consumed by ACPI CA, the header definitions are useful for ACPI
2553device drivers.
2554
2555Integrated resource descriptor fixes posted to the Linux ACPI
2556list.  This included checks for minimum descriptor length, and
2557support for trailing NULL strings within descriptors that have
2558optional string elements.
2559
2560Code and Data Size: Current and previous core subsystem library
2561sizes are shown below.  These are the code and data sizes for the
2562acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2563these values do not include any ACPI driver or OSPM code.  The
2564debug version of the code includes the debug output trace
2565mechanism and has a much larger code and data size.  Note that
2566these values will vary depending on the efficiency of the
2567compiler
2568and the compiler options used during generation.
2569
2570  Previous Release (20030918):
2571    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
2572    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
2573  Current Release:
2574    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
2575    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
2576
2577
25782) iASL Compiler:
2579
2580Implemented detection of non-ASCII characters within the input
2581source ASL file.  This catches attempts to compile binary (AML)
2582files early in the compile, with an informative error message.
2583
2584Fixed a problem where the disassembler would fault if the output
2585filename could not be generated or if the output file could not
2586be
2587opened.
2588
2589----------------------------------------
259018 September 2003.  Summary of changes for version 20030918:
2591
2592
25931) ACPI CA Core Subsystem:
2594
2595Found and fixed a longstanding problem with the late execution of
2596the various deferred AML opcodes (such as Operation Regions,
2597Buffer Fields, Buffers, and Packages).  If the name string
2598specified for the name of the new object placed the object in a
2599scope other than the current scope, the initialization/execution
2600of the opcode failed.  The solution to this problem was to
2601implement a mechanism where the late execution of such opcodes
2602does not attempt to lookup/create the name a second time in an
2603incorrect scope.  This fixes the "region size computed
2604incorrectly" problem.
2605
2606Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing
2607a
2608Global Lock AE_BAD_PARAMETER error.
2609
2610Fixed several 64-bit issues with prototypes, casting and data
2611types.
2612
2613Removed duplicate prototype from acdisasm.h
2614
2615Fixed an issue involving EC Operation Region Detach (Shaohua Li)
2616
2617Code and Data Size: Current and previous core subsystem library
2618sizes are shown below.  These are the code and data sizes for the
2619acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2620these values do not include any ACPI driver or OSPM code.  The
2621debug version of the code includes the debug output trace
2622mechanism and has a much larger code and data size.  Note that
2623these values will vary depending on the efficiency of the
2624compiler
2625and the compiler options used during generation.
2626
2627  Previous Release:
2628    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
2629    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
2630  Current Release:
2631    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
2632    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
2633
2634
26352) Linux:
2636
2637Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
2638correct sleep time in seconds.
2639
2640----------------------------------------
264114 July 2003.  Summary of changes for version 20030619:
2642
26431) ACPI CA Core Subsystem:
2644
2645Parse SSDTs in order discovered, as opposed to reverse order
2646(Hrvoje Habjanic)
2647
2648Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
2649Klausner,
2650   Nate Lawson)
2651
2652
26532) Linux:
2654
2655Dynamically allocate SDT list (suggested by Andi Kleen)
2656
2657proc function return value cleanups (Andi Kleen)
2658
2659Correctly handle NMI watchdog during long stalls (Andrew Morton)
2660
2661Make it so acpismp=force works (reported by Andrew Morton)
2662
2663
2664----------------------------------------
266519 June 2003.  Summary of changes for version 20030619:
2666
26671) ACPI CA Core Subsystem:
2668
2669Fix To/FromBCD, eliminating the need for an arch-specific
2670#define.
2671
2672Do not acquire a semaphore in the S5 shutdown path.
2673
2674Fix ex_digits_needed for 0. (Takayoshi Kochi)
2675
2676Fix sleep/stall code reversal. (Andi Kleen)
2677
2678Revert a change having to do with control method calling
2679semantics.
2680
26812) Linux:
2682
2683acpiphp update (Takayoshi Kochi)
2684
2685Export acpi_disabled for sonypi (Stelian Pop)
2686
2687Mention acpismp=force in config help
2688
2689Re-add acpitable.c and acpismp=force. This improves backwards
2690compatibility and also cleans up the code to a significant
2691degree.
2692
2693Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
2694
2695----------------------------------------
269622 May 2003.  Summary of changes for version 20030522:
2697
26981) ACPI CA Core Subsystem:
2699
2700Found and fixed a reported problem where an AE_NOT_FOUND error
2701occurred occasionally during _BST evaluation.  This turned out to
2702be an Owner ID allocation issue where a called method did not get
2703a new ID assigned to it.  Eventually, (after 64k calls), the
2704Owner
2705ID UINT16 would wraparound so that the ID would be the same as
2706the
2707caller's and the called method would delete the caller's
2708namespace.
2709
2710Implemented extended error reporting for control methods that are
2711aborted due to a run-time exception.  Output includes the exact
2712AML instruction that caused the method abort, a dump of the
2713method
2714locals and arguments at the time of the abort, and a trace of all
2715nested control method calls.
2716
2717Modified the interpreter to allow the creation of buffers of zero
2718length from the AML code. Implemented new code to ensure that no
2719attempt is made to actually allocate a memory buffer (of length
2720zero) - instead, a simple buffer object with a NULL buffer
2721pointer
2722and length zero is created.  A warning is no longer issued when
2723the AML attempts to create a zero-length buffer.
2724
2725Implemented a workaround for the "leading asterisk issue" in
2726_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
2727asterisk is automatically removed if present in any HID, UID, or
2728CID strings.  The iASL compiler will still flag this asterisk as
2729an error, however.
2730
2731Implemented full support for _CID methods that return a package
2732of
2733multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo()
2734interface
2735now additionally returns a device _CID list if present.  This
2736required a change to the external interface in order to pass an
2737ACPI_BUFFER object as a parameter since the _CID list is of
2738variable length.
2739
2740Fixed a problem with the new AE_SAME_HANDLER exception where
2741handler initialization code did not know about this exception.
2742
2743Code and Data Size: Current and previous core subsystem library
2744sizes are shown below.  These are the code and data sizes for the
2745acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2746these values do not include any ACPI driver or OSPM code.  The
2747debug version of the code includes the debug output trace
2748mechanism and has a much larger code and data size.  Note that
2749these values will vary depending on the efficiency of the
2750compiler
2751and the compiler options used during generation.
2752
2753  Previous Release (20030509):
2754    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
2755    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
2756  Current Release:
2757    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
2758    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
2759
2760
27612) Linux:
2762
2763Fixed a bug in which we would reinitialize the ACPI interrupt
2764after it was already working, thus disabling all ACPI and the
2765IRQs
2766for any other device sharing the interrupt. (Thanks to Stian
2767Jordet)
2768
2769Toshiba driver update (John Belmonte)
2770
2771Return only 0 or 1 for our interrupt handler status (Andrew
2772Morton)
2773
2774
27753) iASL Compiler:
2776
2777Fixed a reported problem where multiple (nested) ElseIf()
2778statements were not handled correctly by the compiler, resulting
2779in incorrect warnings and incorrect AML code.  This was a problem
2780in both the ASL parser and the code generator.
2781
2782
27834) Documentation:
2784
2785Added changes to existing interfaces, new exception codes, and
2786new
2787text concerning reference count object management versus garbage
2788collection.
2789
2790----------------------------------------
279109 May 2003.  Summary of changes for version 20030509.
2792
2793
27941) ACPI CA Core Subsystem:
2795
2796Changed the subsystem initialization sequence to hold off
2797installation of address space handlers until the hardware has
2798been
2799initialized and the system has entered ACPI mode.  This is
2800because
2801the installation of space handlers can cause _REG methods to be
2802run.  Previously, the _REG methods could potentially be run
2803before
2804ACPI mode was enabled.
2805
2806Fixed some memory leak issues related to address space handler
2807and
2808notify handler installation.  There were some problems with the
2809reference count mechanism caused by the fact that the handler
2810objects are shared across several namespace objects.
2811
2812Fixed a reported problem where reference counts within the
2813namespace were not properly updated when named objects created by
2814method execution were deleted.
2815
2816Fixed a reported problem where multiple SSDTs caused a deletion
2817issue during subsystem termination.  Restructured the table data
2818structures to simplify the linked lists and the related code.
2819
2820Fixed a problem where the table ID associated with secondary
2821tables (SSDTs) was not being propagated into the namespace
2822objects
2823created by those tables.  This would only present a problem for
2824tables that are unloaded at run-time, however.
2825
2826Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
2827type as the length parameter (instead of UINT32).
2828
2829Solved a long-standing problem where an ALREADY_EXISTS error
2830appears on various systems.  This problem could happen when there
2831are multiple PCI_Config operation regions under a single PCI root
2832bus.  This doesn't happen very frequently, but there are some
2833systems that do this in the ASL.
2834
2835Fixed a reported problem where the internal DeleteNode function
2836was incorrectly handling the case where a namespace node was the
2837first in the parent's child list, and had additional peers (not
2838the only child, but first in the list of children.)
2839
2840Code and Data Size: Current core subsystem library sizes are
2841shown
2842below.  These are the code and data sizes for the acpica.lib
2843produced by the Microsoft Visual C++ 6.0 compiler, and these
2844values do not include any ACPI driver or OSPM code.  The debug
2845version of the code includes the debug output trace mechanism and
2846has a much larger code and data size.  Note that these values
2847will
2848vary depending on the efficiency of the compiler and the compiler
2849options used during generation.
2850
2851  Previous Release
2852    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
2853    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
2854  Current Release:
2855    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
2856    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
2857
2858
28592) Linux:
2860
2861Allow ":" in OS override string (Ducrot Bruno)
2862
2863Kobject fix (Greg KH)
2864
2865
28663 iASL Compiler/Disassembler:
2867
2868Fixed a problem in the generation of the C source code files (AML
2869is emitted in C source statements for BIOS inclusion) where the
2870Ascii dump that appears within a C comment at the end of each
2871line
2872could cause a compile time error if the AML sequence happens to
2873have an open comment or close comment sequence embedded.
2874
2875
2876----------------------------------------
287724 April 2003.  Summary of changes for version 20030424.
2878
2879
28801) ACPI CA Core Subsystem:
2881
2882Support for big-endian systems has been implemented.  Most of the
2883support has been invisibly added behind big-endian versions of
2884the
2885ACPI_MOVE_* macros.
2886
2887Fixed a problem in AcpiHwDisableGpeBlock() and
2888AcpiHwClearGpeBlock() where an incorrect offset was passed to the
2889low level hardware write routine.  The offset parameter was
2890actually eliminated from the low level read/write routines
2891because
2892they had become obsolete.
2893
2894Fixed a problem where a handler object was deleted twice during
2895the removal of a fixed event handler.
2896
2897
28982) Linux:
2899
2900A fix for SMP systems with link devices was contributed by
2901Compaq's Dan Zink.
2902
2903(2.5) Return whether we handled the interrupt in our IRQ handler.
2904(Linux ISRs no longer return void, so we can propagate the
2905handler
2906return value from the ACPI CA core back to the OS.)
2907
2908
29093) Documentation:
2910
2911The ACPI CA Programmer Reference has been updated to reflect new
2912interfaces and changes to existing interfaces.
2913
2914----------------------------------------
291528 March 2003.  Summary of changes for version 20030328.
2916
29171) ACPI CA Core Subsystem:
2918
2919The GPE Block Device support has been completed.  New interfaces
2920are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
2921interfaces (enable, disable, clear, getstatus) have been split
2922into separate interfaces for Fixed Events and General Purpose
2923Events (GPEs) in order to support GPE Block Devices properly.
2924
2925Fixed a problem where the error message "Failed to acquire
2926semaphore" would appear during operations on the embedded
2927controller (EC).
2928
2929Code and Data Size: Current core subsystem library sizes are
2930shown
2931below.  These are the code and data sizes for the acpica.lib
2932produced by the Microsoft Visual C++ 6.0 compiler, and these
2933values do not include any ACPI driver or OSPM code.  The debug
2934version of the code includes the debug output trace mechanism and
2935has a much larger code and data size.  Note that these values
2936will
2937vary depending on the efficiency of the compiler and the compiler
2938options used during generation.
2939
2940  Previous Release
2941    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
2942    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
2943  Current Release:
2944    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
2945    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
2946
2947
2948----------------------------------------
294928 February 2003.  Summary of changes for version 20030228.
2950
2951
29521) ACPI CA Core Subsystem:
2953
2954The GPE handling and dispatch code has been completely overhauled
2955in preparation for support of GPE Block Devices (ID ACPI0006).
2956This affects internal data structures and code only; there should
2957be no differences visible externally.  One new file has been
2958added, evgpeblk.c
2959
2960The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
2961fields that are used to determine the GPE block lengths.  The
2962REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
2963structures are ignored.  This is per the ACPI specification but
2964it
2965isn't very clear.  The full 256 Block 0/1 GPEs are now supported
2966(the use of REGISTER_BIT_WIDTH limited the number of GPEs to
2967128).
2968
2969In the SCI interrupt handler, removed the read of the PM1_CONTROL
2970register to look at the SCI_EN bit.  On some machines, this read
2971causes an SMI event and greatly slows down SCI events.  (This may
2972in fact be the cause of slow battery status response on some
2973systems.)
2974
2975Fixed a problem where a store of a NULL string to a package
2976object
2977could cause the premature deletion of the object.  This was seen
2978during execution of the battery _BIF method on some systems,
2979resulting in no battery data being returned.
2980
2981Added AcpiWalkResources interface to simplify parsing of resource
2982lists.
2983
2984Code and Data Size: Current core subsystem library sizes are
2985shown
2986below.  These are the code and data sizes for the acpica.lib
2987produced by the Microsoft Visual C++ 6.0 compiler, and these
2988values do not include any ACPI driver or OSPM code.  The debug
2989version of the code includes the debug output trace mechanism and
2990has a much larger code and data size.  Note that these values
2991will
2992vary depending on the efficiency of the compiler and the compiler
2993options used during generation.
2994
2995  Previous Release
2996    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
2997    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
2998  Current Release:
2999    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
3000    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
3001
3002
30032) Linux
3004
3005S3 fixes (Ole Rohne)
3006
3007Update ACPI PHP driver with to use new acpi_walk_resource API
3008(Bjorn Helgaas)
3009
3010Add S4BIOS support (Pavel Machek)
3011
3012Map in entire table before performing checksum (John Stultz)
3013
3014Expand the mem= cmdline to allow the specification of reserved
3015and
3016ACPI DATA blocks (Pavel Machek)
3017
3018Never use ACPI on VISWS
3019
3020Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
3021
3022Revert a change that allowed P_BLK lengths to be 4 or 5. This is
3023causing us to think that some systems support C2 when they really
3024don't.
3025
3026Do not count processor objects for non-present CPUs (Thanks to
3027Dominik Brodowski)
3028
3029
30303) iASL Compiler:
3031
3032Fixed a problem where ASL include files could not be found and
3033opened.
3034
3035Added support for the _PDC reserved name.
3036
3037
3038----------------------------------------
303922 January 2003.  Summary of changes for version 20030122.
3040
3041
30421) ACPI CA Core Subsystem:
3043
3044Added a check for constructs of the form:  Store (Local0, Local0)
3045where Local0 is not initialized.  Apparently, some BIOS
3046programmers believe that this is a NOOP.  Since this store
3047doesn't
3048do anything anyway, the new prototype behavior will ignore this
3049error.  This is a case where we can relax the strict checking in
3050the interpreter in the name of compatibility.
3051
3052
30532) Linux
3054
3055The AcpiSrc Source Conversion Utility has been released with the
3056Linux package for the first time.  This is the utility that is
3057used to convert the ACPI CA base source code to the Linux
3058version.
3059
3060(Both) Handle P_BLK lengths shorter than 6 more gracefully
3061
3062(Both) Move more headers to include/acpi, and delete an unused
3063header.
3064
3065(Both) Move drivers/acpi/include directory to include/acpi
3066
3067(Both) Boot functions don't use cmdline, so don't pass it around
3068
3069(Both) Remove include of unused header (Adrian Bunk)
3070
3071(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
3072the
3073former now also includes the latter, acpiphp.h only needs the
3074one,
3075now.
3076
3077(2.5) Make it possible to select method of bios restoring after
3078S3
3079resume. [=> no more ugly ifdefs] (Pavel Machek)
3080
3081(2.5) Make proc write interfaces work (Pavel Machek)
3082
3083(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
3084
3085(2.5) Break out ACPI Perf code into its own module, under cpufreq
3086(Dominik Brodowski)
3087
3088(2.4) S4BIOS support (Ducrot Bruno)
3089
3090(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
3091Visinoni)
3092
3093
30943) iASL Compiler:
3095
3096Added support to disassemble SSDT and PSDTs.
3097
3098Implemented support to obtain SSDTs from the Windows registry if
3099available.
3100
3101
3102----------------------------------------
310309 January 2003.  Summary of changes for version 20030109.
3104
31051) ACPI CA Core Subsystem:
3106
3107Changed the behavior of the internal Buffer-to-String conversion
3108function.  The current ACPI specification states that the
3109contents
3110of the buffer are "converted to a string of two-character
3111hexadecimal numbers, each separated by a space".  Unfortunately,
3112this definition is not backwards compatible with existing ACPI
31131.0
3114implementations (although the behavior was not defined in the
3115ACPI
31161.0 specification).  The new behavior simply copies data from the
3117buffer to the string until a null character is found or the end
3118of
3119the buffer is reached.  The new String object is always null
3120terminated.  This problem was seen during the generation of _BIF
3121battery data where incorrect strings were returned for battery
3122type, etc.  This will also require an errata to the ACPI
3123specification.
3124
3125Renamed all instances of NATIVE_UINT and NATIVE_INT to
3126ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
3127
3128Copyright in all module headers (both Linux and non-Linux) has be
3129updated to 2003.
3130
3131Code and Data Size: Current core subsystem library sizes are
3132shown
3133below.  These are the code and data sizes for the acpica.lib
3134produced by the Microsoft Visual C++ 6.0 compiler, and these
3135values do not include any ACPI driver or OSPM code.  The debug
3136version of the code includes the debug output trace mechanism and
3137has a much larger code and data size.  Note that these values
3138will
3139vary depending on the efficiency of the compiler and the compiler
3140options used during generation.
3141
3142  Previous Release
3143    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
3144    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
3145  Current Release:
3146    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
3147    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
3148
3149
31502) Linux
3151
3152Fixed an oops on module insertion/removal (Matthew Tippett)
3153
3154(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
3155
3156(2.5) Replace pr_debug (Randy Dunlap)
3157
3158(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
3159
3160(Both) Eliminate spawning of thread from timer callback, in favor
3161of schedule_work()
3162
3163(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
3164
3165(Both) Added define for Fixed Function HW region (Matthew Wilcox)
3166
3167(Both) Add missing statics to button.c (Pavel Machek)
3168
3169Several changes have been made to the source code translation
3170utility that generates the Linux Code in order to make the code
3171more "Linux-like":
3172
3173All typedefs on structs and unions have been removed in keeping
3174with the Linux coding style.
3175
3176Removed the non-Linux SourceSafe module revision number from each
3177module header.
3178
3179Completed major overhaul of symbols to be lowercased for linux.
3180Doubled the number of symbols that are lowercased.
3181
3182Fixed a problem where identifiers within procedure headers and
3183within quotes were not fully lower cased (they were left with a
3184starting capital.)
3185
3186Some C macros whose only purpose is to allow the generation of 16-
3187bit code are now completely removed in the Linux code, increasing
3188readability and maintainability.
3189
3190----------------------------------------
3191
319212 December 2002.  Summary of changes for version 20021212.
3193
3194
31951) ACPI CA Core Subsystem:
3196
3197Fixed a problem where the creation of a zero-length AML Buffer
3198would cause a fault.
3199
3200Fixed a problem where a Buffer object that pointed to a static
3201AML
3202buffer (in an ACPI table) could inadvertently be deleted, causing
3203memory corruption.
3204
3205Fixed a problem where a user buffer (passed in to the external
3206ACPI CA interfaces) could be overwritten if the buffer was too
3207small to complete the operation, causing memory corruption.
3208
3209Fixed a problem in the Buffer-to-String conversion code where a
3210string of length one was always returned, regardless of the size
3211of the input Buffer object.
3212
3213Removed the NATIVE_CHAR data type across the entire source due to
3214lack of need and lack of consistent use.
3215
3216Code and Data Size: Current core subsystem library sizes are
3217shown
3218below.  These are the code and data sizes for the acpica.lib
3219produced by the Microsoft Visual C++ 6.0 compiler, and these
3220values do not include any ACPI driver or OSPM code.  The debug
3221version of the code includes the debug output trace mechanism and
3222has a much larger code and data size.  Note that these values
3223will
3224vary depending on the efficiency of the compiler and the compiler
3225options used during generation.
3226
3227  Previous Release
3228    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
3229    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
3230  Current Release:
3231    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
3232    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
3233
3234
3235----------------------------------------
323605 December 2002.  Summary of changes for version 20021205.
3237
32381) ACPI CA Core Subsystem:
3239
3240Fixed a problem where a store to a String or Buffer object could
3241cause corruption of the DSDT if the object type being stored was
3242the same as the target object type and the length of the object
3243being stored was equal to or smaller than the original (existing)
3244target object.  This was seen to cause corruption of battery _BIF
3245buffers if the _BIF method modified the buffer on the fly.
3246
3247Fixed a problem where an internal error was generated if a
3248control
3249method invocation was used in an OperationRegion, Buffer, or
3250Package declaration.  This was caused by the deferred parsing of
3251the control method and thus the deferred creation of the internal
3252method object.  The solution to this problem was to create the
3253internal method object at the moment the method is encountered in
3254the first pass - so that subsequent references to the method will
3255able to obtain the required parameter count and thus properly
3256parse the method invocation.  This problem presented itself as an
3257AE_AML_INTERNAL during the pass 1 parse phase during table load.
3258
3259Fixed a problem where the internal String object copy routine did
3260not always allocate sufficient memory for the target String
3261object
3262and caused memory corruption.  This problem was seen to cause
3263"Allocation already present in list!" errors as memory allocation
3264became corrupted.
3265
3266Implemented a new function for the evaluation of namespace
3267objects
3268that allows the specification of the allowable return object
3269types.  This simplifies a lot of code that checks for a return
3270object of one or more specific objects returned from the
3271evaluation (such as _STA, etc.)  This may become and external
3272function if it would be useful to ACPI-related drivers.
3273
3274Completed another round of prefixing #defines with "ACPI_" for
3275clarity.
3276
3277Completed additional code restructuring to allow more modular
3278linking for iASL compiler and AcpiExec.  Several files were split
3279creating new files.  New files:  nsparse.c dsinit.c evgpe.c
3280
3281Implemented an abort mechanism to terminate an executing control
3282method via the AML debugger.  This feature is useful for
3283debugging
3284control methods that depend (wait) for specific hardware
3285responses.
3286
3287Code and Data Size: Current core subsystem library sizes are
3288shown
3289below.  These are the code and data sizes for the acpica.lib
3290produced by the Microsoft Visual C++ 6.0 compiler, and these
3291values do not include any ACPI driver or OSPM code.  The debug
3292version of the code includes the debug output trace mechanism and
3293has a much larger code and data size.  Note that these values
3294will
3295vary depending on the efficiency of the compiler and the compiler
3296options used during generation.
3297
3298  Previous Release
3299    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
3300    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
3301  Current Release:
3302    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
3303    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
3304
3305
33062) iASL Compiler/Disassembler
3307
3308Fixed a compiler code generation problem for "Interrupt" Resource
3309Descriptors.  If specified in the ASL, the optional "Resource
3310Source Index" and "Resource Source" fields were not inserted into
3311the correct location within the AML resource descriptor, creating
3312an invalid descriptor.
3313
3314Fixed a disassembler problem for "Interrupt" resource
3315descriptors.
3316The optional "Resource Source Index" and "Resource Source" fields
3317were ignored.
3318
3319
3320----------------------------------------
332122 November 2002.  Summary of changes for version 20021122.
3322
3323
33241) ACPI CA Core Subsystem:
3325
3326Fixed a reported problem where an object stored to a Method Local
3327or Arg was not copied to a new object during the store - the
3328object pointer was simply copied to the Local/Arg.  This caused
3329all subsequent operations on the Local/Arg to also affect the
3330original source of the store operation.
3331
3332Fixed a problem where a store operation to a Method Local or Arg
3333was not completed properly if the Local/Arg contained a reference
3334(from RefOf) to a named field.  The general-purpose store-to-
3335namespace-node code is now used so that this case is handled
3336automatically.
3337
3338Fixed a problem where the internal object copy routine would
3339cause
3340a protection fault if the object being copied was a Package and
3341contained either 1) a NULL package element or 2) a nested sub-
3342package.
3343
3344Fixed a problem with the GPE initialization that resulted from an
3345ambiguity in the ACPI specification.  One section of the
3346specification states that both the address and length of the GPE
3347block must be zero if the block is not supported.  Another
3348section
3349implies that only the address need be zero if the block is not
3350supported.  The code has been changed so that both the address
3351and
3352the length must be non-zero to indicate a valid GPE block (i.e.,
3353if either the address or the length is zero, the GPE block is
3354invalid.)
3355
3356Code and Data Size: Current core subsystem library sizes are
3357shown
3358below.  These are the code and data sizes for the acpica.lib
3359produced by the Microsoft Visual C++ 6.0 compiler, and these
3360values do not include any ACPI driver or OSPM code.  The debug
3361version of the code includes the debug output trace mechanism and
3362has a much larger code and data size.  Note that these values
3363will
3364vary depending on the efficiency of the compiler and the compiler
3365options used during generation.
3366
3367  Previous Release
3368    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
3369    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
3370  Current Release:
3371    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
3372    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
3373
3374
33752) Linux
3376
3377Cleaned up EC driver. Exported an external EC read/write
3378interface. By going through this, other drivers (most notably
3379sonypi) will be able to serialize access to the EC.
3380
3381
33823) iASL Compiler/Disassembler
3383
3384Implemented support to optionally generate include files for both
3385ASM and C (the -i switch).  This simplifies BIOS development by
3386automatically creating include files that contain external
3387declarations for the symbols that are created within the
3388(optionally generated) ASM and C AML source files.
3389
3390
3391----------------------------------------
339215 November 2002.  Summary of changes for version 20021115.
3393
33941) ACPI CA Core Subsystem:
3395
3396Fixed a memory leak problem where an error during resolution of
3397method arguments during a method invocation from another method
3398failed to cleanup properly by deleting all successfully resolved
3399argument objects.
3400
3401Fixed a problem where the target of the Index() operator was not
3402correctly constructed if the source object was a package.  This
3403problem has not been detected because the use of a target operand
3404with Index() is very rare.
3405
3406Fixed a problem with the Index() operator where an attempt was
3407made to delete the operand objects twice.
3408
3409Fixed a problem where an attempt was made to delete an operand
3410twice during execution of the CondRefOf() operator if the target
3411did not exist.
3412
3413Implemented the first of perhaps several internal create object
3414functions that create and initialize a specific object type.
3415This
3416consolidates duplicated code wherever the object is created, thus
3417shrinking the size of the subsystem.
3418
3419Implemented improved debug/error messages for errors that occur
3420during nested method invocations.  All executing method pathnames
3421are displayed (with the error) as the call stack is unwound -
3422thus
3423simplifying debug.
3424
3425Fixed a problem introduced in the 10/02 release that caused
3426premature deletion of a buffer object if a buffer was used as an
3427ASL operand where an integer operand is required (Thus causing an
3428implicit object conversion from Buffer to Integer.)  The change
3429in
3430the 10/02 release was attempting to fix a memory leak (albeit
3431incorrectly.)
3432
3433Code and Data Size: Current core subsystem library sizes are
3434shown
3435below.  These are the code and data sizes for the acpica.lib
3436produced by the Microsoft Visual C++ 6.0 compiler, and these
3437values do not include any ACPI driver or OSPM code.  The debug
3438version of the code includes the debug output trace mechanism and
3439has a much larger code and data size.  Note that these values
3440will
3441vary depending on the efficiency of the compiler and the compiler
3442options used during generation.
3443
3444  Previous Release
3445    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
3446    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
3447  Current Release:
3448    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
3449    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
3450
3451
34522) Linux
3453
3454Changed the implementation of the ACPI semaphores to use down()
3455instead of down_interruptable().  It is important that the
3456execution of ACPI control methods not be interrupted by signals.
3457Methods must run to completion, or the system may be left in an
3458unknown/unstable state.
3459
3460Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
3461set.
3462(Shawn Starr)
3463
3464
34653) iASL Compiler/Disassembler
3466
3467
3468Changed the default location of output files.  All output files
3469are now placed in the current directory by default instead of in
3470the directory of the source file.  This change may affect some
3471existing makefiles, but it brings the behavior of the compiler in
3472line with other similar tools.  The location of the output files
3473can be overridden with the -p command line switch.
3474
3475
3476----------------------------------------
347711 November 2002.  Summary of changes for version 20021111.
3478
3479
34800) ACPI Specification 2.0B is released and is now available at:
3481http://www.acpi.info/index.html
3482
3483
34841) ACPI CA Core Subsystem:
3485
3486Implemented support for the ACPI 2.0 SMBus Operation Regions.
3487This includes the early detection and handoff of the request to
3488the SMBus region handler (avoiding all of the complex field
3489support code), and support for the bidirectional return packet
3490from an SMBus write operation.  This paves the way for the
3491development of SMBus drivers in each host operating system.
3492
3493Fixed a problem where the semaphore WAIT_FOREVER constant was
3494defined as 32 bits, but must be 16 bits according to the ACPI
3495specification.  This had the side effect of causing ASL
3496Mutex/Event timeouts even though the ASL code requested a wait
3497forever.  Changed all internal references to the ACPI timeout
3498parameter to 16 bits to prevent future problems.  Changed the
3499name
3500of WAIT_FOREVER to ACPI_WAIT_FOREVER.
3501
3502Code and Data Size: Current core subsystem library sizes are
3503shown
3504below.  These are the code and data sizes for the acpica.lib
3505produced by the Microsoft Visual C++ 6.0 compiler, and these
3506values do not include any ACPI driver or OSPM code.  The debug
3507version of the code includes the debug output trace mechanism and
3508has a much larger code and data size.  Note that these values
3509will
3510vary depending on the efficiency of the compiler and the compiler
3511options used during generation.
3512
3513  Previous Release
3514    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
3515    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
3516  Current Release:
3517    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
3518    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
3519
3520
35212) Linux
3522
3523Module loading/unloading fixes (John Cagle)
3524
3525
35263) iASL Compiler/Disassembler
3527
3528Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
3529
3530Implemented support for the disassembly of all SMBus protocol
3531keywords (SMBQuick, SMBWord, etc.)
3532
3533----------------------------------------
353401 November 2002.  Summary of changes for version 20021101.
3535
3536
35371) ACPI CA Core Subsystem:
3538
3539Fixed a problem where platforms that have a GPE1 block but no
3540GPE0
3541block were not handled correctly.  This resulted in a "GPE
3542overlap" error message.  GPE0 is no longer required.
3543
3544Removed code added in the previous release that inserted nodes
3545into the namespace in alphabetical order.  This caused some side-
3546effects on various machines.  The root cause of the problem is
3547still under investigation since in theory, the internal ordering
3548of the namespace nodes should not matter.
3549
3550
3551Enhanced error reporting for the case where a named object is not
3552found during control method execution.  The full ACPI namepath
3553(name reference) of the object that was not found is displayed in
3554this case.
3555
3556Note: as a result of the overhaul of the namespace object types
3557in
3558the previous release, the namespace nodes for the predefined
3559scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
3560instead of ACPI_TYPE_ANY.  This simplifies the namespace
3561management code but may affect code that walks the namespace tree
3562looking for specific object types.
3563
3564Code and Data Size: Current core subsystem library sizes are
3565shown
3566below.  These are the code and data sizes for the acpica.lib
3567produced by the Microsoft Visual C++ 6.0 compiler, and these
3568values do not include any ACPI driver or OSPM code.  The debug
3569version of the code includes the debug output trace mechanism and
3570has a much larger code and data size.  Note that these values
3571will
3572vary depending on the efficiency of the compiler and the compiler
3573options used during generation.
3574
3575  Previous Release
3576    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
3577    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
3578  Current Release:
3579    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
3580    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
3581
3582
35832) Linux
3584
3585Fixed a problem introduced in the previous release where the
3586Processor and Thermal objects were not recognized and installed
3587in
3588/proc.  This was related to the scope type change described
3589above.
3590
3591
35923) iASL Compiler/Disassembler
3593
3594Implemented the -g option to get all of the required ACPI tables
3595from the registry and save them to files (Windows version of the
3596compiler only.)  The required tables are the FADT, FACS, and
3597DSDT.
3598
3599Added ACPI table checksum validation during table disassembly in
3600order to catch corrupted tables.
3601
3602
3603----------------------------------------
360422 October 2002.  Summary of changes for version 20021022.
3605
36061) ACPI CA Core Subsystem:
3607
3608Implemented a restriction on the Scope operator that the target
3609must already exist in the namespace at the time the operator is
3610encountered (during table load or method execution).  In other
3611words, forward references are not allowed and Scope() cannot
3612create a new object. This changes the previous behavior where the
3613interpreter would create the name if not found.  This new
3614behavior
3615correctly enables the search-to-root algorithm during namespace
3616lookup of the target name.  Because of this upsearch, this fixes
3617the known Compaq _SB_.OKEC problem and makes both the AML
3618interpreter and iASL compiler compatible with other ACPI
3619implementations.
3620
3621Completed a major overhaul of the internal ACPI object types for
3622the ACPI Namespace and the associated operand objects.  Many of
3623these types had become obsolete with the introduction of the two-
3624pass namespace load.  This cleanup simplifies the code and makes
3625the entire namespace load mechanism much clearer and easier to
3626understand.
3627
3628Improved debug output for tracking scope opening/closing to help
3629diagnose scoping issues.  The old scope name as well as the new
3630scope name are displayed.  Also improved error messages for
3631problems with ASL Mutex objects and error messages for GPE
3632problems.
3633
3634Cleaned up the namespace dump code, removed obsolete code.
3635
3636All string output (for all namespace/object dumps) now uses the
3637common ACPI string output procedure which handles escapes
3638properly
3639and does not emit non-printable characters.
3640
3641Fixed some issues with constants in the 64-bit version of the
3642local C library (utclib.c)
3643
3644
36452) Linux
3646
3647EC Driver:  No longer attempts to acquire the Global Lock at
3648interrupt level.
3649
3650
36513) iASL Compiler/Disassembler
3652
3653Implemented ACPI 2.0B grammar change that disallows all Type 1
3654and
36552 opcodes outside of a control method.  This means that the
3656"executable" operators (versus the "namespace" operators) cannot
3657be used at the table level; they can only be used within a
3658control
3659method.
3660
3661Implemented the restriction on the Scope() operator where the
3662target must already exist in the namespace at the time the
3663operator is encountered (during ASL compilation). In other words,
3664forward references are not allowed and Scope() cannot create a
3665new
3666object.  This makes the iASL compiler compatible with other ACPI
3667implementations and makes the Scope() implementation adhere to
3668the
3669ACPI specification.
3670
3671Fixed a problem where namepath optimization for the Alias
3672operator
3673was optimizing the wrong path (of the two namepaths.)  This
3674caused
3675a "Missing alias link" error message.
3676
3677Fixed a problem where an "unknown reserved name" warning could be
3678incorrectly generated for names like "_SB" when the trailing
3679underscore is not used in the original ASL.
3680
3681Fixed a problem where the reserved name check did not handle
3682NamePaths with multiple NameSegs correctly.  The first nameseg of
3683the NamePath was examined instead of the last NameSeg.
3684
3685
3686----------------------------------------
3687
368802 October 2002.  Summary of changes for this release.
3689
3690
36911) ACPI CA Core Subsystem version 20021002:
3692
3693Fixed a problem where a store/copy of a string to an existing
3694string did not always set the string length properly in the
3695String
3696object.
3697
3698Fixed a reported problem with the ToString operator where the
3699behavior was identical to the ToHexString operator instead of
3700just
3701simply converting a raw buffer to a string data type.
3702
3703Fixed a problem where CopyObject and the other "explicit"
3704conversion operators were not updating the internal namespace
3705node
3706type as part of the store operation.
3707
3708Fixed a memory leak during implicit source operand conversion
3709where the original object was not deleted if it was converted to
3710a
3711new object of a different type.
3712
3713Enhanced error messages for all problems associated with
3714namespace
3715lookups.  Common procedure generates and prints the lookup name
3716as
3717well as the formatted status.
3718
3719Completed implementation of a new design for the Alias support
3720within the namespace.  The existing design did not handle the
3721case
3722where a new object was assigned to one of the two names due to
3723the
3724use of an explicit conversion operator, resulting in the two
3725names
3726pointing to two different objects.  The new design simply points
3727the Alias name to the original name node - not to the object.
3728This results in a level of indirection that must be handled in
3729the
3730name resolution mechanism.
3731
3732Code and Data Size: Current core subsystem library sizes are
3733shown
3734below.  These are the code and data sizes for the acpica.lib
3735produced by the Microsoft Visual C++ 6.0 compiler, and these
3736values do not include any ACPI driver or OSPM code.  The debug
3737version of the code includes the debug output trace mechanism and
3738has a larger code and data size.  Note that these values will
3739vary
3740depending on the efficiency of the compiler and the compiler
3741options used during generation.
3742
3743  Previous Release
3744    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
3745    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
3746  Current Release:
3747    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
3748    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
3749
3750
37512) Linux
3752
3753Initialize thermal driver's timer before it is used. (Knut
3754Neumann)
3755
3756Allow handling negative celsius values. (Kochi Takayoshi)
3757
3758Fix thermal management and make trip points. R/W (Pavel Machek)
3759
3760Fix /proc/acpi/sleep. (P. Christeas)
3761
3762IA64 fixes. (David Mosberger)
3763
3764Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
3765
3766Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
3767Brodowski)
3768
3769
37703) iASL Compiler/Disassembler
3771
3772Clarified some warning/error messages.
3773
3774
3775----------------------------------------
377618 September 2002.  Summary of changes for this release.
3777
3778
37791) ACPI CA Core Subsystem version 20020918:
3780
3781Fixed a reported problem with reference chaining (via the Index()
3782and RefOf() operators) in the ObjectType() and SizeOf()
3783operators.
3784The definition of these operators includes the dereferencing of
3785all chained references to return information on the base object.
3786
3787Fixed a problem with stores to indexed package elements - the
3788existing code would not complete the store if an "implicit
3789conversion" was not performed.  In other words, if the existing
3790object (package element) was to be replaced completely, the code
3791didn't handle this case.
3792
3793Relaxed typechecking on the ASL "Scope" operator to allow the
3794target name to refer to an object of type Integer, String, or
3795Buffer, in addition to the scoping object types (Device,
3796predefined Scopes, Processor, PowerResource, and ThermalZone.)
3797This allows existing AML code that has workarounds for a bug in
3798Windows to function properly.  A warning is issued, however.
3799This
3800affects both the AML interpreter and the iASL compiler. Below is
3801an example of this type of ASL code:
3802
3803      Name(DEB,0x00)
3804      Scope(DEB)
3805      {
3806
3807Fixed some reported problems with 64-bit integer support in the
3808local implementation of C library functions (clib.c)
3809
3810
38112) Linux
3812
3813Use ACPI fix map region instead of IOAPIC region, since it is
3814undefined in non-SMP.
3815
3816Ensure that the SCI has the proper polarity and trigger, even on
3817systems that do not have an interrupt override entry in the MADT.
3818
38192.5 big driver reorganization (Pat Mochel)
3820
3821Use early table mapping code from acpitable.c (Andi Kleen)
3822
3823New blacklist entries (Andi Kleen)
3824
3825Blacklist improvements. Split blacklist code out into a separate
3826file. Move checking the blacklist to very early. Previously, we
3827would use ACPI tables, and then halfway through init, check the
3828blacklist -- too late. Now, it's early enough to completely fall-
3829back to non-ACPI.
3830
3831
38323) iASL Compiler/Disassembler version 20020918:
3833
3834Fixed a problem where the typechecking code didn't know that an
3835alias could point to a method.  In other words, aliases were not
3836being dereferenced during typechecking.
3837
3838
3839----------------------------------------
384029 August 2002.  Summary of changes for this release.
3841
38421) ACPI CA Core Subsystem Version 20020829:
3843
3844If the target of a Scope() operator already exists, it must be an
3845object type that actually opens a scope -- such as a Device,
3846Method, Scope, etc.  This is a fatal runtime error.  Similar
3847error
3848check has been added to the iASL compiler also.
3849
3850Tightened up the namespace load to disallow multiple names in the
3851same scope.  This previously was allowed if both objects were of
3852the same type.  (i.e., a lookup was the same as entering a new
3853name).
3854
3855
38562) Linux
3857
3858Ensure that the ACPI interrupt has the proper trigger and
3859polarity.
3860
3861local_irq_disable is extraneous. (Matthew Wilcox)
3862
3863Make "acpi=off" actually do what it says, and not use the ACPI
3864interpreter *or* the tables.
3865
3866Added arch-neutral support for parsing SLIT and SRAT tables
3867(Kochi
3868Takayoshi)
3869
3870
38713) iASL Compiler/Disassembler  Version 20020829:
3872
3873Implemented namepath optimization for name declarations.  For
3874example, a declaration like "Method (\_SB_.ABCD)" would get
3875optimized to "Method (ABCD)" if the declaration is within the
3876\_SB_ scope.  This optimization is in addition to the named
3877reference path optimization first released in the previous
3878version. This would seem to complete all possible optimizations
3879for namepaths within the ASL/AML.
3880
3881If the target of a Scope() operator already exists, it must be an
3882object type that actually opens a scope -- such as a Device,
3883Method, Scope, etc.
3884
3885Implemented a check and warning for unreachable code in the same
3886block below a Return() statement.
3887
3888Fixed a problem where the listing file was not generated if the
3889compiler aborted if the maximum error count was exceeded (200).
3890
3891Fixed a problem where the typechecking of method return values
3892was
3893broken.  This includes the check for a return value when the
3894method is invoked as a TermArg (a return value is expected.)
3895
3896Fixed a reported problem where EOF conditions during a quoted
3897string or comment caused a fault.
3898
3899
3900----------------------------------------
390115 August 2002.  Summary of changes for this release.
3902
39031) ACPI CA Core Subsystem Version 20020815:
3904
3905Fixed a reported problem where a Store to a method argument that
3906contains a reference did not perform the indirect store
3907correctly.
3908This problem was created during the conversion to the new
3909reference object model - the indirect store to a method argument
3910code was not updated to reflect the new model.
3911
3912Reworked the ACPI mode change code to better conform to ACPI 2.0,
3913handle corner cases, and improve code legibility (Kochi
3914Takayoshi)
3915
3916Fixed a problem with the pathname parsing for the carat (^)
3917prefix.  The heavy use of the carat operator by the new namepath
3918optimization in the iASL compiler uncovered a problem with the
3919AML
3920interpreter handling of this prefix.  In the case where one or
3921more carats precede a single nameseg, the nameseg was treated as
3922standalone and the search rule (to root) was inadvertently
3923applied.  This could cause both the iASL compiler and the
3924interpreter to find the wrong object or to miss the error that
3925should occur if the object does not exist at that exact pathname.
3926
3927Found and fixed the problem where the HP Pavilion DSDT would not
3928load.  This was a relatively minor tweak to the table loading
3929code
3930(a problem caused by the unexpected encounter with a method
3931invocation not within a control method), but it does not solve
3932the
3933overall issue of the execution of AML code at the table level.
3934This investigation is still ongoing.
3935
3936Code and Data Size: Current core subsystem library sizes are
3937shown
3938below.  These are the code and data sizes for the acpica.lib
3939produced by the Microsoft Visual C++ 6.0 compiler, and these
3940values do not include any ACPI driver or OSPM code.  The debug
3941version of the code includes the debug output trace mechanism and
3942has a larger code and data size.  Note that these values will
3943vary
3944depending on the efficiency of the compiler and the compiler
3945options used during generation.
3946
3947  Previous Release
3948    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
3949    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
3950  Current Release:
3951    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
3952    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
3953
3954
39552) Linux
3956
3957Remove redundant slab.h include (Brad Hards)
3958
3959Fix several bugs in thermal.c (Herbert Nachtnebel)
3960
3961Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
3962
3963Change acpi_system_suspend to use updated irq functions (Pavel
3964Machek)
3965
3966Export acpi_get_firmware_table (Matthew Wilcox)
3967
3968Use proper root proc entry for ACPI (Kochi Takayoshi)
3969
3970Fix early-boot table parsing (Bjorn Helgaas)
3971
3972
39733) iASL Compiler/Disassembler
3974
3975Reworked the compiler options to make them more consistent and to
3976use two-letter options where appropriate.  We were running out of
3977sensible letters.   This may break some makefiles, so check the
3978current options list by invoking the compiler with no parameters.
3979
3980Completed the design and implementation of the ASL namepath
3981optimization option for the compiler.  This option optimizes all
3982references to named objects to the shortest possible path.  The
3983first attempt tries to utilize a single nameseg (4 characters)
3984and
3985the "search-to-root" algorithm used by the interpreter.  If that
3986cannot be used (because either the name is not in the search path
3987or there is a conflict with another object with the same name),
3988the pathname is optimized using the carat prefix (usually a
3989shorter string than specifying the entire path from the root.)
3990
3991Implemented support to obtain the DSDT from the Windows registry
3992(when the disassembly option is specified with no input file).
3993Added this code as the implementation for AcpiOsTableOverride in
3994the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
3995utility) to scan memory for the DSDT to the AcpiOsTableOverride
3996function in the DOS OSL to make the disassembler truly OS
3997independent.
3998
3999Implemented a new option to disassemble and compile in one step.
4000When used without an input filename, this option will grab the
4001DSDT from the local machine, disassemble it, and compile it in
4002one
4003step.
4004
4005Added a warning message for invalid escapes (a backslash followed
4006by any character other than the allowable escapes).  This catches
4007the quoted string error "\_SB_" (which should be "\\_SB_" ).
4008Also, there are numerous instances in the ACPI specification
4009where
4010this error occurs.
4011
4012Added a compiler option to disable all optimizations.  This is
4013basically the "compatibility mode" because by using this option,
4014the AML code will come out exactly the same as other ASL
4015compilers.
4016
4017Added error messages for incorrectly ordered dependent resource
4018functions.  This includes: missing EndDependentFn macro at end of
4019dependent resource list, nested dependent function macros (both
4020start and end), and missing StartDependentFn macro.  These are
4021common errors that should be caught at compile time.
4022
4023Implemented _OSI support for the disassembler and compiler.  _OSI
4024must be included in the namespace for proper disassembly (because
4025the disassembler must know the number of arguments.)
4026
4027Added an "optimization" message type that is optional (off by
4028default).  This message is used for all optimizations - including
4029constant folding, integer optimization, and namepath
4030optimization.
4031
4032----------------------------------------
403325 July 2002.  Summary of changes for this release.
4034
4035
40361) ACPI CA Core Subsystem Version 20020725:
4037
4038The AML Disassembler has been enhanced to produce compilable ASL
4039code and has been integrated into the iASL compiler (see below)
4040as
4041well as the single-step disassembly for the AML debugger and the
4042disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
4043resource templates and macros are fully supported.  The
4044disassembler has been tested on over 30 different AML files,
4045producing identical AML when the resulting disassembled ASL file
4046is recompiled with the same ASL compiler.
4047
4048Modified the Resource Manager to allow zero interrupts and zero
4049dma channels during the GetCurrentResources call.  This was
4050causing problems on some platforms.
4051
4052Added the AcpiOsRedirectOutput interface to the OSL to simplify
4053output redirection for the AcpiOsPrintf and AcpiOsVprintf
4054interfaces.
4055
4056Code and Data Size: Current core subsystem library sizes are
4057shown
4058below.  These are the code and data sizes for the acpica.lib
4059produced by the Microsoft Visual C++ 6.0 compiler, and these
4060values do not include any ACPI driver or OSPM code.  The debug
4061version of the code includes the debug output trace mechanism and
4062has a larger code and data size.  Note that these values will
4063vary
4064depending on the efficiency of the compiler and the compiler
4065options used during generation.
4066
4067  Previous Release
4068    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
4069    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
4070  Current Release:
4071    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
4072    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
4073
4074
40752) Linux
4076
4077Fixed a panic in the EC driver (Dominik Brodowski)
4078
4079Implemented checksum of the R/XSDT itself during Linux table scan
4080(Richard Schaal)
4081
4082
40833) iASL compiler
4084
4085The AML disassembler is integrated into the compiler.  The "-d"
4086option invokes the disassembler  to completely disassemble an
4087input AML file, producing as output a text ASL file with the
4088extension ".dsl" (to avoid name collisions with existing .asl
4089source files.)  A future enhancement will allow the disassembler
4090to obtain the BIOS DSDT from the registry under Windows.
4091
4092Fixed a problem with the VendorShort and VendorLong resource
4093descriptors where an invalid AML sequence was created.
4094
4095Implemented a fix for BufferData term in the ASL parser.  It was
4096inadvertently defined twice, allowing invalid syntax to pass and
4097causing reduction conflicts.
4098
4099Fixed a problem where the Ones opcode could get converted to a
4100value of zero if "Ones" was used where a byte, word or dword
4101value
4102was expected.  The 64-bit value is now truncated to the correct
4103size with the correct value.
4104
4105
4106----------------------------------------
410702 July 2002.  Summary of changes for this release.
4108
4109
41101) ACPI CA Core Subsystem Version 20020702:
4111
4112The Table Manager code has been restructured to add several new
4113features.  Tables that are not required by the core subsystem
4114(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
4115validated in any way and are returned from AcpiGetFirmwareTable
4116if
4117requested.  The AcpiOsTableOverride interface is now called for
4118each table that is loaded by the subsystem in order to allow the
4119host to override any table it chooses.  Previously, only the DSDT
4120could be overridden.  Added one new files, tbrsdt.c and
4121tbgetall.c.
4122
4123Fixed a problem with the conversion of internal package objects
4124to
4125external objects (when a package is returned from a control
4126method.)  The return buffer length was set to zero instead of the
4127proper length of the package object.
4128
4129Fixed a reported problem with the use of the RefOf and DeRefOf
4130operators when passing reference arguments to control methods.  A
4131new type of Reference object is used internally for references
4132produced by the RefOf operator.
4133
4134Added additional error messages in the Resource Manager to
4135explain
4136AE_BAD_DATA errors when they occur during resource parsing.
4137
4138Split the AcpiEnableSubsystem into two primitives to enable a
4139finer granularity initialization sequence.  These two calls
4140should
4141be called in this order: AcpiEnableSubsystem (flags),
4142AcpiInitializeObjects (flags).  The flags parameter remains the
4143same.
4144
4145
41462) Linux
4147
4148Updated the ACPI utilities module to understand the new style of
4149fully resolved package objects that are now returned from the
4150core
4151subsystem.  This eliminates errors of the form:
4152
4153    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
4154    acpi_utils-0430 [145] acpi_evaluate_reference:
4155        Invalid element in package (not a device reference)
4156
4157The method evaluation utility uses the new buffer allocation
4158scheme instead of calling AcpiEvaluate Object twice.
4159
4160Added support for ECDT. This allows the use of the Embedded
4161Controller before the namespace has been fully initialized, which
4162is necessary for ACPI 2.0 support, and for some laptops to
4163initialize properly. (Laptops using ECDT are still rare, so only
4164limited testing was performed of the added functionality.)
4165
4166Fixed memory leaks in the EC driver.
4167
4168Eliminated a brittle code structure in acpi_bus_init().
4169
4170Eliminated the acpi_evaluate() helper function in utils.c. It is
4171no longer needed since acpi_evaluate_object can optionally
4172allocate memory for the return object.
4173
4174Implemented fix for keyboard hang when getting battery readings
4175on
4176some systems (Stephen White)
4177
4178PCI IRQ routing update (Dominik Brodowski)
4179
4180Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
4181support
4182
4183----------------------------------------
418411 June 2002.  Summary of changes for this release.
4185
4186
41871) ACPI CA Core Subsystem Version 20020611:
4188
4189Fixed a reported problem where constants such as Zero and One
4190appearing within _PRT packages were not handled correctly within
4191the resource manager code.  Originally reported against the ASL
4192compiler because the code generator now optimizes integers to
4193their minimal AML representation (i.e. AML constants if
4194possible.)
4195The _PRT code now handles all AML constant opcodes correctly
4196(Zero, One, Ones, Revision).
4197
4198Fixed a problem with the Concatenate operator in the AML
4199interpreter where a buffer result object was incorrectly marked
4200as
4201not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
4202
4203All package sub-objects are now fully resolved before they are
4204returned from the external ACPI interfaces.  This means that name
4205strings are resolved to object handles, and constant operators
4206(Zero, One, Ones, Revision) are resolved to Integers.
4207
4208Implemented immediate resolution of the AML Constant opcodes
4209(Zero, One, Ones, Revision) to Integer objects upon detection
4210within the AML stream. This has simplified and reduced the
4211generated code size of the subsystem by eliminating about 10
4212switch statements for these constants (which previously were
4213contained in Reference objects.)  The complicating issues are
4214that
4215the Zero opcode is used as a "placeholder" for unspecified
4216optional target operands and stores to constants are defined to
4217be
4218no-ops.
4219
4220Code and Data Size: Current core subsystem library sizes are
4221shown
4222below. These are the code and data sizes for the acpica.lib
4223produced by the Microsoft Visual C++ 6.0 compiler, and these
4224values do not include any ACPI driver or OSPM code.  The debug
4225version of the code includes the debug output trace mechanism and
4226has a larger code and data size.  Note that these values will
4227vary
4228depending on the efficiency of the compiler and the compiler
4229options used during generation.
4230
4231  Previous Release
4232    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
4233    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
4234  Current Release:
4235    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
4236    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
4237
4238
42392) Linux
4240
4241Added preliminary support for obtaining _TRA data for PCI root
4242bridges (Bjorn Helgaas).
4243
4244
42453) iASL Compiler Version X2046:
4246
4247Fixed a problem where the "_DDN" reserved name was defined to be
4248a
4249control method with one argument.  There are no arguments, and
4250_DDN does not have to be a control method.
4251
4252Fixed a problem with the Linux version of the compiler where the
4253source lines printed with error messages were the wrong lines.
4254This turned out to be the "LF versus CR/LF" difference between
4255Windows and Unix.  This appears to be the longstanding issue
4256concerning listing output and error messages.
4257
4258Fixed a problem with the Linux version of compiler where opcode
4259names within error messages were wrong.  This was caused by a
4260slight difference in the output of the Flex tool on Linux versus
4261Windows.
4262
4263Fixed a problem with the Linux compiler where the hex output
4264files
4265contained some garbage data caused by an internal buffer overrun.
4266
4267
4268----------------------------------------
426917 May 2002.  Summary of changes for this release.
4270
4271
42721) ACPI CA Core Subsystem Version 20020517:
4273
4274Implemented a workaround to an BIOS bug discovered on the HP
4275OmniBook where the FADT revision number and the table size are
4276inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
4277new
4278behavior is to fallback to using only the ACPI 1.0 fields of the
4279FADT if the table is too small to be a ACPI 2.0 table as claimed
4280by the revision number.  Although this is a BIOS bug, this is a
4281case where the workaround is simple enough and with no side
4282effects, so it seemed prudent to add it.  A warning message is
4283issued, however.
4284
4285Implemented minimum size checks for the fixed-length ACPI tables
4286-
4287- the FADT and FACS, as well as consistency checks between the
4288revision number and the table size.
4289
4290Fixed a reported problem in the table override support where the
4291new table pointer was incorrectly treated as a physical address
4292instead of a logical address.
4293
4294Eliminated the use of the AE_AML_ERROR exception and replaced it
4295with more descriptive codes.
4296
4297Fixed a problem where an exception would occur if an ASL Field
4298was
4299defined with no named Field Units underneath it (used by some
4300index fields).
4301
4302Code and Data Size: Current core subsystem library sizes are
4303shown
4304below.  These are the code and data sizes for the acpica.lib
4305produced by the Microsoft Visual C++ 6.0 compiler, and these
4306values do not include any ACPI driver or OSPM code.  The debug
4307version of the code includes the debug output trace mechanism and
4308has a larger code and data size.  Note that these values will
4309vary
4310depending on the efficiency of the compiler and the compiler
4311options used during generation.
4312
4313  Previous Release
4314    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
4315    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
4316  Current Release:
4317    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
4318    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
4319
4320
4321
43222) Linux
4323
4324Much work done on ACPI init (MADT and PCI IRQ routing support).
4325(Paul D. and Dominik Brodowski)
4326
4327Fix PCI IRQ-related panic on boot (Sam Revitch)
4328
4329Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
4330
4331Fix "MHz" typo (Dominik Brodowski)
4332
4333Fix RTC year 2000 issue (Dominik Brodowski)
4334
4335Preclude multiple button proc entries (Eric Brunet)
4336
4337Moved arch-specific code out of include/platform/aclinux.h
4338
43393) iASL Compiler Version X2044:
4340
4341Implemented error checking for the string used in the EISAID
4342macro
4343(Usually used in the definition of the _HID object.)  The code
4344now
4345strictly enforces the PnP format - exactly 7 characters, 3
4346uppercase letters and 4 hex digits.
4347
4348If a raw string is used in the definition of the _HID object
4349(instead of the EISAID macro), the string must contain all
4350alphanumeric characters (e.g., "*PNP0011" is not allowed because
4351of the asterisk.)
4352
4353Implemented checking for invalid use of ACPI reserved names for
4354most of the name creation operators (Name, Device, Event, Mutex,
4355OperationRegion, PowerResource, Processor, and ThermalZone.)
4356Previously, this check was only performed for control methods.
4357
4358Implemented an additional check on the Name operator to emit an
4359error if a reserved name that must be implemented in ASL as a
4360control method is used.  We know that a reserved name must be a
4361method if it is defined with input arguments.
4362
4363The warning emitted when a namespace object reference is not
4364found
4365during the cross reference phase has been changed into an error.
4366The "External" directive should be used for names defined in
4367other
4368modules.
4369
4370
43714) Tools and Utilities
4372
4373The 16-bit tools (adump16 and aexec16) have been regenerated and
4374tested.
4375
4376Fixed a problem with the output of both acpidump and adump16
4377where
4378the indentation of closing parentheses and brackets was not
4379aligned properly with the parent block.
4380
4381
4382----------------------------------------
438303 May 2002.  Summary of changes for this release.
4384
4385
43861) ACPI CA Core Subsystem Version 20020503:
4387
4388Added support a new OSL interface that allows the host operating
4389system software to override the DSDT found in the firmware -
4390AcpiOsTableOverride.  With this interface, the OSL can examine
4391the
4392version of the firmware DSDT and replace it with a different one
4393if desired.
4394
4395Added new external interfaces for accessing ACPI registers from
4396device drivers and other system software - AcpiGetRegister and
4397AcpiSetRegister.  This was simply an externalization of the
4398existing AcpiHwBitRegister interfaces.
4399
4400Fixed a regression introduced in the previous build where the
4401ASL/AML CreateField operator always returned an error,
4402"destination must be a NS Node".
4403
4404Extended the maximum time (before failure) to successfully enable
4405ACPI mode to 3 seconds.
4406
4407Code and Data Size: Current core subsystem library sizes are
4408shown
4409below.  These are the code and data sizes for the acpica.lib
4410produced by the Microsoft Visual C++ 6.0 compiler, and these
4411values do not include any ACPI driver or OSPM code.  The debug
4412version of the code includes the debug output trace mechanism and
4413has a larger code and data size.  Note that these values will
4414vary
4415depending on the efficiency of the compiler and the compiler
4416options used during generation.
4417
4418  Previous Release
4419    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
4420    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
4421  Current Release:
4422    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
4423    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
4424
4425
44262) Linux
4427
4428Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
4429free. While 3 out of 4 of our in-house systems work fine, the
4430last
4431one still hangs when testing the LAPIC timer.
4432
4433Renamed many files in 2.5 kernel release to omit "acpi_" from the
4434name.
4435
4436Added warning on boot for Presario 711FR.
4437
4438Sleep improvements (Pavel Machek)
4439
4440ACPI can now be built without CONFIG_PCI enabled.
4441
4442IA64: Fixed memory map functions (JI Lee)
4443
4444
44453) iASL Compiler Version X2043:
4446
4447Added support to allow the compiler to be integrated into the MS
4448VC++ development environment for one-button compilation of single
4449files or entire projects -- with error-to-source-line mapping.
4450
4451Implemented support for compile-time constant folding for the
4452Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
4453specification.  This allows the ASL writer to use expressions
4454instead of Integer/Buffer/String constants in terms that must
4455evaluate to constants at compile time and will also simplify the
4456emitted AML in any such sub-expressions that can be folded
4457(evaluated at compile-time.)  This increases the size of the
4458compiler significantly because a portion of the ACPI CA AML
4459interpreter is included within the compiler in order to pre-
4460evaluate constant expressions.
4461
4462
4463Fixed a problem with the "Unicode" ASL macro that caused the
4464compiler to fault.  (This macro is used in conjunction with the
4465_STR reserved name.)
4466
4467Implemented an AML opcode optimization to use the Zero, One, and
4468Ones opcodes where possible to further reduce the size of integer
4469constants and thus reduce the overall size of the generated AML
4470code.
4471
4472Implemented error checking for new reserved terms for ACPI
4473version
44742.0A.
4475
4476Implemented the -qr option to display the current list of ACPI
4477reserved names known to the compiler.
4478
4479Implemented the -qc option to display the current list of ASL
4480operators that are allowed within constant expressions and can
4481therefore be folded at compile time if the operands are
4482constants.
4483
4484
44854) Documentation
4486
4487Updated the Programmer's Reference for new interfaces, data
4488types,
4489and memory allocation model options.
4490
4491Updated the iASL Compiler User Reference to apply new format and
4492add information about new features and options.
4493
4494----------------------------------------
449519 April 2002.  Summary of changes for this release.
4496
44971) ACPI CA Core Subsystem Version 20020419:
4498
4499The source code base for the Core Subsystem has been completely
4500cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
4501versions.  The Lint option files used are included in the
4502/acpi/generate/lint directory.
4503
4504Implemented enhanced status/error checking across the entire
4505Hardware manager subsystem.  Any hardware errors (reported from
4506the OSL) are now bubbled up and will abort a running control
4507method.
4508
4509Fixed a problem where the per-ACPI-table integer width (32 or 64)
4510was stored only with control method nodes, causing a fault when
4511non-control method code was executed during table loading.  The
4512solution implemented uses a global variable to indicate table
4513width across the entire ACPI subsystem.  Therefore, ACPI CA does
4514not support mixed integer widths across different ACPI tables
4515(DSDT, SSDT).
4516
4517Fixed a problem where NULL extended fields (X fields) in an ACPI
45182.0 ACPI FADT caused the table load to fail.  Although the
4519existing ACPI specification is a bit fuzzy on this topic, the new
4520behavior is to fall back on a ACPI 1.0 field if the corresponding
4521ACPI 2.0 X field is zero (even though the table revision
4522indicates
4523a full ACPI 2.0 table.)  The ACPI specification will be updated
4524to
4525clarify this issue.
4526
4527Fixed a problem with the SystemMemory operation region handler
4528where memory was always accessed byte-wise even if the AML-
4529specified access width was larger than a byte.  This caused
4530problems on systems with memory-mapped I/O.  Memory is now
4531accessed with the width specified.  On systems that do not
4532support
4533non-aligned transfers, a check is made to guarantee proper
4534address
4535alignment before proceeding in order to avoid an AML-caused
4536alignment fault within the kernel.
4537
4538
4539Fixed a problem with the ExtendedIrq resource where only one byte
4540of the 4-byte Irq field was extracted.
4541
4542Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
4543function was out of date and required a rewrite.
4544
4545Code and Data Size: Current core subsystem library sizes are
4546shown
4547below.  These are the code and data sizes for the acpica.lib
4548produced by the Microsoft Visual C++ 6.0 compiler, and these
4549values do not include any ACPI driver or OSPM code.  The debug
4550version of the code includes the debug output trace mechanism and
4551has a larger code and data size.  Note that these values will
4552vary
4553depending on the efficiency of the compiler and the compiler
4554options used during generation.
4555
4556  Previous Release
4557    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
4558    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
4559  Current Release:
4560    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
4561    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
4562
4563
45642) Linux
4565
4566PCI IRQ routing fixes (Dominik Brodowski)
4567
4568
45693) iASL Compiler Version X2042:
4570
4571Implemented an additional compile-time error check for a field
4572unit whose size + minimum access width would cause a run-time
4573access beyond the end-of-region.  Previously, only the field size
4574itself was checked.
4575
4576The Core subsystem and iASL compiler now share a common parse
4577object in preparation for compile-time evaluation of the type
45783/4/5 ASL operators.
4579
4580
4581----------------------------------------
4582Summary of changes for this release: 03_29_02
4583
45841) ACPI CA Core Subsystem Version 20020329:
4585
4586Implemented support for late evaluation of TermArg operands to
4587Buffer and Package objects.  This allows complex expressions to
4588be
4589used in the declarations of these object types.
4590
4591Fixed an ACPI 1.0 compatibility issue when reading Fields. In
4592ACPI
45931.0, if the field was larger than 32 bits, it was returned as a
4594buffer - otherwise it was returned as an integer.  In ACPI 2.0,
4595the field is returned as a buffer only if the field is larger
4596than
459764 bits.  The TableRevision is now considered when making this
4598conversion to avoid incompatibility with existing ASL code.
4599
4600Implemented logical addressing for AcpiOsGetRootPointer.  This
4601allows an RSDP with either a logical or physical address.  With
4602this support, the host OS can now override all ACPI tables with
4603one logical RSDP.  Includes implementation of  "typed" pointer
4604support to allow a common data type for both physical and logical
4605pointers internally.  This required a change to the
4606AcpiOsGetRootPointer interface.
4607
4608Implemented the use of ACPI 2.0 Generic Address Structures for
4609all
4610GPE, Fixed Event, and PM Timer I/O.  This allows the use of
4611memory
4612mapped I/O for these ACPI features.
4613
4614Initialization now ignores not only non-required tables (All
4615tables other than the FADT, FACS, DSDT, and SSDTs), but also does
4616not validate the table headers of unrecognized tables.
4617
4618Fixed a problem where a notify handler could only be
4619installed/removed on an object of type Device.  All "notify"
4620objects are now supported -- Devices, Processor, Power, and
4621Thermal.
4622
4623Removed most verbosity from the ACPI_DB_INFO debug level.  Only
4624critical information is returned when this debug level is
4625enabled.
4626
4627Code and Data Size: Current core subsystem library sizes are
4628shown
4629below.  These are the code and data sizes for the acpica.lib
4630produced by the Microsoft Visual C++ 6.0 compiler, and these
4631values do not include any ACPI driver or OSPM code.  The debug
4632version of the code includes the debug output trace mechanism and
4633has a larger code and data size.  Note that these values will
4634vary
4635depending on the efficiency of the compiler and the compiler
4636options used during generation.
4637
4638  Previous Release
4639    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
4640    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
4641  Current Release:
4642    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
4643    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
4644
4645
46462) Linux:
4647
4648The processor driver (acpi_processor.c) now fully supports ACPI
46492.0-based processor performance control (e.g. Intel(R)
4650SpeedStep(TM) technology) Note that older laptops that only have
4651the Intel "applet" interface are not supported through this.  The
4652'limit' and 'performance' interface (/proc) are fully functional.
4653[Note that basic policy for controlling performance state
4654transitions will be included in the next version of ospmd.]  The
4655idle handler was modified to more aggressively use C2, and PIIX4
4656errata handling underwent a complete overhaul (big thanks to
4657Dominik Brodowski).
4658
4659Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
4660based devices in the ACPI namespace are now dynamically bound
4661(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
4662This allows, among other things, ACPI to resolve bus numbers for
4663subordinate PCI bridges.
4664
4665Enhanced PCI IRQ routing to get the proper bus number for _PRT
4666entries defined underneath PCI bridges.
4667
4668Added IBM 600E to bad bios list due to invalid _ADR value for
4669PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
4670
4671In the process of adding full MADT support (e.g. IOAPIC) for IA32
4672(acpi.c, mpparse.c) -- stay tuned.
4673
4674Added back visual differentiation between fixed-feature and
4675control-method buttons in dmesg.  Buttons are also subtyped (e.g.
4676button/power/PWRF) to simplify button identification.
4677
4678We no longer use -Wno-unused when compiling debug. Please ignore
4679any "_THIS_MODULE defined but not used" messages.
4680
4681Can now shut down the system using "magic sysrq" key.
4682
4683
46843) iASL Compiler version 2041:
4685
4686Fixed a problem where conversion errors for hex/octal/decimal
4687constants were not reported.
4688
4689Implemented a fix for the General Register template Address
4690field.
4691This field was 8 bits when it should be 64.
4692
4693Fixed a problem where errors/warnings were no longer being
4694emitted
4695within the listing output file.
4696
4697Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
4698exactly 4 characters, alphanumeric only.
4699
4700
4701
4702
4703----------------------------------------
4704Summary of changes for this release: 03_08_02
4705
4706
47071) ACPI CA Core Subsystem Version 20020308:
4708
4709Fixed a problem with AML Fields where the use of the "AccessAny"
4710keyword could cause an interpreter error due to attempting to
4711read
4712or write beyond the end of the parent Operation Region.
4713
4714Fixed a problem in the SystemMemory Operation Region handler
4715where
4716an attempt was made to map memory beyond the end of the region.
4717This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
4718errors on some Linux systems.
4719
4720Fixed a problem where the interpreter/namespace "search to root"
4721algorithm was not functioning for some object types.  Relaxed the
4722internal restriction on the search to allow upsearches for all
4723external object types as well as most internal types.
4724
4725
47262) Linux:
4727
4728We now use safe_halt() macro versus individual calls to sti |
4729hlt.
4730
4731Writing to the processor limit interface should now work. "echo
47321"
4733will increase the limit, 2 will decrease, and 0 will reset to the
4734default.
4735
4736
47373) ASL compiler:
4738
4739Fixed segfault on Linux version.
4740
4741
4742----------------------------------------
4743Summary of changes for this release: 02_25_02
4744
47451) ACPI CA Core Subsystem:
4746
4747
4748Fixed a problem where the GPE bit masks were not initialized
4749properly, causing erratic GPE behavior.
4750
4751Implemented limited support for multiple calling conventions.
4752The
4753code can be generated with either the VPL (variable parameter
4754list, or "C") convention, or the FPL (fixed parameter list, or
4755"Pascal") convention.  The core subsystem is about 3.4% smaller
4756when generated with FPL.
4757
4758
47592) Linux
4760
4761Re-add some /proc/acpi/event functionality that was lost during
4762the rewrite
4763
4764Resolved issue with /proc events for fixed-feature buttons
4765showing
4766up as the system device.
4767
4768Fixed checks on C2/C3 latencies to be inclusive of maximum
4769values.
4770
4771Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
4772
4773Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
4774
4775Fixed limit interface & usage to fix bugs with passive cooling
4776hysterisis.
4777
4778Restructured PRT support.
4779
4780
4781----------------------------------------
4782Summary of changes for this label: 02_14_02
4783
4784
47851) ACPI CA Core Subsystem:
4786
4787Implemented support in AcpiLoadTable to allow loading of FACS and
4788FADT tables.
4789
4790Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
4791been removed.  All 64-bit platforms should be migrated to the
4792ACPI
47932.0 tables.  The actbl71.h header has been removed from the
4794source
4795tree.
4796
4797All C macros defined within the subsystem have been prefixed with
4798"ACPI_" to avoid collision with other system include files.
4799
4800Removed the return value for the two AcpiOsPrint interfaces,
4801since
4802it is never used and causes lint warnings for ignoring the return
4803value.
4804
4805Added error checking to all internal mutex acquire and release
4806calls.  Although a failure from one of these interfaces is
4807probably a fatal system error, these checks will cause the
4808immediate abort of the currently executing method or interface.
4809
4810Fixed a problem where the AcpiSetCurrentResources interface could
4811fault.  This was a side effect of the deployment of the new
4812memory
4813allocation model.
4814
4815Fixed a couple of problems with the Global Lock support
4816introduced
4817in the last major build.  The "common" (1.0/2.0) internal FACS
4818was
4819being overwritten with the FACS signature and clobbering the
4820Global Lock pointer.  Also, the actual firmware FACS was being
4821unmapped after construction of the "common" FACS, preventing
4822access to the actual Global Lock field within it.  The "common"
4823internal FACS is no longer installed as an actual ACPI table; it
4824is used simply as a global.
4825
4826Code and Data Size: Current core subsystem library sizes are
4827shown
4828below.  These are the code and data sizes for the acpica.lib
4829produced by the Microsoft Visual C++ 6.0 compiler, and these
4830values do not include any ACPI driver or OSPM code.  The debug
4831version of the code includes the debug output trace mechanism and
4832has a larger code and data size.  Note that these values will
4833vary
4834depending on the efficiency of the compiler and the compiler
4835options used during generation.
4836
4837  Previous Release (02_07_01)
4838    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
4839    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
4840  Current Release:
4841    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
4842    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
4843
4844
48452) Linux
4846
4847Updated Linux-specific code for core macro and OSL interface
4848changes described above.
4849
4850Improved /proc/acpi/event. It now can be opened only once and has
4851proper poll functionality.
4852
4853Fixed and restructured power management (acpi_bus).
4854
4855Only create /proc "view by type" when devices of that class
4856exist.
4857
4858Fixed "charging/discharging" bug (and others) in acpi_battery.
4859
4860Improved thermal zone code.
4861
4862
48633) ASL Compiler, version X2039:
4864
4865
4866Implemented the new compiler restriction on ASL String hex/octal
4867escapes to non-null, ASCII values.  An error results if an
4868invalid
4869value is used.  (This will require an ACPI 2.0 specification
4870change.)
4871
4872AML object labels that are output to the optional C and ASM
4873source
4874are now prefixed with both the ACPI table signature and table ID
4875to help guarantee uniqueness within a large BIOS project.
4876
4877
4878----------------------------------------
4879Summary of changes for this label: 02_01_02
4880
48811) ACPI CA Core Subsystem:
4882
4883ACPI 2.0 support is complete in the entire Core Subsystem and the
4884ASL compiler. All new ACPI 2.0 operators are implemented and all
4885other changes for ACPI 2.0 support are complete.  With
4886simultaneous code and data optimizations throughout the
4887subsystem,
4888ACPI 2.0 support has been implemented with almost no additional
4889cost in terms of code and data size.
4890
4891Implemented a new mechanism for allocation of return buffers.  If
4892the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
4893be allocated on behalf of the caller.  Consolidated all return
4894buffer validation and allocation to a common procedure.  Return
4895buffers will be allocated via the primary OSL allocation
4896interface
4897since it appears that a separate pool is not needed by most
4898users.
4899If a separate pool is required for these buffers, the caller can
4900still use the original mechanism and pre-allocate the buffer(s).
4901
4902Implemented support for string operands within the DerefOf
4903operator.
4904
4905Restructured the Hardware and Event managers to be table driven,
4906simplifying the source code and reducing the amount of generated
4907code.
4908
4909Split the common read/write low-level ACPI register bitfield
4910procedure into a separate read and write, simplifying the code
4911considerably.
4912
4913Obsoleted the AcpiOsCallocate OSL interface.  This interface was
4914used only a handful of times and didn't have enough critical mass
4915for a separate interface.  Replaced with a common calloc
4916procedure
4917in the core.
4918
4919Fixed a reported problem with the GPE number mapping mechanism
4920that allows GPE1 numbers to be non-contiguous with GPE0.
4921Reorganized the GPE information and shrunk a large array that was
4922originally large enough to hold info for all possible GPEs (256)
4923to simply large enough to hold all GPEs up to the largest GPE
4924number on the machine.
4925
4926Fixed a reported problem with resource structure alignment on 64-
4927bit platforms.
4928
4929Changed the AcpiEnableEvent and AcpiDisableEvent external
4930interfaces to not require any flags for the common case of
4931enabling/disabling a GPE.
4932
4933Implemented support to allow a "Notify" on a Processor object.
4934
4935Most TBDs in comments within the source code have been resolved
4936and eliminated.
4937
4938Fixed a problem in the interpreter where a standalone parent
4939prefix (^) was not handled correctly in the interpreter and
4940debugger.
4941
4942Removed obsolete and unnecessary GPE save/restore code.
4943
4944Implemented Field support in the ASL Load operator.  This allows
4945a
4946table to be loaded from a named field, in addition to loading a
4947table directly from an Operation Region.
4948
4949Implemented timeout and handle support in the external Global
4950Lock
4951interfaces.
4952
4953Fixed a problem in the AcpiDump utility where pathnames were no
4954longer being generated correctly during the dump of named
4955objects.
4956
4957Modified the AML debugger to give a full display of if/while
4958predicates instead of just one AML opcode at a time.  (The
4959predicate can have several nested ASL statements.)  The old
4960method
4961was confusing during single stepping.
4962
4963Code and Data Size: Current core subsystem library sizes are
4964shown
4965below. These are the code and data sizes for the acpica.lib
4966produced by the Microsoft Visual C++ 6.0 compiler, and these
4967values do not include any ACPI driver or OSPM code.  The debug
4968version of the code includes the debug output trace mechanism and
4969has a larger code and data size.  Note that these values will
4970vary
4971depending on the efficiency of the compiler and the compiler
4972options used during generation.
4973
4974  Previous Release (12_18_01)
4975     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
4976     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
4977   Current Release:
4978     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
4979     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
4980
49812) Linux
4982
4983 Implemented fix for PIIX reverse throttling errata (Processor
4984driver)
4985
4986Added new Limit interface (Processor and Thermal drivers)
4987
4988New thermal policy (Thermal driver)
4989
4990Many updates to /proc
4991
4992Battery "low" event support (Battery driver)
4993
4994Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
4995
4996IA32 - IA64 initialization unification, no longer experimental
4997
4998Menuconfig options redesigned
4999
50003) ASL Compiler, version X2037:
5001
5002Implemented several new output features to simplify integration
5003of
5004AML code into  firmware: 1) Output the AML in C source code with
5005labels for each named ASL object.  The    original ASL source
5006code
5007is interleaved as C comments. 2) Output the AML in ASM source
5008code
5009with labels and interleaved ASL    source. 3) Output the AML in
5010raw hex table form, in either C or ASM.
5011
5012Implemented support for optional string parameters to the
5013LoadTable operator.
5014
5015Completed support for embedded escape sequences within string
5016literals.  The compiler now supports all single character escapes
5017as well as the Octal and Hex escapes.  Note: the insertion of a
5018null byte into a string literal (via the hex/octal escape) causes
5019the string to be immediately terminated.  A warning is issued.
5020
5021Fixed a problem where incorrect AML was generated for the case
5022where an ASL namepath consists of a single parent prefix (
5023
5024) with no trailing name segments.
5025
5026The compiler has been successfully generated with a 64-bit C
5027compiler.
5028
5029
5030
5031
5032----------------------------------------
5033Summary of changes for this label: 12_18_01
5034
50351) Linux
5036
5037Enhanced blacklist with reason and severity fields. Any table's
5038signature may now be used to identify a blacklisted system.
5039
5040Call _PIC control method to inform the firmware which interrupt
5041model the OS is using. Turn on any disabled link devices.
5042
5043Cleaned up busmgr /proc error handling (Andreas Dilger)
5044
5045 2) ACPI CA Core Subsystem:
5046
5047Implemented ACPI 2.0 semantics for the "Break" operator (Exit
5048from
5049while loop)
5050
5051Completed implementation of the ACPI 2.0 "Continue",
5052"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
5053operators.  All new ACPI 2.0 operators are now implemented in
5054both
5055the ASL compiler and the AML interpreter.  The only remaining
5056ACPI
50572.0 task is support for the String data type in the DerefOf
5058operator.  Fixed a problem with AcquireMutex where the status
5059code
5060was lost if the caller had to actually wait for the mutex.
5061
5062Increased the maximum ASL Field size from 64K bits to 4G bits.
5063
5064Completed implementation of the external Global Lock interfaces -
5065-
5066AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
5067Handler parameters were added.
5068
5069Completed another pass at removing warnings and issues when
5070compiling with 64-bit compilers.  The code now compiles cleanly
5071with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
5072add and subtract (diff) macros have changed considerably.
5073
5074Created and deployed a new ACPI_SIZE type that is 64-bits wide on
507564-bit platforms, 32-bits on all others.  This type is used
5076wherever memory allocation and/or the C sizeof() operator is
5077used,
5078and affects the OSL memory allocation interfaces AcpiOsAllocate
5079and AcpiOsCallocate.
5080
5081Implemented sticky user breakpoints in the AML debugger.
5082
5083Code and Data Size: Current core subsystem library sizes are
5084shown
5085below. These are the code and data sizes for the acpica.lib
5086produced by the Microsoft Visual C++ 6.0 compiler, and these
5087values do not include any ACPI driver or OSPM code.  The debug
5088version of the code includes the debug output trace mechanism and
5089has a larger code and data size. Note that these values will vary
5090depending on the efficiency of the compiler and the compiler
5091options used during generation.
5092
5093  Previous Release (12_05_01)
5094     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
5095     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
5096   Current Release:
5097     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
5098     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
5099
5100 3) ASL Compiler, version X2034:
5101
5102Now checks for (and generates an error if detected) the use of a
5103Break or Continue statement without an enclosing While statement.
5104
5105Successfully generated the compiler with the Intel 64-bit C
5106compiler.
5107
5108 ----------------------------------------
5109Summary of changes for this label: 12_05_01
5110
5111 1) ACPI CA Core Subsystem:
5112
5113The ACPI 2.0 CopyObject operator is fully implemented.  This
5114operator creates a new copy of an object (and is also used to
5115bypass the "implicit conversion" mechanism of the Store
5116operator.)
5117
5118The ACPI 2.0 semantics for the SizeOf operator are fully
5119implemented.  The change is that performing a SizeOf on a
5120reference object causes an automatic dereference of the object to
5121tha actual value before the size is evaluated. This behavior was
5122undefined in ACPI 1.0.
5123
5124The ACPI 2.0 semantics for the Extended IRQ resource descriptor
5125have been implemented.  The interrupt polarity and mode are now
5126independently set.
5127
5128Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
5129appearing in Package objects were not properly converted to
5130integers when the internal Package was converted to an external
5131object (via the AcpiEvaluateObject interface.)
5132
5133Fixed a problem with the namespace object deletion mechanism for
5134objects created by control methods.  There were two parts to this
5135problem: 1) Objects created during the initialization phase
5136method
5137parse were not being deleted, and 2) The object owner ID
5138mechanism
5139to track objects was broken.
5140
5141Fixed a problem where the use of the ASL Scope operator within a
5142control method would result in an invalid opcode exception.
5143
5144Fixed a problem introduced in the previous label where the buffer
5145length required for the _PRT structure was not being returned
5146correctly.
5147
5148Code and Data Size: Current core subsystem library sizes are
5149shown
5150below. These are the code and data sizes for the acpica.lib
5151produced by the Microsoft Visual C++ 6.0 compiler, and these
5152values do not include any ACPI driver or OSPM code.  The debug
5153version of the code includes the debug output trace mechanism and
5154has a larger code and data size.  Note that these values will
5155vary
5156depending on the efficiency of the compiler and the compiler
5157options used during generation.
5158
5159  Previous Release (11_20_01)
5160     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
5161     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
5162
5163  Current Release:
5164     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
5165     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
5166
5167 2) Linux:
5168
5169Updated all files to apply cleanly against 2.4.16.
5170
5171Added basic PCI Interrupt Routing Table (PRT) support for IA32
5172(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
5173version supports both static and dyanmic PRT entries, but dynamic
5174entries are treated as if they were static (not yet
5175reconfigurable).  Architecture- specific code to use this data is
5176absent on IA32 but should be available shortly.
5177
5178Changed the initialization sequence to start the ACPI interpreter
5179(acpi_init) prior to initialization of the PCI driver (pci_init)
5180in init/main.c.  This ordering is required to support PRT and
5181facilitate other (future) enhancement.  A side effect is that the
5182ACPI bus driver and certain device drivers can no longer be
5183loaded
5184as modules.
5185
5186Modified the 'make menuconfig' options to allow PCI Interrupt
5187Routing support to be included without the ACPI Bus and other
5188device drivers.
5189
5190 3) ASL Compiler, version X2033:
5191
5192Fixed some issues with the use of the new CopyObject and
5193DataTableRegion operators.  Both are fully functional.
5194
5195 ----------------------------------------
5196Summary of changes for this label: 11_20_01
5197
5198 20 November 2001.  Summary of changes for this release.
5199
5200 1) ACPI CA Core Subsystem:
5201
5202Updated Index support to match ACPI 2.0 semantics.  Storing a
5203Integer, String, or Buffer to an Index of a Buffer will store
5204only
5205the least-significant byte of the source to the Indexed buffer
5206byte.  Multiple writes are not performed.
5207
5208Fixed a problem where the access type used in an AccessAs ASL
5209operator was not recorded correctly into the field object.
5210
5211Fixed a problem where ASL Event objects were created in a
5212signalled state. Events are now created in an unsignalled state.
5213
5214The internal object cache is now purged after table loading and
5215initialization to reduce the use of dynamic kernel memory -- on
5216the assumption that object use is greatest during the parse phase
5217of the entire table (versus the run-time use of individual
5218control
5219methods.)
5220
5221ACPI 2.0 variable-length packages are now fully operational.
5222
5223Code and Data Size: Code and Data optimizations have permitted
5224new
5225feature development with an actual reduction in the library size.
5226Current core subsystem library sizes are shown below.  These are
5227the code and data sizes for the acpica.lib produced by the
5228Microsoft Visual C++ 6.0 compiler, and these values do not
5229include
5230any ACPI driver or OSPM code.  The debug version of the code
5231includes the debug output trace mechanism and has a larger code
5232and data size.  Note that these values will vary depending on the
5233efficiency of the compiler and the compiler options used during
5234generation.
5235
5236  Previous Release (11_09_01):
5237     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
5238     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
5239
5240  Current Release:
5241     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
5242     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
5243
5244 2) Linux:
5245
5246Enhanced the ACPI boot-time initialization code to allow the use
5247of Local APIC tables for processor enumeration on IA-32, and to
5248pave the way for a fully MPS-free boot (on SMP systems) in the
5249near future.  This functionality replaces
5250arch/i386/kernel/acpitables.c, which was introduced in an earlier
52512.4.15-preX release.  To enable this feature you must add
5252"acpi_boot=on" to the kernel command line -- see the help entry
5253for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
5254in
5255the works...
5256
5257Restructured the configuration options to allow boot-time table
5258parsing support without inclusion of the ACPI Interpreter (and
5259other) code.
5260
5261NOTE: This release does not include fixes for the reported
5262events,
5263power-down, and thermal passive cooling issues (coming soon).
5264
5265 3) ASL Compiler:
5266
5267Added additional typechecking for Fields within restricted access
5268Operation Regions.  All fields within EC and CMOS regions must be
5269declared with ByteAcc. All fields withing SMBus regions must be
5270declared with the BufferAcc access type.
5271
5272Fixed a problem where the listing file output of control methods
5273no longer interleaved the actual AML code with the ASL source
5274code.
5275
5276
5277
5278----------------------------------------
5279Summary of changes for this label: 11_09_01
5280
52811) ACPI CA Core Subsystem:
5282
5283Implemented ACPI 2.0-defined support for writes to fields with a
5284Buffer, String, or Integer source operand that is smaller than
5285the
5286target field. In these cases, the source operand is zero-extended
5287to fill the target field.
5288
5289Fixed a problem where a Field starting bit offset (within the
5290parent operation region) was calculated incorrectly if the
5291alignment of the field differed from the access width.  This
5292affected CreateWordField, CreateDwordField, CreateQwordField, and
5293possibly other fields that use the "AccessAny" keyword.
5294
5295Fixed a problem introduced in the 11_02_01 release where indirect
5296stores through method arguments did not operate correctly.
5297
52982) Linux:
5299
5300Implemented boot-time ACPI table parsing support
5301(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
5302facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
5303legacy BIOS interfaces (e.g. MPS) for the configuration of system
5304processors, memory, and interrupts during setup_arch().  Note
5305that
5306this patch does not include the required architecture-specific
5307changes required to apply this information -- subsequent patches
5308will be posted for both IA32 and IA64 to achieve this.
5309
5310Added low-level sleep support for IA32 platforms, courtesy of Pat
5311Mochel. This allows IA32 systems to transition to/from various
5312sleeping states (e.g. S1, S3), although the lack of a centralized
5313driver model and power-manageable drivers will prevent its
5314(successful) use on most systems.
5315
5316Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
5317submenu, unified IA32 and IA64 options, added new "Boot using
5318ACPI
5319tables" option, etc.
5320
5321Increased the default timeout for the EC driver from 1ms to 10ms
5322(1000 cycles of 10us) to try to address AE_TIME errors during EC
5323transactions.
5324
5325 ----------------------------------------
5326Summary of changes for this label: 11_02_01
5327
53281) ACPI CA Core Subsystem:
5329
5330ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
5331(QWordAcc keyword). All ACPI 2.0 64-bit support is now
5332implemented.
5333
5334OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
5335changes to support ACPI 2.0 Qword field access.  Read/Write
5336PciConfiguration(), Read/Write Memory(), and Read/Write Port()
5337now
5338accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
5339the value parameter for the address space handler interface is
5340now
5341an ACPI_INTEGER.  OSL implementations of these interfaces must
5342now
5343handle the case where the Width parameter is 64.
5344
5345Index Fields: Fixed a problem where unaligned bit assembly and
5346disassembly for IndexFields was not supported correctly.
5347
5348Index and Bank Fields:  Nested Index and Bank Fields are now
5349supported. During field access, a check is performed to ensure
5350that the value written to an Index or Bank register is not out of
5351the range of the register.  The Index (or Bank) register is
5352written before each access to the field data. Future support will
5353include allowing individual IndexFields to be wider than the
5354DataRegister width.
5355
5356Fields: Fixed a problem where the AML interpreter was incorrectly
5357attempting to write beyond the end of a Field/OpRegion.  This was
5358a boundary case that occurred when a DWORD field was written to a
5359BYTE access OpRegion, forcing multiple writes and causing the
5360interpreter to write one datum too many.
5361
5362Fields: Fixed a problem with Field/OpRegion access where the
5363starting bit address of a field was incorrectly calculated if the
5364current access type was wider than a byte (WordAcc, DwordAcc, or
5365QwordAcc).
5366
5367Fields: Fixed a problem where forward references to individual
5368FieldUnits (individual Field names within a Field definition)
5369were
5370not resolved during the AML table load.
5371
5372Fields: Fixed a problem where forward references from a Field
5373definition to the parent Operation Region definition were not
5374resolved during the AML table load.
5375
5376Fields: Duplicate FieldUnit names within a scope are now detected
5377during AML table load.
5378
5379Acpi Interfaces: Fixed a problem where the AcpiGetName()
5380interface
5381returned an incorrect name for the root node.
5382
5383Code and Data Size: Code and Data optimizations have permitted
5384new
5385feature development with an actual reduction in the library size.
5386Current core subsystem library sizes are shown below.  These are
5387the code and data sizes for the acpica.lib produced by the
5388Microsoft Visual C++ 6.0 compiler, and these values do not
5389include
5390any ACPI driver or OSPM code.  The debug version of the code
5391includes the debug output trace mechanism and has a larger code
5392and data size.  Note that these values will vary depending on the
5393efficiency of the compiler and the compiler options used during
5394generation.
5395
5396  Previous Release (10_18_01):
5397     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
5398     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
5399
5400  Current Release:
5401     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
5402     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
5403
5404 2) Linux:
5405
5406Improved /proc processor output (Pavel Machek) Re-added
5407MODULE_LICENSE("GPL") to all modules.
5408
5409 3) ASL Compiler version X2030:
5410
5411Duplicate FieldUnit names within a scope are now detected and
5412flagged as errors.
5413
5414 4) Documentation:
5415
5416Programmer Reference updated to reflect OSL and address space
5417handler interface changes described above.
5418
5419----------------------------------------
5420Summary of changes for this label: 10_18_01
5421
5422ACPI CA Core Subsystem:
5423
5424Fixed a problem with the internal object reference count
5425mechanism
5426that occasionally caused premature object deletion. This resolves
5427all of the outstanding problem reports where an object is deleted
5428in the middle of an interpreter evaluation.  Although this
5429problem
5430only showed up in rather obscure cases, the solution to the
5431problem involved an adjustment of all reference counts involving
5432objects attached to namespace nodes.
5433
5434Fixed a problem with Field support in the interpreter where
5435writing to an aligned field whose length is an exact multiple (2
5436or greater) of the field access granularity would cause an
5437attempt
5438to write beyond the end of the field.
5439
5440The top level AML opcode execution functions within the
5441interpreter have been renamed with a more meaningful and
5442consistent naming convention.  The modules exmonad.c and
5443exdyadic.c were eliminated.  New modules are exoparg1.c,
5444exoparg2.c, exoparg3.c, and exoparg6.c.
5445
5446Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
5447
5448Fixed a problem where the AML debugger was causing some internal
5449objects to not be deleted during subsystem termination.
5450
5451Fixed a problem with the external AcpiEvaluateObject interface
5452where the subsystem would fault if the named object to be
5453evaluated refered to a constant such as Zero, Ones, etc.
5454
5455Fixed a problem with IndexFields and BankFields where the
5456subsystem would fault if the index, data, or bank registers were
5457not defined in the same scope as the field itself.
5458
5459Added printf format string checking for compilers that support
5460this feature.  Corrected more than 50 instances of issues with
5461format specifiers within invocations of ACPI_DEBUG_PRINT
5462throughout the core subsystem code.
5463
5464The ASL "Revision" operator now returns the ACPI support level
5465implemented in the core - the value "2" since the ACPI 2.0
5466support
5467is more than 50% implemented.
5468
5469Enhanced the output of the AML debugger "dump namespace" command
5470to output in a more human-readable form.
5471
5472Current core subsystem library code sizes are shown below.  These
5473are the code and data sizes for the acpica.lib produced by the
5474Microsoft Visual C++ 6.0 compiler, and these values do not
5475include
5476any ACPI driver or OSPM code.  The debug version of the code
5477includes the full debug trace mechanism -- leading to a much
5478larger code and data size.  Note that these values will vary
5479depending on the efficiency of the compiler and the compiler
5480options used during generation.
5481
5482     Previous Label (09_20_01):
5483     Non-Debug Version:    65K Code,     5K Data,     70K Total
5484     Debug Version:       138K Code,    58K Data,    196K Total
5485
5486     This Label:
5487
5488     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
5489     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
5490
5491Linux:
5492
5493Implemented a "Bad BIOS Blacklist" to track machines that have
5494known ASL/AML problems.
5495
5496Enhanced the /proc interface for the thermal zone driver and
5497added
5498support for _HOT (the critical suspend trip point).  The 'info'
5499file now includes threshold/policy information, and allows
5500setting
5501of _SCP (cooling preference) and _TZP (polling frequency) values
5502to the 'info' file. Examples: "echo tzp=5 > info" sets the
5503polling
5504frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
5505preference to the passive/quiet mode (if supported by the ASL).
5506
5507Implemented a workaround for a gcc bug that resuted in an OOPs
5508when loading the control method battery driver.
5509
5510 ----------------------------------------
5511Summary of changes for this label: 09_20_01
5512
5513 ACPI CA Core Subsystem:
5514
5515The AcpiEnableEvent and AcpiDisableEvent interfaces have been
5516modified to allow individual GPE levels to be flagged as wake-
5517enabled (i.e., these GPEs are to remain enabled when the platform
5518sleeps.)
5519
5520The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
5521support wake-enabled GPEs.  This means that upon entering the
5522sleep state, all GPEs that are not wake-enabled are disabled.
5523When leaving the sleep state, these GPEs are reenabled.
5524
5525A local double-precision divide/modulo module has been added to
5526enhance portability to OS kernels where a 64-bit math library is
5527not available.  The new module is "utmath.c".
5528
5529Several optimizations have been made to reduce the use of CPU
5530stack.  Originally over 2K, the maximum stack usage is now below
55312K at 1860  bytes (1.82k)
5532
5533Fixed a problem with the AcpiGetFirmwareTable interface where the
5534root table pointer was not mapped into a logical address
5535properly.
5536
5537Fixed a problem where a NULL pointer was being dereferenced in
5538the
5539interpreter code for the ASL Notify operator.
5540
5541Fixed a problem where the use of the ASL Revision operator
5542returned an error. This operator now returns the current version
5543of the ACPI CA core subsystem.
5544
5545Fixed a problem where objects passed as control method parameters
5546to AcpiEvaluateObject were always deleted at method termination.
5547However, these objects may end up being stored into the namespace
5548by the called method.  The object reference count mechanism was
5549applied to these objects instead of a force delete.
5550
5551Fixed a problem where static strings or buffers (contained in the
5552AML code) that are declared as package elements within the ASL
5553code could cause a fault because the interpreter would attempt to
5554delete them.  These objects are now marked with the "static
5555object" flag to prevent any attempt to delete them.
5556
5557Implemented an interpreter optimization to use operands directly
5558from the state object instead of extracting the operands to local
5559variables.  This reduces stack use and code size, and improves
5560performance.
5561
5562The module exxface.c was eliminated as it was an unnecessary
5563extra
5564layer of code.
5565
5566Current core subsystem library code sizes are shown below.  These
5567are the code and data sizes for the acpica.lib produced by the
5568Microsoft Visual C++ 6.0 compiler, and these values do not
5569include
5570any ACPI driver or OSPM code.  The debug version of the code
5571includes the full debug trace mechanism -- leading to a much
5572larger code and data size.  Note that these values will vary
5573depending on the efficiency of the compiler and the compiler
5574options used during generation.
5575
5576  Non-Debug Version:  65K Code,   5K Data,   70K Total
5577(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
5578Total  (Previously 195K)
5579
5580Linux:
5581
5582Support for ACPI 2.0 64-bit integers has been added.   All ACPI
5583Integer objects are now 64 bits wide
5584
5585All Acpi data types and structures are now in lower case.  Only
5586Acpi macros are upper case for differentiation.
5587
5588 Documentation:
5589
5590Changes to the external interfaces as described above.
5591
5592 ----------------------------------------
5593Summary of changes for this label: 08_31_01
5594
5595 ACPI CA Core Subsystem:
5596
5597A bug with interpreter implementation of the ASL Divide operator
5598was found and fixed.  The implicit function return value (not the
5599explicit store operands) was returning the remainder instead of
5600the quotient.  This was a longstanding bug and it fixes several
5601known outstanding issues on various platforms.
5602
5603The ACPI_DEBUG_PRINT and function trace entry/exit macros have
5604been further optimized for size.  There are 700 invocations of
5605the
5606DEBUG_PRINT macro alone, so each optimization reduces the size of
5607the debug version of the subsystem significantly.
5608
5609A stack trace mechanism has been implemented.  The maximum stack
5610usage is about 2K on 32-bit platforms.  The debugger command
5611"stat
5612stack" will display the current maximum stack usage.
5613
5614All public symbols and global variables within the subsystem are
5615now prefixed with the string "Acpi".  This keeps all of the
5616symbols grouped together in a kernel map, and avoids conflicts
5617with other kernel subsystems.
5618
5619Most of the internal fixed lookup tables have been moved into the
5620code segment via the const operator.
5621
5622Several enhancements have been made to the interpreter to both
5623reduce the code size and improve performance.
5624
5625Current core subsystem library code sizes are shown below.  These
5626are the code and data sizes for the acpica.lib produced by the
5627Microsoft Visual C++ 6.0 compiler, and these values do not
5628include
5629any ACPI driver or OSPM code.  The debug version of the code
5630includes the full debug trace mechanism which contains over 700
5631invocations of the DEBUG_PRINT macro, 500 function entry macro
5632invocations, and over 900 function exit macro invocations --
5633leading to a much larger code and data size.  Note that these
5634values will vary depending on the efficiency of the compiler and
5635the compiler options used during generation.
5636
5637        Non-Debug Version:  64K Code,   5K Data,   69K Total
5638Debug Version:     137K Code,  58K Data,  195K Total
5639
5640 Linux:
5641
5642Implemented wbinvd() macro, pending a kernel-wide definition.
5643
5644Fixed /proc/acpi/event to handle poll() and short reads.
5645
5646 ASL Compiler, version X2026:
5647
5648Fixed a problem introduced in the previous label where the AML
5649code emitted for package objects produced packages with zero
5650length.
5651
5652 ----------------------------------------
5653Summary of changes for this label: 08_16_01
5654
5655ACPI CA Core Subsystem:
5656
5657The following ACPI 2.0 ASL operators have been implemented in the
5658AML interpreter (These are already supported by the Intel ASL
5659compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
5660and
5661ToBuffer.  Support for 64-bit AML constants is implemented in the
5662AML parser, debugger, and disassembler.
5663
5664The internal memory tracking mechanism (leak detection code) has
5665been upgraded to reduce the memory overhead (a separate tracking
5666block is no longer allocated for each memory allocation), and now
5667supports all of the internal object caches.
5668
5669The data structures and code for the internal object caches have
5670been coelesced and optimized so that there is a single cache and
5671memory list data structure and a single group of functions that
5672implement generic cache management.  This has reduced the code
5673size in both the debug and release versions of the subsystem.
5674
5675The DEBUG_PRINT macro(s) have been optimized for size and
5676replaced
5677by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
5678different, because it generates a single call to an internal
5679function.  This results in a savings of about 90 bytes per
5680invocation, resulting in an overall code and data savings of
5681about
568216% in the debug version of the subsystem.
5683
5684 Linux:
5685
5686Fixed C3 disk corruption problems and re-enabled C3 on supporting
5687machines.
5688
5689Integrated low-level sleep code by Patrick Mochel.
5690
5691Further tweaked source code Linuxization.
5692
5693Other minor fixes.
5694
5695 ASL Compiler:
5696
5697Support for ACPI 2.0 variable length packages is fixed/completed.
5698
5699Fixed a problem where the optional length parameter for the ACPI
57002.0 ToString operator.
5701
5702Fixed multiple extraneous error messages when a syntax error is
5703detected within the declaration line of a control method.
5704
5705 ----------------------------------------
5706Summary of changes for this label: 07_17_01
5707
5708ACPI CA Core Subsystem:
5709
5710Added a new interface named AcpiGetFirmwareTable to obtain any
5711ACPI table via the ACPI signature.  The interface can be called
5712at
5713any time during kernel initialization, even before the kernel
5714virtual memory manager is initialized and paging is enabled.
5715This
5716allows kernel subsystems to obtain ACPI tables very early, even
5717before the ACPI CA subsystem is initialized.
5718
5719Fixed a problem where Fields defined with the AnyAcc attribute
5720could be resolved to the incorrect address under the following
5721conditions: 1) the field width is larger than 8 bits and 2) the
5722parent operation region is not defined on a DWORD boundary.
5723
5724Fixed a problem where the interpreter is not being locked during
5725namespace initialization (during execution of the _INI control
5726methods), causing an error when an attempt is made to release it
5727later.
5728
5729ACPI 2.0 support in the AML Interpreter has begun and will be
5730ongoing throughout the rest of this year.  In this label, The Mod
5731operator is implemented.
5732
5733Added a new data type to contain full PCI addresses named
5734ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
5735Device,
5736and Function values.
5737
5738 Linux:
5739
5740Enhanced the Linux version of the source code to change most
5741capitalized ACPI type names to lowercase. For example, all
5742instances of ACPI_STATUS are changed to acpi_status.  This will
5743result in a large diff, but the change is strictly cosmetic and
5744aligns the CA code closer to the Linux coding standard.
5745
5746OSL Interfaces:
5747
5748The interfaces to the PCI configuration space have been changed
5749to
5750add the PCI Segment number and to split the single 32-bit
5751combined
5752DeviceFunction field into two 16-bit fields.  This was
5753accomplished by moving the four values that define an address in
5754PCI configuration space (segment, bus, device, and function) to
5755the new ACPI_PCI_ID structure.
5756
5757The changes to the PCI configuration space interfaces led to a
5758reexamination of the complete set of address space access
5759interfaces for PCI, I/O, and Memory.  The previously existing 18
5760interfaces have proven difficult to maintain (any small change
5761must be propagated across at least 6 interfaces) and do not
5762easily
5763allow for future expansion to 64 bits if necessary.  Also, on
5764some
5765systems, it would not be appropriate to demultiplex the access
5766width (8, 16, 32,or 64) before calling the OSL if the
5767corresponding native OS interfaces contain a similar access width
5768parameter.  For these reasons, the 18 address space interfaces
5769have been replaced by these 6 new ones:
5770
5771AcpiOsReadPciConfiguration
5772AcpiOsWritePciConfiguration
5773AcpiOsReadMemory
5774AcpiOsWriteMemory
5775AcpiOsReadPort
5776AcpiOsWritePort
5777
5778Added a new interface named AcpiOsGetRootPointer to allow the OSL
5779to perform the platform and/or OS-specific actions necessary to
5780obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
5781interface will simply call down to the CA core to perform the low-
5782memory search for the table.  On IA-64, the RSDP is obtained from
5783EFI.  Migrating this interface to the OSL allows the CA core to
5784remain OS and platform independent.
5785
5786Added a new interface named AcpiOsSignal to provide a generic
5787"function code and pointer" interface for various miscellaneous
5788signals and notifications that must be made to the host OS.   The
5789first such signals are intended to support the ASL Fatal and
5790Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
5791interface has been obsoleted.
5792
5793The definition of the AcpiFormatException interface has been
5794changed to simplify its use.  The caller no longer must supply a
5795buffer to the call; A pointer to a const string is now returned
5796directly.  This allows the call to be easily used in printf
5797statements, etc. since the caller does not have to manage a local
5798buffer.
5799
5800
5801 ASL Compiler, Version X2025:
5802
5803The ACPI 2.0 Switch/Case/Default operators have been implemented
5804and are fully functional.  They will work with all ACPI 1.0
5805interpreters, since the operators are simply translated to
5806If/Else
5807pairs.
5808
5809The ACPI 2.0 ElseIf operator is implemented and will also work
5810with 1.0 interpreters, for the same reason.
5811
5812Implemented support for ACPI 2.0 variable-length packages.  These
5813packages have a separate opcode, and their size is determined by
5814the interpreter at run-time.
5815
5816Documentation The ACPI CA Programmer Reference has been updated
5817to
5818reflect the new interfaces and changes to existing interfaces.
5819
5820 ------------------------------------------
5821Summary of changes for this label: 06_15_01
5822
5823 ACPI CA Core Subsystem:
5824
5825Fixed a problem where a DWORD-accessed field within a Buffer
5826object would get its byte address inadvertently rounded down to
5827the nearest DWORD.  Buffers are always Byte-accessible.
5828
5829 ASL Compiler, version X2024:
5830
5831Fixed a problem where the Switch() operator would either fault or
5832hang the compiler.  Note however, that the AML code for this ACPI
58332.0 operator is not yet implemented.
5834
5835Compiler uses the new AcpiOsGetTimer interface to obtain compile
5836timings.
5837
5838Implementation of the CreateField operator automatically converts
5839a reference to a named field within a resource descriptor from a
5840byte offset to a bit offset if required.
5841
5842Added some missing named fields from the resource descriptor
5843support. These are the names that are automatically created by
5844the
5845compiler to reference fields within a descriptor.  They are only
5846valid at compile time and are not passed through to the AML
5847interpreter.
5848
5849Resource descriptor named fields are now typed as Integers and
5850subject to compile-time typechecking when used in expressions.
5851
5852 ------------------------------------------
5853Summary of changes for this label: 05_18_01
5854
5855 ACPI CA Core Subsystem:
5856
5857Fixed a couple of problems in the Field support code where bits
5858from adjacent fields could be returned along with the proper
5859field
5860bits. Restructured the field support code to improve performance,
5861readability and maintainability.
5862
5863New DEBUG_PRINTP macro automatically inserts the procedure name
5864into the output, saving hundreds of copies of procedure name
5865strings within the source, shrinking the memory footprint of the
5866debug version of the core subsystem.
5867
5868 Source Code Structure:
5869
5870The source code directory tree was restructured to reflect the
5871current organization of the component architecture.  Some files
5872and directories have been moved and/or renamed.
5873
5874 Linux:
5875
5876Fixed leaking kacpidpc processes.
5877
5878Fixed queueing event data even when /proc/acpi/event is not
5879opened.
5880
5881 ASL Compiler, version X2020:
5882
5883Memory allocation performance enhancement - over 24X compile time
5884improvement on large ASL files.  Parse nodes and namestring
5885buffers are now allocated from a large internal compiler buffer.
5886
5887The temporary .SRC file is deleted unless the "-s" option is
5888specified
5889
5890The "-d" debug output option now sends all output to the .DBG
5891file
5892instead of the console.
5893
5894"External" second parameter is now optional
5895
5896"ElseIf" syntax now properly allows the predicate
5897
5898Last operand to "Load" now recognized as a Target operand
5899
5900Debug object can now be used anywhere as a normal object.
5901
5902ResourceTemplate now returns an object of type BUFFER
5903
5904EISAID now returns an object of type INTEGER
5905
5906"Index" now works with a STRING operand
5907
5908"LoadTable" now accepts optional parameters
5909
5910"ToString" length parameter is now optional
5911
5912"Interrupt (ResourceType," parse error fixed.
5913
5914"Register" with a user-defined region space parse error fixed
5915
5916Escaped backslash at the end of a string ("\\") scan/parse error
5917fixed
5918
5919"Revision" is now an object of type INTEGER.
5920
5921
5922
5923------------------------------------------
5924Summary of changes for this label: 05_02_01
5925
5926Linux:
5927
5928/proc/acpi/event now blocks properly.
5929
5930Removed /proc/sys/acpi. You can still dump your DSDT from
5931/proc/acpi/dsdt.
5932
5933 ACPI CA Core Subsystem:
5934
5935Fixed a problem introduced in the previous label where some of
5936the
5937"small" resource descriptor types were not recognized.
5938
5939Improved error messages for the case where an ASL Field is
5940outside
5941the range of the parent operation region.
5942
5943 ASL Compiler, version X2018:
5944
5945Added error detection for ASL Fields that extend beyond the
5946length
5947of the parent operation region (only if the length of the region
5948is known at compile time.)  This includes fields that have a
5949minimum access width that is smaller than the parent region, and
5950individual field units that are partially or entirely beyond the
5951extent of the parent.
5952
5953
5954
5955------------------------------------------
5956Summary of changes for this label: 04_27_01
5957
5958 ACPI CA Core Subsystem:
5959
5960Fixed a problem where the namespace mutex could be released at
5961the
5962wrong time during execution of AcpiRemoveAddressSpaceHandler.
5963
5964Added optional thread ID output for debug traces, to simplify
5965debugging of multiple threads.  Added context switch notification
5966when the debug code realizes that a different thread is now
5967executing ACPI code.
5968
5969Some additional external data types have been prefixed with the
5970string "ACPI_" for consistency.  This may effect existing code.
5971The data types affected are the external callback typedefs -
5972e.g.,
5973WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
5974
5975 Linux:
5976
5977Fixed an issue with the OSL semaphore implementation where a
5978thread was waking up with an error from receiving a SIGCHLD
5979signal.
5980
5981Linux version of ACPI CA now uses the system C library for string
5982manipulation routines instead of a local implementation.
5983
5984Cleaned up comments and removed TBDs.
5985
5986 ASL Compiler, version X2017:
5987
5988Enhanced error detection and reporting for all file I/O
5989operations.
5990
5991 Documentation:
5992
5993Programmer Reference updated to version 1.06.
5994
5995
5996
5997------------------------------------------
5998Summary of changes for this label: 04_13_01
5999
6000 ACPI CA Core Subsystem:
6001
6002Restructured support for BufferFields and RegionFields.
6003BankFields support is now fully operational.  All known 32-bit
6004limitations on field sizes have been removed.  Both BufferFields
6005and (Operation) RegionFields are now supported by the same field
6006management code.
6007
6008Resource support now supports QWORD address and IO resources. The
600916/32/64 bit address structures and the Extended IRQ structure
6010have been changed to properly handle Source Resource strings.
6011
6012A ThreadId of -1 is now used to indicate a "mutex not acquired"
6013condition internally and must never be returned by
6014AcpiOsThreadId.
6015This reserved value was changed from 0 since Unix systems allow a
6016thread ID of 0.
6017
6018Linux:
6019
6020Driver code reorganized to enhance portability
6021
6022Added a kernel configuration option to control ACPI_DEBUG
6023
6024Fixed the EC driver to honor _GLK.
6025
6026ASL Compiler, version X2016:
6027
6028Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
6029address space was set to 0, not 0x7f as it should be.
6030
6031 ------------------------------------------
6032Summary of changes for this label: 03_13_01
6033
6034 ACPI CA Core Subsystem:
6035
6036During ACPI initialization, the _SB_._INI method is now run if
6037present.
6038
6039Notify handler fix - notifies are deferred until the parent
6040method
6041completes execution.  This fixes the "mutex already acquired"
6042issue seen occasionally.
6043
6044Part of the "implicit conversion" rules in ACPI 2.0 have been
6045found to cause compatibility problems with existing ASL/AML.  The
6046convert "result-to-target-type" implementation has been removed
6047for stores to method Args and Locals.  Source operand conversion
6048is still fully implemented.  Possible changes to ACPI 2.0
6049specification pending.
6050
6051Fix to AcpiRsCalculatePciRoutingTableLength to return correct
6052length.
6053
6054Fix for compiler warnings for 64-bit compiles.
6055
6056 Linux:
6057
6058/proc output aligned for easier parsing.
6059
6060Release-version compile problem fixed.
6061
6062New kernel configuration options documented in Configure.help.
6063
6064IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
6065context" message.
6066
6067 OSPM:
6068
6069Power resource driver integrated with bus manager.
6070
6071Fixed kernel fault during active cooling for thermal zones.
6072
6073Source Code:
6074
6075The source code tree has been restructured.
6076
6077
6078
6079------------------------------------------
6080Summary of changes for this label: 03_02_01
6081
6082 Linux OS Services Layer (OSL):
6083
6084Major revision of all Linux-specific code.
6085
6086Modularized all ACPI-specific drivers.
6087
6088Added new thermal zone and power resource drivers.
6089
6090Revamped /proc interface (new functionality is under /proc/acpi).
6091
6092New kernel configuration options.
6093
6094 Linux known issues:
6095
6096New kernel configuration options not documented in Configure.help
6097yet.
6098
6099
6100Module dependencies not currently implemented. If used, they
6101should be loaded in this order: busmgr, power, ec, system,
6102processor, battery, ac_adapter, button, thermal.
6103
6104Modules will not load if CONFIG_MODVERSION is set.
6105
6106IBM 600E - entering S5 may reboot instead of shutting down.
6107
6108IBM 600E - Sleep button may generate "Invalid <NULL> context"
6109message.
6110
6111Some systems may fail with "execution mutex already acquired"
6112message.
6113
6114 ACPI CA Core Subsystem:
6115
6116Added a new OSL Interface, AcpiOsGetThreadId.  This was required
6117for the  deadlock detection code. Defined to return a non-zero,
611832-
6119bit thread ID for the currently executing thread.  May be a non-
6120zero constant integer on single-thread systems.
6121
6122Implemented deadlock detection for internal subsystem mutexes.
6123We
6124may add conditional compilation for this code (debug only) later.
6125
6126ASL/AML Mutex object semantics are now fully supported.  This
6127includes multiple acquires/releases by owner and support for the
6128Mutex SyncLevel parameter.
6129
6130A new "Force Release" mechanism automatically frees all ASL
6131Mutexes that have been acquired but not released when a thread
6132exits the interpreter.  This forces conformance to the ACPI spec
6133("All mutexes must be released when an invocation exits") and
6134prevents deadlocked ASL threads.  This mechanism can be expanded
6135(later) to monitor other resource acquisitions if OEM ASL code
6136continues to misbehave (which it will).
6137
6138Several new ACPI exception codes have been added for the Mutex
6139support.
6140
6141Recursive method calls are now allowed and supported (the ACPI
6142spec does in fact allow recursive method calls.)  The number of
6143recursive calls is subject to the restrictions imposed by the
6144SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
6145parameter.
6146
6147Implemented support for the SyncLevel parameter for control
6148methods (ACPI 2.0 feature)
6149
6150Fixed a deadlock problem when multiple threads attempted to use
6151the interpreter.
6152
6153Fixed a problem where the string length of a String package
6154element was not always set in a package returned from
6155AcpiEvaluateObject.
6156
6157Fixed a problem where the length of a String package element was
6158not always included in the length of the overall package returned
6159from AcpiEvaluateObject.
6160
6161Added external interfaces (Acpi*) to the ACPI debug memory
6162manager.  This manager keeps a list of all outstanding
6163allocations, and can therefore detect memory leaks and attempts
6164to
6165free memory blocks more than once. Useful for code such as the
6166power manager, etc.  May not be appropriate for device drivers.
6167Performance with the debug code enabled is slow.
6168
6169The ACPI Global Lock is now an optional hardware element.
6170
6171 ASL Compiler Version X2015:
6172
6173Integrated changes to allow the compiler to be generated on
6174multiple platforms.
6175
6176Linux makefile added to generate the compiler on Linux
6177
6178 Source Code:
6179
6180All platform-specific headers have been moved to their own
6181subdirectory, Include/Platform.
6182
6183New source file added, Interpreter/ammutex.c
6184
6185New header file, Include/acstruct.h
6186
6187 Documentation:
6188
6189The programmer reference has been updated for the following new
6190interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
6191
6192 ------------------------------------------
6193Summary of changes for this label: 02_08_01
6194
6195Core ACPI CA Subsystem: Fixed a problem where an error was
6196incorrectly returned if the return resource buffer was larger
6197than
6198the actual data (in the resource interfaces).
6199
6200References to named objects within packages are resolved to the
6201full pathname string before packages are returned directly (via
6202the AcpiEvaluateObject interface) or indirectly via the resource
6203interfaces.
6204
6205Linux OS Services Layer (OSL):
6206
6207Improved /proc battery interface.
6208
6209
6210Added C-state debugging output and other miscellaneous fixes.
6211
6212ASL Compiler Version X2014:
6213
6214All defined method arguments can now be used as local variables,
6215including the ones that are not actually passed in as parameters.
6216The compiler tracks initialization of the arguments and issues an
6217exception if they are used without prior assignment (just like
6218locals).
6219
6220The -o option now specifies a filename prefix that is used for
6221all
6222output files, including the AML output file.  Otherwise, the
6223default behavior is as follows:  1) the AML goes to the file
6224specified in the DSDT.  2) all other output files use the input
6225source filename as the base.
6226
6227 ------------------------------------------
6228Summary of changes for this label: 01_25_01
6229
6230Core ACPI CA Subsystem: Restructured the implementation of object
6231store support within the  interpreter.  This includes support for
6232the Store operator as well  as any ASL operators that include a
6233target operand.
6234
6235Partially implemented support for Implicit Result-to-Target
6236conversion. This is when a result object is converted on the fly
6237to the type of  an existing target object.  Completion of this
6238support is pending  further analysis of the ACPI specification
6239concerning this matter.
6240
6241CPU-specific code has been removed from the subsystem (hardware
6242directory).
6243
6244New Power Management Timer functions added
6245
6246Linux OS Services Layer (OSL): Moved system state transition code
6247to the core, fixed it, and modified  Linux OSL accordingly.
6248
6249Fixed C2 and C3 latency calculations.
6250
6251
6252We no longer use the compilation date for the version message on
6253initialization, but retrieve the version from
6254AcpiGetSystemInfo().
6255
6256Incorporated for fix Sony VAIO machines.
6257
6258Documentation:  The Programmer Reference has been updated and
6259reformatted.
6260
6261
6262ASL Compiler:  Version X2013: Fixed a problem where the line
6263numbering and error reporting could get out  of sync in the
6264presence of multiple include files.
6265
6266 ------------------------------------------
6267Summary of changes for this label: 01_15_01
6268
6269Core ACPI CA Subsystem:
6270
6271Implemented support for type conversions in the execution of the
6272ASL  Concatenate operator (The second operand is converted to
6273match the type  of the first operand before concatenation.)
6274
6275Support for implicit source operand conversion is partially
6276implemented.   The ASL source operand types Integer, Buffer, and
6277String are freely  interchangeable for most ASL operators and are
6278converted by the interpreter  on the fly as required.  Implicit
6279Target operand conversion (where the  result is converted to the
6280target type before storing) is not yet implemented.
6281
6282Support for 32-bit and 64-bit BCD integers is implemented.
6283
6284Problem fixed where a field read on an aligned field could cause
6285a
6286read  past the end of the field.
6287
6288New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
6289does not return a value, but the caller expects one.  (The ASL
6290compiler flags this as a warning.)
6291
6292ASL Compiler:
6293
6294Version X2011:
62951. Static typechecking of all operands is implemented. This
6296prevents the use of invalid objects (such as using a Package
6297where
6298an Integer is required) at compile time instead of at interpreter
6299run-time.
63002. The ASL source line is printed with ALL errors and warnings.
63013. Bug fix for source EOF without final linefeed.
63024. Debug option is split into a parse trace and a namespace
6303trace.
63045. Namespace output option (-n) includes initial values for
6305integers and strings.
63066. Parse-only option added for quick syntax checking.
63077. Compiler checks for duplicate ACPI name declarations
6308
6309Version X2012:
63101. Relaxed typechecking to allow interchangeability between
6311strings, integers, and buffers.  These types are now converted by
6312the interpreter at runtime.
63132. Compiler reports time taken by each internal subsystem in the
6314debug         output file.
6315
6316
6317 ------------------------------------------
6318Summary of changes for this label: 12_14_00
6319
6320ASL Compiler:
6321
6322This is the first official release of the compiler. Since the
6323compiler requires elements of the Core Subsystem, this label
6324synchronizes everything.
6325
6326------------------------------------------
6327Summary of changes for this label: 12_08_00
6328
6329
6330Fixed a problem where named references within the ASL definition
6331of both OperationRegions and CreateXXXFields did not work
6332properly.  The symptom was an AE_AML_OPERAND_TYPE during
6333initialization of the region/field. This is similar (but not
6334related internally) to the problem that was fixed in the last
6335label.
6336
6337Implemented both 32-bit and 64-bit support for the BCD ASL
6338functions ToBCD and FromBCD.
6339
6340Updated all legal headers to include "2000" in the copyright
6341years.
6342
6343 ------------------------------------------
6344Summary of changes for this label: 12_01_00
6345
6346Fixed a problem where method invocations within the ASL
6347definition
6348of both OperationRegions and CreateXXXFields did not work
6349properly.  The symptom was an AE_AML_OPERAND_TYPE during
6350initialization of the region/field:
6351
6352  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
6353[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
6354(0x3005)
6355
6356Fixed a problem where operators with more than one nested
6357subexpression would fail.  The symptoms were varied, by mostly
6358AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
6359problem that has gone unnoticed until now.
6360
6361  Subtract (Add (1,2), Multiply (3,4))
6362
6363Fixed a problem where AcpiGetHandle didn't quite get fixed in the
6364previous build (The prefix part of a relative path was handled
6365incorrectly).
6366
6367Fixed a problem where Operation Region initialization failed if
6368the operation region name was a "namepath" instead of a simple
6369"nameseg". Symptom was an AE_NO_OPERAND error.
6370
6371Fixed a problem where an assignment to a local variable via the
6372indirect RefOf mechanism only worked for the first such
6373assignment.  Subsequent assignments were ignored.
6374
6375 ------------------------------------------
6376Summary of changes for this label: 11_15_00
6377
6378ACPI 2.0 table support with backwards support for ACPI 1.0 and
6379the
63800.71 extensions.  Note: although we can read ACPI 2.0 BIOS
6381tables,
6382the AML  interpreter does NOT have support for the new 2.0 ASL
6383grammar terms at this time.
6384
6385All ACPI hardware access is via the GAS structures in the ACPI
63862.0
6387FADT.
6388
6389All physical memory addresses across all platforms are now 64
6390bits
6391wide. Logical address width remains dependent on the platform
6392(i.e., "void *").
6393
6394AcpiOsMapMemory interface changed to a 64-bit physical address.
6395
6396The AML interpreter integer size is now 64 bits, as per the ACPI
63972.0 specification.
6398
6399For backwards compatibility with ACPI 1.0, ACPI tables with a
6400revision number less than 2 use 32-bit integers only.
6401
6402Fixed a problem where the evaluation of OpRegion operands did not
6403always resolve them to numbers properly.
6404
6405------------------------------------------
6406Summary of changes for this label: 10_20_00
6407
6408Fix for CBN_._STA issue.  This fix will allow correct access to
6409CBN_ OpRegions when the _STA returns 0x8.
6410
6411Support to convert ACPI constants (Ones, Zeros, One) to actual
6412values before a package object is returned
6413
6414Fix for method call as predicate to if/while construct causing
6415incorrect if/while behavior
6416
6417Fix for Else block package lengths sometimes calculated wrong (if
6418block > 63 bytes)
6419
6420Fix for Processor object length field, was always zero
6421
6422Table load abort if FACP sanity check fails
6423
6424Fix for problem with Scope(name) if name already exists
6425
6426Warning emitted if a named object referenced cannot be found
6427(resolved) during method execution.
6428
6429
6430
6431
6432
6433------------------------------------------
6434Summary of changes for this label: 9_29_00
6435
6436New table initialization interfaces: AcpiInitializeSubsystem no
6437longer has any parameters AcpiFindRootPointer - Find the RSDP (if
6438necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
6439>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
6440AcpiLoadTables
6441
6442Note: These interface changes require changes to all existing
6443OSDs
6444
6445The PCI_Config default address space handler is always installed
6446at the root namespace object.
6447
6448-------------------------------------------
6449Summary of changes for this label: 09_15_00
6450
6451The new initialization architecture is implemented.  New
6452interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
6453AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
6454(Namespace is automatically loaded when a table is loaded)
6455
6456The ACPI_OPERAND_OBJECT has been optimized to shrink its size
6457from
645852 bytes to 32 bytes.  There is usually one of these for every
6459namespace object, so the memory savings is significant.
6460
6461Implemented just-in-time evaluation of the CreateField operators.
6462
6463Bug fixes for IA-64 support have been integrated.
6464
6465Additional code review comments have been implemented
6466
6467The so-called "third pass parse" has been replaced by a final
6468walk
6469through the namespace to initialize all operation regions
6470(address
6471spaces) and fields that have not yet been initialized during the
6472execution of the various _INI and REG methods.
6473
6474New file - namespace/nsinit.c
6475
6476-------------------------------------------
6477Summary of changes for this label: 09_01_00
6478
6479Namespace manager data structures have been reworked to change
6480the
6481primary  object from a table to a single object.  This has
6482resulted in dynamic memory  savings of 3X within the namespace
6483and
64842X overall in the ACPI CA subsystem.
6485
6486Fixed problem where the call to AcpiEvFindPciRootBuses was
6487inadvertently left  commented out.
6488
6489Reduced the warning count when generating the source with the GCC
6490compiler.
6491
6492Revision numbers added to each module header showing the
6493SourceSafe version of the file.  Please refer to this version
6494number when giving us feedback or comments on individual modules.
6495
6496The main object types within the subsystem have been renamed to
6497clarify their  purpose:
6498
6499ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
6500ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
6501ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
6502
6503NOTE: no changes to the initialization sequence are included in
6504this label.
6505
6506-------------------------------------------
6507Summary of changes for this label: 08_23_00
6508
6509Fixed problem where TerminateControlMethod was being called
6510multiple times per  method
6511
6512Fixed debugger problem where single stepping caused a semaphore
6513to
6514be  oversignalled
6515
6516Improved performance through additional parse object caching -
6517added  ACPI_EXTENDED_OP type
6518
6519-------------------------------------------
6520Summary of changes for this label: 08_10_00
6521
6522Parser/Interpreter integration:  Eliminated the creation of
6523complete parse trees  for ACPI tables and control methods.
6524Instead, parse subtrees are created and  then deleted as soon as
6525they are processed (Either entered into the namespace or
6526executed
6527by the interpreter).  This reduces the use of dynamic kernel
6528memory  significantly. (about 10X)
6529
6530Exception codes broken into classes and renumbered.  Be sure to
6531recompile all  code that includes acexcep.h.  Hopefully we won't
6532have to renumber the codes  again now that they are split into
6533classes (environment, programmer, AML code,  ACPI table, and
6534internal).
6535
6536Fixed some additional alignment issues in the Resource Manager
6537subcomponent
6538
6539Implemented semaphore tracking in the AcpiExec utility, and fixed
6540several places  where mutexes/semaphores were being unlocked
6541without a corresponding lock  operation.  There are no known
6542semaphore or mutex "leaks" at this time.
6543
6544Fixed the case where an ASL Return operator is used to return an
6545unnamed  package.
6546
6547-------------------------------------------
6548Summary of changes for this label: 07_28_00
6549
6550Fixed a problem with the way addresses were calculated in
6551AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
6552manifested itself when a Field was  created with WordAccess or
6553DwordAccess, but the field unit defined within the  Field was
6554less
6555than a Word or Dword.
6556
6557Fixed a problem in AmlDumpOperands() module's loop to pull
6558operands off of the  operand stack to display information. The
6559problem manifested itself as a TLB  error on 64-bit systems when
6560accessing an operand stack with two or more  operands.
6561
6562Fixed a problem with the PCI configuration space handlers where
6563context was  getting confused between accesses. This required a
6564change to the generic address  space handler and address space
6565setup definitions. Handlers now get both a  global handler
6566context
6567(this is the one passed in by the user when executing
6568AcpiInstallAddressSpaceHandler() and a specific region context
6569that is unique to  each region (For example, the _ADR, _SEG and
6570_BBN values associated with a  specific region). The generic
6571function definitions have changed to the  following:
6572
6573typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
6574UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
6575*HandlerContext, // This used to be void *Context void
6576*RegionContext); // This is an additional parameter
6577
6578typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
6579RegionHandle, UINT32 Function, void *HandlerContext,  void
6580**RegionContext); // This used to be **ReturnContext
6581
6582-------------------------------------------
6583Summary of changes for this label: 07_21_00
6584
6585Major file consolidation and rename.  All files within the
6586interpreter have been  renamed as well as most header files.
6587This
6588was done to prevent collisions with  existing files in the host
6589OSs -- filenames such as "config.h" and "global.h"  seem to be
6590quite common.  The VC project files have been updated.  All
6591makefiles  will require modification.
6592
6593The parser/interpreter integration continues in Phase 5 with the
6594implementation  of a complete 2-pass parse (the AML is parsed
6595twice) for each table;  This  avoids the construction of a huge
6596parse tree and therefore reduces the amount of  dynamic memory
6597required by the subsystem.  Greater use of the parse object cache
6598means that performance is unaffected.
6599
6600Many comments from the two code reviews have been rolled in.
6601
6602The 64-bit alignment support is complete.
6603
6604-------------------------------------------
6605Summary of changes for this label: 06_30_00
6606
6607With a nod and a tip of the hat to the technology of yesteryear,
6608we've added  support in the source code for 80 column output
6609devices.  The code is now mostly  constrained to 80 columns or
6610less to support environments and editors that 1)  cannot display
6611or print more than 80 characters on a single line, and 2) cannot
6612disable line wrapping.
6613
6614A major restructuring of the namespace data structure has been
6615completed.  The  result is 1) cleaner and more
6616understandable/maintainable code, and 2) a  significant reduction
6617in the dynamic memory requirement for each named ACPI  object
6618(almost half).
6619
6620-------------------------------------------
6621Summary of changes for this label: 06_23_00
6622
6623Linux support has been added.  In order to obtain approval to get
6624the ACPI CA  subsystem into the Linux kernel, we've had to make
6625quite a few changes to the  base subsystem that will affect all
6626users (all the changes are generic and OS- independent).  The
6627effects of these global changes have been somewhat far  reaching.
6628Files have been merged and/or renamed and interfaces have been
6629renamed.   The major changes are described below.
6630
6631Osd* interfaces renamed to AcpiOs* to eliminate namespace
6632pollution/confusion  within our target kernels.  All OSD
6633interfaces must be modified to match the new  naming convention.
6634
6635Files merged across the subsystem.  A number of the smaller
6636source
6637and header  files have been merged to reduce the file count and
6638increase the density of the  existing files.  There are too many
6639to list here.  In general, makefiles that  call out individual
6640files will require rebuilding.
6641
6642Interpreter files renamed.  All interpreter files now have the
6643prefix am*  instead of ie* and is*.
6644
6645Header files renamed:  The acapi.h file is now acpixf.h.  The
6646acpiosd.h file is  now acpiosxf.h.  We are removing references to
6647the acronym "API" since it is  somewhat windowsy. The new name is
6648"external interface" or xface or xf in the  filenames.j
6649
6650
6651All manifest constants have been forced to upper case (some were
6652mixed case.)   Also, the string "ACPI_" has been prepended to
6653many
6654(not all) of the constants,  typedefs, and structs.
6655
6656The globals "DebugLevel" and "DebugLayer" have been renamed
6657"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
6658
6659All other globals within the subsystem are now prefixed with
6660"AcpiGbl_" Internal procedures within the subsystem are now
6661prefixed with "Acpi" (with only  a few exceptions).  The original
6662two-letter abbreviation for the subcomponent  remains after
6663"Acpi"
6664- for example, CmCallocate became AcpiCmCallocate.
6665
6666Added a source code translation/conversion utility.  Used to
6667generate the Linux  source code, it can be modified to generate
6668other types of source as well. Can  also be used to cleanup
6669existing source by removing extraneous spaces and blank  lines.
6670Found in tools/acpisrc/*
6671
6672OsdUnMapMemory was renamed to OsdUnmapMemory and then
6673AcpiOsUnmapMemory.  (UnMap  became Unmap).
6674
6675A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
6676When set to  one, this indicates that the caller wants to use the
6677semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
6678both types.  However, implementers of this  call may want to use
6679different OS primitives depending on the type of semaphore
6680requested.  For example, some operating systems provide separate
6681"mutex" and  "semaphore" interfaces - where the mutex interface
6682is
6683much faster because it  doesn't have all the overhead of a full
6684semaphore implementation.
6685
6686Fixed a deadlock problem where a method that accesses the PCI
6687address space can  block forever if it is the first access to the
6688space.
6689
6690-------------------------------------------
6691Summary of changes for this label: 06_02_00
6692
6693Support for environments that cannot handle unaligned data
6694accesses (e.g.  firmware and OS environments devoid of alignment
6695handler technology namely  SAL/EFI and the IA-64 Linux kernel)
6696has
6697been added (via configurable macros) in  these three areas: -
6698Transfer of data from the raw AML byte stream is done via byte
6699moves instead of    word/dword/qword moves. - External objects
6700are
6701aligned within the user buffer, including package   elements (sub-
6702objects). - Conversion of name strings to UINT32 Acpi Names is
6703now
6704done byte-wise.
6705
6706The Store operator was modified to mimic Microsoft's
6707implementation when storing  to a Buffer Field.
6708
6709Added a check of the BM_STS bit before entering C3.
6710
6711The methods subdirectory has been obsoleted and removed.  A new
6712file, cmeval.c  subsumes the functionality.
6713
6714A 16-bit (DOS) version of AcpiExec has been developed.  The
6715makefile is under  the acpiexec directory.
6716