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