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