changes.txt revision 114237
128 February 2003.  Summary of changes for version 20030228.
2
3
41) ACPI CA Core Subsystem:
5
6The GPE handling and dispatch code has been completely overhauled
7in preparation for support of GPE Block Devices (ID ACPI0006).
8This affects internal data structures and code only; there should
9be no differences visible externally.  One new file has been
10added, evgpeblk.c
11
12The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
13fields that are used to determine the GPE block lengths.  The
14REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15structures are ignored.  This is per the ACPI specification but
16it isn't very clear.  The full 256 Block 0/1 GPEs are now
17supported (the use of REGISTER_BIT_WIDTH limited the number of
18GPEs to 128).
19
20In the SCI interrupt handler, removed the read of the PM1_CONTROL
21register to look at the SCI_EN bit.  On some machines, this read
22causes an SMI event and greatly slows down SCI events.  (This may
23in fact be the cause of slow battery status response on some
24systems.)
25
26Fixed a problem where a store of a NULL string to a package
27object could cause the premature deletion of the object.  This
28was seen during execution of the battery _BIF method on some
29systems, resulting in no battery data being returned.
30
31Added AcpiWalkResources interface to simplify parsing of resource
32lists.
33
34Code and Data Size: Current core subsystem library sizes are
35shown below.  These are the code and data sizes for the
36acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
37these values do not include any ACPI driver or OSPM code.  The
38debug version of the code includes the debug output trace
39mechanism and has a much larger code and data size.  Note that
40these values will vary depending on the efficiency of the
41compiler and the compiler options used during generation.
42
43  Previous Release
44    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
45    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
46  Current Release:
47    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
48    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
49
50
512) Linux
52
53S3 fixes (Ole Rohne)
54
55Update ACPI PHP driver with to use new acpi_walk_resource API
56(Bjorn Helgaas)
57
58Add S4BIOS support (Pavel Machek)
59
60Map in entire table before performing checksum (John Stultz)
61
62Expand the mem= cmdline to allow the specification of reserved
63and ACPI DATA blocks (Pavel Machek)
64
65Never use ACPI on VISWS
66
67Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
68
69Revert a change that allowed P_BLK lengths to be 4 or 5. This is
70causing us to think that some systems support C2 when they really
71don't.
72
73Do not count processor objects for non-present CPUs (Thanks to
74Dominik Brodowski)
75
76
773) iASL Compiler:
78
79Fixed a problem where ASL include files could not be found and
80opened.
81
82Added support for the _PDC reserved name.
83
84
8522 January 2003.  Summary of changes for version 20030122.
86
87
881) ACPI CA Core Subsystem:
89
90Added a check for constructs of the form:  Store (Local0, Local0)
91where Local0 is not initialized.  Apparently, some BIOS
92programmers believe that this is a NOOP.  Since this store
93doesn't do anything anyway, the new prototype behavior will
94ignore this error.  This is a case where we can relax the strict
95checking in the interpreter in the name of compatibility.
96
97
982) Linux
99
100The AcpiSrc Source Conversion Utility has been released with the
101Linux package for the first time.  This is the utility that is
102used to convert the ACPI CA base source code to the Linux
103version.
104
105(Both) Handle P_BLK lengths shorter than 6 more gracefully
106
107(Both) Move more headers to include/acpi, and delete an unused
108header.
109
110(Both) Move drivers/acpi/include directory to include/acpi
111
112(Both) Boot functions don't use cmdline, so don't pass it around
113
114(Both) Remove include of unused header (Adrian Bunk)
115
116(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
117the
118former now also includes the latter, acpiphp.h only needs the
119one, now.
120
121(2.5) Make it possible to select method of bios restoring after
122S3
123resume. [=> no more ugly ifdefs] (Pavel Machek)
124
125(2.5) Make proc write interfaces work (Pavel Machek)
126
127(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
128
129(2.5) Break out ACPI Perf code into its own module, under cpufreq
130(Dominik Brodowski)
131
132(2.4) S4BIOS support (Ducrot Bruno)
133
134(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
135Visinoni)
136
137
1383) iASL Compiler:
139
140Added support to disassemble SSDT and PSDTs.
141
142Implemented support to obtain SSDTs from the Windows registry if
143available.
144
145
146----------------------------------------
14709 January 2003.  Summary of changes for version 20030109.
148
1491) ACPI CA Core Subsystem:
150
151Changed the behavior of the internal Buffer-to-String conversion
152function.  The current ACPI specification states that the
153contents of the buffer are "converted to a string of two-
154character hexadecimal numbers, each separated by a space".
155Unfortunately, this definition is not backwards compatible with
156existing ACPI 1.0 implementations (although the behavior was not
157defined in the ACPI 1.0 specification).  The new behavior simply
158copies data from the buffer to the string until a null character
159is found or the end of the buffer is reached.  The new String
160object is always null terminated.  This problem was seen during
161the generation of _BIF battery data where incorrect strings were
162returned for battery type, etc.  This will also require an errata
163to the ACPI specification.
164
165Renamed all instances of NATIVE_UINT and NATIVE_INT to
166ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
167
168Copyright in all module headers (both Linux and non-Linux) has be
169updated to 2003.
170
171Code and Data Size: Current core subsystem library sizes are
172shown below.  These are the code and data sizes for the
173acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
174these values do not include any ACPI driver or OSPM code.  The
175debug version of the code includes the debug output trace
176mechanism and has a much larger code and data size.  Note that
177these values will vary depending on the efficiency of the
178compiler and the compiler options used during generation.
179
180  Previous Release
181    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
182    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
183  Current Release:
184    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
185    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
186
187
1882) Linux
189
190Fixed an oops on module insertion/removal (Matthew Tippett)
191
192(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
193
194(2.5) Replace pr_debug (Randy Dunlap)
195
196(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
197
198(Both) Eliminate spawning of thread from timer callback, in favor
199of schedule_work()
200
201(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
202
203(Both) Added define for Fixed Function HW region (Matthew Wilcox)
204
205(Both) Add missing statics to button.c (Pavel Machek)
206
207Several changes have been made to the source code translation
208utility that generates the Linux Code in order to make the code
209more "Linux-like":
210
211All typedefs on structs and unions have been removed in keeping
212with the Linux coding style.
213
214Removed the non-Linux SourceSafe module revision number from each
215module header.
216
217Completed major overhaul of symbols to be lowercased for linux.
218Doubled the number of symbols that are lowercased.
219
220Fixed a problem where identifiers within procedure headers and
221within quotes were not fully lower cased (they were left with a
222starting capital.)
223
224Some C macros whose only purpose is to allow the generation of 16-
225bit code are now completely removed in the Linux code, increasing
226readability and maintainability.
227
228----------------------------------------
229
23012 December 2002.  Summary of changes for version 20021212.
231
232
2331) ACPI CA Core Subsystem:
234
235Fixed a problem where the creation of a zero-length AML Buffer
236would cause a fault.
237
238Fixed a problem where a Buffer object that pointed to a static
239AML buffer (in an ACPI table) could inadvertently be deleted,
240causing memory corruption.
241
242Fixed a problem where a user buffer (passed in to the external
243ACPI CA interfaces) could be overwritten if the buffer was too
244small to complete the operation, causing memory corruption.
245
246Fixed a problem in the Buffer-to-String conversion code where a
247string of length one was always returned, regardless of the size
248of the input Buffer object.
249
250Removed the NATIVE_CHAR data type across the entire source due to
251lack of need and lack of consistent use.
252
253Code and Data Size: Current core subsystem library sizes are
254shown below.  These are the code and data sizes for the
255acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
256these values do not include any ACPI driver or OSPM code.  The
257debug version of the code includes the debug output trace
258mechanism and has a much larger code and data size.  Note that
259these values will vary depending on the efficiency of the
260compiler and the compiler options used during generation.
261
262  Previous Release
263    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
264    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
265  Current Release:
266    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
267    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
268
269
270----------------------------------------
27105 December 2002.  Summary of changes for version 20021205.
272
2731) ACPI CA Core Subsystem:
274
275Fixed a problem where a store to a String or Buffer object could
276cause corruption of the DSDT if the object type being stored was
277the same as the target object type and the length of the object
278being stored was equal to or smaller than the original (existing)
279target object.  This was seen to cause corruption of battery _BIF
280buffers if the _BIF method modified the buffer on the fly.
281
282Fixed a problem where an internal error was generated if a
283control method invocation was used in an OperationRegion, Buffer,
284or Package declaration.  This was caused by the deferred parsing
285of the control method and thus the deferred creation of the
286internal method object.  The solution to this problem was to
287create the internal method object at the moment the method is
288encountered in the first pass - so that subsequent references to
289the method will able to obtain the required parameter count and
290thus properly parse the method invocation.  This problem
291presented itself as an AE_AML_INTERNAL during the pass 1 parse
292phase during table load.
293
294Fixed a problem where the internal String object copy routine did
295not always allocate sufficient memory for the target String
296object and caused memory corruption.  This problem was seen to
297cause "Allocation already present in list!" errors as memory
298allocation became corrupted.
299
300Implemented a new function for the evaluation of namespace
301objects that allows the specification of the allowable return
302object types.  This simplifies a lot of code that checks for a
303return object of one or more specific objects returned from the
304evaluation (such as _STA, etc.)  This may become and external
305function if it would be useful to ACPI-related drivers.
306
307Completed another round of prefixing #defines with "ACPI_" for
308clarity.
309
310Completed additional code restructuring to allow more modular
311linking for iASL compiler and AcpiExec.  Several files were split
312creating new files.  New files:  nsparse.c dsinit.c evgpe.c
313
314Implemented an abort mechanism to terminate an executing control
315method via the AML debugger.  This feature is useful for
316debugging control methods that depend (wait) for specific
317hardware responses.
318
319Code and Data Size: Current core subsystem library sizes are
320shown below.  These are the code and data sizes for the
321acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
322these values do not include any ACPI driver or OSPM code.  The
323debug version of the code includes the debug output trace
324mechanism and has a much larger code and data size.  Note that
325these values will vary depending on the efficiency of the
326compiler and the compiler options used during generation.
327
328  Previous Release
329    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
330    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
331  Current Release:
332    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
333    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
334
335
3362) iASL Compiler/Disassembler
337
338Fixed a compiler code generation problem for "Interrupt" Resource
339Descriptors.  If specified in the ASL, the optional "Resource
340Source Index" and "Resource Source" fields were not inserted into
341the correct location within the AML resource descriptor, creating
342an invalid descriptor.
343
344Fixed a disassembler problem for "Interrupt" resource
345descriptors.  The optional "Resource Source Index" and "Resource
346Source" fields were ignored.
347
348
349----------------------------------------
35022 November 2002.  Summary of changes for version 20021122.
351
352
3531) ACPI CA Core Subsystem:
354
355Fixed a reported problem where an object stored to a Method Local
356or Arg was not copied to a new object during the store - the
357object pointer was simply copied to the Local/Arg.  This caused
358all subsequent operations on the Local/Arg to also affect the
359original source of the store operation.
360
361Fixed a problem where a store operation to a Method Local or Arg
362was not completed properly if the Local/Arg contained a reference
363(from RefOf) to a named field.  The general-purpose store-to-
364namespace-node code is now used so that this case is handled
365automatically.
366
367Fixed a problem where the internal object copy routine would
368cause a protection fault if the object being copied was a Package
369and contained either 1) a NULL package element or 2) a nested sub-
370package.
371
372Fixed a problem with the GPE initialization that resulted from an
373ambiguity in the ACPI specification.  One section of the
374specification states that both the address and length of the GPE
375block must be zero if the block is not supported.  Another
376section implies that only the address need be zero if the block
377is not supported.  The code has been changed so that both the
378address and the length must be non-zero to indicate a valid GPE
379block (i.e., if either the address or the length is zero, the GPE
380block is invalid.)
381
382Code and Data Size: Current core subsystem library sizes are
383shown below.  These are the code and data sizes for the
384acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
385these values do not include any ACPI driver or OSPM code.  The
386debug version of the code includes the debug output trace
387mechanism and has a much larger code and data size.  Note that
388these values will vary depending on the efficiency of the
389compiler and the compiler options used during generation.
390
391  Previous Release
392    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
393    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
394  Current Release:
395    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
396    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
397
398
3992) Linux
400
401Cleaned up EC driver. Exported an external EC read/write
402interface. By going through this, other drivers (most notably
403sonypi) will be able to serialize access to the EC.
404
405
4063) iASL Compiler/Disassembler
407
408Implemented support to optionally generate include files for both
409ASM and C (the -i switch).  This simplifies BIOS development by
410automatically creating include files that contain external
411declarations for the symbols that are created within the
412(optionally generated) ASM and C AML source files.
413
414
415----------------------------------------
41615 November 2002.  Summary of changes for version 20021115.
417
4181) ACPI CA Core Subsystem:
419
420Fixed a memory leak problem where an error during resolution of
421method arguments during a method invocation from another method
422failed to cleanup properly by deleting all successfully resolved
423argument objects.
424
425Fixed a problem where the target of the Index() operator was not
426correctly constructed if the source object was a package.  This
427problem has not been detected because the use of a target operand
428with Index() is very rare.
429
430Fixed a problem with the Index() operator where an attempt was
431made to delete the operand objects twice.
432
433Fixed a problem where an attempt was made to delete an operand
434twice during execution of the CondRefOf() operator if the target
435did not exist.
436
437Implemented the first of perhaps several internal create object
438functions that create and initialize a specific object type.
439This consolidates duplicated code wherever the object is created,
440thus shrinking the size of the subsystem.
441
442Implemented improved debug/error messages for errors that occur
443during nested method invocations.  All executing method pathnames
444are displayed (with the error) as the call stack is unwound -
445thus simplifying debug.
446
447Fixed a problem introduced in the 10/02 release that caused
448premature deletion of a buffer object if a buffer was used as an
449ASL operand where an integer operand is required (Thus causing an
450implicit object conversion from Buffer to Integer.)  The change
451in the 10/02 release was attempting to fix a memory leak (albeit
452incorrectly.)
453
454Code and Data Size: Current core subsystem library sizes are
455shown below.  These are the code and data sizes for the
456acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
457these values do not include any ACPI driver or OSPM code.  The
458debug version of the code includes the debug output trace
459mechanism and has a much larger code and data size.  Note that
460these values will vary depending on the efficiency of the
461compiler and the compiler options used during generation.
462
463  Previous Release
464    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
465    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
466  Current Release:
467    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
468    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
469
470
4712) Linux
472
473Changed the implementation of the ACPI semaphores to use down()
474instead of down_interruptable().  It is important that the
475execution of ACPI control methods not be interrupted by signals.
476Methods must run to completion, or the system may be left in an
477unknown/unstable state.
478
479Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
480set. (Shawn Starr)
481
482
4833) iASL Compiler/Disassembler
484
485
486Changed the default location of output files.  All output files
487are now placed in the current directory by default instead of in
488the directory of the source file.  This change may affect some
489existing makefiles, but it brings the behavior of the compiler in
490line with other similar tools.  The location of the output files
491can be overridden with the -p command line switch.
492
493
494----------------------------------------
49511 November 2002.  Summary of changes for version 20021111.
496
497
4980) ACPI Specification 2.0B is released and is now available at:
499http://www.acpi.info/index.html
500
501
5021) ACPI CA Core Subsystem:
503
504Implemented support for the ACPI 2.0 SMBus Operation Regions.
505This includes the early detection and handoff of the request to
506the SMBus region handler (avoiding all of the complex field
507support code), and support for the bidirectional return packet
508from an SMBus write operation.  This paves the way for the
509development of SMBus drivers in each host operating system.
510
511Fixed a problem where the semaphore WAIT_FOREVER constant was
512defined as 32 bits, but must be 16 bits according to the ACPI
513specification.  This had the side effect of causing ASL
514Mutex/Event timeouts even though the ASL code requested a wait
515forever.  Changed all internal references to the ACPI timeout
516parameter to 16 bits to prevent future problems.  Changed the
517name of WAIT_FOREVER to ACPI_WAIT_FOREVER.
518
519Code and Data Size: Current core subsystem library sizes are
520shown below.  These are the code and data sizes for the
521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
522these values do not include any ACPI driver or OSPM code.  The
523debug version of the code includes the debug output trace
524mechanism and has a much larger code and data size.  Note that
525these values will vary depending on the efficiency of the
526compiler and the compiler options used during generation.
527
528  Previous Release
529    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
530    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
531  Current Release:
532    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
533    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
534
535
5362) Linux
537
538Module loading/unloading fixes (John Cagle)
539
540
5413) iASL Compiler/Disassembler
542
543Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
544
545Implemented support for the disassembly of all SMBus protocol
546keywords (SMBQuick, SMBWord, etc.)
547
548----------------------------------------
54901 November 2002.  Summary of changes for version 20021101.
550
551
5521) ACPI CA Core Subsystem:
553
554Fixed a problem where platforms that have a GPE1 block but no
555GPE0 block were not handled correctly.  This resulted in a "GPE
556overlap" error message.  GPE0 is no longer required.
557
558Removed code added in the previous release that inserted nodes
559into the namespace in alphabetical order.  This caused some side-
560effects on various machines.  The root cause of the problem is
561still under investigation since in theory, the internal ordering
562of the namespace nodes should not matter.
563
564
565Enhanced error reporting for the case where a named object is not
566found during control method execution.  The full ACPI namepath
567(name reference) of the object that was not found is displayed in
568this case.
569
570Note: as a result of the overhaul of the namespace object types
571in the previous release, the namespace nodes for the predefined
572scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
573instead of ACPI_TYPE_ANY.  This simplifies the namespace
574management code but may affect code that walks the namespace tree
575looking for specific object types.
576
577Code and Data Size: Current core subsystem library sizes are
578shown below.  These are the code and data sizes for the
579acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
580these values do not include any ACPI driver or OSPM code.  The
581debug version of the code includes the debug output trace
582mechanism and has a much larger code and data size.  Note that
583these values will vary depending on the efficiency of the
584compiler and the compiler options used during generation.
585
586  Previous Release
587    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
588    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
589  Current Release:
590    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
591    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
592
593
5942) Linux
595
596Fixed a problem introduced in the previous release where the
597Processor and Thermal objects were not recognized and installed
598in /proc.  This was related to the scope type change described
599above.
600
601
6023) iASL Compiler/Disassembler
603
604Implemented the -g option to get all of the required ACPI tables
605from the registry and save them to files (Windows version of the
606compiler only.)  The required tables are the FADT, FACS, and
607DSDT.
608
609Added ACPI table checksum validation during table disassembly in
610order to catch corrupted tables.
611
612
613----------------------------------------
61422 October 2002.  Summary of changes for version 20021022.
615
6161) ACPI CA Core Subsystem:
617
618Implemented a restriction on the Scope operator that the target
619must already exist in the namespace at the time the operator is
620encountered (during table load or method execution).  In other
621words, forward references are not allowed and Scope() cannot
622create a new object. This changes the previous behavior where the
623interpreter would create the name if not found.  This new
624behavior correctly enables the search-to-root algorithm during
625namespace lookup of the target name.  Because of this upsearch,
626this fixes the known Compaq _SB_.OKEC problem and makes both the
627AML interpreter and iASL compiler compatible with other ACPI
628implementations.
629
630Completed a major overhaul of the internal ACPI object types for
631the ACPI Namespace and the associated operand objects.  Many of
632these types had become obsolete with the introduction of the two-
633pass namespace load.  This cleanup simplifies the code and makes
634the entire namespace load mechanism much clearer and easier to
635understand.
636
637Improved debug output for tracking scope opening/closing to help
638diagnose scoping issues.  The old scope name as well as the new
639scope name are displayed.  Also improved error messages for
640problems with ASL Mutex objects and error messages for GPE
641problems.
642
643Cleaned up the namespace dump code, removed obsolete code.
644
645All string output (for all namespace/object dumps) now uses the
646common ACPI string output procedure which handles escapes
647properly and does not emit non-printable characters.
648
649Fixed some issues with constants in the 64-bit version of the
650local C library (utclib.c)
651
652
6532) Linux
654
655EC Driver:  No longer attempts to acquire the Global Lock at
656interrupt level.
657
658
6593) iASL Compiler/Disassembler
660
661Implemented ACPI 2.0B grammar change that disallows all Type 1
662and 2 opcodes outside of a control method.  This means that the
663"executable" operators (versus the "namespace" operators) cannot
664be used at the table level; they can only be used within a
665control method.
666
667Implemented the restriction on the Scope() operator where the
668target must already exist in the namespace at the time the
669operator is encountered (during ASL compilation). In other words,
670forward references are not allowed and Scope() cannot create a
671new object.  This makes the iASL compiler compatible with other
672ACPI implementations and makes the Scope() implementation adhere
673to the ACPI specification.
674
675Fixed a problem where namepath optimization for the Alias
676operator was optimizing the wrong path (of the two namepaths.)
677This caused a "Missing alias link" error message.
678
679Fixed a problem where an "unknown reserved name" warning could be
680incorrectly generated for names like "_SB" when the trailing
681underscore is not used in the original ASL.
682
683Fixed a problem where the reserved name check did not handle
684NamePaths with multiple NameSegs correctly.  The first nameseg of
685the NamePath was examined instead of the last NameSeg.
686
687
688----------------------------------------
689
69002 October 2002.  Summary of changes for this release.
691
692
6931) ACPI CA Core Subsystem version 20021002:
694
695Fixed a problem where a store/copy of a string to an existing
696string did not always set the string length properly in the
697String object.
698
699Fixed a reported problem with the ToString operator where the
700behavior was identical to the ToHexString operator instead of
701just simply converting a raw buffer to a string data type.
702
703Fixed a problem where CopyObject and the other "explicit"
704conversion operators were not updating the internal namespace
705node type as part of the store operation.
706
707Fixed a memory leak during implicit source operand conversion
708where the original object was not deleted if it was converted to
709a new object of a different type.
710
711Enhanced error messages for all problems associated with
712namespace lookups.  Common procedure generates and prints the
713lookup name as well as the formatted status.
714
715Completed implementation of a new design for the Alias support
716within the namespace.  The existing design did not handle the
717case where a new object was assigned to one of the two names due
718to the use of an explicit conversion operator, resulting in the
719two names pointing to two different objects.  The new design
720simply points the Alias name to the original name node - not to
721the object.  This results in a level of indirection that must be
722handled in the name resolution mechanism.
723
724Code and Data Size: Current core subsystem library sizes are
725shown below.  These are the code and data sizes for the
726acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
727these values do not include any ACPI driver or OSPM code.  The
728debug version of the code includes the debug output trace
729mechanism and has a larger code and data size.  Note that these
730values will vary depending on the efficiency of the compiler and
731the compiler options used during generation.
732
733  Previous Release
734    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
735    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
736  Current Release:
737    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
738    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
739
740
7412) Linux
742
743Initialize thermal driver's timer before it is used. (Knut
744Neumann)
745
746Allow handling negative celsius values. (Kochi Takayoshi)
747
748Fix thermal management and make trip points. R/W (Pavel Machek)
749
750Fix /proc/acpi/sleep. (P. Christeas)
751
752IA64 fixes. (David Mosberger)
753
754Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
755
756Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
757Brodowski)
758
759
7603) iASL Compiler/Disassembler
761
762Clarified some warning/error messages.
763
764
765----------------------------------------
76618 September 2002.  Summary of changes for this release.
767
768
7691) ACPI CA Core Subsystem version 20020918:
770
771Fixed a reported problem with reference chaining (via the Index()
772and RefOf() operators) in the ObjectType() and SizeOf()
773operators.  The definition of these operators includes the
774dereferencing of all chained references to return information on
775the base object.
776
777Fixed a problem with stores to indexed package elements - the
778existing code would not complete the store if an "implicit
779conversion" was not performed.  In other words, if the existing
780object (package element) was to be replaced completely, the code
781didn't handle this case.
782
783Relaxed typechecking on the ASL "Scope" operator to allow the
784target name to refer to an object of type Integer, String, or
785Buffer, in addition to the scoping object types (Device,
786predefined Scopes, Processor, PowerResource, and ThermalZone.)
787This allows existing AML code that has workarounds for a bug in
788Windows to function properly.  A warning is issued, however.
789This affects both the AML interpreter and the iASL compiler.
790Below is an example of this type of ASL code:
791
792      Name(DEB,0x00)
793      Scope(DEB)
794      {
795
796Fixed some reported problems with 64-bit integer support in the
797local implementation of C library functions (clib.c)
798
799
8002) Linux
801
802Use ACPI fix map region instead of IOAPIC region, since it is
803undefined in non-SMP.
804
805Ensure that the SCI has the proper polarity and trigger, even on
806systems that do not have an interrupt override entry in the MADT.
807
8082.5 big driver reorganization (Pat Mochel)
809
810Use early table mapping code from acpitable.c (Andi Kleen)
811
812New blacklist entries (Andi Kleen)
813
814Blacklist improvements. Split blacklist code out into a separate
815file. Move checking the blacklist to very early. Previously, we
816would use ACPI tables, and then halfway through init, check the
817blacklist -- too late. Now, it's early enough to completely fall-
818back to non-ACPI.
819
820
8213) iASL Compiler/Disassembler version 20020918:
822
823Fixed a problem where the typechecking code didn't know that an
824alias could point to a method.  In other words, aliases were not
825being dereferenced during typechecking.
826
827
828----------------------------------------
82929 August 2002.  Summary of changes for this release.
830
8311) ACPI CA Core Subsystem Version 20020829:
832
833If the target of a Scope() operator already exists, it must be an
834object type that actually opens a scope -- such as a Device,
835Method, Scope, etc.  This is a fatal runtime error.  Similar
836error check has been added to the iASL compiler also.
837
838Tightened up the namespace load to disallow multiple names in the
839same scope.  This previously was allowed if both objects were of
840the same type.  (i.e., a lookup was the same as entering a new
841name).
842
843
8442) Linux
845
846Ensure that the ACPI interrupt has the proper trigger and
847polarity.
848
849local_irq_disable is extraneous. (Matthew Wilcox)
850
851Make "acpi=off" actually do what it says, and not use the ACPI
852interpreter *or* the tables.
853
854Added arch-neutral support for parsing SLIT and SRAT tables
855(Kochi Takayoshi)
856
857
8583) iASL Compiler/Disassembler  Version 20020829:
859
860Implemented namepath optimization for name declarations.  For
861example, a declaration like "Method (\_SB_.ABCD)" would get
862optimized to "Method (ABCD)" if the declaration is within the
863\_SB_ scope.  This optimization is in addition to the named
864reference path optimization first released in the previous
865version. This would seem to complete all possible optimizations
866for namepaths within the ASL/AML.
867
868If the target of a Scope() operator already exists, it must be an
869object type that actually opens a scope -- such as a Device,
870Method, Scope, etc.
871
872Implemented a check and warning for unreachable code in the same
873block below a Return() statement.
874
875Fixed a problem where the listing file was not generated if the
876compiler aborted if the maximum error count was exceeded (200).
877
878Fixed a problem where the typechecking of method return values
879was broken.  This includes the check for a return value when the
880method is invoked as a TermArg (a return value is expected.)
881
882Fixed a reported problem where EOF conditions during a quoted
883string or comment caused a fault.
884
885
886----------------------------------------
88715 August 2002.  Summary of changes for this release.
888
8891) ACPI CA Core Subsystem Version 20020815:
890
891Fixed a reported problem where a Store to a method argument that
892contains a reference did not perform the indirect store
893correctly.  This problem was created during the conversion to the
894new reference object model - the indirect store to a method
895argument code was not updated to reflect the new model.
896
897Reworked the ACPI mode change code to better conform to ACPI 2.0,
898handle corner cases, and improve code legibility (Kochi
899Takayoshi)
900
901Fixed a problem with the pathname parsing for the carat (^)
902prefix.  The heavy use of the carat operator by the new namepath
903optimization in the iASL compiler uncovered a problem with the
904AML interpreter handling of this prefix.  In the case where one
905or more carats precede a single nameseg, the nameseg was treated
906as standalone and the search rule (to root) was inadvertently
907applied.  This could cause both the iASL compiler and the
908interpreter to find the wrong object or to miss the error that
909should occur if the object does not exist at that exact pathname.
910
911Found and fixed the problem where the HP Pavilion DSDT would not
912load.  This was a relatively minor tweak to the table loading
913code (a problem caused by the unexpected encounter with a method
914invocation not within a control method), but it does not solve
915the overall issue of the execution of AML code at the table
916level.  This investigation is still ongoing.
917
918Code and Data Size: Current core subsystem library sizes are
919shown below.  These are the code and data sizes for the
920acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
921these values do not include any ACPI driver or OSPM code.  The
922debug version of the code includes the debug output trace
923mechanism and has a larger code and data size.  Note that these
924values will vary depending on the efficiency of the compiler and
925the compiler options used during generation.
926
927  Previous Release
928    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
929    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
930  Current Release:
931    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
932    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
933
934
9352) Linux
936
937Remove redundant slab.h include (Brad Hards)
938
939Fix several bugs in thermal.c (Herbert Nachtnebel)
940
941Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
942
943Change acpi_system_suspend to use updated irq functions (Pavel
944Machek)
945
946Export acpi_get_firmware_table (Matthew Wilcox)
947
948Use proper root proc entry for ACPI (Kochi Takayoshi)
949
950Fix early-boot table parsing (Bjorn Helgaas)
951
952
9533) iASL Compiler/Disassembler
954
955Reworked the compiler options to make them more consistent and to
956use two-letter options where appropriate.  We were running out of
957sensible letters.   This may break some makefiles, so check the
958current options list by invoking the compiler with no parameters.
959
960Completed the design and implementation of the ASL namepath
961optimization option for the compiler.  This option optimizes all
962references to named objects to the shortest possible path.  The
963first attempt tries to utilize a single nameseg (4 characters)
964and the "search-to-root" algorithm used by the interpreter.  If
965that cannot be used (because either the name is not in the search
966path or there is a conflict with another object with the same
967name), the pathname is optimized using the carat prefix (usually
968a shorter string than specifying the entire path from the root.)
969
970Implemented support to obtain the DSDT from the Windows registry
971(when the disassembly option is specified with no input file).
972Added this code as the implementation for AcpiOsTableOverride in
973the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
974utility) to scan memory for the DSDT to the AcpiOsTableOverride
975function in the DOS OSL to make the disassembler truly OS
976independent.
977
978Implemented a new option to disassemble and compile in one step.
979When used without an input filename, this option will grab the
980DSDT from the local machine, disassemble it, and compile it in
981one step.
982
983Added a warning message for invalid escapes (a backslash followed
984by any character other than the allowable escapes).  This catches
985the quoted string error "\_SB_" (which should be "\\_SB_" ).
986Also, there are numerous instances in the ACPI specification
987where this error occurs.
988
989Added a compiler option to disable all optimizations.  This is
990basically the "compatibility mode" because by using this option,
991the AML code will come out exactly the same as other ASL
992compilers.
993
994Added error messages for incorrectly ordered dependent resource
995functions.  This includes: missing EndDependentFn macro at end of
996dependent resource list, nested dependent function macros (both
997start and end), and missing StartDependentFn macro.  These are
998common errors that should be caught at compile time.
999
1000Implemented _OSI support for the disassembler and compiler.  _OSI
1001must be included in the namespace for proper disassembly (because
1002the disassembler must know the number of arguments.)
1003
1004Added an "optimization" message type that is optional (off by
1005default).  This message is used for all optimizations - including
1006constant folding, integer optimization, and namepath
1007optimization.
1008
1009----------------------------------------
101025 July 2002.  Summary of changes for this release.
1011
1012
10131) ACPI CA Core Subsystem Version 20020725:
1014
1015The AML Disassembler has been enhanced to produce compilable ASL
1016code and has been integrated into the iASL compiler (see below)
1017as well as the single-step disassembly for the AML debugger and
1018the disassembler for the AcpiDump utility.  All ACPI 2.0A
1019opcodes, resource templates and macros are fully supported.  The
1020disassembler has been tested on over 30 different AML files,
1021producing identical AML when the resulting disassembled ASL file
1022is recompiled with the same ASL compiler.
1023
1024Modified the Resource Manager to allow zero interrupts and zero
1025dma channels during the GetCurrentResources call.  This was
1026causing problems on some platforms.
1027
1028Added the AcpiOsRedirectOutput interface to the OSL to simplify
1029output redirection for the AcpiOsPrintf and AcpiOsVprintf
1030interfaces.
1031
1032Code and Data Size: Current core subsystem library sizes are
1033shown below.  These are the code and data sizes for the
1034acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1035these values do not include any ACPI driver or OSPM code.  The
1036debug version of the code includes the debug output trace
1037mechanism and has a larger code and data size.  Note that these
1038values will vary depending on the efficiency of the compiler and
1039the compiler options used during generation.
1040
1041  Previous Release
1042    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
1043    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
1044  Current Release:
1045    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
1046    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
1047
1048
10492) Linux
1050
1051Fixed a panic in the EC driver (Dominik Brodowski)
1052
1053Implemented checksum of the R/XSDT itself during Linux table scan
1054(Richard Schaal)
1055
1056
10573) iASL compiler
1058
1059The AML disassembler is integrated into the compiler.  The "-d"
1060option invokes the disassembler  to completely disassemble an
1061input AML file, producing as output a text ASL file with the
1062extension ".dsl" (to avoid name collisions with existing .asl
1063source files.)  A future enhancement will allow the disassembler
1064to obtain the BIOS DSDT from the registry under Windows.
1065
1066Fixed a problem with the VendorShort and VendorLong resource
1067descriptors where an invalid AML sequence was created.
1068
1069Implemented a fix for BufferData term in the ASL parser.  It was
1070inadvertently defined twice, allowing invalid syntax to pass and
1071causing reduction conflicts.
1072
1073Fixed a problem where the Ones opcode could get converted to a
1074value of zero if "Ones" was used where a byte, word or dword
1075value was expected.  The 64-bit value is now truncated to the
1076correct size with the correct value.
1077
1078
1079----------------------------------------
108002 July 2002.  Summary of changes for this release.
1081
1082
10831) ACPI CA Core Subsystem Version 20020702:
1084
1085The Table Manager code has been restructured to add several new
1086features.  Tables that are not required by the core subsystem
1087(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
1088validated in any way and are returned from AcpiGetFirmwareTable
1089if requested.  The AcpiOsTableOverride interface is now called
1090for each table that is loaded by the subsystem in order to allow
1091the host to override any table it chooses.  Previously, only the
1092DSDT could be overridden.  Added one new files, tbrsdt.c and
1093tbgetall.c.
1094
1095Fixed a problem with the conversion of internal package objects
1096to external objects (when a package is returned from a control
1097method.)  The return buffer length was set to zero instead of the
1098proper length of the package object.
1099
1100Fixed a reported problem with the use of the RefOf and DeRefOf
1101operators when passing reference arguments to control methods.  A
1102new type of Reference object is used internally for references
1103produced by the RefOf operator.
1104
1105Added additional error messages in the Resource Manager to
1106explain AE_BAD_DATA errors when they occur during resource
1107parsing.
1108
1109Split the AcpiEnableSubsystem into two primitives to enable a
1110finer granularity initialization sequence.  These two calls
1111should be called in this order: AcpiEnableSubsystem (flags),
1112AcpiInitializeObjects (flags).  The flags parameter remains the
1113same.
1114
1115
11162) Linux
1117
1118Updated the ACPI utilities module to understand the new style of
1119fully resolved package objects that are now returned from the
1120core subsystem.  This eliminates errors of the form:
1121
1122    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
1123    acpi_utils-0430 [145] acpi_evaluate_reference:
1124        Invalid element in package (not a device reference)
1125
1126The method evaluation utility uses the new buffer allocation
1127scheme instead of calling AcpiEvaluate Object twice.
1128
1129Added support for ECDT. This allows the use of the Embedded
1130Controller before the namespace has been fully initialized, which
1131is necessary for ACPI 2.0 support, and for some laptops to
1132initialize properly. (Laptops using ECDT are still rare, so only
1133limited testing was performed of the added functionality.)
1134
1135Fixed memory leaks in the EC driver.
1136
1137Eliminated a brittle code structure in acpi_bus_init().
1138
1139Eliminated the acpi_evaluate() helper function in utils.c. It is
1140no longer needed since acpi_evaluate_object can optionally
1141allocate memory for the return object.
1142
1143Implemented fix for keyboard hang when getting battery readings
1144on some systems (Stephen White)
1145
1146PCI IRQ routing update (Dominik Brodowski)
1147
1148Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
1149support
1150
1151----------------------------------------
115211 June 2002.  Summary of changes for this release.
1153
1154
11551) ACPI CA Core Subsystem Version 20020611:
1156
1157Fixed a reported problem where constants such as Zero and One
1158appearing within _PRT packages were not handled correctly within
1159the resource manager code.  Originally reported against the ASL
1160compiler because the code generator now optimizes integers to
1161their minimal AML representation (i.e. AML constants if
1162possible.)  The _PRT code now handles all AML constant opcodes
1163correctly (Zero, One, Ones, Revision).
1164
1165Fixed a problem with the Concatenate operator in the AML
1166interpreter where a buffer result object was incorrectly marked
1167as not fully evaluated, causing a run-time error of
1168AE_AML_INTERNAL.
1169
1170All package sub-objects are now fully resolved before they are
1171returned from the external ACPI interfaces.  This means that name
1172strings are resolved to object handles, and constant operators
1173(Zero, One, Ones, Revision) are resolved to Integers.
1174
1175Implemented immediate resolution of the AML Constant opcodes
1176(Zero, One, Ones, Revision) to Integer objects upon detection
1177within the AML stream. This has simplified and reduced the
1178generated code size of the subsystem by eliminating about 10
1179switch statements for these constants (which previously were
1180contained in Reference objects.)  The complicating issues are
1181that the Zero opcode is used as a "placeholder" for unspecified
1182optional target operands and stores to constants are defined to
1183be no-ops.
1184
1185Code and Data Size: Current core subsystem library sizes are
1186shown below. These are the code and data sizes for the acpica.lib
1187produced by the Microsoft Visual C++ 6.0 compiler, and these
1188values do not include any ACPI driver or OSPM code.  The debug
1189version of the code includes the debug output trace mechanism and
1190has a larger code and data size.  Note that these values will
1191vary depending on the efficiency of the compiler and the compiler
1192options used during generation.
1193
1194  Previous Release
1195    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
1196    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
1197  Current Release:
1198    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
1199    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
1200
1201
12022) Linux
1203
1204Added preliminary support for obtaining _TRA data for PCI root
1205bridges (Bjorn Helgaas).
1206
1207
12083) iASL Compiler Version X2046:
1209
1210Fixed a problem where the "_DDN" reserved name was defined to be
1211a control method with one argument.  There are no arguments, and
1212_DDN does not have to be a control method.
1213
1214Fixed a problem with the Linux version of the compiler where the
1215source lines printed with error messages were the wrong lines.
1216This turned out to be the "LF versus CR/LF" difference between
1217Windows and Unix.  This appears to be the longstanding issue
1218concerning listing output and error messages.
1219
1220Fixed a problem with the Linux version of compiler where opcode
1221names within error messages were wrong.  This was caused by a
1222slight difference in the output of the Flex tool on Linux versus
1223Windows.
1224
1225Fixed a problem with the Linux compiler where the hex output
1226files contained some garbage data caused by an internal buffer
1227overrun.
1228
1229
1230----------------------------------------
123117 May 2002.  Summary of changes for this release.
1232
1233
12341) ACPI CA Core Subsystem Version 20020517:
1235
1236Implemented a workaround to an BIOS bug discovered on the HP
1237OmniBook where the FADT revision number and the table size are
1238inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
1239new behavior is to fallback to using only the ACPI 1.0 fields of
1240the FADT if the table is too small to be a ACPI 2.0 table as
1241claimed by the revision number.  Although this is a BIOS bug,
1242this is a case where the workaround is simple enough and with no
1243side effects, so it seemed prudent to add it.  A warning message
1244is issued, however.
1245
1246Implemented minimum size checks for the fixed-length ACPI tables
1247-- the FADT and FACS, as well as consistency checks between the
1248revision number and the table size.
1249
1250Fixed a reported problem in the table override support where the
1251new table pointer was incorrectly treated as a physical address
1252instead of a logical address.
1253
1254Eliminated the use of the AE_AML_ERROR exception and replaced it
1255with more descriptive codes.
1256
1257Fixed a problem where an exception would occur if an ASL Field
1258was defined with no named Field Units underneath it (used by some
1259index fields).
1260
1261Code and Data Size: Current core subsystem library sizes are
1262shown below.  These are the code and data sizes for the
1263acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1264these values do not include any ACPI driver or OSPM code.  The
1265debug version of the code includes the debug output trace
1266mechanism and has a larger code and data size.  Note that these
1267values will vary depending on the efficiency of the compiler and
1268the compiler options used during generation.
1269
1270  Previous Release
1271    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
1272    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
1273  Current Release:
1274    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
1275    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
1276
1277
1278
12792) Linux
1280
1281Much work done on ACPI init (MADT and PCI IRQ routing support).
1282(Paul D. and Dominik Brodowski)
1283
1284Fix PCI IRQ-related panic on boot (Sam Revitch)
1285
1286Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
1287
1288Fix "MHz" typo (Dominik Brodowski)
1289
1290Fix RTC year 2000 issue (Dominik Brodowski)
1291
1292Preclude multiple button proc entries (Eric Brunet)
1293
1294Moved arch-specific code out of include/platform/aclinux.h
1295
12963) iASL Compiler Version X2044:
1297
1298Implemented error checking for the string used in the EISAID
1299macro (Usually used in the definition of the _HID object.)  The
1300code now strictly enforces the PnP format - exactly 7 characters,
13013 uppercase letters and 4 hex digits.
1302
1303If a raw string is used in the definition of the _HID object
1304(instead of the EISAID macro), the string must contain all
1305alphanumeric characters (e.g., "*PNP0011" is not allowed because
1306of the asterisk.)
1307
1308Implemented checking for invalid use of ACPI reserved names for
1309most of the name creation operators (Name, Device, Event, Mutex,
1310OperationRegion, PowerResource, Processor, and ThermalZone.)
1311Previously, this check was only performed for control methods.
1312
1313Implemented an additional check on the Name operator to emit an
1314error if a reserved name that must be implemented in ASL as a
1315control method is used.  We know that a reserved name must be a
1316method if it is defined with input arguments.
1317
1318The warning emitted when a namespace object reference is not
1319found during the cross reference phase has been changed into an
1320error.  The "External" directive should be used for names defined
1321in other modules.
1322
1323
13244) Tools and Utilities
1325
1326The 16-bit tools (adump16 and aexec16) have been regenerated and
1327tested.
1328
1329Fixed a problem with the output of both acpidump and adump16
1330where the indentation of closing parentheses and brackets was not
1331aligned properly with the parent block.
1332
1333
1334----------------------------------------
133503 May 2002.  Summary of changes for this release.
1336
1337
13381) ACPI CA Core Subsystem Version 20020503:
1339
1340Added support a new OSL interface that allows the host operating
1341system software to override the DSDT found in the firmware -
1342AcpiOsTableOverride.  With this interface, the OSL can examine
1343the version of the firmware DSDT and replace it with a different
1344one if desired.
1345
1346Added new external interfaces for accessing ACPI registers from
1347device drivers and other system software - AcpiGetRegister and
1348AcpiSetRegister.  This was simply an externalization of the
1349existing AcpiHwBitRegister interfaces.
1350
1351Fixed a regression introduced in the previous build where the
1352ASL/AML CreateField operator always returned an error,
1353"destination must be a NS Node".
1354
1355Extended the maximum time (before failure) to successfully enable
1356ACPI mode to 3 seconds.
1357
1358Code and Data Size: Current core subsystem library sizes are
1359shown below.  These are the code and data sizes for the
1360acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1361these values do not include any ACPI driver or OSPM code.  The
1362debug version of the code includes the debug output trace
1363mechanism and has a larger code and data size.  Note that these
1364values will vary depending on the efficiency of the compiler and
1365the compiler options used during generation.
1366
1367  Previous Release
1368    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
1369    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
1370  Current Release:
1371    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
1372    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
1373
1374
13752) Linux
1376
1377Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
1378free. While 3 out of 4 of our in-house systems work fine, the
1379last one still hangs when testing the LAPIC timer.
1380
1381Renamed many files in 2.5 kernel release to omit "acpi_" from the
1382name.
1383
1384Added warning on boot for Presario 711FR.
1385
1386Sleep improvements (Pavel Machek)
1387
1388ACPI can now be built without CONFIG_PCI enabled.
1389
1390IA64: Fixed memory map functions (JI Lee)
1391
1392
13933) iASL Compiler Version X2043:
1394
1395Added support to allow the compiler to be integrated into the MS
1396VC++ development environment for one-button compilation of single
1397files or entire projects -- with error-to-source-line mapping.
1398
1399Implemented support for compile-time constant folding for the
1400Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
1401specification.  This allows the ASL writer to use expressions
1402instead of Integer/Buffer/String constants in terms that must
1403evaluate to constants at compile time and will also simplify the
1404emitted AML in any such sub-expressions that can be folded
1405(evaluated at compile-time.)  This increases the size of the
1406compiler significantly because a portion of the ACPI CA AML
1407interpreter is included within the compiler in order to pre-
1408evaluate constant expressions.
1409
1410
1411Fixed a problem with the "Unicode" ASL macro that caused the
1412compiler to fault.  (This macro is used in conjunction with the
1413_STR reserved name.)
1414
1415Implemented an AML opcode optimization to use the Zero, One, and
1416Ones opcodes where possible to further reduce the size of integer
1417constants and thus reduce the overall size of the generated AML
1418code.
1419
1420Implemented error checking for new reserved terms for ACPI
1421version 2.0A.
1422
1423Implemented the -qr option to display the current list of ACPI
1424reserved names known to the compiler.
1425
1426Implemented the -qc option to display the current list of ASL
1427operators that are allowed within constant expressions and can
1428therefore be folded at compile time if the operands are
1429constants.
1430
1431
14324) Documentation
1433
1434Updated the Programmer's Reference for new interfaces, data
1435types, and memory allocation model options.
1436
1437Updated the iASL Compiler User Reference to apply new format and
1438add information about new features and options.
1439
1440----------------------------------------
144119 April 2002.  Summary of changes for this release.
1442
14431) ACPI CA Core Subsystem Version 20020419:
1444
1445The source code base for the Core Subsystem has been completely
1446cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
1447versions.  The Lint option files used are included in the
1448/acpi/generate/lint directory.
1449
1450Implemented enhanced status/error checking across the entire
1451Hardware manager subsystem.  Any hardware errors (reported from
1452the OSL) are now bubbled up and will abort a running control
1453method.
1454
1455Fixed a problem where the per-ACPI-table integer width (32 or 64)
1456was stored only with control method nodes, causing a fault when
1457non-control method code was executed during table loading.  The
1458solution implemented uses a global variable to indicate table
1459width across the entire ACPI subsystem.  Therefore, ACPI CA does
1460not support mixed integer widths across different ACPI tables
1461(DSDT, SSDT).
1462
1463Fixed a problem where NULL extended fields (X fields) in an ACPI
14642.0 ACPI FADT caused the table load to fail.  Although the
1465existing ACPI specification is a bit fuzzy on this topic, the new
1466behavior is to fall back on a ACPI 1.0 field if the corresponding
1467ACPI 2.0 X field is zero (even though the table revision
1468indicates a full ACPI 2.0 table.)  The ACPI specification will be
1469updated to clarify this issue.
1470
1471Fixed a problem with the SystemMemory operation region handler
1472where memory was always accessed byte-wise even if the AML-
1473specified access width was larger than a byte.  This caused
1474problems on systems with memory-mapped I/O.  Memory is now
1475accessed with the width specified.  On systems that do not
1476support non-aligned transfers, a check is made to guarantee
1477proper address alignment before proceeding in order to avoid an
1478AML-caused alignment fault within the kernel.
1479
1480
1481Fixed a problem with the ExtendedIrq resource where only one byte
1482of the 4-byte Irq field was extracted.
1483
1484Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
1485function was out of date and required a rewrite.
1486
1487Code and Data Size: Current core subsystem library sizes are
1488shown below.  These are the code and data sizes for the
1489acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1490these values do not include any ACPI driver or OSPM code.  The
1491debug version of the code includes the debug output trace
1492mechanism and has a larger code and data size.  Note that these
1493values will vary depending on the efficiency of the compiler and
1494the compiler options used during generation.
1495
1496  Previous Release
1497    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
1498    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
1499  Current Release:
1500    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
1501    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
1502
1503
15042) Linux
1505
1506PCI IRQ routing fixes (Dominik Brodowski)
1507
1508
15093) iASL Compiler Version X2042:
1510
1511Implemented an additional compile-time error check for a field
1512unit whose size + minimum access width would cause a run-time
1513access beyond the end-of-region.  Previously, only the field size
1514itself was checked.
1515
1516The Core subsystem and iASL compiler now share a common parse
1517object in preparation for compile-time evaluation of the type
15183/4/5 ASL operators.
1519
1520
1521----------------------------------------
1522Summary of changes for this release: 03_29_02
1523
15241) ACPI CA Core Subsystem Version 20020329:
1525
1526Implemented support for late evaluation of TermArg operands to
1527Buffer and Package objects.  This allows complex expressions to
1528be used in the declarations of these object types.
1529
1530Fixed an ACPI 1.0 compatibility issue when reading Fields. In
1531ACPI 1.0, if the field was larger than 32 bits, it was returned
1532as a buffer - otherwise it was returned as an integer.  In ACPI
15332.0, the field is returned as a buffer only if the field is
1534larger than 64 bits.  The TableRevision is now considered when
1535making this conversion to avoid incompatibility with existing ASL
1536code.
1537
1538Implemented logical addressing for AcpiOsGetRootPointer.  This
1539allows an RSDP with either a logical or physical address.  With
1540this support, the host OS can now override all ACPI tables with
1541one logical RSDP.  Includes implementation of  "typed" pointer
1542support to allow a common data type for both physical and logical
1543pointers internally.  This required a change to the
1544AcpiOsGetRootPointer interface.
1545
1546Implemented the use of ACPI 2.0 Generic Address Structures for
1547all GPE, Fixed Event, and PM Timer I/O.  This allows the use of
1548memory mapped I/O for these ACPI features.
1549
1550Initialization now ignores not only non-required tables (All
1551tables other than the FADT, FACS, DSDT, and SSDTs), but also does
1552not validate the table headers of unrecognized tables.
1553
1554Fixed a problem where a notify handler could only be
1555installed/removed on an object of type Device.  All "notify"
1556objects are now supported -- Devices, Processor, Power, and
1557Thermal.
1558
1559Removed most verbosity from the ACPI_DB_INFO debug level.  Only
1560critical information is returned when this debug level is
1561enabled.
1562
1563Code and Data Size: Current core subsystem library sizes are
1564shown below.  These are the code and data sizes for the
1565acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1566these values do not include any ACPI driver or OSPM code.  The
1567debug version of the code includes the debug output trace
1568mechanism and has a larger code and data size.  Note that these
1569values will vary depending on the efficiency of the compiler and
1570the compiler options used during generation.
1571
1572  Previous Release
1573    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
1574    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
1575  Current Release:
1576    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
1577    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
1578
1579
15802) Linux:
1581
1582The processor driver (acpi_processor.c) now fully supports ACPI
15832.0-based processor performance control (e.g. Intel(R)
1584SpeedStep(TM) technology) Note that older laptops that only have
1585the Intel "applet" interface are not supported through this.  The
1586'limit' and 'performance' interface (/proc) are fully functional.
1587[Note that basic policy for controlling performance state
1588transitions will be included in the next version of ospmd.]  The
1589idle handler was modified to more aggressively use C2, and PIIX4
1590errata handling underwent a complete overhaul (big thanks to
1591Dominik Brodowski).
1592
1593Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
1594based devices in the ACPI namespace are now dynamically bound
1595(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
1596This allows, among other things, ACPI to resolve bus numbers for
1597subordinate PCI bridges.
1598
1599Enhanced PCI IRQ routing to get the proper bus number for _PRT
1600entries defined underneath PCI bridges.
1601
1602Added IBM 600E to bad bios list due to invalid _ADR value for
1603PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
1604
1605In the process of adding full MADT support (e.g. IOAPIC) for IA32
1606(acpi.c, mpparse.c) -- stay tuned.
1607
1608Added back visual differentiation between fixed-feature and
1609control-method buttons in dmesg.  Buttons are also subtyped (e.g.
1610button/power/PWRF) to simplify button identification.
1611
1612We no longer use -Wno-unused when compiling debug. Please ignore
1613any "_THIS_MODULE defined but not used" messages.
1614
1615Can now shut down the system using "magic sysrq" key.
1616
1617
16183) iASL Compiler version 2041:
1619
1620Fixed a problem where conversion errors for hex/octal/decimal
1621constants were not reported.
1622
1623Implemented a fix for the General Register template Address
1624field.  This field was 8 bits when it should be 64.
1625
1626Fixed a problem where errors/warnings were no longer being
1627emitted within the listing output file.
1628
1629Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
1630exactly 4 characters, alphanumeric only.
1631
1632
1633
1634
1635----------------------------------------
1636Summary of changes for this release: 03_08_02
1637
1638
16391) ACPI CA Core Subsystem Version 20020308:
1640
1641Fixed a problem with AML Fields where the use of the "AccessAny"
1642keyword could cause an interpreter error due to attempting to
1643read or write beyond the end of the parent Operation Region.
1644
1645Fixed a problem in the SystemMemory Operation Region handler
1646where an attempt was made to map memory beyond the end of the
1647region.  This was the root cause of the "AE_ERROR" and
1648"AE_NO_MEMORY" errors on some Linux systems.
1649
1650Fixed a problem where the interpreter/namespace "search to root"
1651algorithm was not functioning for some object types.  Relaxed the
1652internal restriction on the search to allow upsearches for all
1653external object types as well as most internal types.
1654
1655
16562) Linux:
1657
1658We now use safe_halt() macro versus individual calls to sti |
1659hlt.
1660
1661Writing to the processor limit interface should now work. "echo
16621" will increase the limit, 2 will decrease, and 0 will reset to
1663the default.
1664
1665
16663) ASL compiler:
1667
1668Fixed segfault on Linux version.
1669
1670
1671----------------------------------------
1672Summary of changes for this release: 02_25_02
1673
16741) ACPI CA Core Subsystem:
1675
1676
1677Fixed a problem where the GPE bit masks were not initialized
1678properly, causing erratic GPE behavior.
1679
1680Implemented limited support for multiple calling conventions.
1681The code can be generated with either the VPL (variable parameter
1682list, or "C") convention, or the FPL (fixed parameter list, or
1683"Pascal") convention.  The core subsystem is about 3.4% smaller
1684when generated with FPL.
1685
1686
16872) Linux
1688
1689Re-add some /proc/acpi/event functionality that was lost during
1690the rewrite
1691
1692Resolved issue with /proc events for fixed-feature buttons
1693showing up as the system device.
1694
1695Fixed checks on C2/C3 latencies to be inclusive of maximum
1696values.
1697
1698Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
1699
1700Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
1701
1702Fixed limit interface & usage to fix bugs with passive cooling
1703hysterisis.
1704
1705Restructured PRT support.
1706
1707
1708----------------------------------------
1709Summary of changes for this label: 02_14_02
1710
1711
17121) ACPI CA Core Subsystem:
1713
1714Implemented support in AcpiLoadTable to allow loading of FACS and
1715FADT tables.
1716
1717Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
1718been removed.  All 64-bit platforms should be migrated to the
1719ACPI 2.0 tables.  The actbl71.h header has been removed from the
1720source tree.
1721
1722All C macros defined within the subsystem have been prefixed with
1723"ACPI_" to avoid collision with other system include files.
1724
1725Removed the return value for the two AcpiOsPrint interfaces,
1726since it is never used and causes lint warnings for ignoring the
1727return value.
1728
1729Added error checking to all internal mutex acquire and release
1730calls.  Although a failure from one of these interfaces is
1731probably a fatal system error, these checks will cause the
1732immediate abort of the currently executing method or interface.
1733
1734Fixed a problem where the AcpiSetCurrentResources interface could
1735fault.  This was a side effect of the deployment of the new
1736memory allocation model.
1737
1738Fixed a couple of problems with the Global Lock support
1739introduced in the last major build.  The "common" (1.0/2.0)
1740internal FACS was being overwritten with the FACS signature and
1741clobbering the Global Lock pointer.  Also, the actual firmware
1742FACS was being unmapped after construction of the "common" FACS,
1743preventing access to the actual Global Lock field within it.  The
1744"common" internal FACS is no longer installed as an actual ACPI
1745table; it is used simply as a global.
1746
1747Code and Data Size: Current core subsystem library sizes are
1748shown below.  These are the code and data sizes for the
1749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1750these values do not include any ACPI driver or OSPM code.  The
1751debug version of the code includes the debug output trace
1752mechanism and has a larger code and data size.  Note that these
1753values will vary depending on the efficiency of the compiler and
1754the compiler options used during generation.
1755
1756  Previous Release (02_07_01)
1757    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
1758    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
1759  Current Release:
1760    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
1761    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
1762
1763
17642) Linux
1765
1766Updated Linux-specific code for core macro and OSL interface
1767changes described above.
1768
1769Improved /proc/acpi/event. It now can be opened only once and has
1770proper poll functionality.
1771
1772Fixed and restructured power management (acpi_bus).
1773
1774Only create /proc "view by type" when devices of that class
1775exist.
1776
1777Fixed "charging/discharging" bug (and others) in acpi_battery.
1778
1779Improved thermal zone code.
1780
1781
17823) ASL Compiler, version X2039:
1783
1784
1785Implemented the new compiler restriction on ASL String hex/octal
1786escapes to non-null, ASCII values.  An error results if an
1787invalid value is used.  (This will require an ACPI 2.0
1788specification change.)
1789
1790AML object labels that are output to the optional C and ASM
1791source are now prefixed with both the ACPI table signature and
1792table ID to help guarantee uniqueness within a large BIOS
1793project.
1794
1795
1796----------------------------------------
1797Summary of changes for this label: 02_01_02
1798
17991) ACPI CA Core Subsystem:
1800
1801ACPI 2.0 support is complete in the entire Core Subsystem and the
1802ASL compiler. All new ACPI 2.0 operators are implemented and all
1803other changes for ACPI 2.0 support are complete.  With
1804simultaneous code and data optimizations throughout the
1805subsystem, ACPI 2.0 support has been implemented with almost no
1806additional cost in terms of code and data size.
1807
1808Implemented a new mechanism for allocation of return buffers.  If
1809the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
1810be allocated on behalf of the caller.  Consolidated all return
1811buffer validation and allocation to a common procedure.  Return
1812buffers will be allocated via the primary OSL allocation
1813interface since it appears that a separate pool is not needed by
1814most users.  If a separate pool is required for these buffers,
1815the caller can still use the original mechanism and pre-allocate
1816the buffer(s).
1817
1818Implemented support for string operands within the DerefOf
1819operator.
1820
1821Restructured the Hardware and Event managers to be table driven,
1822simplifying the source code and reducing the amount of generated
1823code.
1824
1825Split the common read/write low-level ACPI register bitfield
1826procedure into a separate read and write, simplifying the code
1827considerably.
1828
1829Obsoleted the AcpiOsCallocate OSL interface.  This interface was
1830used only a handful of times and didn't have enough critical mass
1831for a separate interface.  Replaced with a common calloc
1832procedure in the core.
1833
1834Fixed a reported problem with the GPE number mapping mechanism
1835that allows GPE1 numbers to be non-contiguous with GPE0.
1836Reorganized the GPE information and shrunk a large array that was
1837originally large enough to hold info for all possible GPEs (256)
1838to simply large enough to hold all GPEs up to the largest GPE
1839number on the machine.
1840
1841Fixed a reported problem with resource structure alignment on 64-
1842bit platforms.
1843
1844Changed the AcpiEnableEvent and AcpiDisableEvent external
1845interfaces to not require any flags for the common case of
1846enabling/disabling a GPE.
1847
1848Implemented support to allow a "Notify" on a Processor object.
1849
1850Most TBDs in comments within the source code have been resolved
1851and eliminated.
1852
1853Fixed a problem in the interpreter where a standalone parent
1854prefix (^) was not handled correctly in the interpreter and
1855debugger.
1856
1857Removed obsolete and unnecessary GPE save/restore code.
1858
1859Implemented Field support in the ASL Load operator.  This allows
1860a table to be loaded from a named field, in addition to loading a
1861table directly from an Operation Region.
1862
1863Implemented timeout and handle support in the external Global
1864Lock interfaces.
1865
1866Fixed a problem in the AcpiDump utility where pathnames were no
1867longer being generated correctly during the dump of named
1868objects.
1869
1870Modified the AML debugger to give a full display of if/while
1871predicates instead of just one AML opcode at a time.  (The
1872predicate can have several nested ASL statements.)  The old
1873method was confusing during single stepping.
1874
1875Code and Data Size: Current core subsystem library sizes are
1876shown below. These are the code and data sizes for the acpica.lib
1877produced by the Microsoft Visual C++ 6.0 compiler, and these
1878values do not include any ACPI driver or OSPM code.  The debug
1879version of the code includes the debug output trace mechanism and
1880has a larger code and data size.  Note that these values will
1881vary depending on the efficiency of the compiler and the compiler
1882options used during generation.
1883
1884  Previous Release (12_18_01)
1885     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
1886     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
1887   Current Release:
1888     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
1889     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
1890
18912) Linux
1892
1893 Implemented fix for PIIX reverse throttling errata (Processor
1894driver)
1895
1896Added new Limit interface (Processor and Thermal drivers)
1897
1898New thermal policy (Thermal driver)
1899
1900Many updates to /proc
1901
1902Battery "low" event support (Battery driver)
1903
1904Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
1905
1906IA32 - IA64 initialization unification, no longer experimental
1907
1908Menuconfig options redesigned
1909
19103) ASL Compiler, version X2037:
1911
1912Implemented several new output features to simplify integration
1913of AML code into  firmware: 1) Output the AML in C source code
1914with labels for each named ASL object.  The    original ASL
1915source code is interleaved as C comments. 2) Output the AML in
1916ASM source code with labels and interleaved ASL    source. 3)
1917Output the AML in raw hex table form, in either C or ASM.
1918
1919Implemented support for optional string parameters to the
1920LoadTable operator.
1921
1922Completed support for embedded escape sequences within string
1923literals.  The compiler now supports all single character escapes
1924as well as the Octal and Hex escapes.  Note: the insertion of a
1925null byte into a string literal (via the hex/octal escape) causes
1926the string to be immediately terminated.  A warning is issued.
1927
1928Fixed a problem where incorrect AML was generated for the case
1929where an ASL namepath consists of a single parent prefix (
1930
1931) with no trailing name segments.
1932
1933The compiler has been successfully generated with a 64-bit C
1934compiler.
1935
1936
1937
1938
1939----------------------------------------
1940Summary of changes for this label: 12_18_01
1941
19421) Linux
1943
1944Enhanced blacklist with reason and severity fields. Any table's
1945signature may now be used to identify a blacklisted system.
1946
1947Call _PIC control method to inform the firmware which interrupt
1948model the OS is using. Turn on any disabled link devices.
1949
1950Cleaned up busmgr /proc error handling (Andreas Dilger)
1951
1952 2) ACPI CA Core Subsystem:
1953
1954Implemented ACPI 2.0 semantics for the "Break" operator (Exit
1955from while loop)
1956
1957Completed implementation of the ACPI 2.0 "Continue",
1958"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
1959operators.  All new ACPI 2.0 operators are now implemented in
1960both the ASL compiler and the AML interpreter.  The only
1961remaining ACPI 2.0 task is support for the String data type in
1962the DerefOf operator.  Fixed a problem with AcquireMutex where
1963the status code was lost if the caller had to actually wait for
1964the mutex.
1965
1966Increased the maximum ASL Field size from 64K bits to 4G bits.
1967
1968Completed implementation of the external Global Lock interfaces -
1969- AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout
1970and Handler parameters were added.
1971
1972Completed another pass at removing warnings and issues when
1973compiling with 64-bit compilers.  The code now compiles cleanly
1974with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
1975add and subtract (diff) macros have changed considerably.
1976
1977Created and deployed a new ACPI_SIZE type that is 64-bits wide on
197864-bit platforms, 32-bits on all others.  This type is used
1979wherever memory allocation and/or the C sizeof() operator is
1980used, and affects the OSL memory allocation interfaces
1981AcpiOsAllocate and AcpiOsCallocate.
1982
1983Implemented sticky user breakpoints in the AML debugger.
1984
1985Code and Data Size: Current core subsystem library sizes are
1986shown below. These are the code and data sizes for the acpica.lib
1987produced by the Microsoft Visual C++ 6.0 compiler, and these
1988values do not include any ACPI driver or OSPM code.  The debug
1989version of the code includes the debug output trace mechanism and
1990has a larger code and data size. Note that these values will vary
1991depending on the efficiency of the compiler and the compiler
1992options used during generation.
1993
1994  Previous Release (12_05_01)
1995     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
1996     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
1997   Current Release:
1998     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
1999     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
2000
2001 3) ASL Compiler, version X2034:
2002
2003Now checks for (and generates an error if detected) the use of a
2004Break or Continue statement without an enclosing While statement.
2005
2006Successfully generated the compiler with the Intel 64-bit C
2007compiler.
2008
2009 ----------------------------------------
2010Summary of changes for this label: 12_05_01
2011
2012 1) ACPI CA Core Subsystem:
2013
2014The ACPI 2.0 CopyObject operator is fully implemented.  This
2015operator creates a new copy of an object (and is also used to
2016bypass the "implicit conversion" mechanism of the Store
2017operator.)
2018
2019The ACPI 2.0 semantics for the SizeOf operator are fully
2020implemented.  The change is that performing a SizeOf on a
2021reference object causes an automatic dereference of the object to
2022tha actual value before the size is evaluated. This behavior was
2023undefined in ACPI 1.0.
2024
2025The ACPI 2.0 semantics for the Extended IRQ resource descriptor
2026have been implemented.  The interrupt polarity and mode are now
2027independently set.
2028
2029Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
2030appearing in Package objects were not properly converted to
2031integers when the internal Package was converted to an external
2032object (via the AcpiEvaluateObject interface.)
2033
2034Fixed a problem with the namespace object deletion mechanism for
2035objects created by control methods.  There were two parts to this
2036problem: 1) Objects created during the initialization phase
2037method parse were not being deleted, and 2) The object owner ID
2038mechanism to track objects was broken.
2039
2040Fixed a problem where the use of the ASL Scope operator within a
2041control method would result in an invalid opcode exception.
2042
2043Fixed a problem introduced in the previous label where the buffer
2044length required for the _PRT structure was not being returned
2045correctly.
2046
2047Code and Data Size: Current core subsystem library sizes are
2048shown below. These are the code and data sizes for the acpica.lib
2049produced by the Microsoft Visual C++ 6.0 compiler, and these
2050values do not include any ACPI driver or OSPM code.  The debug
2051version of the code includes the debug output trace mechanism and
2052has a larger code and data size.  Note that these values will
2053vary depending on the efficiency of the compiler and the compiler
2054options used during generation.
2055
2056  Previous Release (11_20_01)
2057     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
2058     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
2059
2060  Current Release:
2061     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
2062     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
2063
2064 2) Linux:
2065
2066Updated all files to apply cleanly against 2.4.16.
2067
2068Added basic PCI Interrupt Routing Table (PRT) support for IA32
2069(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
2070version supports both static and dyanmic PRT entries, but dynamic
2071entries are treated as if they were static (not yet
2072reconfigurable).  Architecture- specific code to use this data is
2073absent on IA32 but should be available shortly.
2074
2075Changed the initialization sequence to start the ACPI interpreter
2076(acpi_init) prior to initialization of the PCI driver (pci_init)
2077in init/main.c.  This ordering is required to support PRT and
2078facilitate other (future) enhancement.  A side effect is that the
2079ACPI bus driver and certain device drivers can no longer be
2080loaded as modules.
2081
2082Modified the 'make menuconfig' options to allow PCI Interrupt
2083Routing support to be included without the ACPI Bus and other
2084device drivers.
2085
2086 3) ASL Compiler, version X2033:
2087
2088Fixed some issues with the use of the new CopyObject and
2089DataTableRegion operators.  Both are fully functional.
2090
2091 ----------------------------------------
2092Summary of changes for this label: 11_20_01
2093
2094 20 November 2001.  Summary of changes for this release.
2095
2096 1) ACPI CA Core Subsystem:
2097
2098Updated Index support to match ACPI 2.0 semantics.  Storing a
2099Integer, String, or Buffer to an Index of a Buffer will store
2100only the least-significant byte of the source to the Indexed
2101buffer byte.  Multiple writes are not performed.
2102
2103Fixed a problem where the access type used in an AccessAs ASL
2104operator was not recorded correctly into the field object.
2105
2106Fixed a problem where ASL Event objects were created in a
2107signalled state. Events are now created in an unsignalled state.
2108
2109The internal object cache is now purged after table loading and
2110initialization to reduce the use of dynamic kernel memory -- on
2111the assumption that object use is greatest during the parse phase
2112of the entire table (versus the run-time use of individual
2113control methods.)
2114
2115ACPI 2.0 variable-length packages are now fully operational.
2116
2117Code and Data Size: Code and Data optimizations have permitted
2118new feature development with an actual reduction in the library
2119size.  Current core subsystem library sizes are shown below.
2120These are the code and data sizes for the acpica.lib produced by
2121the Microsoft Visual C++ 6.0 compiler, and these values do not
2122include any ACPI driver or OSPM code.  The debug version of the
2123code includes the debug output trace mechanism and has a larger
2124code and data size.  Note that these values will vary depending
2125on the efficiency of the compiler and the compiler options used
2126during generation.
2127
2128  Previous Release (11_09_01):
2129     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
2130     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
2131
2132  Current Release:
2133     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
2134     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
2135
2136 2) Linux:
2137
2138Enhanced the ACPI boot-time initialization code to allow the use
2139of Local APIC tables for processor enumeration on IA-32, and to
2140pave the way for a fully MPS-free boot (on SMP systems) in the
2141near future.  This functionality replaces
2142arch/i386/kernel/acpitables.c, which was introduced in an earlier
21432.4.15-preX release.  To enable this feature you must add
2144"acpi_boot=on" to the kernel command line -- see the help entry
2145for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
2146in the works...
2147
2148Restructured the configuration options to allow boot-time table
2149parsing support without inclusion of the ACPI Interpreter (and
2150other) code.
2151
2152NOTE: This release does not include fixes for the reported
2153events, power-down, and thermal passive cooling issues (coming
2154soon).
2155
2156 3) ASL Compiler:
2157
2158Added additional typechecking for Fields within restricted access
2159Operation Regions.  All fields within EC and CMOS regions must be
2160declared with ByteAcc. All fields withing SMBus regions must be
2161declared with the BufferAcc access type.
2162
2163Fixed a problem where the listing file output of control methods
2164no longer interleaved the actual AML code with the ASL source
2165code.
2166
2167
2168
2169----------------------------------------
2170Summary of changes for this label: 11_09_01
2171
21721) ACPI CA Core Subsystem:
2173
2174Implemented ACPI 2.0-defined support for writes to fields with a
2175Buffer, String, or Integer source operand that is smaller than
2176the target field. In these cases, the source operand is zero-
2177extended to fill the target field.
2178
2179Fixed a problem where a Field starting bit offset (within the
2180parent operation region) was calculated incorrectly if the
2181alignment of the field differed from the access width.  This
2182affected CreateWordField, CreateDwordField, CreateQwordField, and
2183possibly other fields that use the "AccessAny" keyword.
2184
2185Fixed a problem introduced in the 11_02_01 release where indirect
2186stores through method arguments did not operate correctly.
2187
21882) Linux:
2189
2190Implemented boot-time ACPI table parsing support
2191(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
2192facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
2193legacy BIOS interfaces (e.g. MPS) for the configuration of system
2194processors, memory, and interrupts during setup_arch().  Note
2195that this patch does not include the required architecture-
2196specific changes required to apply this information -- subsequent
2197patches will be posted for both IA32 and IA64 to achieve this.
2198
2199Added low-level sleep support for IA32 platforms, courtesy of Pat
2200Mochel. This allows IA32 systems to transition to/from various
2201sleeping states (e.g. S1, S3), although the lack of a centralized
2202driver model and power-manageable drivers will prevent its
2203(successful) use on most systems.
2204
2205Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
2206submenu, unified IA32 and IA64 options, added new "Boot using
2207ACPI tables" option, etc.
2208
2209Increased the default timeout for the EC driver from 1ms to 10ms
2210(1000 cycles of 10us) to try to address AE_TIME errors during EC
2211transactions.
2212
2213 ----------------------------------------
2214Summary of changes for this label: 11_02_01
2215
22161) ACPI CA Core Subsystem:
2217
2218ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
2219(QWordAcc keyword). All ACPI 2.0 64-bit support is now
2220implemented.
2221
2222OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
2223changes to support ACPI 2.0 Qword field access.  Read/Write
2224PciConfiguration(), Read/Write Memory(), and Read/Write Port()
2225now accept an ACPI_INTEGER (64 bits) as the value parameter.
2226Also, the value parameter for the address space handler interface
2227is now an ACPI_INTEGER.  OSL implementations of these interfaces
2228must now handle the case where the Width parameter is 64.
2229
2230Index Fields: Fixed a problem where unaligned bit assembly and
2231disassembly for IndexFields was not supported correctly.
2232
2233Index and Bank Fields:  Nested Index and Bank Fields are now
2234supported. During field access, a check is performed to ensure
2235that the value written to an Index or Bank register is not out of
2236the range of the register.  The Index (or Bank) register is
2237written before each access to the field data. Future support will
2238include allowing individual IndexFields to be wider than the
2239DataRegister width.
2240
2241Fields: Fixed a problem where the AML interpreter was incorrectly
2242attempting to write beyond the end of a Field/OpRegion.  This was
2243a boundary case that occurred when a DWORD field was written to a
2244BYTE access OpRegion, forcing multiple writes and causing the
2245interpreter to write one datum too many.
2246
2247Fields: Fixed a problem with Field/OpRegion access where the
2248starting bit address of a field was incorrectly calculated if the
2249current access type was wider than a byte (WordAcc, DwordAcc, or
2250QwordAcc).
2251
2252Fields: Fixed a problem where forward references to individual
2253FieldUnits (individual Field names within a Field definition)
2254were not resolved during the AML table load.
2255
2256Fields: Fixed a problem where forward references from a Field
2257definition to the parent Operation Region definition were not
2258resolved during the AML table load.
2259
2260Fields: Duplicate FieldUnit names within a scope are now detected
2261during AML table load.
2262
2263Acpi Interfaces: Fixed a problem where the AcpiGetName()
2264interface returned an incorrect name for the root node.
2265
2266Code and Data Size: Code and Data optimizations have permitted
2267new feature development with an actual reduction in the library
2268size.  Current core subsystem library sizes are shown below.
2269These are the code and data sizes for the acpica.lib produced by
2270the Microsoft Visual C++ 6.0 compiler, and these values do not
2271include any ACPI driver or OSPM code.  The debug version of the
2272code includes the debug output trace mechanism and has a larger
2273code and data size.  Note that these values will vary depending
2274on the efficiency of the compiler and the compiler options used
2275during generation.
2276
2277  Previous Release (10_18_01):
2278     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
2279     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
2280
2281  Current Release:
2282     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
2283     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
2284
2285 2) Linux:
2286
2287Improved /proc processor output (Pavel Machek) Re-added
2288MODULE_LICENSE("GPL") to all modules.
2289
2290 3) ASL Compiler version X2030:
2291
2292Duplicate FieldUnit names within a scope are now detected and
2293flagged as errors.
2294
2295 4) Documentation:
2296
2297Programmer Reference updated to reflect OSL and address space
2298handler interface changes described above.
2299
2300----------------------------------------
2301Summary of changes for this label: 10_18_01
2302
2303ACPI CA Core Subsystem:
2304
2305Fixed a problem with the internal object reference count
2306mechanism that occasionally caused premature object deletion.
2307This resolves all of the outstanding problem reports where an
2308object is deleted in the middle of an interpreter evaluation.
2309Although this problem only showed up in rather obscure cases, the
2310solution to the problem involved an adjustment of all reference
2311counts involving objects attached to namespace nodes.
2312
2313Fixed a problem with Field support in the interpreter where
2314writing to an aligned field whose length is an exact multiple (2
2315or greater) of the field access granularity would cause an
2316attempt to write beyond the end of the field.
2317
2318The top level AML opcode execution functions within the
2319interpreter have been renamed with a more meaningful and
2320consistent naming convention.  The modules exmonad.c and
2321exdyadic.c were eliminated.  New modules are exoparg1.c,
2322exoparg2.c, exoparg3.c, and exoparg6.c.
2323
2324Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
2325
2326Fixed a problem where the AML debugger was causing some internal
2327objects to not be deleted during subsystem termination.
2328
2329Fixed a problem with the external AcpiEvaluateObject interface
2330where the subsystem would fault if the named object to be
2331evaluated refered to a constant such as Zero, Ones, etc.
2332
2333Fixed a problem with IndexFields and BankFields where the
2334subsystem would fault if the index, data, or bank registers were
2335not defined in the same scope as the field itself.
2336
2337Added printf format string checking for compilers that support
2338this feature.  Corrected more than 50 instances of issues with
2339format specifiers within invocations of ACPI_DEBUG_PRINT
2340throughout the core subsystem code.
2341
2342The ASL "Revision" operator now returns the ACPI support level
2343implemented in the core - the value "2" since the ACPI 2.0
2344support is more than 50% implemented.
2345
2346Enhanced the output of the AML debugger "dump namespace" command
2347to output in a more human-readable form.
2348
2349Current core subsystem library code sizes are shown below.  These
2350are the code and data sizes for the acpica.lib produced by the
2351Microsoft Visual C++ 6.0 compiler, and these values do not
2352include any ACPI driver or OSPM code.  The debug version of the
2353code includes the full debug trace mechanism -- leading to a much
2354larger code and data size.  Note that these values will vary
2355depending on the efficiency of the compiler and the compiler
2356options used during generation.
2357
2358     Previous Label (09_20_01):
2359     Non-Debug Version:    65K Code,     5K Data,     70K Total
2360     Debug Version:       138K Code,    58K Data,    196K Total
2361
2362     This Label:
2363
2364     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
2365     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
2366
2367Linux:
2368
2369Implemented a "Bad BIOS Blacklist" to track machines that have
2370known ASL/AML problems.
2371
2372Enhanced the /proc interface for the thermal zone driver and
2373added support for _HOT (the critical suspend trip point).  The
2374'info' file now includes threshold/policy information, and allows
2375setting of _SCP (cooling preference) and _TZP (polling frequency)
2376values to the 'info' file. Examples: "echo tzp=5 > info" sets the
2377polling frequency to 5 seconds, and "echo scp=1 > info" sets the
2378cooling preference to the passive/quiet mode (if supported by the
2379ASL).
2380
2381Implemented a workaround for a gcc bug that resuted in an OOPs
2382when loading the control method battery driver.
2383
2384 ----------------------------------------
2385Summary of changes for this label: 09_20_01
2386
2387 ACPI CA Core Subsystem:
2388
2389The AcpiEnableEvent and AcpiDisableEvent interfaces have been
2390modified to allow individual GPE levels to be flagged as wake-
2391enabled (i.e., these GPEs are to remain enabled when the platform
2392sleeps.)
2393
2394The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
2395support wake-enabled GPEs.  This means that upon entering the
2396sleep state, all GPEs that are not wake-enabled are disabled.
2397When leaving the sleep state, these GPEs are reenabled.
2398
2399A local double-precision divide/modulo module has been added to
2400enhance portability to OS kernels where a 64-bit math library is
2401not available.  The new module is "utmath.c".
2402
2403Several optimizations have been made to reduce the use of CPU
2404stack.  Originally over 2K, the maximum stack usage is now below
24052K at 1860  bytes (1.82k)
2406
2407Fixed a problem with the AcpiGetFirmwareTable interface where the
2408root table pointer was not mapped into a logical address
2409properly.
2410
2411Fixed a problem where a NULL pointer was being dereferenced in
2412the interpreter code for the ASL Notify operator.
2413
2414Fixed a problem where the use of the ASL Revision operator
2415returned an error. This operator now returns the current version
2416of the ACPI CA core subsystem.
2417
2418Fixed a problem where objects passed as control method parameters
2419to AcpiEvaluateObject were always deleted at method termination.
2420However, these objects may end up being stored into the namespace
2421by the called method.  The object reference count mechanism was
2422applied to these objects instead of a force delete.
2423
2424Fixed a problem where static strings or buffers (contained in the
2425AML code) that are declared as package elements within the ASL
2426code could cause a fault because the interpreter would attempt to
2427delete them.  These objects are now marked with the "static
2428object" flag to prevent any attempt to delete them.
2429
2430Implemented an interpreter optimization to use operands directly
2431from the state object instead of extracting the operands to local
2432variables.  This reduces stack use and code size, and improves
2433performance.
2434
2435The module exxface.c was eliminated as it was an unnecessary
2436extra layer of code.
2437
2438Current core subsystem library code sizes are shown below.  These
2439are the code and data sizes for the acpica.lib produced by the
2440Microsoft Visual C++ 6.0 compiler, and these values do not
2441include any ACPI driver or OSPM code.  The debug version of the
2442code includes the full debug trace mechanism -- leading to a much
2443larger code and data size.  Note that these values will vary
2444depending on the efficiency of the compiler and the compiler
2445options used during generation.
2446
2447  Non-Debug Version:  65K Code,   5K Data,   70K Total
2448(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
2449Total  (Previously 195K)
2450
2451Linux:
2452
2453Support for ACPI 2.0 64-bit integers has been added.   All ACPI
2454Integer objects are now 64 bits wide
2455
2456All Acpi data types and structures are now in lower case.  Only
2457Acpi macros are upper case for differentiation.
2458
2459 Documentation:
2460
2461Changes to the external interfaces as described above.
2462
2463 ----------------------------------------
2464Summary of changes for this label: 08_31_01
2465
2466 ACPI CA Core Subsystem:
2467
2468A bug with interpreter implementation of the ASL Divide operator
2469was found and fixed.  The implicit function return value (not the
2470explicit store operands) was returning the remainder instead of
2471the quotient.  This was a longstanding bug and it fixes several
2472known outstanding issues on various platforms.
2473
2474The ACPI_DEBUG_PRINT and function trace entry/exit macros have
2475been further optimized for size.  There are 700 invocations of
2476the DEBUG_PRINT macro alone, so each optimization reduces the
2477size of the debug version of the subsystem significantly.
2478
2479A stack trace mechanism has been implemented.  The maximum stack
2480usage is about 2K on 32-bit platforms.  The debugger command
2481"stat stack" will display the current maximum stack usage.
2482
2483All public symbols and global variables within the subsystem are
2484now prefixed with the string "Acpi".  This keeps all of the
2485symbols grouped together in a kernel map, and avoids conflicts
2486with other kernel subsystems.
2487
2488Most of the internal fixed lookup tables have been moved into the
2489code segment via the const operator.
2490
2491Several enhancements have been made to the interpreter to both
2492reduce the code size and improve performance.
2493
2494Current core subsystem library code sizes are shown below.  These
2495are the code and data sizes for the acpica.lib produced by the
2496Microsoft Visual C++ 6.0 compiler, and these values do not
2497include any ACPI driver or OSPM code.  The debug version of the
2498code includes the full debug trace mechanism which contains over
2499700 invocations of the DEBUG_PRINT macro, 500 function entry
2500macro invocations, and over 900 function exit macro invocations -
2501- leading to a much larger code and data size.  Note that these
2502values will vary depending on the efficiency of the compiler and
2503the compiler options used during generation.
2504
2505        Non-Debug Version:  64K Code,   5K Data,   69K Total
2506Debug Version:     137K Code,  58K Data,  195K Total
2507
2508 Linux:
2509
2510Implemented wbinvd() macro, pending a kernel-wide definition.
2511
2512Fixed /proc/acpi/event to handle poll() and short reads.
2513
2514 ASL Compiler, version X2026:
2515
2516Fixed a problem introduced in the previous label where the AML
2517code emitted for package objects produced packages with zero
2518length.
2519
2520 ----------------------------------------
2521Summary of changes for this label: 08_16_01
2522
2523ACPI CA Core Subsystem:
2524
2525The following ACPI 2.0 ASL operators have been implemented in the
2526AML interpreter (These are already supported by the Intel ASL
2527compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
2528and ToBuffer.  Support for 64-bit AML constants is implemented in
2529the AML parser, debugger, and disassembler.
2530
2531The internal memory tracking mechanism (leak detection code) has
2532been upgraded to reduce the memory overhead (a separate tracking
2533block is no longer allocated for each memory allocation), and now
2534supports all of the internal object caches.
2535
2536The data structures and code for the internal object caches have
2537been coelesced and optimized so that there is a single cache and
2538memory list data structure and a single group of functions that
2539implement generic cache management.  This has reduced the code
2540size in both the debug and release versions of the subsystem.
2541
2542The DEBUG_PRINT macro(s) have been optimized for size and
2543replaced by ACPI_DEBUG_PRINT.  The syntax for this macro is
2544slightly different, because it generates a single call to an
2545internal function.  This results in a savings of about 90 bytes
2546per invocation, resulting in an overall code and data savings of
2547about 16% in the debug version of the subsystem.
2548
2549 Linux:
2550
2551Fixed C3 disk corruption problems and re-enabled C3 on supporting
2552machines.
2553
2554Integrated low-level sleep code by Patrick Mochel.
2555
2556Further tweaked source code Linuxization.
2557
2558Other minor fixes.
2559
2560 ASL Compiler:
2561
2562Support for ACPI 2.0 variable length packages is fixed/completed.
2563
2564Fixed a problem where the optional length parameter for the ACPI
25652.0 ToString operator.
2566
2567Fixed multiple extraneous error messages when a syntax error is
2568detected within the declaration line of a control method.
2569
2570 ----------------------------------------
2571Summary of changes for this label: 07_17_01
2572
2573ACPI CA Core Subsystem:
2574
2575Added a new interface named AcpiGetFirmwareTable to obtain any
2576ACPI table via the ACPI signature.  The interface can be called
2577at any time during kernel initialization, even before the kernel
2578virtual memory manager is initialized and paging is enabled.
2579This allows kernel subsystems to obtain ACPI tables very early,
2580even before the ACPI CA subsystem is initialized.
2581
2582Fixed a problem where Fields defined with the AnyAcc attribute
2583could be resolved to the incorrect address under the following
2584conditions: 1) the field width is larger than 8 bits and 2) the
2585parent operation region is not defined on a DWORD boundary.
2586
2587Fixed a problem where the interpreter is not being locked during
2588namespace initialization (during execution of the _INI control
2589methods), causing an error when an attempt is made to release it
2590later.
2591
2592ACPI 2.0 support in the AML Interpreter has begun and will be
2593ongoing throughout the rest of this year.  In this label, The Mod
2594operator is implemented.
2595
2596Added a new data type to contain full PCI addresses named
2597ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
2598Device, and Function values.
2599
2600 Linux:
2601
2602Enhanced the Linux version of the source code to change most
2603capitalized ACPI type names to lowercase. For example, all
2604instances of ACPI_STATUS are changed to acpi_status.  This will
2605result in a large diff, but the change is strictly cosmetic and
2606aligns the CA code closer to the Linux coding standard.
2607
2608OSL Interfaces:
2609
2610The interfaces to the PCI configuration space have been changed
2611to add the PCI Segment number and to split the single 32-bit
2612combined DeviceFunction field into two 16-bit fields.  This was
2613accomplished by moving the four values that define an address in
2614PCI configuration space (segment, bus, device, and function) to
2615the new ACPI_PCI_ID structure.
2616
2617The changes to the PCI configuration space interfaces led to a
2618reexamination of the complete set of address space access
2619interfaces for PCI, I/O, and Memory.  The previously existing 18
2620interfaces have proven difficult to maintain (any small change
2621must be propagated across at least 6 interfaces) and do not
2622easily allow for future expansion to 64 bits if necessary.  Also,
2623on some systems, it would not be appropriate to demultiplex the
2624access width (8, 16, 32,or 64) before calling the OSL if the
2625corresponding native OS interfaces contain a similar access width
2626parameter.  For these reasons, the 18 address space interfaces
2627have been replaced by these 6 new ones:
2628
2629AcpiOsReadPciConfiguration
2630AcpiOsWritePciConfiguration
2631AcpiOsReadMemory
2632AcpiOsWriteMemory
2633AcpiOsReadPort
2634AcpiOsWritePort
2635
2636Added a new interface named AcpiOsGetRootPointer to allow the OSL
2637to perform the platform and/or OS-specific actions necessary to
2638obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
2639interface will simply call down to the CA core to perform the low-
2640memory search for the table.  On IA-64, the RSDP is obtained from
2641EFI.  Migrating this interface to the OSL allows the CA core to
2642remain OS and platform independent.
2643
2644Added a new interface named AcpiOsSignal to provide a generic
2645"function code and pointer" interface for various miscellaneous
2646signals and notifications that must be made to the host OS.   The
2647first such signals are intended to support the ASL Fatal and
2648Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
2649interface has been obsoleted.
2650
2651The definition of the AcpiFormatException interface has been
2652changed to simplify its use.  The caller no longer must supply a
2653buffer to the call; A pointer to a const string is now returned
2654directly.  This allows the call to be easily used in printf
2655statements, etc. since the caller does not have to manage a local
2656buffer.
2657
2658
2659 ASL Compiler, Version X2025:
2660
2661The ACPI 2.0 Switch/Case/Default operators have been implemented
2662and are fully functional.  They will work with all ACPI 1.0
2663interpreters, since the operators are simply translated to
2664If/Else pairs.
2665
2666The ACPI 2.0 ElseIf operator is implemented and will also work
2667with 1.0 interpreters, for the same reason.
2668
2669Implemented support for ACPI 2.0 variable-length packages.  These
2670packages have a separate opcode, and their size is determined by
2671the interpreter at run-time.
2672
2673Documentation The ACPI CA Programmer Reference has been updated
2674to reflect the new interfaces and changes to existing interfaces.
2675
2676 ------------------------------------------
2677Summary of changes for this label: 06_15_01
2678
2679 ACPI CA Core Subsystem:
2680
2681Fixed a problem where a DWORD-accessed field within a Buffer
2682object would get its byte address inadvertently rounded down to
2683the nearest DWORD.  Buffers are always Byte-accessible.
2684
2685 ASL Compiler, version X2024:
2686
2687Fixed a problem where the Switch() operator would either fault or
2688hang the compiler.  Note however, that the AML code for this ACPI
26892.0 operator is not yet implemented.
2690
2691Compiler uses the new AcpiOsGetTimer interface to obtain compile
2692timings.
2693
2694Implementation of the CreateField operator automatically converts
2695a reference to a named field within a resource descriptor from a
2696byte offset to a bit offset if required.
2697
2698Added some missing named fields from the resource descriptor
2699support. These are the names that are automatically created by
2700the compiler to reference fields within a descriptor.  They are
2701only valid at compile time and are not passed through to the AML
2702interpreter.
2703
2704Resource descriptor named fields are now typed as Integers and
2705subject to compile-time typechecking when used in expressions.
2706
2707 ------------------------------------------
2708Summary of changes for this label: 05_18_01
2709
2710 ACPI CA Core Subsystem:
2711
2712Fixed a couple of problems in the Field support code where bits
2713from adjacent fields could be returned along with the proper
2714field bits. Restructured the field support code to improve
2715performance, readability and maintainability.
2716
2717New DEBUG_PRINTP macro automatically inserts the procedure name
2718into the output, saving hundreds of copies of procedure name
2719strings within the source, shrinking the memory footprint of the
2720debug version of the core subsystem.
2721
2722 Source Code Structure:
2723
2724The source code directory tree was restructured to reflect the
2725current organization of the component architecture.  Some files
2726and directories have been moved and/or renamed.
2727
2728 Linux:
2729
2730Fixed leaking kacpidpc processes.
2731
2732Fixed queueing event data even when /proc/acpi/event is not
2733opened.
2734
2735 ASL Compiler, version X2020:
2736
2737Memory allocation performance enhancement - over 24X compile time
2738improvement on large ASL files.  Parse nodes and namestring
2739buffers are now allocated from a large internal compiler buffer.
2740
2741The temporary .SRC file is deleted unless the "-s" option is
2742specified
2743
2744The "-d" debug output option now sends all output to the .DBG
2745file instead of the console.
2746
2747"External" second parameter is now optional
2748
2749"ElseIf" syntax now properly allows the predicate
2750
2751Last operand to "Load" now recognized as a Target operand
2752
2753Debug object can now be used anywhere as a normal object.
2754
2755ResourceTemplate now returns an object of type BUFFER
2756
2757EISAID now returns an object of type INTEGER
2758
2759"Index" now works with a STRING operand
2760
2761"LoadTable" now accepts optional parameters
2762
2763"ToString" length parameter is now optional
2764
2765"Interrupt (ResourceType," parse error fixed.
2766
2767"Register" with a user-defined region space parse error fixed
2768
2769Escaped backslash at the end of a string ("\\") scan/parse error
2770fixed
2771
2772"Revision" is now an object of type INTEGER.
2773
2774
2775
2776------------------------------------------
2777Summary of changes for this label: 05_02_01
2778
2779Linux:
2780
2781/proc/acpi/event now blocks properly.
2782
2783Removed /proc/sys/acpi. You can still dump your DSDT from
2784/proc/acpi/dsdt.
2785
2786 ACPI CA Core Subsystem:
2787
2788Fixed a problem introduced in the previous label where some of
2789the "small" resource descriptor types were not recognized.
2790
2791Improved error messages for the case where an ASL Field is
2792outside the range of the parent operation region.
2793
2794 ASL Compiler, version X2018:
2795
2796Added error detection for ASL Fields that extend beyond the
2797length of the parent operation region (only if the length of the
2798region is known at compile time.)  This includes fields that have
2799a minimum access width that is smaller than the parent region,
2800and individual field units that are partially or entirely beyond
2801the extent of the parent.
2802
2803
2804
2805------------------------------------------
2806Summary of changes for this label: 04_27_01
2807
2808 ACPI CA Core Subsystem:
2809
2810Fixed a problem where the namespace mutex could be released at
2811the wrong time during execution of AcpiRemoveAddressSpaceHandler.
2812
2813Added optional thread ID output for debug traces, to simplify
2814debugging of multiple threads.  Added context switch notification
2815when the debug code realizes that a different thread is now
2816executing ACPI code.
2817
2818Some additional external data types have been prefixed with the
2819string "ACPI_" for consistency.  This may effect existing code.
2820The data types affected are the external callback typedefs -
2821e.g., WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
2822
2823 Linux:
2824
2825Fixed an issue with the OSL semaphore implementation where a
2826thread was waking up with an error from receiving a SIGCHLD
2827signal.
2828
2829Linux version of ACPI CA now uses the system C library for string
2830manipulation routines instead of a local implementation.
2831
2832Cleaned up comments and removed TBDs.
2833
2834 ASL Compiler, version X2017:
2835
2836Enhanced error detection and reporting for all file I/O
2837operations.
2838
2839 Documentation:
2840
2841Programmer Reference updated to version 1.06.
2842
2843
2844
2845------------------------------------------
2846Summary of changes for this label: 04_13_01
2847
2848 ACPI CA Core Subsystem:
2849
2850Restructured support for BufferFields and RegionFields.
2851BankFields support is now fully operational.  All known 32-bit
2852limitations on field sizes have been removed.  Both BufferFields
2853and (Operation) RegionFields are now supported by the same field
2854management code.
2855
2856Resource support now supports QWORD address and IO resources. The
285716/32/64 bit address structures and the Extended IRQ structure
2858have been changed to properly handle Source Resource strings.
2859
2860A ThreadId of -1 is now used to indicate a "mutex not acquired"
2861condition internally and must never be returned by
2862AcpiOsThreadId. This reserved value was changed from 0 since Unix
2863systems allow a thread ID of 0.
2864
2865Linux:
2866
2867Driver code reorganized to enhance portability
2868
2869Added a kernel configuration option to control ACPI_DEBUG
2870
2871Fixed the EC driver to honor _GLK.
2872
2873ASL Compiler, version X2016:
2874
2875Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
2876address space was set to 0, not 0x7f as it should be.
2877
2878 ------------------------------------------
2879Summary of changes for this label: 03_13_01
2880
2881 ACPI CA Core Subsystem:
2882
2883During ACPI initialization, the _SB_._INI method is now run if
2884present.
2885
2886Notify handler fix - notifies are deferred until the parent
2887method completes execution.  This fixes the "mutex already
2888acquired" issue seen occasionally.
2889
2890Part of the "implicit conversion" rules in ACPI 2.0 have been
2891found to cause compatibility problems with existing ASL/AML.  The
2892convert "result-to-target-type" implementation has been removed
2893for stores to method Args and Locals.  Source operand conversion
2894is still fully implemented.  Possible changes to ACPI 2.0
2895specification pending.
2896
2897Fix to AcpiRsCalculatePciRoutingTableLength to return correct
2898length.
2899
2900Fix for compiler warnings for 64-bit compiles.
2901
2902 Linux:
2903
2904/proc output aligned for easier parsing.
2905
2906Release-version compile problem fixed.
2907
2908New kernel configuration options documented in Configure.help.
2909
2910IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
2911context" message.
2912
2913 OSPM:
2914
2915Power resource driver integrated with bus manager.
2916
2917Fixed kernel fault during active cooling for thermal zones.
2918
2919Source Code:
2920
2921The source code tree has been restructured.
2922
2923
2924
2925------------------------------------------
2926Summary of changes for this label: 03_02_01
2927
2928 Linux OS Services Layer (OSL):
2929
2930Major revision of all Linux-specific code.
2931
2932Modularized all ACPI-specific drivers.
2933
2934Added new thermal zone and power resource drivers.
2935
2936Revamped /proc interface (new functionality is under /proc/acpi).
2937
2938New kernel configuration options.
2939
2940 Linux known issues:
2941
2942New kernel configuration options not documented in Configure.help
2943yet.
2944
2945
2946Module dependencies not currently implemented. If used, they
2947should be loaded in this order: busmgr, power, ec, system,
2948processor, battery, ac_adapter, button, thermal.
2949
2950Modules will not load if CONFIG_MODVERSION is set.
2951
2952IBM 600E - entering S5 may reboot instead of shutting down.
2953
2954IBM 600E - Sleep button may generate "Invalid <NULL> context"
2955message.
2956
2957Some systems may fail with "execution mutex already acquired"
2958message.
2959
2960 ACPI CA Core Subsystem:
2961
2962Added a new OSL Interface, AcpiOsGetThreadId.  This was required
2963for the  deadlock detection code. Defined to return a non-zero,
296432-bit thread ID for the currently executing thread.  May be a
2965non-zero constant integer on single-thread systems.
2966
2967Implemented deadlock detection for internal subsystem mutexes.
2968We may add conditional compilation for this code (debug only)
2969later.
2970
2971ASL/AML Mutex object semantics are now fully supported.  This
2972includes multiple acquires/releases by owner and support for the
2973Mutex SyncLevel parameter.
2974
2975A new "Force Release" mechanism automatically frees all ASL
2976Mutexes that have been acquired but not released when a thread
2977exits the interpreter.  This forces conformance to the ACPI spec
2978("All mutexes must be released when an invocation exits") and
2979prevents deadlocked ASL threads.  This mechanism can be expanded
2980(later) to monitor other resource acquisitions if OEM ASL code
2981continues to misbehave (which it will).
2982
2983Several new ACPI exception codes have been added for the Mutex
2984support.
2985
2986Recursive method calls are now allowed and supported (the ACPI
2987spec does in fact allow recursive method calls.)  The number of
2988recursive calls is subject to the restrictions imposed by the
2989SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
2990parameter.
2991
2992Implemented support for the SyncLevel parameter for control
2993methods (ACPI 2.0 feature)
2994
2995Fixed a deadlock problem when multiple threads attempted to use
2996the interpreter.
2997
2998Fixed a problem where the string length of a String package
2999element was not always set in a package returned from
3000AcpiEvaluateObject.
3001
3002Fixed a problem where the length of a String package element was
3003not always included in the length of the overall package returned
3004from AcpiEvaluateObject.
3005
3006Added external interfaces (Acpi*) to the ACPI debug memory
3007manager.  This manager keeps a list of all outstanding
3008allocations, and can therefore detect memory leaks and attempts
3009to free memory blocks more than once. Useful for code such as the
3010power manager, etc.  May not be appropriate for device drivers.
3011Performance with the debug code enabled is slow.
3012
3013The ACPI Global Lock is now an optional hardware element.
3014
3015 ASL Compiler Version X2015:
3016
3017Integrated changes to allow the compiler to be generated on
3018multiple platforms.
3019
3020Linux makefile added to generate the compiler on Linux
3021
3022 Source Code:
3023
3024All platform-specific headers have been moved to their own
3025subdirectory, Include/Platform.
3026
3027New source file added, Interpreter/ammutex.c
3028
3029New header file, Include/acstruct.h
3030
3031 Documentation:
3032
3033The programmer reference has been updated for the following new
3034interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
3035
3036 ------------------------------------------
3037Summary of changes for this label: 02_08_01
3038
3039Core ACPI CA Subsystem: Fixed a problem where an error was
3040incorrectly returned if the return resource buffer was larger
3041than the actual data (in the resource interfaces).
3042
3043References to named objects within packages are resolved to the
3044full pathname string before packages are returned directly (via
3045the AcpiEvaluateObject interface) or indirectly via the resource
3046interfaces.
3047
3048Linux OS Services Layer (OSL):
3049
3050Improved /proc battery interface.
3051
3052
3053Added C-state debugging output and other miscellaneous fixes.
3054
3055ASL Compiler Version X2014:
3056
3057All defined method arguments can now be used as local variables,
3058including the ones that are not actually passed in as parameters.
3059The compiler tracks initialization of the arguments and issues an
3060exception if they are used without prior assignment (just like
3061locals).
3062
3063The -o option now specifies a filename prefix that is used for
3064all output files, including the AML output file.  Otherwise, the
3065default behavior is as follows:  1) the AML goes to the file
3066specified in the DSDT.  2) all other output files use the input
3067source filename as the base.
3068
3069 ------------------------------------------
3070Summary of changes for this label: 01_25_01
3071
3072Core ACPI CA Subsystem: Restructured the implementation of object
3073store support within the  interpreter.  This includes support for
3074the Store operator as well  as any ASL operators that include a
3075target operand.
3076
3077Partially implemented support for Implicit Result-to-Target
3078conversion. This is when a result object is converted on the fly
3079to the type of  an existing target object.  Completion of this
3080support is pending  further analysis of the ACPI specification
3081concerning this matter.
3082
3083CPU-specific code has been removed from the subsystem (hardware
3084directory).
3085
3086New Power Management Timer functions added
3087
3088Linux OS Services Layer (OSL): Moved system state transition code
3089to the core, fixed it, and modified  Linux OSL accordingly.
3090
3091Fixed C2 and C3 latency calculations.
3092
3093
3094We no longer use the compilation date for the version message on
3095initialization, but retrieve the version from
3096AcpiGetSystemInfo().
3097
3098Incorporated for fix Sony VAIO machines.
3099
3100Documentation:  The Programmer Reference has been updated and
3101reformatted.
3102
3103
3104ASL Compiler:  Version X2013: Fixed a problem where the line
3105numbering and error reporting could get out  of sync in the
3106presence of multiple include files.
3107
3108 ------------------------------------------
3109Summary of changes for this label: 01_15_01
3110
3111Core ACPI CA Subsystem:
3112
3113Implemented support for type conversions in the execution of the
3114ASL  Concatenate operator (The second operand is converted to
3115match the type  of the first operand before concatenation.)
3116
3117Support for implicit source operand conversion is partially
3118implemented.   The ASL source operand types Integer, Buffer, and
3119String are freely  interchangeable for most ASL operators and are
3120converted by the interpreter  on the fly as required.  Implicit
3121Target operand conversion (where the  result is converted to the
3122target type before storing) is not yet implemented.
3123
3124Support for 32-bit and 64-bit BCD integers is implemented.
3125
3126Problem fixed where a field read on an aligned field could cause
3127a read  past the end of the field.
3128
3129New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
3130does not return a value, but the caller expects one.  (The ASL
3131compiler flags this as a warning.)
3132
3133ASL Compiler:
3134
3135Version X2011:
31361. Static typechecking of all operands is implemented. This
3137prevents the use of invalid objects (such as using a Package
3138where an Integer is required) at compile time instead of at
3139interpreter run-time.
31402. The ASL source line is printed with ALL errors and warnings.
31413. Bug fix for source EOF without final linefeed.
31424. Debug option is split into a parse trace and a namespace
3143trace.
31445. Namespace output option (-n) includes initial values for
3145integers and strings.
31466. Parse-only option added for quick syntax checking.
31477. Compiler checks for duplicate ACPI name declarations
3148
3149Version X2012:
31501. Relaxed typechecking to allow interchangeability between
3151strings, integers, and buffers.  These types are now converted by
3152the interpreter at runtime.
31532. Compiler reports time taken by each internal subsystem in the
3154debug         output file.
3155
3156
3157 ------------------------------------------
3158Summary of changes for this label: 12_14_00
3159
3160ASL Compiler:
3161
3162This is the first official release of the compiler. Since the
3163compiler requires elements of the Core Subsystem, this label
3164synchronizes everything.
3165
3166------------------------------------------
3167Summary of changes for this label: 12_08_00
3168
3169
3170Fixed a problem where named references within the ASL definition
3171of both OperationRegions and CreateXXXFields did not work
3172properly.  The symptom was an AE_AML_OPERAND_TYPE during
3173initialization of the region/field. This is similar (but not
3174related internally) to the problem that was fixed in the last
3175label.
3176
3177Implemented both 32-bit and 64-bit support for the BCD ASL
3178functions ToBCD and FromBCD.
3179
3180Updated all legal headers to include "2000" in the copyright
3181years.
3182
3183 ------------------------------------------
3184Summary of changes for this label: 12_01_00
3185
3186Fixed a problem where method invocations within the ASL
3187definition of both OperationRegions and CreateXXXFields did not
3188work properly.  The symptom was an AE_AML_OPERAND_TYPE during
3189initialization of the region/field:
3190
3191  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
3192[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
3193(0x3005)
3194
3195Fixed a problem where operators with more than one nested
3196subexpression would fail.  The symptoms were varied, by mostly
3197AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
3198problem that has gone unnoticed until now.
3199
3200  Subtract (Add (1,2), Multiply (3,4))
3201
3202Fixed a problem where AcpiGetHandle didn't quite get fixed in the
3203previous build (The prefix part of a relative path was handled
3204incorrectly).
3205
3206Fixed a problem where Operation Region initialization failed if
3207the operation region name was a "namepath" instead of a simple
3208"nameseg". Symptom was an AE_NO_OPERAND error.
3209
3210Fixed a problem where an assignment to a local variable via the
3211indirect RefOf mechanism only worked for the first such
3212assignment.  Subsequent assignments were ignored.
3213
3214 ------------------------------------------
3215Summary of changes for this label: 11_15_00
3216
3217ACPI 2.0 table support with backwards support for ACPI 1.0 and
3218the 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS
3219tables, the AML  interpreter does NOT have support for the new
32202.0 ASL grammar terms at this time.
3221
3222All ACPI hardware access is via the GAS structures in the ACPI
32232.0 FADT.
3224
3225All physical memory addresses across all platforms are now 64
3226bits wide. Logical address width remains dependent on the
3227platform (i.e., "void *").
3228
3229AcpiOsMapMemory interface changed to a 64-bit physical address.
3230
3231The AML interpreter integer size is now 64 bits, as per the ACPI
32322.0 specification.
3233
3234For backwards compatibility with ACPI 1.0, ACPI tables with a
3235revision number less than 2 use 32-bit integers only.
3236
3237Fixed a problem where the evaluation of OpRegion operands did not
3238always resolve them to numbers properly.
3239
3240------------------------------------------
3241Summary of changes for this label: 10_20_00
3242
3243Fix for CBN_._STA issue.  This fix will allow correct access to
3244CBN_ OpRegions when the _STA returns 0x8.
3245
3246Support to convert ACPI constants (Ones, Zeros, One) to actual
3247values before a package object is returned
3248
3249Fix for method call as predicate to if/while construct causing
3250incorrect if/while behavior
3251
3252Fix for Else block package lengths sometimes calculated wrong (if
3253block > 63 bytes)
3254
3255Fix for Processor object length field, was always zero
3256
3257Table load abort if FACP sanity check fails
3258
3259Fix for problem with Scope(name) if name already exists
3260
3261Warning emitted if a named object referenced cannot be found
3262(resolved) during method execution.
3263
3264
3265
3266
3267
3268------------------------------------------
3269Summary of changes for this label: 9_29_00
3270
3271New table initialization interfaces: AcpiInitializeSubsystem no
3272longer has any parameters AcpiFindRootPointer - Find the RSDP (if
3273necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
3274>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
3275AcpiLoadTables
3276
3277Note: These interface changes require changes to all existing
3278OSDs
3279
3280The PCI_Config default address space handler is always installed
3281at the root namespace object.
3282
3283-------------------------------------------
3284Summary of changes for this label: 09_15_00
3285
3286The new initialization architecture is implemented.  New
3287interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
3288AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
3289(Namespace is automatically loaded when a table is loaded)
3290
3291The ACPI_OPERAND_OBJECT has been optimized to shrink its size
3292from 52 bytes to 32 bytes.  There is usually one of these for
3293every namespace object, so the memory savings is significant.
3294
3295Implemented just-in-time evaluation of the CreateField operators.
3296
3297Bug fixes for IA-64 support have been integrated.
3298
3299Additional code review comments have been implemented
3300
3301The so-called "third pass parse" has been replaced by a final
3302walk through the namespace to initialize all operation regions
3303(address spaces) and fields that have not yet been initialized
3304during the execution of the various _INI and REG methods.
3305
3306New file - namespace/nsinit.c
3307
3308-------------------------------------------
3309Summary of changes for this label: 09_01_00
3310
3311Namespace manager data structures have been reworked to change
3312the primary  object from a table to a single object.  This has
3313resulted in dynamic memory  savings of 3X within the namespace
3314and 2X overall in the ACPI CA subsystem.
3315
3316Fixed problem where the call to AcpiEvFindPciRootBuses was
3317inadvertently left  commented out.
3318
3319Reduced the warning count when generating the source with the GCC
3320compiler.
3321
3322Revision numbers added to each module header showing the
3323SourceSafe version of the file.  Please refer to this version
3324number when giving us feedback or comments on individual modules.
3325
3326The main object types within the subsystem have been renamed to
3327clarify their  purpose:
3328
3329ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
3330ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
3331ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
3332
3333NOTE: no changes to the initialization sequence are included in
3334this label.
3335
3336-------------------------------------------
3337Summary of changes for this label: 08_23_00
3338
3339Fixed problem where TerminateControlMethod was being called
3340multiple times per  method
3341
3342Fixed debugger problem where single stepping caused a semaphore
3343to be  oversignalled
3344
3345Improved performance through additional parse object caching -
3346added  ACPI_EXTENDED_OP type
3347
3348-------------------------------------------
3349Summary of changes for this label: 08_10_00
3350
3351Parser/Interpreter integration:  Eliminated the creation of
3352complete parse trees  for ACPI tables and control methods.
3353Instead, parse subtrees are created and  then deleted as soon as
3354they are processed (Either entered into the namespace or
3355executed by the interpreter).  This reduces the use of dynamic
3356kernel memory  significantly. (about 10X)
3357
3358Exception codes broken into classes and renumbered.  Be sure to
3359recompile all  code that includes acexcep.h.  Hopefully we won't
3360have to renumber the codes  again now that they are split into
3361classes (environment, programmer, AML code,  ACPI table, and
3362internal).
3363
3364Fixed some additional alignment issues in the Resource Manager
3365subcomponent
3366
3367Implemented semaphore tracking in the AcpiExec utility, and fixed
3368several places  where mutexes/semaphores were being unlocked
3369without a corresponding lock  operation.  There are no known
3370semaphore or mutex "leaks" at this time.
3371
3372Fixed the case where an ASL Return operator is used to return an
3373unnamed  package.
3374
3375-------------------------------------------
3376Summary of changes for this label: 07_28_00
3377
3378Fixed a problem with the way addresses were calculated in
3379AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
3380manifested itself when a Field was  created with WordAccess or
3381DwordAccess, but the field unit defined within the  Field was
3382less than a Word or Dword.
3383
3384Fixed a problem in AmlDumpOperands() module's loop to pull
3385operands off of the  operand stack to display information. The
3386problem manifested itself as a TLB  error on 64-bit systems when
3387accessing an operand stack with two or more  operands.
3388
3389Fixed a problem with the PCI configuration space handlers where
3390context was  getting confused between accesses. This required a
3391change to the generic address  space handler and address space
3392setup definitions. Handlers now get both a  global handler
3393context (this is the one passed in by the user when executing
3394AcpiInstallAddressSpaceHandler() and a specific region context
3395that is unique to  each region (For example, the _ADR, _SEG and
3396_BBN values associated with a  specific region). The generic
3397function definitions have changed to the  following:
3398
3399typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
3400UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
3401*HandlerContext, // This used to be void *Context void
3402*RegionContext); // This is an additional parameter
3403
3404typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
3405RegionHandle, UINT32 Function, void *HandlerContext,  void
3406**RegionContext); // This used to be **ReturnContext
3407
3408-------------------------------------------
3409Summary of changes for this label: 07_21_00
3410
3411Major file consolidation and rename.  All files within the
3412interpreter have been  renamed as well as most header files.
3413This was done to prevent collisions with  existing files in the
3414host OSs -- filenames such as "config.h" and "global.h"  seem to
3415be quite common.  The VC project files have been updated.  All
3416makefiles  will require modification.
3417
3418The parser/interpreter integration continues in Phase 5 with the
3419implementation  of a complete 2-pass parse (the AML is parsed
3420twice) for each table;  This  avoids the construction of a huge
3421parse tree and therefore reduces the amount of  dynamic memory
3422required by the subsystem.  Greater use of the parse object cache
3423means that performance is unaffected.
3424
3425Many comments from the two code reviews have been rolled in.
3426
3427The 64-bit alignment support is complete.
3428
3429-------------------------------------------
3430Summary of changes for this label: 06_30_00
3431
3432With a nod and a tip of the hat to the technology of yesteryear,
3433we've added  support in the source code for 80 column output
3434devices.  The code is now mostly  constrained to 80 columns or
3435less to support environments and editors that 1)  cannot display
3436or print more than 80 characters on a single line, and 2) cannot
3437disable line wrapping.
3438
3439A major restructuring of the namespace data structure has been
3440completed.  The  result is 1) cleaner and more
3441understandable/maintainable code, and 2) a  significant reduction
3442in the dynamic memory requirement for each named ACPI  object
3443(almost half).
3444
3445-------------------------------------------
3446Summary of changes for this label: 06_23_00
3447
3448Linux support has been added.  In order to obtain approval to get
3449the ACPI CA  subsystem into the Linux kernel, we've had to make
3450quite a few changes to the  base subsystem that will affect all
3451users (all the changes are generic and OS- independent).  The
3452effects of these global changes have been somewhat far  reaching.
3453Files have been merged and/or renamed and interfaces have been
3454renamed.   The major changes are described below.
3455
3456Osd* interfaces renamed to AcpiOs* to eliminate namespace
3457pollution/confusion  within our target kernels.  All OSD
3458interfaces must be modified to match the new  naming convention.
3459
3460Files merged across the subsystem.  A number of the smaller
3461source and header  files have been merged to reduce the file
3462count and increase the density of the  existing files.  There are
3463too many to list here.  In general, makefiles that  call out
3464individual files will require rebuilding.
3465
3466Interpreter files renamed.  All interpreter files now have the
3467prefix am*  instead of ie* and is*.
3468
3469Header files renamed:  The acapi.h file is now acpixf.h.  The
3470acpiosd.h file is  now acpiosxf.h.  We are removing references to
3471the acronym "API" since it is  somewhat windowsy. The new name is
3472"external interface" or xface or xf in the  filenames.j
3473
3474
3475All manifest constants have been forced to upper case (some were
3476mixed case.)   Also, the string "ACPI_" has been prepended to
3477many (not all) of the constants,  typedefs, and structs.
3478
3479The globals "DebugLevel" and "DebugLayer" have been renamed
3480"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
3481
3482All other globals within the subsystem are now prefixed with
3483"AcpiGbl_" Internal procedures within the subsystem are now
3484prefixed with "Acpi" (with only  a few exceptions).  The original
3485two-letter abbreviation for the subcomponent  remains after
3486"Acpi" - for example, CmCallocate became AcpiCmCallocate.
3487
3488Added a source code translation/conversion utility.  Used to
3489generate the Linux  source code, it can be modified to generate
3490other types of source as well. Can  also be used to cleanup
3491existing source by removing extraneous spaces and blank  lines.
3492Found in tools/acpisrc/*
3493
3494OsdUnMapMemory was renamed to OsdUnmapMemory and then
3495AcpiOsUnmapMemory.  (UnMap  became Unmap).
3496
3497A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
3498When set to  one, this indicates that the caller wants to use the
3499semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
3500both types.  However, implementers of this  call may want to use
3501different OS primitives depending on the type of semaphore
3502requested.  For example, some operating systems provide separate
3503"mutex" and  "semaphore" interfaces - where the mutex interface
3504is much faster because it  doesn't have all the overhead of a
3505full semaphore implementation.
3506
3507Fixed a deadlock problem where a method that accesses the PCI
3508address space can  block forever if it is the first access to the
3509space.
3510
3511-------------------------------------------
3512Summary of changes for this label: 06_02_00
3513
3514Support for environments that cannot handle unaligned data
3515accesses (e.g.  firmware and OS environments devoid of alignment
3516handler technology namely  SAL/EFI and the IA-64 Linux kernel)
3517has been added (via configurable macros) in  these three areas: -
3518Transfer of data from the raw AML byte stream is done via byte
3519moves instead of    word/dword/qword moves. - External objects
3520are aligned within the user buffer, including package   elements
3521(sub-objects). - Conversion of name strings to UINT32 Acpi Names
3522is now done byte-wise.
3523
3524The Store operator was modified to mimic Microsoft's
3525implementation when storing  to a Buffer Field.
3526
3527Added a check of the BM_STS bit before entering C3.
3528
3529The methods subdirectory has been obsoleted and removed.  A new
3530file, cmeval.c  subsumes the functionality.
3531
3532A 16-bit (DOS) version of AcpiExec has been developed.  The
3533makefile is under  the acpiexec directory.
3534