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