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