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