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