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