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