changes.txt revision 104470
1----------------------------------------
2
302 October 2002.  Summary of changes for this release.
4
5
61) ACPI CA Core Subsystem version 20021002:
7
8Fixed a problem where a store/copy of a string to an existing
9string did not always set the string length properly in the
10String object.
11
12Fixed a reported problem with the ToString operator where the
13behavior was identical to the ToHexString operator instead of
14just simply converting a raw buffer to a string data type.
15
16Fixed a problem where CopyObject and the other "explicit"
17conversion operators were not updating the internal namespace
18node type as part of the store operation.
19
20Fixed a memory leak during implicit source operand conversion
21where the original object was not deleted if it was converted
22to a new object of a different type.
23
24Enhanced error messages for all problems associated with
25namespace lookups.  Common procedure generates and prints the
26lookup name as well as the formatted status.
27
28Completed implementation of a new design for the Alias support
29within the namespace.  The existing design did not handle the
30case where a new object was assigned to one of the two names
31due to the use of an explicit conversion operator, resulting
32in the two names pointing to two different objects.  The new
33design simply points the Alias name to the original name node
34- not to the object.  This results in a level of indirection
35that must be handled in the name resolution mechanism.
36
37Code and Data Size: Current core subsystem library sizes are
38shown below.  These are the code and data sizes for the
39acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
40and these values do not include any ACPI driver or OSPM code.
41The debug version of the code includes the debug output trace
42mechanism and has a larger code and data size.  Note that
43these values will vary depending on the efficiency of the
44compiler and the compiler options used during generation.
45
46  Previous Release
47    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
48    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
49  Current Release:
50    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
51    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
52
53
542) Linux
55
56Initialize thermal driver's timer before it is used. (Knut
57Neumann)
58
59Allow handling negative celsius values. (Kochi Takayoshi)
60
61Fix thermal management and make trip points. R/W (Pavel
62Machek)
63
64Fix /proc/acpi/sleep. (P. Christeas)
65
66IA64 fixes. (David Mosberger)
67
68Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
69
70Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
71Brodowski)
72
73
743) iASL Compiler/Disassembler
75
76Clarified some warning/error messages.
77
78
79----------------------------------------
8018 September 2002.  Summary of changes for this release.
81
82
831) ACPI CA Core Subsystem version 20020918:
84
85Fixed a reported problem with reference chaining (via the
86Index() and RefOf() operators) in the ObjectType() and
87SizeOf() operators.  The definition of these operators
88includes the dereferencing of all chained references to return
89information on the base object.
90
91Fixed a problem with stores to indexed package elements - the
92existing code would not complete the store if an "implicit
93conversion" was not performed.  In other words, if the
94existing object (package element) was to be replaced
95completely, the code didn't handle this case.
96
97Relaxed typechecking on the ASL "Scope" operator to allow the
98target name to refer to an object of type Integer, String, or
99Buffer, in addition to the scoping object types (Device,
100predefined Scopes, Processor, PowerResource, and ThermalZone.)
101This allows existing AML code that has workarounds for a bug
102in Windows to function properly.  A warning is issued,
103however.  This affects both the AML interpreter and the iASL
104compiler. Below is an example of this type of ASL code:
105
106      Name(DEB,0x00)
107      Scope(DEB)
108      {
109
110Fixed some reported problems with 64-bit integer support in
111the local implementation of C library functions (clib.c)
112
113
1142) Linux
115
116Use ACPI fix map region instead of IOAPIC region, since it is
117undefined in non-SMP.
118
119Ensure that the SCI has the proper polarity and trigger, even
120on systems that do not have an interrupt override entry in the
121MADT.
122
1232.5 big driver reorganization (Pat Mochel)
124
125Use early table mapping code from acpitable.c (Andi Kleen)
126
127New blacklist entries (Andi Kleen)
128
129Blacklist improvements. Split blacklist code out into a
130separate file. Move checking the blacklist to very early.
131Previously, we would use ACPI tables, and then halfway through
132init, check the blacklist -- too late. Now, it's early enough
133to completely fall-back to non-ACPI.
134
135
1363) iASL Compiler/Disassembler version 20020918:
137
138Fixed a problem where the typechecking code didn't know that
139an alias could point to a method.  In other words, aliases
140were not being dereferenced during typechecking.
141
142
143----------------------------------------
14429 August 2002.  Summary of changes for this release.
145
1461) ACPI CA Core Subsystem Version 20020829:
147
148If the target of a Scope() operator already exists, it must be
149an object type that actually opens a scope -- such as a
150Device, Method, Scope, etc.  This is a fatal runtime error.
151Similar error check has been added to the iASL compiler also.
152
153Tightened up the namespace load to disallow multiple names in
154the same scope.  This previously was allowed if both objects
155were of the same type.  (i.e., a lookup was the same as
156entering a new name).
157
158
1592) Linux
160
161Ensure that the ACPI interrupt has the proper trigger and
162polarity.
163
164local_irq_disable is extraneous. (Matthew Wilcox)
165
166Make "acpi=off" actually do what it says, and not use the ACPI
167interpreter *or* the tables.
168
169Added arch-neutral support for parsing SLIT and SRAT tables
170(Kochi Takayoshi)
171
172
1733) iASL Compiler/Disassembler  Version 20020829:
174
175Implemented namepath optimization for name declarations.  For
176example, a declaration like "Method (\_SB_.ABCD)" would get
177optimized to "Method (ABCD)" if the declaration is within the
178\_SB_ scope.  This optimization is in addition to the named
179reference path optimization first released in the previous
180version. This would seem to complete all possible
181optimizations for namepaths within the ASL/AML.
182
183If the target of a Scope() operator already exists, it must be
184an object type that actually opens a scope -- such as a
185Device, Method, Scope, etc.
186
187Implemented a check and warning for unreachable code in the
188same block below a Return() statement.
189
190Fixed a problem where the listing file was not generated if
191the compiler aborted if the maximum error count was exceeded
192(200).
193
194Fixed a problem where the typechecking of method return values
195was broken.  This includes the check for a return value when
196the method is invoked as a TermArg (a return value is
197expected.)
198
199Fixed a reported problem where EOF conditions during a quoted
200string or comment caused a fault.
201
202
203----------------------------------------
20415 August 2002.  Summary of changes for this release.
205
2061) ACPI CA Core Subsystem Version 20020815:
207
208Fixed a reported problem where a Store to a method argument
209that contains a reference did not perform the indirect store
210correctly.  This problem was created during the conversion to
211the new reference object model - the indirect store to a
212method argument code was not updated to reflect the new model.
213
214Reworked the ACPI mode change code to better conform to ACPI
2152.0, handle corner cases, and improve code legibility (Kochi
216Takayoshi)
217
218Fixed a problem with the pathname parsing for the carat (^)
219prefix.  The heavy use of the carat operator by the new
220namepath optimization in the iASL compiler uncovered a problem
221with the AML interpreter handling of this prefix.  In the case
222where one or more carats precede a single nameseg, the nameseg
223was treated as standalone and the search rule (to root) was
224inadvertently applied.  This could cause both the iASL
225compiler and the interpreter to find the wrong object or to
226miss the error that should occur if the object does not exist
227at that exact pathname.
228
229Found and fixed the problem where the HP Pavilion DSDT would
230not load.  This was a relatively minor tweak to the table
231loading code (a problem caused by the unexpected encounter
232with a method invocation not within a control method), but it
233does not solve the overall issue of the execution of AML code
234at the table level.  This investigation is still ongoing.
235
236Code and Data Size: Current core subsystem library sizes are
237shown below.  These are the code and data sizes for the
238acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
239and these values do not include any ACPI driver or OSPM code.
240The debug version of the code includes the debug output trace
241mechanism and has a larger code and data size.  Note that
242these values will vary depending on the efficiency of the
243compiler and the compiler options used during generation.
244
245  Previous Release
246    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
247    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
248  Current Release:
249    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
250    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
251
252
2532) Linux
254
255Remove redundant slab.h include (Brad Hards)
256
257Fix several bugs in thermal.c (Herbert Nachtnebel)
258
259Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
260
261Change acpi_system_suspend to use updated irq functions (Pavel
262Machek)
263
264Export acpi_get_firmware_table (Matthew Wilcox)
265
266Use proper root proc entry for ACPI (Kochi Takayoshi)
267
268Fix early-boot table parsing (Bjorn Helgaas)
269
270
2713) iASL Compiler/Disassembler
272
273Reworked the compiler options to make them more consistent and
274to use two-letter options where appropriate.  We were running
275out of sensible letters.   This may break some makefiles, so
276check the current options list by invoking the compiler with
277no parameters.
278
279Completed the design and implementation of the ASL namepath
280optimization option for the compiler.  This option optimizes
281all references to named objects to the shortest possible path.
282The first attempt tries to utilize a single nameseg (4
283characters) and the "search-to-root" algorithm used by the
284interpreter.  If that cannot be used (because either the name
285is not in the search path or there is a conflict with another
286object with the same name), the pathname is optimized using
287the carat prefix (usually a shorter string than specifying the
288entire path from the root.)
289
290Implemented support to obtain the DSDT from the Windows
291registry (when the disassembly option is specified with no
292input file).  Added this code as the implementation for
293AcpiOsTableOverride in the Windows OSL.  Migrated the 16-bit
294code (used in the AcpiDump utility) to scan memory for the
295DSDT to the AcpiOsTableOverride function in the DOS OSL to
296make the disassembler truly OS independent.
297
298Implemented a new option to disassemble and compile in one
299step.  When used without an input filename, this option will
300grab the DSDT from the local machine, disassemble it, and
301compile it in one step.
302
303Added a warning message for invalid escapes (a backslash
304followed by any character other than the allowable escapes).
305This catches the quoted string error "\_SB_" (which should be
306"\\_SB_" ).  Also, there are numerous instances in the ACPI
307specification where this error occurs.
308
309Added a compiler option to disable all optimizations.  This is
310basically the "compatibility mode" because by using this
311option, the AML code will come out exactly the same as other
312ASL compilers.
313
314Added error messages for incorrectly ordered dependent
315resource functions.  This includes: missing EndDependentFn
316macro at end of dependent resource list, nested dependent
317function macros (both start and end), and missing
318StartDependentFn macro.  These are common errors that should
319be caught at compile time.
320
321Implemented _OSI support for the disassembler and compiler.
322_OSI must be included in the namespace for proper disassembly
323(because the disassembler must know the number of arguments.)
324
325Added an "optimization" message type that is optional (off by
326default).  This message is used for all optimizations -
327including constant folding, integer optimization, and namepath
328optimization.
329
330----------------------------------------
33125 July 2002.  Summary of changes for this release.
332
333
3341) ACPI CA Core Subsystem Version 20020725:
335
336The AML Disassembler has been enhanced to produce compilable
337ASL code and has been integrated into the iASL compiler (see
338below) as well as the single-step disassembly for the AML
339debugger and the disassembler for the AcpiDump utility.  All
340ACPI 2.0A opcodes, resource templates and macros are fully
341supported.  The disassembler has been tested on over 30
342different AML files, producing identical AML when the
343resulting disassembled ASL file is recompiled with the same
344ASL compiler.
345
346Modified the Resource Manager to allow zero interrupts and
347zero dma channels during the GetCurrentResources call.  This
348was causing problems on some platforms.
349
350Added the AcpiOsRedirectOutput interface to the OSL to
351simplify output redirection for the AcpiOsPrintf and
352AcpiOsVprintf interfaces.
353
354Code and Data Size: Current core subsystem library sizes are
355shown below.  These are the code and data sizes for the
356acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
357and these values do not include any ACPI driver or OSPM code.
358The debug version of the code includes the debug output trace
359mechanism and has a larger code and data size.  Note that
360these values will vary depending on the efficiency of the
361compiler and the compiler options used during generation.
362
363  Previous Release
364    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
365    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
366  Current Release:
367    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
368    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
369
370
3712) Linux
372
373Fixed a panic in the EC driver (Dominik Brodowski)
374
375Implemented checksum of the R/XSDT itself during Linux table
376scan (Richard Schaal)
377
378
3793) iASL compiler
380
381The AML disassembler is integrated into the compiler.  The "-
382d" option invokes the disassembler  to completely disassemble
383an input AML file, producing as output a text ASL file with
384the extension ".dsl" (to avoid name collisions with existing
385.asl source files.)  A future enhancement will allow the
386disassembler to obtain the BIOS DSDT from the registry under
387Windows.
388
389Fixed a problem with the VendorShort and VendorLong resource
390descriptors where an invalid AML sequence was created.
391
392Implemented a fix for BufferData term in the ASL parser.  It
393was inadvertently defined twice, allowing invalid syntax to
394pass and causing reduction conflicts.
395
396Fixed a problem where the Ones opcode could get converted to a
397value of zero if "Ones" was used where a byte, word or dword
398value was expected.  The 64-bit value is now truncated to the
399correct size with the correct value.
400
401
402----------------------------------------
40302 July 2002.  Summary of changes for this release.
404
405
4061) ACPI CA Core Subsystem Version 20020702:
407
408The Table Manager code has been restructured to add several
409new features.  Tables that are not required by the core
410subsystem (other than the FADT, DSDT, FACS, PSDTs, etc.) are
411no longer validated in any way and are returned from
412AcpiGetFirmwareTable if requested.  The AcpiOsTableOverride
413interface is now called for each table that is loaded by the
414subsystem in order to allow the host to override any table it
415chooses.  Previously, only the DSDT could be overridden.
416Added one new files, tbrsdt.c and tbgetall.c.
417
418Fixed a problem with the conversion of internal package
419objects to external objects (when a package is returned from a
420control method.)  The return buffer length was set to zero
421instead of the proper length of the package object.
422
423Fixed a reported problem with the use of the RefOf and DeRefOf
424operators when passing reference arguments to control methods.
425A new type of Reference object is used internally for
426references produced by the RefOf operator.
427
428Added additional error messages in the Resource Manager to
429explain AE_BAD_DATA errors when they occur during resource
430parsing.
431
432Split the AcpiEnableSubsystem into two primitives to enable a
433finer granularity initialization sequence.  These two calls
434should be called in this order: AcpiEnableSubsystem (flags),
435AcpiInitializeObjects (flags).  The flags parameter remains
436the same.
437
438
4392) Linux
440
441Updated the ACPI utilities module to understand the new style
442of fully resolved package objects that are now returned from
443the core subsystem.  This eliminates errors of the form:
444
445    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
446    acpi_utils-0430 [145] acpi_evaluate_reference:
447        Invalid element in package (not a device reference)
448
449The method evaluation utility uses the new buffer allocation
450scheme instead of calling AcpiEvaluate Object twice.
451
452Added support for ECDT. This allows the use of the Embedded
453Controller before the namespace has been fully initialized,
454which is necessary for ACPI 2.0 support, and for some laptops
455to initialize properly. (Laptops using ECDT are still rare, so
456only limited testing was performed of the added
457functionality.)
458
459Fixed memory leaks in the EC driver.
460
461Eliminated a brittle code structure in acpi_bus_init().
462
463Eliminated the acpi_evaluate() helper function in utils.c. It
464is no longer needed since acpi_evaluate_object can optionally
465allocate memory for the return object.
466
467Implemented fix for keyboard hang when getting battery
468readings on some systems (Stephen White)
469
470PCI IRQ routing update (Dominik Brodowski)
471
472Fix an ifdef to allow compilation on UP with LAPIC but no
473IOAPIC support
474
475----------------------------------------
47611 June 2002.  Summary of changes for this release.
477
478
4791) ACPI CA Core Subsystem Version 20020611:
480
481Fixed a reported problem where constants such as Zero and One
482appearing within _PRT packages were not handled correctly
483within the resource manager code.  Originally reported against
484the ASL compiler because the code generator now optimizes
485integers to their minimal AML representation (i.e. AML
486constants if possible.)  The _PRT code now handles all AML
487constant opcodes correctly (Zero, One, Ones, Revision).
488
489Fixed a problem with the Concatenate operator in the AML
490interpreter where a buffer result object was incorrectly
491marked as not fully evaluated, causing a run-time error of
492AE_AML_INTERNAL.
493
494All package sub-objects are now fully resolved before they are
495returned from the external ACPI interfaces.  This means that
496name strings are resolved to object handles, and constant
497operators (Zero, One, Ones, Revision) are resolved to
498Integers.
499
500Implemented immediate resolution of the AML Constant opcodes
501(Zero, One, Ones, Revision) to Integer objects upon detection
502within the AML stream. This has simplified and reduced the
503generated code size of the subsystem by eliminating about 10
504switch statements for these constants (which previously were
505contained in Reference objects.)  The complicating issues are
506that the Zero opcode is used as a "placeholder" for
507unspecified optional target operands and stores to constants
508are defined to be no-ops.
509
510Code and Data Size: Current core subsystem library sizes are
511shown below. These are the code and data sizes for the
512acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
513and these values do not include any ACPI driver or OSPM code.
514The debug version of the code includes the debug output trace
515mechanism and has a larger code and data size.  Note that
516these values will vary depending on the efficiency of the
517compiler and the compiler options used during generation.
518
519  Previous Release
520    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
521    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
522  Current Release:
523    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
524    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
525
526
5272) Linux
528
529Added preliminary support for obtaining _TRA data for PCI root
530bridges (Bjorn Helgaas).
531
532
5333) iASL Compiler Version X2046:
534
535Fixed a problem where the "_DDN" reserved name was defined to
536be a control method with one argument.  There are no
537arguments, and _DDN does not have to be a control method.
538
539Fixed a problem with the Linux version of the compiler where
540the source lines printed with error messages were the wrong
541lines.  This turned out to be the "LF versus CR/LF" difference
542between Windows and Unix.  This appears to be the longstanding
543issue concerning listing output and error messages.
544
545Fixed a problem with the Linux version of compiler where
546opcode names within error messages were wrong.  This was
547caused by a slight difference in the output of the Flex tool
548on Linux versus Windows.
549
550Fixed a problem with the Linux compiler where the hex output
551files contained some garbage data caused by an internal buffer
552overrun.
553
554
555----------------------------------------
55617 May 2002.  Summary of changes for this release.
557
558
5591) ACPI CA Core Subsystem Version 20020517:
560
561Implemented a workaround to an BIOS bug discovered on the HP
562OmniBook where the FADT revision number and the table size are
563inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
564new behavior is to fallback to using only the ACPI 1.0 fields
565of the FADT if the table is too small to be a ACPI 2.0 table
566as claimed by the revision number.  Although this is a BIOS
567bug, this is a case where the workaround is simple enough and
568with no side effects, so it seemed prudent to add it.  A
569warning message is issued, however.
570
571Implemented minimum size checks for the fixed-length ACPI
572tables -- the FADT and FACS, as well as consistency checks
573between the revision number and the table size.
574
575Fixed a reported problem in the table override support where
576the new table pointer was incorrectly treated as a physical
577address instead of a logical address.
578
579Eliminated the use of the AE_AML_ERROR exception and replaced
580it with more descriptive codes.
581
582Fixed a problem where an exception would occur if an ASL Field
583was defined with no named Field Units underneath it (used by
584some index fields).
585
586Code and Data Size: Current core subsystem library sizes are
587shown below.  These are the code and data sizes for the
588acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
589and these values do not include any ACPI driver or OSPM code.
590The debug version of the code includes the debug output trace
591mechanism and has a larger code and data size.  Note that
592these values will vary depending on the efficiency of the
593compiler and the compiler options used during generation.
594
595  Previous Release
596    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
597    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
598  Current Release:
599    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
600    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
601
602
603
6042) Linux
605
606Much work done on ACPI init (MADT and PCI IRQ routing
607support). (Paul D. and Dominik Brodowski)
608
609Fix PCI IRQ-related panic on boot (Sam Revitch)
610
611Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
612
613Fix "MHz" typo (Dominik Brodowski)
614
615Fix RTC year 2000 issue (Dominik Brodowski)
616
617Preclude multiple button proc entries (Eric Brunet)
618
619Moved arch-specific code out of include/platform/aclinux.h
620
6213) iASL Compiler Version X2044:
622
623Implemented error checking for the string used in the EISAID
624macro (Usually used in the definition of the _HID object.)
625The code now strictly enforces the PnP format - exactly 7
626characters, 3 uppercase letters and 4 hex digits.
627
628If a raw string is used in the definition of the _HID object
629(instead of the EISAID macro), the string must contain all
630alphanumeric characters (e.g., "*PNP0011" is not allowed
631because of the asterisk.)
632
633Implemented checking for invalid use of ACPI reserved names
634for most of the name creation operators (Name, Device, Event,
635Mutex, OperationRegion, PowerResource, Processor, and
636ThermalZone.)  Previously, this check was only performed for
637control methods.
638
639Implemented an additional check on the Name operator to emit
640an error if a reserved name that must be implemented in ASL as
641a control method is used.  We know that a reserved name must
642be a method if it is defined with input arguments.
643
644The warning emitted when a namespace object reference is not
645found during the cross reference phase has been changed into
646an error.  The "External" directive should be used for names
647defined in other modules.
648
649
6504) Tools and Utilities
651
652The 16-bit tools (adump16 and aexec16) have been regenerated
653and tested.
654
655Fixed a problem with the output of both acpidump and adump16
656where the indentation of closing parentheses and brackets was
657not aligned properly with the parent block.
658
659
660----------------------------------------
66103 May 2002.  Summary of changes for this release.
662
663
6641) ACPI CA Core Subsystem Version 20020503:
665
666Added support a new OSL interface that allows the host
667operating system software to override the DSDT found in the
668firmware - AcpiOsTableOverride.  With this interface, the OSL
669can examine the version of the firmware DSDT and replace it
670with a different one if desired.
671
672Added new external interfaces for accessing ACPI registers
673from device drivers and other system software -
674AcpiGetRegister and AcpiSetRegister.  This was simply an
675externalization of the existing AcpiHwBitRegister interfaces.
676
677Fixed a regression introduced in the previous build where the
678ASL/AML CreateField operator always returned an error,
679"destination must be a NS Node".
680
681Extended the maximum time (before failure) to successfully
682enable ACPI mode to 3 seconds.
683
684Code and Data Size: Current core subsystem library sizes are
685shown below.  These are the code and data sizes for the
686acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
687and these values do not include any ACPI driver or OSPM code.
688The debug version of the code includes the debug output trace
689mechanism and has a larger code and data size.  Note that
690these values will vary depending on the efficiency of the
691compiler and the compiler options used during generation.
692
693  Previous Release
694    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
695    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
696  Current Release:
697    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
698    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
699
700
7012) Linux
702
703Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
704free. While 3 out of 4 of our in-house systems work fine, the
705last one still hangs when testing the LAPIC timer.
706
707Renamed many files in 2.5 kernel release to omit "acpi_" from
708the name.
709
710Added warning on boot for Presario 711FR.
711
712Sleep improvements (Pavel Machek)
713
714ACPI can now be built without CONFIG_PCI enabled.
715
716IA64: Fixed memory map functions (JI Lee)
717
718
7193) iASL Compiler Version X2043:
720
721Added support to allow the compiler to be integrated into the
722MS VC++ development environment for one-button compilation of
723single files or entire projects -- with error-to-source-line
724mapping.
725
726Implemented support for compile-time constant folding for the
727Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
728specification.  This allows the ASL writer to use expressions
729instead of Integer/Buffer/String constants in terms that must
730evaluate to constants at compile time and will also simplify
731the emitted AML in any such sub-expressions that can be folded
732(evaluated at compile-time.)  This increases the size of the
733compiler significantly because a portion of the ACPI CA AML
734interpreter is included within the compiler in order to pre-
735evaluate constant expressions.
736
737Fixed a problem with the "Unicode" ASL macro that caused the
738compiler to fault.  (This macro is used in conjunction with
739the _STR reserved name.)
740
741Implemented an AML opcode optimization to use the Zero, One,
742and Ones opcodes where possible to further reduce the size of
743integer constants and thus reduce the overall size of the
744generated AML code.
745
746Implemented error checking for new reserved terms for ACPI
747version 2.0A.
748
749Implemented the -qr option to display the current list of ACPI
750reserved names known to the compiler.
751
752Implemented the -qc option to display the current list of ASL
753operators that are allowed within constant expressions and can
754therefore be folded at compile time if the operands are
755constants.
756
757
7584) Documentation
759
760Updated the Programmer's Reference for new interfaces, data
761types, and memory allocation model options.
762
763Updated the iASL Compiler User Reference to apply new format
764and add information about new features and options.
765
766----------------------------------------
76719 April 2002.  Summary of changes for this release.
768
7691) ACPI CA Core Subsystem Version 20020419:
770
771The source code base for the Core Subsystem has been
772completely cleaned with PC-lint (FlexLint) for both 32-bit and
77364-bit versions.  The Lint option files used are included in
774the /acpi/generate/lint directory.
775
776Implemented enhanced status/error checking across the entire
777Hardware manager subsystem.  Any hardware errors (reported
778from the OSL) are now bubbled up and will abort a running
779control method.
780
781Fixed a problem where the per-ACPI-table integer width (32 or
78264) was stored only with control method nodes, causing a fault
783when non-control method code was executed during table
784loading.  The solution implemented uses a global variable to
785indicate table width across the entire ACPI subsystem.
786Therefore, ACPI CA does not support mixed integer widths
787across different ACPI tables (DSDT, SSDT).
788
789Fixed a problem where NULL extended fields (X fields) in an
790ACPI 2.0 ACPI FADT caused the table load to fail.  Although
791the existing ACPI specification is a bit fuzzy on this topic,
792the new behavior is to fall back on a ACPI 1.0 field if the
793corresponding ACPI 2.0 X field is zero (even though the table
794revision indicates a full ACPI 2.0 table.)  The ACPI
795specification will be updated to clarify this issue.
796
797Fixed a problem with the SystemMemory operation region handler
798where memory was always accessed byte-wise even if the AML-
799specified access width was larger than a byte.  This caused
800problems on systems with memory-mapped I/O.  Memory is now
801accessed with the width specified.  On systems that do not
802support non-aligned transfers, a check is made to guarantee
803proper address alignment before proceeding in order to avoid
804an AML-caused alignment fault within the kernel.
805
806Fixed a problem with the ExtendedIrq resource where only one
807byte of the 4-byte Irq field was extracted.
808
809Fixed the AcpiExDigitsNeeded() procedure to support _UID.
810This function was out of date and required a rewrite.
811
812Code and Data Size: Current core subsystem library sizes are
813shown below.  These are the code and data sizes for the
814acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
815and these values do not include any ACPI driver or OSPM code.
816The debug version of the code includes the debug output trace
817mechanism and has a larger code and data size.  Note that
818these values will vary depending on the efficiency of the
819compiler and the compiler options used during generation.
820
821  Previous Release
822    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
823    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
824  Current Release:
825    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
826    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
827
828
8292) Linux
830
831PCI IRQ routing fixes (Dominik Brodowski)
832
833
8343) iASL Compiler Version X2042:
835
836Implemented an additional compile-time error check for a field
837unit whose size + minimum access width would cause a run-time
838access beyond the end-of-region.  Previously, only the field
839size itself was checked.
840
841The Core subsystem and iASL compiler now share a common parse
842object in preparation for compile-time evaluation of the type
8433/4/5 ASL operators.
844
845
846----------------------------------------
847Summary of changes for this release: 03_29_02
848
8491) ACPI CA Core Subsystem Version 20020329:
850
851Implemented support for late evaluation of TermArg operands to
852Buffer and Package objects.  This allows complex expressions
853to be used in the declarations of these object types.
854
855Fixed an ACPI 1.0 compatibility issue when reading Fields. In
856ACPI 1.0, if the field was larger than 32 bits, it was
857returned as a buffer - otherwise it was returned as an
858integer.  In ACPI 2.0, the field is returned as a buffer only
859if the field is larger than 64 bits.  The TableRevision is now
860considered when making this conversion to avoid
861incompatibility with existing ASL code.
862
863Implemented logical addressing for AcpiOsGetRootPointer.  This
864allows an RSDP with either a logical or physical address.
865With this support, the host OS can now override all ACPI
866tables with one logical RSDP.  Includes implementation of
867"typed" pointer support to allow a common data type for both
868physical and logical pointers internally.  This required a
869change to the AcpiOsGetRootPointer interface.
870
871Implemented the use of ACPI 2.0 Generic Address Structures for
872all GPE, Fixed Event, and PM Timer I/O.  This allows the use
873of memory mapped I/O for these ACPI features.
874
875Initialization now ignores not only non-required tables (All
876tables other than the FADT, FACS, DSDT, and SSDTs), but also
877does not validate the table headers of unrecognized tables.
878
879Fixed a problem where a notify handler could only be
880installed/removed on an object of type Device.  All "notify"
881objects are now supported -- Devices, Processor, Power, and
882Thermal.
883
884Removed most verbosity from the ACPI_DB_INFO debug level.
885Only critical information is returned when this debug level is
886enabled.
887
888Code and Data Size: Current core subsystem library sizes are
889shown below.  These are the code and data sizes for the
890acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
891and these values do not include any ACPI driver or OSPM code.
892The debug version of the code includes the debug output trace
893mechanism and has a larger code and data size.  Note that
894these values will vary depending on the efficiency of the
895compiler and the compiler options used during generation.
896
897  Previous Release
898    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
899    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
900  Current Release:
901    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
902    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
903
904
9052) Linux:
906
907The processor driver (acpi_processor.c) now fully supports
908ACPI 2.0-based processor performance control (e.g. Intel(R)
909SpeedStep(TM) technology) Note that older laptops that only
910have the Intel "applet" interface are not supported through
911this.  The 'limit' and 'performance' interface (/proc) are
912fully functional.  [Note that basic policy for controlling
913performance state transitions will be included in the next
914version of ospmd.]  The idle handler was modified to more
915aggressively use C2, and PIIX4 errata handling underwent a
916complete overhaul (big thanks to Dominik Brodowski).
917
918Added support for ACPI-PCI device binding (acpi_pci_root.c).
919_ADR-based devices in the ACPI namespace are now dynamically
920bound (associated) with their PCI counterparts (e.g. PCI1-
921>01:00.0).  This allows, among other things, ACPI to resolve
922bus numbers for subordinate PCI bridges.
923
924Enhanced PCI IRQ routing to get the proper bus number for _PRT
925entries defined underneath PCI bridges.
926
927Added IBM 600E to bad bios list due to invalid _ADR value for
928PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
929
930In the process of adding full MADT support (e.g. IOAPIC) for
931IA32 (acpi.c, mpparse.c) -- stay tuned.
932
933Added back visual differentiation between fixed-feature and
934control-method buttons in dmesg.  Buttons are also subtyped
935(e.g. button/power/PWRF) to simplify button identification.
936
937We no longer use -Wno-unused when compiling debug. Please
938ignore any "_THIS_MODULE defined but not used" messages.
939
940Can now shut down the system using "magic sysrq" key.
941
942
9433) iASL Compiler version 2041:
944
945Fixed a problem where conversion errors for hex/octal/decimal
946constants were not reported.
947
948Implemented a fix for the General Register template Address
949field.  This field was 8 bits when it should be 64.
950
951Fixed a problem where errors/warnings were no longer being
952emitted within the listing output file.
953
954Implemented the ACPI 2.0A restriction on ACPI Table Signatures
955to exactly 4 characters, alphanumeric only.
956
957
958
959
960----------------------------------------
961Summary of changes for this release: 03_08_02
962
963
9641) ACPI CA Core Subsystem Version 20020308:
965
966Fixed a problem with AML Fields where the use of the
967"AccessAny" keyword could cause an interpreter error due to
968attempting to read or write beyond the end of the parent
969Operation Region.
970
971Fixed a problem in the SystemMemory Operation Region handler
972where an attempt was made to map memory beyond the end of the
973region.  This was the root cause of the "AE_ERROR" and
974"AE_NO_MEMORY" errors on some Linux systems.
975
976Fixed a problem where the interpreter/namespace "search to
977root" algorithm was not functioning for some object types.
978Relaxed the internal restriction on the search to allow
979upsearches for all external object types as well as most
980internal types.
981
982
9832) Linux:
984
985We now use safe_halt() macro versus individual calls to sti |
986hlt.
987
988Writing to the processor limit interface should now work.
989"echo 1" will increase the limit, 2 will decrease, and 0 will
990reset to the default.
991
992
9933) ASL compiler:
994
995Fixed segfault on Linux version.
996
997
998----------------------------------------
999Summary of changes for this release: 02_25_02
1000
10011) ACPI CA Core Subsystem:
1002
1003
1004Fixed a problem where the GPE bit masks were not initialized
1005properly, causing erratic GPE behavior.
1006
1007Implemented limited support for multiple calling conventions.
1008The code can be generated with either the VPL (variable
1009parameter list, or "C") convention, or the FPL (fixed
1010parameter list, or "Pascal") convention.  The core subsystem
1011is about 3.4% smaller when generated with FPL.
1012
1013
10142) Linux
1015
1016Re-add some /proc/acpi/event functionality that was lost
1017during the rewrite
1018
1019Resolved issue with /proc events for fixed-feature buttons
1020showing up as the system device.
1021
1022Fixed checks on C2/C3 latencies to be inclusive of maximum
1023values.
1024
1025Replaced AE_ERRORs in acpi_osl.c with more specific error
1026codes.
1027
1028Changed ACPI PRT option from "pci=noacpi-routing" to
1029"pci=noacpi"
1030
1031Fixed limit interface & usage to fix bugs with passive cooling
1032hysterisis.
1033
1034Restructured PRT support.
1035
1036
1037----------------------------------------
1038Summary of changes for this label: 02_14_02
1039
1040
10411) ACPI CA Core Subsystem:
1042
1043Implemented support in AcpiLoadTable to allow loading of FACS
1044and FADT tables.
1045
1046Suport for the now-obsolete interim 0.71 64-bit ACPI tables
1047has been removed.  All 64-bit platforms should be migrated to
1048the ACPI 2.0 tables.  The actbl71.h header has been removed
1049from the source tree.
1050
1051All C macros defined within the subsystem have been prefixed
1052with "ACPI_" to avoid collision with other system include
1053files.
1054
1055Removed the return value for the two AcpiOsPrint interfaces,
1056since it is never used and causes lint warnings for ignoring
1057the return value.
1058
1059Added error checking to all internal mutex acquire and release
1060calls.  Although a failure from one of these interfaces is
1061probably a fatal system error, these checks will cause the
1062immediate abort of the currently executing method or
1063interface.
1064
1065Fixed a problem where the AcpiSetCurrentResources interface
1066could fault.  This was a side effect of the deployment of the
1067new memory allocation model.
1068
1069Fixed a couple of problems with the Global Lock support
1070introduced in the last major build.  The "common" (1.0/2.0)
1071internal FACS was being overwritten with the FACS signature
1072and clobbering the Global Lock pointer.  Also, the actual
1073firmware FACS was being unmapped after construction of the
1074"common" FACS, preventing access to the actual Global Lock
1075field within it.  The "common" internal FACS is no longer
1076installed as an actual ACPI table; it is used simply as a
1077global.
1078
1079Code and Data Size: Current core subsystem library sizes are
1080shown below.  These are the code and data sizes for the
1081acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
1082and these values do not include any ACPI driver or OSPM code.
1083The debug version of the code includes the debug output trace
1084mechanism and has a larger code and data size.  Note that
1085these values will vary depending on the efficiency of the
1086compiler and the compiler options used during generation.
1087
1088  Previous Release (02_07_01)
1089    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
1090    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
1091  Current Release:
1092    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
1093    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
1094
1095
10962) Linux
1097
1098Updated Linux-specific code for core macro and OSL interface
1099changes described above.
1100
1101Improved /proc/acpi/event. It now can be opened only once and
1102has proper poll functionality.
1103
1104Fixed and restructured power management (acpi_bus).
1105
1106Only create /proc "view by type" when devices of that class
1107exist.
1108
1109Fixed "charging/discharging" bug (and others) in acpi_battery.
1110
1111Improved thermal zone code.
1112
1113
11143) ASL Compiler, version X2039:
1115
1116Implemented the new compiler restriction on ASL String
1117hex/octal escapes to non-null, ASCII values.  An error results
1118if an invalid value is used.  (This will require an ACPI 2.0
1119specification change.)
1120
1121AML object labels that are output to the optional C and ASM
1122source are now prefixed with both the ACPI table signature and
1123table ID to help guarantee uniqueness within a large BIOS
1124project.
1125
1126
1127----------------------------------------
1128Summary of changes for this label: 02_01_02
1129
11301) ACPI CA Core Subsystem:
1131
1132ACPI 2.0 support is complete in the entire Core Subsystem and
1133the ASL compiler. All new ACPI 2.0 operators are implemented
1134and all other changes for ACPI 2.0 support are complete.  With
1135simultaneous code and data optimizations throughout the
1136subsystem, ACPI 2.0 support has been implemented with almost
1137no additional cost in terms of code and data size.
1138
1139Implemented a new mechanism for allocation of return buffers.
1140If the buffer length is set to ACPI_ALLOCATE_BUFFER, the
1141buffer will be allocated on behalf of the caller.
1142Consolidated all return buffer validation and allocation to a
1143common procedure.  Return buffers will be allocated via the
1144primary OSL allocation interface since it appears that a
1145separate pool is not needed by most users.  If a separate pool
1146is required for these buffers, the caller can still use the
1147original mechanism and pre-allocate the buffer(s).
1148
1149Implemented support for string operands within the DerefOf
1150operator.
1151
1152Restructured the Hardware and Event managers to be table
1153driven, simplifying the source code and reducing the amount of
1154generated code.
1155
1156Split the common read/write low-level ACPI register bitfield
1157procedure into a separate read and write, simplifying the code
1158considerably.
1159
1160Obsoleted the AcpiOsCallocate OSL interface.  This interface
1161was used only a handful of times and didn't have enough
1162critical mass for a separate interface.  Replaced with a
1163common calloc procedure in the core.
1164
1165Fixed a reported problem with the GPE number mapping mechanism
1166that allows GPE1 numbers to be non-contiguous with GPE0.
1167Reorganized the GPE information and shrunk a large array that
1168was originally large enough to hold info for all possible GPEs
1169(256) to simply large enough to hold all GPEs up to the
1170largest GPE number on the machine.
1171
1172Fixed a reported problem with resource structure alignment on
117364-bit platforms.
1174
1175Changed the AcpiEnableEvent and AcpiDisableEvent external
1176interfaces to not require any flags for the common case of
1177enabling/disabling a GPE.
1178
1179Implemented support to allow a "Notify" on a Processor object.
1180
1181Most TBDs in comments within the source code have been
1182resolved and eliminated.
1183
1184Fixed a problem in the interpreter where a standalone parent
1185prefix (^) was not handled correctly in the interpreter and
1186debugger.
1187
1188Removed obsolete and unnecessary GPE save/restore code.
1189
1190Implemented Field support in the ASL Load operator.  This
1191allows a table to be loaded from a named field, in addition to
1192loading a table directly from an Operation Region.
1193
1194Implemented timeout and handle support in the external Global
1195Lock interfaces.
1196
1197Fixed a problem in the AcpiDump utility where pathnames were
1198no longer being generated correctly during the dump of named
1199objects.
1200
1201Modified the AML debugger to give a full display of if/while
1202predicates instead of just one AML opcode at a time.  (The
1203predicate can have several nested ASL statements.)  The old
1204method was confusing during single stepping.
1205
1206Code and Data Size: Current core subsystem library sizes are
1207shown below. These are the code and data sizes for the
1208acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
1209and these values do not include any ACPI driver or OSPM code.
1210The debug version of the code includes the debug output trace
1211mechanism and has a larger code and data size.  Note that
1212these values will vary depending on the efficiency of the
1213compiler and the compiler options used during generation.
1214
1215  Previous Release (12_18_01)
1216     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K
1217Total
1218     Debug Version:     138.3K Code,  55.9K Data,  194.2K
1219Total
1220   Current Release:
1221     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K
1222Total
1223     Debug Version:     136.9K Code,  56.4K Data,  193.3K
1224Total
1225
12262) Linux
1227
1228 Implemented fix for PIIX reverse throttling errata (Processor
1229driver)
1230
1231Added new Limit interface (Processor and Thermal drivers)
1232
1233New thermal policy (Thermal driver)
1234
1235Many updates to /proc
1236
1237Battery "low" event support (Battery driver)
1238
1239Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
1240
1241IA32 - IA64 initialization unification, no longer experimental
1242
1243Menuconfig options redesigned
1244
12453) ASL Compiler, version X2037:
1246
1247Implemented several new output features to simplify
1248integration of AML code into  firmware: 1) Output the AML in C
1249source code with labels for each named ASL object.  The
1250original ASL source code is interleaved as C comments. 2)
1251Output the AML in ASM source code with labels and interleaved
1252ASL    source. 3) Output the AML in raw hex table form, in
1253either C or ASM.
1254
1255Implemented support for optional string parameters to the
1256LoadTable operator.
1257
1258Completed support for embedded escape sequences within string
1259literals.  The compiler now supports all single character
1260escapes as well as the Octal and Hex escapes.  Note: the
1261insertion of a null byte into a string literal (via the
1262hex/octal escape) causes the string to be immediately
1263terminated.  A warning is issued.
1264
1265Fixed a problem where incorrect AML was generated for the case
1266where an ASL namepath consists of a single parent prefix (
1267
1268) with no trailing name segments.
1269
1270The compiler has been successfully generated with a 64-bit C
1271compiler.
1272
1273
1274
1275
1276----------------------------------------
1277Summary of changes for this label: 12_18_01
1278
12791) Linux
1280
1281Enhanced blacklist with reason and severity fields. Any
1282table's signature may now be used to identify a blacklisted
1283system.
1284
1285Call _PIC control method to inform the firmware which
1286interrupt model the OS is using. Turn on any disabled link
1287devices.
1288
1289Cleaned up busmgr /proc error handling (Andreas Dilger)
1290
1291 2) ACPI CA Core Subsystem:
1292
1293Implemented ACPI 2.0 semantics for the "Break" operator (Exit
1294from while loop)
1295
1296Completed implementation of the ACPI 2.0 "Continue",
1297"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
1298operators.  All new ACPI 2.0 operators are now implemented in
1299both the ASL compiler and the AML interpreter.  The only
1300remaining ACPI 2.0 task is support for the String data type in
1301the DerefOf operator.  Fixed a problem with AcquireMutex where
1302the status code was lost if the caller had to actually wait
1303for the mutex.
1304
1305Increased the maximum ASL Field size from 64K bits to 4G bits.
1306
1307Completed implementation of the external Global Lock
1308interfaces -- AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.
1309The Timeout and Handler parameters were added.
1310
1311Completed another pass at removing warnings and issues when
1312compiling with 64-bit compilers.  The code now compiles
1313cleanly with the Intel 64-bit C/C++ compiler.  Most notably,
1314the pointer add and subtract (diff) macros have changed
1315considerably.
1316
1317Created and deployed a new ACPI_SIZE type that is 64-bits wide
1318on 64-bit platforms, 32-bits on all others.  This type is used
1319wherever memory allocation and/or the C sizeof() operator is
1320used, and affects the OSL memory allocation interfaces
1321AcpiOsAllocate and AcpiOsCallocate.
1322
1323Implemented sticky user breakpoints in the AML debugger.
1324
1325Code and Data Size: Current core subsystem library sizes are
1326shown below. These are the code and data sizes for the
1327acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
1328and these values do not include any ACPI driver or OSPM code.
1329The debug version of the code includes the debug output trace
1330mechanism and has a larger code and data size. Note that these
1331values will vary depending on the efficiency of the compiler
1332and the compiler options used during generation.
1333
1334  Previous Release (12_05_01)
1335     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K
1336Total
1337     Debug Version:     136.2K Code,  55.6K Data,  191.8K
1338Total
1339   Current Release:
1340     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K
1341Total
1342     Debug Version:     138.3K Code,  55.9K Data,  194.2K
1343Total
1344
1345 3) ASL Compiler, version X2034:
1346
1347Now checks for (and generates an error if detected) the use of
1348a Break or Continue statement without an enclosing While
1349statement.
1350
1351Successfully generated the compiler with the Intel 64-bit C
1352compiler.
1353
1354 ----------------------------------------
1355Summary of changes for this label: 12_05_01
1356
1357 1) ACPI CA Core Subsystem:
1358
1359The ACPI 2.0 CopyObject operator is fully implemented.  This
1360operator creates a new copy of an object (and is also used to
1361bypass the "implicit conversion" mechanism of the Store
1362operator.)
1363
1364The ACPI 2.0 semantics for the SizeOf operator are fully
1365implemented.  The change is that performing a SizeOf on a
1366reference object causes an automatic dereference of the object
1367to tha actual value before the size is evaluated. This
1368behavior was undefined in ACPI 1.0.
1369
1370The ACPI 2.0 semantics for the Extended IRQ resource
1371descriptor have been implemented.  The interrupt polarity and
1372mode are now independently set.
1373
1374Fixed a problem where ASL Constants (Zero, One, Ones,
1375Revision) appearing in Package objects were not properly
1376converted to integers when the internal Package was converted
1377to an external object (via the AcpiEvaluateObject interface.)
1378
1379Fixed a problem with the namespace object deletion mechanism
1380for objects created by control methods.  There were two parts
1381to this problem: 1) Objects created during the initialization
1382phase method parse were not being deleted, and 2) The object
1383owner ID mechanism to track objects was broken.
1384
1385Fixed a problem where the use of the ASL Scope operator within
1386a control method would result in an invalid opcode exception.
1387
1388Fixed a problem introduced in the previous label where the
1389buffer length required for the _PRT structure was not being
1390returned correctly.
1391
1392Code and Data Size: Current core subsystem library sizes are
1393shown below. These are the code and data sizes for the
1394acpica.lib produced by the Microsoft Visual C++ 6.0 compiler,
1395and these values do not include any ACPI driver or OSPM code.
1396The debug version of the code includes the debug output trace
1397mechanism and has a larger code and data size.  Note that
1398these values will vary depending on the efficiency of the
1399compiler and the compiler options used during generation.
1400
1401  Previous Release (11_20_01)
1402     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K
1403Total
1404     Debug Version:     135.1K Code,  55.4K Data,  190.5K
1405Total
1406
1407  Current Release:
1408     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K
1409Total
1410     Debug Version:     136.2K Code,  55.6K Data,  191.8K
1411Total
1412
1413 2) Linux:
1414
1415Updated all files to apply cleanly against 2.4.16.
1416
1417Added basic PCI Interrupt Routing Table (PRT) support for IA32
1418(acpi_pci.c), and unified the PRT code for IA32 and IA64.
1419This version supports both static and dyanmic PRT entries, but
1420dynamic entries are treated as if they were static (not yet
1421reconfigurable).  Architecture- specific code to use this data
1422is absent on IA32 but should be available shortly.
1423
1424Changed the initialization sequence to start the ACPI
1425interpreter (acpi_init) prior to initialization of the PCI
1426driver (pci_init) in init/main.c.  This ordering is required
1427to support PRT and facilitate other (future) enhancement.  A
1428side effect is that the ACPI bus driver and certain device
1429drivers can no longer be loaded as modules.
1430
1431Modified the 'make menuconfig' options to allow PCI Interrupt
1432Routing support to be included without the ACPI Bus and other
1433device drivers.
1434
1435 3) ASL Compiler, version X2033:
1436
1437Fixed some issues with the use of the new CopyObject and
1438DataTableRegion operators.  Both are fully functional.
1439
1440 ----------------------------------------
1441Summary of changes for this label: 11_20_01
1442
1443 20 November 2001.  Summary of changes for this release.
1444
1445 1) ACPI CA Core Subsystem:
1446
1447Updated Index support to match ACPI 2.0 semantics.  Storing a
1448Integer, String, or Buffer to an Index of a Buffer will store
1449only the least-significant byte of the source to the Indexed
1450buffer byte.  Multiple writes are not performed.
1451
1452Fixed a problem where the access type used in an AccessAs ASL
1453operator was not recorded correctly into the field object.
1454
1455Fixed a problem where ASL Event objects were created in a
1456signalled state. Events are now created in an unsignalled
1457state.
1458
1459The internal object cache is now purged after table loading
1460and initialization to reduce the use of dynamic kernel memory
1461-- on the assumption that object use is greatest during the
1462parse phase of the entire table (versus the run-time use of
1463individual control methods.)
1464
1465ACPI 2.0 variable-length packages are now fully operational.
1466
1467Code and Data Size: Code and Data optimizations have permitted
1468new feature development with an actual reduction in the
1469library size.  Current core subsystem library sizes are shown
1470below.  These are the code and data sizes for the acpica.lib
1471produced by the Microsoft Visual C++ 6.0 compiler, and these
1472values do not include any ACPI driver or OSPM code.  The debug
1473version of the code includes the debug output trace mechanism
1474and has a larger code and data size.  Note that these values
1475will vary depending on the efficiency of the compiler and the
1476compiler options used during generation.
1477
1478  Previous Release (11_09_01):
1479     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K
1480Total
1481     Debug Version:     134.5K Code,  55.4K Data,  189.9K
1482Total
1483
1484  Current Release:
1485     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K
1486Total
1487     Debug Version:     135.1K Code,  55.4K Data,  190.5K
1488Total
1489
1490 2) Linux:
1491
1492Enhanced the ACPI boot-time initialization code to allow the
1493use of Local APIC tables for processor enumeration on IA-32,
1494and to pave the way for a fully MPS-free boot (on SMP systems)
1495in the near future.  This functionality replaces
1496arch/i386/kernel/acpitables.c, which was introduced in an
1497earlier 2.4.15-preX release.  To enable this feature you must
1498add "acpi_boot=on" to the kernel command line -- see the help
1499entry for CONFIG_ACPI_BOOT for more information.  An IA-64
1500release is in the works...
1501
1502Restructured the configuration options to allow boot-time
1503table parsing support without inclusion of the ACPI
1504Interpreter (and other) code.
1505
1506NOTE: This release does not include fixes for the reported
1507events, power-down, and thermal passive cooling issues (coming
1508soon).
1509
1510 3) ASL Compiler:
1511
1512Added additional typechecking for Fields within restricted
1513access Operation Regions.  All fields within EC and CMOS
1514regions must be declared with ByteAcc. All fields withing
1515SMBus regions must be declared with the BufferAcc access type.
1516
1517Fixed a problem where the listing file output of control
1518methods no longer interleaved the actual AML code with the ASL
1519source code.
1520
1521
1522
1523----------------------------------------
1524Summary of changes for this label: 11_09_01
1525
15261) ACPI CA Core Subsystem:
1527
1528Implemented ACPI 2.0-defined support for writes to fields with
1529a Buffer, String, or Integer source operand that is smaller
1530than the target field. In these cases, the source operand is
1531zero-extended to fill the target field.
1532
1533Fixed a problem where a Field starting bit offset (within the
1534parent operation region) was calculated incorrectly if the
1535alignment of the field differed from the access width.  This
1536affected CreateWordField, CreateDwordField, CreateQwordField,
1537and possibly other fields that use the "AccessAny" keyword.
1538
1539Fixed a problem introduced in the 11_02_01 release where
1540indirect stores through method arguments did not operate
1541correctly.
1542
15432) Linux:
1544
1545Implemented boot-time ACPI table parsing support
1546(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This
1547code facilitates the use of ACPI tables (e.g. MADT, SRAT)
1548rather than legacy BIOS interfaces (e.g. MPS) for the
1549configuration of system processors, memory, and interrupts
1550during setup_arch().  Note that this patch does not include
1551the required architecture-specific changes required to apply
1552this information -- subsequent patches will be posted for both
1553IA32 and IA64 to achieve this.
1554
1555Added low-level sleep support for IA32 platforms, courtesy of
1556Pat Mochel. This allows IA32 systems to transition to/from
1557various sleeping states (e.g. S1, S3), although the lack of a
1558centralized driver model and power-manageable drivers will
1559prevent its (successful) use on most systems.
1560
1561Revamped the ACPI 'menuconfig' layout: created new "ACPI
1562Support" submenu, unified IA32 and IA64 options, added new
1563"Boot using ACPI tables" option, etc.
1564
1565Increased the default timeout for the EC driver from 1ms to
156610ms (1000 cycles of 10us) to try to address AE_TIME errors
1567during EC transactions.
1568
1569 ----------------------------------------
1570Summary of changes for this label: 11_02_01
1571
15721) ACPI CA Core Subsystem:
1573
1574ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
1575(QWordAcc keyword). All ACPI 2.0 64-bit support is now
1576implemented.
1577
1578OSL Interfaces: Several of the OSL (AcpiOs*) interfaces
1579required changes to support ACPI 2.0 Qword field access.
1580Read/Write PciConfiguration(), Read/Write Memory(), and
1581Read/Write Port() now accept an ACPI_INTEGER (64 bits) as the
1582value parameter.  Also, the value parameter for the address
1583space handler interface is now an ACPI_INTEGER.  OSL
1584implementations of these interfaces must now handle the case
1585where the Width parameter is 64.
1586
1587Index Fields: Fixed a problem where unaligned bit assembly and
1588disassembly for IndexFields was not supported correctly.
1589
1590Index and Bank Fields:  Nested Index and Bank Fields are now
1591supported. During field access, a check is performed to ensure
1592that the value written to an Index or Bank register is not out
1593of the range of the register.  The Index (or Bank) register is
1594written before each access to the field data. Future support
1595will include allowing individual IndexFields to be wider than
1596the DataRegister width.
1597
1598Fields: Fixed a problem where the AML interpreter was
1599incorrectly attempting to write beyond the end of a
1600Field/OpRegion.  This was a boundary case that occurred when a
1601DWORD field was written to a BYTE access OpRegion, forcing
1602multiple writes and causing the interpreter to write one datum
1603too many.
1604
1605Fields: Fixed a problem with Field/OpRegion access where the
1606starting bit address of a field was incorrectly calculated if
1607the current access type was wider than a byte (WordAcc,
1608DwordAcc, or QwordAcc).
1609
1610Fields: Fixed a problem where forward references to individual
1611FieldUnits (individual Field names within a Field definition)
1612were not resolved during the AML table load.
1613
1614Fields: Fixed a problem where forward references from a Field
1615definition to the parent Operation Region definition were not
1616resolved during the AML table load.
1617
1618Fields: Duplicate FieldUnit names within a scope are now
1619detected during AML table load.
1620
1621Acpi Interfaces: Fixed a problem where the AcpiGetName()
1622interface returned an incorrect name for the root node.
1623
1624Code and Data Size: Code and Data optimizations have permitted
1625new feature development with an actual reduction in the
1626library size.  Current core subsystem library sizes are shown
1627below.  These are the code and data sizes for the acpica.lib
1628produced by the Microsoft Visual C++ 6.0 compiler, and these
1629values do not include any ACPI driver or OSPM code.  The debug
1630version of the code includes the debug output trace mechanism
1631and has a larger code and data size.  Note that these values
1632will vary depending on the efficiency of the compiler and the
1633compiler options used during generation.
1634
1635  Previous Release (10_18_01):
1636     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K
1637Total
1638     Debug Version:     136.7K Code,  57.4K Data,  194.2K
1639Total
1640
1641  Current Release:
1642     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K
1643Total
1644     Debug Version:     134.5K Code,  55.4K Data,  189.9K
1645Total
1646
1647 2) Linux:
1648
1649Improved /proc processor output (Pavel Machek) Re-added
1650MODULE_LICENSE("GPL") to all modules.
1651
1652 3) ASL Compiler version X2030:
1653
1654Duplicate FieldUnit names within a scope are now detected and
1655flagged as errors.
1656
1657 4) Documentation:
1658
1659Programmer Reference updated to reflect OSL and address space
1660handler interface changes described above.
1661
1662----------------------------------------
1663Summary of changes for this label: 10_18_01
1664
1665ACPI CA Core Subsystem:
1666
1667Fixed a problem with the internal object reference count
1668mechanism that occasionally caused premature object deletion.
1669This resolves all of the outstanding problem reports where an
1670object is deleted in the middle of an interpreter evaluation.
1671Although this problem only showed up in rather obscure cases,
1672the solution to the problem involved an adjustment of all
1673reference counts involving objects attached to namespace
1674nodes.
1675
1676Fixed a problem with Field support in the interpreter where
1677writing to an aligned field whose length is an exact multiple
1678(2 or greater) of the field access granularity would cause an
1679attempt to write beyond the end of the field.
1680
1681The top level AML opcode execution functions within the
1682interpreter have been renamed with a more meaningful and
1683consistent naming convention.  The modules exmonad.c and
1684exdyadic.c were eliminated.  New modules are exoparg1.c,
1685exoparg2.c, exoparg3.c, and exoparg6.c.
1686
1687Support for the ACPI 2.0 "Mid" ASL operator has been
1688implemented.
1689
1690Fixed a problem where the AML debugger was causing some
1691internal objects to not be deleted during subsystem
1692termination.
1693
1694Fixed a problem with the external AcpiEvaluateObject interface
1695where the subsystem would fault if the named object to be
1696evaluated refered to a constant such as Zero, Ones, etc.
1697
1698Fixed a problem with IndexFields and BankFields where the
1699subsystem would fault if the index, data, or bank registers
1700were not defined in the same scope as the field itself.
1701
1702Added printf format string checking for compilers that support
1703this feature.  Corrected more than 50 instances of issues with
1704format specifiers within invocations of ACPI_DEBUG_PRINT
1705throughout the core subsystem code.
1706
1707The ASL "Revision" operator now returns the ACPI support level
1708implemented in the core - the value "2" since the ACPI 2.0
1709support is more than 50% implemented.
1710
1711Enhanced the output of the AML debugger "dump namespace"
1712command to output in a more human-readable form.
1713
1714Current core subsystem library code sizes are shown below.
1715These are the code and data sizes for the acpica.lib produced
1716by the Microsoft Visual C++ 6.0 compiler, and these values do
1717not include any ACPI driver or OSPM code.  The debug version
1718of the code includes the full debug trace mechanism -- leading
1719to a much larger code and data size.  Note that these values
1720will vary depending on the efficiency of the compiler and the
1721compiler options used during generation.
1722
1723     Previous Label (09_20_01):
1724     Non-Debug Version:    65K Code,     5K Data,     70K
1725Total
1726     Debug Version:       138K Code,    58K Data,    196K
1727Total
1728
1729     This Label:
1730     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K
1731Total
1732     Debug Version:     136.7K Code,  57.4K Data,  194.2K
1733Total
1734
1735Linux:
1736
1737Implemented a "Bad BIOS Blacklist" to track machines that have
1738known ASL/AML problems.
1739
1740Enhanced the /proc interface for the thermal zone driver and
1741added support for _HOT (the critical suspend trip point).  The
1742'info' file now includes threshold/policy information, and
1743allows setting of _SCP (cooling preference) and _TZP (polling
1744frequency) values to the 'info' file. Examples: "echo tzp=5 >
1745info" sets the polling frequency to 5 seconds, and "echo scp=1
1746> info" sets the cooling preference to the passive/quiet mode
1747(if supported by the ASL).
1748
1749Implemented a workaround for a gcc bug that resuted in an OOPs
1750when loading the control method battery driver.
1751
1752 ----------------------------------------
1753Summary of changes for this label: 09_20_01
1754
1755 ACPI CA Core Subsystem:
1756
1757The AcpiEnableEvent and AcpiDisableEvent interfaces have been
1758modified to allow individual GPE levels to be flagged as wake-
1759enabled (i.e., these GPEs are to remain enabled when the
1760platform sleeps.)
1761
1762The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
1763support wake-enabled GPEs.  This means that upon entering the
1764sleep state, all GPEs that are not wake-enabled are disabled.
1765When leaving the sleep state, these GPEs are reenabled.
1766
1767A local double-precision divide/modulo module has been added
1768to enhance portability to OS kernels where a 64-bit math
1769library is not available.  The new module is "utmath.c".
1770
1771Several optimizations have been made to reduce the use of CPU
1772stack.  Originally over 2K, the maximum stack usage is now
1773below 2K at 1860  bytes (1.82k)
1774
1775Fixed a problem with the AcpiGetFirmwareTable interface where
1776the root table pointer was not mapped into a logical address
1777properly.
1778
1779Fixed a problem where a NULL pointer was being dereferenced in
1780the interpreter code for the ASL Notify operator.
1781
1782Fixed a problem where the use of the ASL Revision operator
1783returned an error. This operator now returns the current
1784version of the ACPI CA core subsystem.
1785
1786Fixed a problem where objects passed as control method
1787parameters to AcpiEvaluateObject were always deleted at method
1788termination.  However, these objects may end up being stored
1789into the namespace by the called method.  The object reference
1790count mechanism was applied to these objects instead of a
1791force delete.
1792
1793Fixed a problem where static strings or buffers (contained in
1794the AML code) that are declared as package elements within the
1795ASL code could cause a fault because the interpreter would
1796attempt to delete them.  These objects are now marked with the
1797"static object" flag to prevent any attempt to delete them.
1798
1799Implemented an interpreter optimization to use operands
1800directly from the state object instead of extracting the
1801operands to local variables.  This reduces stack use and code
1802size, and improves performance.
1803
1804The module exxface.c was eliminated as it was an unnecessary
1805extra layer of code.
1806
1807Current core subsystem library code sizes are shown below.
1808These are the code and data sizes for the acpica.lib produced
1809by the Microsoft Visual C++ 6.0 compiler, and these values do
1810not include any ACPI driver or OSPM code.  The debug version
1811of the code includes the full debug trace mechanism -- leading
1812to a much larger code and data size.  Note that these values
1813will vary depending on the efficiency of the compiler and the
1814compiler options used during generation.
1815
1816  Non-Debug Version:  65K Code,   5K Data,   70K Total
1817(Previously 69K)   Debug Version:     138K Code,  58K Data,
1818196K Total  (Previously 195K)
1819
1820Linux:
1821
1822Support for ACPI 2.0 64-bit integers has been added.   All
1823ACPI Integer objects are now 64 bits wide
1824
1825All Acpi data types and structures are now in lower case.
1826Only Acpi macros are upper case for differentiation.
1827
1828 Documentation:
1829
1830Changes to the external interfaces as described above.
1831
1832 ----------------------------------------
1833Summary of changes for this label: 08_31_01
1834
1835 ACPI CA Core Subsystem:
1836
1837A bug with interpreter implementation of the ASL Divide
1838operator was found and fixed.  The implicit function return
1839value (not the explicit store operands) was returning the
1840remainder instead of the quotient.  This was a longstanding
1841bug and it fixes several known outstanding issues on various
1842platforms.
1843
1844The ACPI_DEBUG_PRINT and function trace entry/exit macros have
1845been further optimized for size.  There are 700 invocations of
1846the DEBUG_PRINT macro alone, so each optimization reduces the
1847size of the debug version of the subsystem significantly.
1848
1849A stack trace mechanism has been implemented.  The maximum
1850stack usage is about 2K on 32-bit platforms.  The debugger
1851command "stat stack" will display the current maximum stack
1852usage.
1853
1854All public symbols and global variables within the subsystem
1855are now prefixed with the string "Acpi".  This keeps all of
1856the symbols grouped together in a kernel map, and avoids
1857conflicts with other kernel subsystems.
1858
1859Most of the internal fixed lookup tables have been moved into
1860the code segment via the const operator.
1861
1862Several enhancements have been made to the interpreter to both
1863reduce the code size and improve performance.
1864
1865Current core subsystem library code sizes are shown below.
1866These are the code and data sizes for the acpica.lib produced
1867by the Microsoft Visual C++ 6.0 compiler, and these values do
1868not include any ACPI driver or OSPM code.  The debug version
1869of the code includes the full debug trace mechanism which
1870contains over 700 invocations of the DEBUG_PRINT macro, 500
1871function entry macro invocations, and over 900 function exit
1872macro invocations -- leading to a much larger code and data
1873size.  Note that these values will vary depending on the
1874efficiency of the compiler and the compiler options used
1875during generation.
1876
1877        Non-Debug Version:  64K Code,   5K Data,   69K Total
1878Debug Version:     137K Code,  58K Data,  195K Total
1879
1880 Linux:
1881
1882Implemented wbinvd() macro, pending a kernel-wide definition.
1883
1884Fixed /proc/acpi/event to handle poll() and short reads.
1885
1886 ASL Compiler, version X2026:
1887
1888Fixed a problem introduced in the previous label where the AML
1889code emitted for package objects produced packages with zero
1890length.
1891
1892 ----------------------------------------
1893Summary of changes for this label: 08_16_01
1894
1895ACPI CA Core Subsystem:
1896
1897The following ACPI 2.0 ASL operators have been implemented in
1898the AML interpreter (These are already supported by the Intel
1899ASL compiler):  ToDecimalString, ToHexString, ToString,
1900ToInteger, and ToBuffer.  Support for 64-bit AML constants is
1901implemented in the AML parser, debugger, and disassembler.
1902
1903The internal memory tracking mechanism (leak detection code)
1904has been upgraded to reduce the memory overhead (a separate
1905tracking block is no longer allocated for each memory
1906allocation), and now supports all of the internal object
1907caches.
1908
1909The data structures and code for the internal object caches
1910have been coelesced and optimized so that there is a single
1911cache and memory list data structure and a single group of
1912functions that implement generic cache management.  This has
1913reduced the code size in both the debug and release versions
1914of the subsystem.
1915
1916The DEBUG_PRINT macro(s) have been optimized for size and
1917replaced by ACPI_DEBUG_PRINT.  The syntax for this macro is
1918slightly different, because it generates a single call to an
1919internal function.  This results in a savings of about 90
1920bytes per invocation, resulting in an overall code and data
1921savings of about 16% in the debug version of the subsystem.
1922
1923 Linux:
1924
1925Fixed C3 disk corruption problems and re-enabled C3 on
1926supporting machines.
1927
1928Integrated low-level sleep code by Patrick Mochel.
1929
1930Further tweaked source code Linuxization.
1931
1932Other minor fixes.
1933
1934 ASL Compiler:
1935
1936Support for ACPI 2.0 variable length packages is
1937fixed/completed.
1938
1939Fixed a problem where the optional length parameter for the
1940ACPI 2.0 ToString operator.
1941
1942Fixed multiple extraneous error messages when a syntax error
1943is detected within the declaration line of a control method.
1944
1945 ----------------------------------------
1946Summary of changes for this label: 07_17_01
1947
1948ACPI CA Core Subsystem:
1949
1950Added a new interface named AcpiGetFirmwareTable to obtain any
1951ACPI table via the ACPI signature.  The interface can be
1952called at any time during kernel initialization, even before
1953the kernel virtual memory manager is initialized and paging is
1954enabled.  This allows kernel subsystems to obtain ACPI tables
1955very early, even before the ACPI CA subsystem is initialized.
1956
1957Fixed a problem where Fields defined with the AnyAcc attribute
1958could be resolved to the incorrect address under the following
1959conditions: 1) the field width is larger than 8 bits and 2)
1960the parent operation region is not defined on a DWORD
1961boundary.
1962
1963Fixed a problem where the interpreter is not being locked
1964during namespace initialization (during execution of the _INI
1965control methods), causing an error when an attempt is made to
1966release it later.
1967
1968ACPI 2.0 support in the AML Interpreter has begun and will be
1969ongoing throughout the rest of this year.  In this label, The
1970Mod operator is implemented.
1971
1972Added a new data type to contain full PCI addresses named
1973ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
1974Device, and Function values.
1975
1976 Linux:
1977
1978Enhanced the Linux version of the source code to change most
1979capitalized ACPI type names to lowercase. For example, all
1980instances of ACPI_STATUS are changed to acpi_status.  This
1981will result in a large diff, but the change is strictly
1982cosmetic and aligns the CA code closer to the Linux coding
1983standard.
1984
1985OSL Interfaces:
1986
1987The interfaces to the PCI configuration space have been
1988changed to add the PCI Segment number and to split the single
198932-bit combined DeviceFunction field into two 16-bit fields.
1990This was accomplished by moving the four values that define an
1991address in PCI configuration space (segment, bus, device, and
1992function) to the new ACPI_PCI_ID structure.
1993
1994The changes to the PCI configuration space interfaces led to a
1995reexamination of the complete set of address space access
1996interfaces for PCI, I/O, and Memory.  The previously existing
199718 interfaces have proven difficult to maintain (any small
1998change must be propagated across at least 6 interfaces) and do
1999not easily allow for future expansion to 64 bits if necessary.
2000Also, on some systems, it would not be appropriate to
2001demultiplex the access width (8, 16, 32,or 64) before calling
2002the OSL if the corresponding native OS interfaces contain a
2003similar access width parameter.  For these reasons, the 18
2004address space interfaces have been replaced by these 6 new
2005ones:
2006
2007AcpiOsReadPciConfiguration
2008AcpiOsWritePciConfiguration
2009AcpiOsReadMemory
2010AcpiOsWriteMemory
2011AcpiOsReadPort
2012AcpiOsWritePort
2013
2014Added a new interface named AcpiOsGetRootPointer to allow the
2015OSL to perform the platform and/or OS-specific actions
2016necessary to obtain the ACPI RSDP table pointer.  On IA-32
2017platforms, this interface will simply call down to the CA core
2018to perform the low-memory search for the table.  On IA-64, the
2019RSDP is obtained from EFI.  Migrating this interface to the
2020OSL allows the CA core to remain OS and platform independent.
2021
2022Added a new interface named AcpiOsSignal to provide a generic
2023"function code and pointer" interface for various
2024miscellaneous signals and notifications that must be made to
2025the host OS.   The first such signals are intended to support
2026the ASL Fatal and Breakpoint operators.  In the latter case,
2027the AcpiOsBreakpoint interface has been obsoleted.
2028
2029The definition of the AcpiFormatException interface has been
2030changed to simplify its use.  The caller no longer must supply
2031a buffer to the call; A pointer to a const string is now
2032returned directly.  This allows the call to be easily used in
2033printf statements, etc. since the caller does not have to
2034manage a local buffer.
2035
2036 ASL Compiler, Version X2025:
2037
2038The ACPI 2.0 Switch/Case/Default operators have been
2039implemented and are fully functional.  They will work with all
2040ACPI 1.0 interpreters, since the operators are simply
2041translated to If/Else pairs.
2042
2043The ACPI 2.0 ElseIf operator is implemented and will also work
2044with 1.0 interpreters, for the same reason.
2045
2046Implemented support for ACPI 2.0 variable-length packages.
2047These packages have a separate opcode, and their size is
2048determined by the interpreter at run-time.
2049
2050Documentation The ACPI CA Programmer Reference has been
2051updated to reflect the new interfaces and changes to existing
2052interfaces.
2053
2054 ------------------------------------------
2055Summary of changes for this label: 06_15_01
2056
2057 ACPI CA Core Subsystem:
2058
2059Fixed a problem where a DWORD-accessed field within a Buffer
2060object would get its byte address inadvertently rounded down
2061to the nearest DWORD.  Buffers are always Byte-accessible.
2062
2063 ASL Compiler, version X2024:
2064
2065Fixed a problem where the Switch() operator would either fault
2066or hang the compiler.  Note however, that the AML code for
2067this ACPI 2.0 operator is not yet implemented.
2068
2069Compiler uses the new AcpiOsGetTimer interface to obtain
2070compile timings.
2071
2072Implementation of the CreateField operator automatically
2073converts a reference to a named field within a resource
2074descriptor from a byte offset to a bit offset if required.
2075
2076Added some missing named fields from the resource descriptor
2077support. These are the names that are automatically created by
2078the compiler to reference fields within a descriptor.  They
2079are only valid at compile time and are not passed through to
2080the AML interpreter.
2081
2082Resource descriptor named fields are now typed as Integers and
2083subject to compile-time typechecking when used in expressions.
2084
2085 ------------------------------------------
2086Summary of changes for this label: 05_18_01
2087
2088 ACPI CA Core Subsystem:
2089
2090Fixed a couple of problems in the Field support code where
2091bits from adjacent fields could be returned along with the
2092proper field bits. Restructured the field support code to
2093improve performance, readability and maintainability.
2094
2095New DEBUG_PRINTP macro automatically inserts the procedure
2096name into the output, saving hundreds of copies of procedure
2097name strings within the source, shrinking the memory footprint
2098of the debug version of the core subsystem.
2099
2100 Source Code Structure:
2101
2102The source code directory tree was restructured to reflect the
2103current organization of the component architecture.  Some
2104files and directories have been moved and/or renamed.
2105
2106 Linux:
2107
2108Fixed leaking kacpidpc processes.
2109
2110Fixed queueing event data even when /proc/acpi/event is not
2111opened.
2112
2113 ASL Compiler, version X2020:
2114
2115Memory allocation performance enhancement - over 24X compile
2116time improvement on large ASL files.  Parse nodes and
2117namestring buffers are now allocated from a large internal
2118compiler buffer.
2119
2120The temporary .SRC file is deleted unless the "-s" option is
2121specified
2122
2123The "-d" debug output option now sends all output to the .DBG
2124file instead of the console.
2125
2126"External" second parameter is now optional
2127
2128"ElseIf" syntax now properly allows the predicate
2129
2130Last operand to "Load" now recognized as a Target operand
2131
2132Debug object can now be used anywhere as a normal object.
2133
2134ResourceTemplate now returns an object of type BUFFER
2135
2136EISAID now returns an object of type INTEGER
2137
2138"Index" now works with a STRING operand
2139
2140"LoadTable" now accepts optional parameters
2141
2142"ToString" length parameter is now optional
2143
2144"Interrupt (ResourceType," parse error fixed.
2145
2146"Register" with a user-defined region space parse error fixed
2147
2148Escaped backslash at the end of a string ("\\") scan/parse
2149error fixed
2150
2151"Revision" is now an object of type INTEGER.
2152
2153
2154
2155------------------------------------------
2156Summary of changes for this label: 05_02_01
2157
2158Linux:
2159
2160/proc/acpi/event now blocks properly.
2161
2162Removed /proc/sys/acpi. You can still dump your DSDT from
2163/proc/acpi/dsdt.
2164
2165 ACPI CA Core Subsystem:
2166
2167Fixed a problem introduced in the previous label where some of
2168the "small" resource descriptor types were not recognized.
2169
2170Improved error messages for the case where an ASL Field is
2171outside the range of the parent operation region.
2172
2173 ASL Compiler, version X2018:
2174
2175Added error detection for ASL Fields that extend beyond the
2176length of the parent operation region (only if the length of
2177the region is known at compile time.)  This includes fields
2178that have a minimum access width that is smaller than the
2179parent region, and individual field units that are partially
2180or entirely beyond the extent of the parent.
2181
2182
2183
2184------------------------------------------
2185Summary of changes for this label: 04_27_01
2186
2187 ACPI CA Core Subsystem:
2188
2189Fixed a problem where the namespace mutex could be released at
2190the wrong time during execution of
2191AcpiRemoveAddressSpaceHandler.
2192
2193Added optional thread ID output for debug traces, to simplify
2194debugging of multiple threads.  Added context switch
2195notification when the debug code realizes that a different
2196thread is now executing ACPI code.
2197
2198Some additional external data types have been prefixed with
2199the string "ACPI_" for consistency.  This may effect existing
2200code.  The data types affected are the external callback
2201typedefs - e.g., WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
2202
2203 Linux:
2204
2205Fixed an issue with the OSL semaphore implementation where a
2206thread was waking up with an error from receiving a SIGCHLD
2207signal.
2208
2209Linux version of ACPI CA now uses the system C library for
2210string manipulation routines instead of a local
2211implementation.
2212
2213Cleaned up comments and removed TBDs.
2214
2215 ASL Compiler, version X2017:
2216
2217Enhanced error detection and reporting for all file I/O
2218operations.
2219
2220 Documentation:
2221
2222Programmer Reference updated to version 1.06.
2223
2224
2225
2226------------------------------------------
2227Summary of changes for this label: 04_13_01
2228
2229 ACPI CA Core Subsystem:
2230
2231Restructured support for BufferFields and RegionFields.
2232BankFields support is now fully operational.  All known 32-bit
2233limitations on field sizes have been removed.  Both
2234BufferFields and (Operation) RegionFields are now supported by
2235the same field management code.
2236
2237Resource support now supports QWORD address and IO resources.
2238The 16/32/64 bit address structures and the Extended IRQ
2239structure have been changed to properly handle Source Resource
2240strings.
2241
2242A ThreadId of -1 is now used to indicate a "mutex not
2243acquired" condition internally and must never be returned by
2244AcpiOsThreadId. This reserved value was changed from 0 since
2245Unix systems allow a thread ID of 0.
2246
2247Linux:
2248
2249Driver code reorganized to enhance portability
2250
2251Added a kernel configuration option to control ACPI_DEBUG
2252
2253Fixed the EC driver to honor _GLK.
2254
2255ASL Compiler, version X2016:
2256
2257Fixed support for the "FixedHw" keyword.  Previously, the
2258FixedHw address space was set to 0, not 0x7f as it should be.
2259
2260 ------------------------------------------
2261Summary of changes for this label: 03_13_01
2262
2263 ACPI CA Core Subsystem:
2264
2265During ACPI initialization, the _SB_._INI method is now run if
2266present.
2267
2268Notify handler fix - notifies are deferred until the parent
2269method completes execution.  This fixes the "mutex already
2270acquired" issue seen occasionally.
2271
2272Part of the "implicit conversion" rules in ACPI 2.0 have been
2273found to cause compatibility problems with existing ASL/AML.
2274The convert "result-to-target-type" implementation has been
2275removed for stores to method Args and Locals.  Source operand
2276conversion is still fully implemented.  Possible changes to
2277ACPI 2.0 specification pending.
2278
2279Fix to AcpiRsCalculatePciRoutingTableLength to return correct
2280length.
2281
2282Fix for compiler warnings for 64-bit compiles.
2283
2284 Linux:
2285
2286/proc output aligned for easier parsing.
2287
2288Release-version compile problem fixed.
2289
2290New kernel configuration options documented in Configure.help.
2291
2292IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
2293context" message.
2294
2295 OSPM:
2296
2297Power resource driver integrated with bus manager.
2298
2299Fixed kernel fault during active cooling for thermal zones.
2300
2301Source Code:
2302
2303The source code tree has been restructured.
2304
2305
2306
2307------------------------------------------
2308Summary of changes for this label: 03_02_01
2309
2310 Linux OS Services Layer (OSL):
2311
2312Major revision of all Linux-specific code.
2313
2314Modularized all ACPI-specific drivers.
2315
2316Added new thermal zone and power resource drivers.
2317
2318Revamped /proc interface (new functionality is under
2319/proc/acpi).
2320
2321New kernel configuration options.
2322
2323 Linux known issues:
2324
2325New kernel configuration options not documented in
2326Configure.help yet.
2327
2328Module dependencies not currently implemented. If used, they
2329should be loaded in this order: busmgr, power, ec, system,
2330processor, battery, ac_adapter, button, thermal.
2331
2332Modules will not load if CONFIG_MODVERSION is set.
2333
2334IBM 600E - entering S5 may reboot instead of shutting down.
2335
2336IBM 600E - Sleep button may generate "Invalid <NULL> context"
2337message.
2338
2339Some systems may fail with "execution mutex already acquired"
2340message.
2341
2342 ACPI CA Core Subsystem:
2343
2344Added a new OSL Interface, AcpiOsGetThreadId.  This was
2345required for the  deadlock detection code. Defined to return a
2346non-zero, 32-bit thread ID for the currently executing thread.
2347May be a non-zero constant integer on single-thread systems.
2348
2349Implemented deadlock detection for internal subsystem mutexes.
2350We may add conditional compilation for this code (debug only)
2351later.
2352
2353ASL/AML Mutex object semantics are now fully supported.  This
2354includes multiple acquires/releases by owner and support for
2355the Mutex SyncLevel parameter.
2356
2357A new "Force Release" mechanism automatically frees all ASL
2358Mutexes that have been acquired but not released when a thread
2359exits the interpreter.  This forces conformance to the ACPI
2360spec ("All mutexes must be released when an invocation exits")
2361and prevents deadlocked ASL threads.  This mechanism can be
2362expanded (later) to monitor other resource acquisitions if OEM
2363ASL code continues to misbehave (which it will).
2364
2365Several new ACPI exception codes have been added for the Mutex
2366support.
2367
2368Recursive method calls are now allowed and supported (the ACPI
2369spec does in fact allow recursive method calls.)  The number
2370of recursive calls is subject to the restrictions imposed by
2371the SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
2372parameter.
2373
2374Implemented support for the SyncLevel parameter for control
2375methods (ACPI 2.0 feature)
2376
2377Fixed a deadlock problem when multiple threads attempted to
2378use the interpreter.
2379
2380Fixed a problem where the string length of a String package
2381element was not always set in a package returned from
2382AcpiEvaluateObject.
2383
2384Fixed a problem where the length of a String package element
2385was not always included in the length of the overall package
2386returned from AcpiEvaluateObject.
2387
2388Added external interfaces (Acpi*) to the ACPI debug memory
2389manager.  This manager keeps a list of all outstanding
2390allocations, and can therefore detect memory leaks and
2391attempts to free memory blocks more than once. Useful for code
2392such as the power manager, etc.  May not be appropriate for
2393device drivers.  Performance with the debug code enabled is
2394slow.
2395
2396The ACPI Global Lock is now an optional hardware element.
2397
2398 ASL Compiler Version X2015:
2399
2400Integrated changes to allow the compiler to be generated on
2401multiple platforms.
2402
2403Linux makefile added to generate the compiler on Linux
2404
2405 Source Code:
2406
2407All platform-specific headers have been moved to their own
2408subdirectory, Include/Platform.
2409
2410New source file added, Interpreter/ammutex.c
2411
2412New header file, Include/acstruct.h
2413
2414 Documentation:
2415
2416The programmer reference has been updated for the following
2417new interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate
2418AcpiFree
2419
2420 ------------------------------------------
2421Summary of changes for this label: 02_08_01
2422
2423Core ACPI CA Subsystem: Fixed a problem where an error was
2424incorrectly returned if the return resource buffer was larger
2425than the actual data (in the resource interfaces).
2426
2427References to named objects within packages are resolved to
2428the full pathname string before packages are returned directly
2429(via the AcpiEvaluateObject interface) or indirectly via the
2430resource interfaces.
2431
2432Linux OS Services Layer (OSL):
2433
2434Improved /proc battery interface.
2435
2436
2437Added C-state debugging output and other miscellaneous fixes.
2438
2439ASL Compiler Version X2014:
2440
2441All defined method arguments can now be used as local
2442variables, including the ones that are not actually passed in
2443as parameters.  The compiler tracks initialization of the
2444arguments and issues an exception if they are used without
2445prior assignment (just like locals).
2446
2447The -o option now specifies a filename prefix that is used for
2448all output files, including the AML output file.  Otherwise,
2449the default behavior is as follows:  1) the AML goes to the
2450file specified in the DSDT.  2) all other output files use the
2451input source filename as the base.
2452
2453 ------------------------------------------
2454Summary of changes for this label: 01_25_01
2455
2456Core ACPI CA Subsystem: Restructured the implementation of
2457object store support within the  interpreter.  This includes
2458support for the Store operator as well  as any ASL operators
2459that include a target operand.
2460
2461Partially implemented support for Implicit Result-to-Target
2462conversion. This is when a result object is converted on the
2463fly to the type of  an existing target object.  Completion of
2464this support is pending  further analysis of the ACPI
2465specification concerning this matter.
2466
2467CPU-specific code has been removed from the subsystem
2468(hardware directory).
2469
2470New Power Management Timer functions added
2471
2472Linux OS Services Layer (OSL): Moved system state transition
2473code to the core, fixed it, and modified  Linux OSL
2474accordingly.
2475
2476Fixed C2 and C3 latency calculations.
2477
2478
2479We no longer use the compilation date for the version message
2480on  initialization, but retrieve the version from
2481AcpiGetSystemInfo().
2482
2483Incorporated for fix Sony VAIO machines.
2484
2485Documentation:  The Programmer Reference has been updated and
2486reformatted.
2487
2488
2489ASL Compiler:  Version X2013: Fixed a problem where the line
2490numbering and error reporting could get out  of sync in the
2491presence of multiple include files.
2492
2493 ------------------------------------------
2494Summary of changes for this label: 01_15_01
2495
2496Core ACPI CA Subsystem:
2497
2498Implemented support for type conversions in the execution of
2499the ASL  Concatenate operator (The second operand is converted
2500to match the type  of the first operand before concatenation.)
2501
2502Support for implicit source operand conversion is partially
2503implemented.   The ASL source operand types Integer, Buffer,
2504and String are freely  interchangeable for most ASL operators
2505and are converted by the interpreter  on the fly as required.
2506Implicit Target operand conversion (where the  result is
2507converted to the target type before storing) is not yet
2508implemented.
2509
2510Support for 32-bit and 64-bit BCD integers is implemented.
2511
2512Problem fixed where a field read on an aligned field could
2513cause a read  past the end of the field.
2514
2515New exception, AE_AML_NO_RETURN_VALUE, is returned when a
2516method does not return a value, but the caller expects one.
2517(The ASL compiler flags this as a warning.)
2518
2519ASL Compiler:
2520
2521Version X2011:
25221. Static typechecking of all operands is implemented. This
2523prevents the use of invalid objects (such as using a Package
2524where an Integer is required) at compile time instead of at
2525interpreter run-time.
25262. The ASL source line is printed with ALL errors and
2527warnings.
25283. Bug fix for source EOF without final linefeed.
25294. Debug option is split into a parse trace and a namespace
2530trace.
25315. Namespace output option (-n) includes initial values for
2532integers and strings.
25336. Parse-only option added for quick syntax checking.
25347. Compiler checks for duplicate ACPI name declarations
2535
2536Version X2012:
25371. Relaxed typechecking to allow interchangeability between
2538strings, integers, and buffers.  These types are now converted
2539by the interpreter at runtime.
25402. Compiler reports time taken by each internal subsystem in
2541the debug         output file.
2542
2543
2544 ------------------------------------------
2545Summary of changes for this label: 12_14_00
2546
2547ASL Compiler:
2548
2549This is the first official release of the compiler. Since the
2550compiler requires elements of the Core Subsystem, this label
2551synchronizes everything.
2552
2553------------------------------------------
2554Summary of changes for this label: 12_08_00
2555
2556Fixed a problem where named references within the ASL
2557definition of both OperationRegions and CreateXXXFields did
2558not work properly.  The symptom was an AE_AML_OPERAND_TYPE
2559during initialization of the region/field. This is similar
2560(but not related internally) to the problem that was fixed in
2561the last label.
2562
2563Implemented both 32-bit and 64-bit support for the BCD ASL
2564functions ToBCD and FromBCD.
2565
2566Updated all legal headers to include "2000" in the copyright
2567years.
2568
2569 ------------------------------------------
2570Summary of changes for this label: 12_01_00
2571
2572Fixed a problem where method invocations within the ASL
2573definition of both OperationRegions and CreateXXXFields did
2574not work properly.  The symptom was an AE_AML_OPERAND_TYPE
2575during initialization of the region/field:
2576
2577  nsinit-0209: AE_AML_OPERAND_TYPE while getting region
2578arguments [DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad
2579operand(s) (0x3005)
2580
2581Fixed a problem where operators with more than one nested
2582subexpression would fail.  The symptoms were varied, by mostly
2583AE_AML_OPERAND_TYPE errors.  This was actually a rather
2584serious problem that has gone unnoticed until now.
2585
2586  Subtract (Add (1,2), Multiply (3,4))
2587
2588Fixed a problem where AcpiGetHandle didn't quite get fixed in
2589the previous build (The prefix part of a relative path was
2590handled incorrectly).
2591
2592Fixed a problem where Operation Region initialization failed
2593if the operation region name was a "namepath" instead of a
2594simple "nameseg". Symptom was an AE_NO_OPERAND error.
2595
2596Fixed a problem where an assignment to a local variable via
2597the indirect RefOf mechanism only worked for the first such
2598assignment.  Subsequent assignments were ignored.
2599
2600 ------------------------------------------
2601Summary of changes for this label: 11_15_00
2602
2603ACPI 2.0 table support with backwards support for ACPI 1.0 and
2604the 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS
2605tables, the AML  interpreter does NOT have support for the new
26062.0 ASL grammar terms at this time.
2607
2608All ACPI hardware access is via the GAS structures in the ACPI
26092.0 FADT.
2610
2611All physical memory addresses across all platforms are now 64
2612bits wide. Logical address width remains dependent on the
2613platform (i.e., "void *").
2614
2615AcpiOsMapMemory interface changed to a 64-bit physical
2616address.
2617
2618The AML interpreter integer size is now 64 bits, as per the
2619ACPI 2.0 specification.
2620
2621For backwards compatibility with ACPI 1.0, ACPI tables with a
2622revision number less than 2 use 32-bit integers only.
2623
2624Fixed a problem where the evaluation of OpRegion operands did
2625not always resolve them to numbers properly.
2626
2627------------------------------------------
2628Summary of changes for this label: 10_20_00
2629
2630Fix for CBN_._STA issue.  This fix will allow correct access
2631to CBN_ OpRegions when the _STA returns 0x8.
2632
2633Support to convert ACPI constants (Ones, Zeros, One) to actual
2634values before a package object is returned
2635
2636Fix for method call as predicate to if/while construct causing
2637incorrect if/while behavior
2638
2639Fix for Else block package lengths sometimes calculated wrong
2640(if block > 63 bytes)
2641
2642Fix for Processor object length field, was always zero
2643
2644Table load abort if FACP sanity check fails
2645
2646Fix for problem with Scope(name) if name already exists
2647
2648Warning emitted if a named object referenced cannot be found
2649(resolved) during method execution.
2650
2651
2652
2653
2654
2655------------------------------------------
2656Summary of changes for this label: 9_29_00
2657
2658New table initialization interfaces: AcpiInitializeSubsystem
2659no longer has any parameters AcpiFindRootPointer - Find the
2660RSDP (if necessary) AcpiLoadTables (RSDP) - load all tables
2661found at RSDP->RSDT Obsolete Interfaces AcpiLoadFirmwareTables
2662- replaced by AcpiLoadTables
2663
2664Note: These interface changes require changes to all existing
2665OSDs
2666
2667The PCI_Config default address space handler is always
2668installed at the root namespace object.
2669
2670-------------------------------------------
2671Summary of changes for this label: 09_15_00
2672
2673The new initialization architecture is implemented.  New
2674interfaces are: AcpiInitializeSubsystem (replaces
2675AcpiInitialize) AcpiEnableSubsystem Obsolete Interfaces:
2676AcpiLoadNamespace (Namespace is automatically loaded when a
2677table is loaded)
2678
2679The ACPI_OPERAND_OBJECT has been optimized to shrink its size
2680from 52 bytes to 32 bytes.  There is usually one of these for
2681every namespace object, so the memory savings is significant.
2682
2683Implemented just-in-time evaluation of the CreateField
2684operators.
2685
2686Bug fixes for IA-64 support have been integrated.
2687
2688Additional code review comments have been implemented
2689
2690The so-called "third pass parse" has been replaced by a final
2691walk through the namespace to initialize all operation regions
2692(address spaces) and fields that have not yet been initialized
2693during the execution of the various _INI and REG methods.
2694
2695New file - namespace/nsinit.c
2696
2697-------------------------------------------
2698Summary of changes for this label: 09_01_00
2699
2700Namespace manager data structures have been reworked to change
2701the primary  object from a table to a single object.  This has
2702resulted in dynamic memory  savings of 3X within the namespace
2703and 2X overall in the ACPI CA subsystem.
2704
2705Fixed problem where the call to AcpiEvFindPciRootBuses was
2706inadvertently left  commented out.
2707
2708Reduced the warning count when generating the source with the
2709GCC compiler.
2710
2711Revision numbers added to each module header showing the
2712SourceSafe version of the file.  Please refer to this version
2713number when giving us feedback or comments on individual
2714modules.
2715
2716The main object types within the subsystem have been renamed
2717to clarify their  purpose:
2718
2719ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
2720ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
2721ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
2722
2723NOTE: no changes to the initialization sequence are included
2724in this label.
2725
2726-------------------------------------------
2727Summary of changes for this label: 08_23_00
2728
2729Fixed problem where TerminateControlMethod was being called
2730multiple times per  method
2731
2732Fixed debugger problem where single stepping caused a
2733semaphore to be  oversignalled
2734
2735Improved performance through additional parse object caching -
2736added  ACPI_EXTENDED_OP type
2737
2738-------------------------------------------
2739Summary of changes for this label: 08_10_00
2740
2741Parser/Interpreter integration:  Eliminated the creation of
2742complete parse trees  for ACPI tables and control methods.
2743Instead, parse subtrees are created and  then deleted as soon
2744as they are processed (Either entered into the namespace or
2745executed by the interpreter).  This reduces the use of dynamic
2746kernel memory  significantly. (about 10X)
2747
2748Exception codes broken into classes and renumbered.  Be sure
2749to recompile all  code that includes acexcep.h.  Hopefully we
2750won't have to renumber the codes  again now that they are
2751split into classes (environment, programmer, AML code,  ACPI
2752table, and internal).
2753
2754Fixed some additional alignment issues in the Resource Manager
2755subcomponent
2756
2757Implemented semaphore tracking in the AcpiExec utility, and
2758fixed several places  where mutexes/semaphores were being
2759unlocked without a corresponding lock  operation.  There are
2760no known semaphore or mutex "leaks" at this time.
2761
2762Fixed the case where an ASL Return operator is used to return
2763an unnamed  package.
2764
2765-------------------------------------------
2766Summary of changes for this label: 07_28_00
2767
2768Fixed a problem with the way addresses were calculated in
2769AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This
2770problem manifested itself when a Field was  created with
2771WordAccess or DwordAccess, but the field unit defined within
2772the  Field was less than a Word or Dword.
2773
2774Fixed a problem in AmlDumpOperands() module's loop to pull
2775operands off of the  operand stack to display information. The
2776problem manifested itself as a TLB  error on 64-bit systems
2777when accessing an operand stack with two or more  operands.
2778
2779Fixed a problem with the PCI configuration space handlers
2780where context was  getting confused between accesses. This
2781required a change to the generic address  space handler and
2782address space setup definitions. Handlers now get both a
2783global handler context (this is the one passed in by the user
2784when executing  AcpiInstallAddressSpaceHandler() and a
2785specific region context that is unique to  each region (For
2786example, the _ADR, _SEG and _BBN values associated with a
2787specific region). The generic function definitions have
2788changed to the  following:
2789
2790typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32
2791Function, UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
2792*HandlerContext, // This used to be void *Context void
2793*RegionContext); // This is an additional parameter
2794
2795typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
2796RegionHandle, UINT32 Function, void *HandlerContext,  void
2797**RegionContext); // This used to be **ReturnContext
2798
2799-------------------------------------------
2800Summary of changes for this label: 07_21_00
2801
2802Major file consolidation and rename.  All files within the
2803interpreter have been  renamed as well as most header files.
2804This was done to prevent collisions with  existing files in
2805the host OSs -- filenames such as "config.h" and "global.h"
2806seem to be quite common.  The VC project files have been
2807updated.  All makefiles  will require modification.
2808
2809The parser/interpreter integration continues in Phase 5 with
2810the implementation  of a complete 2-pass parse (the AML is
2811parsed twice) for each table;  This  avoids the construction
2812of a huge parse tree and therefore reduces the amount of
2813dynamic memory required by the subsystem.  Greater use of the
2814parse object cache  means that performance is unaffected.
2815
2816Many comments from the two code reviews have been rolled in.
2817
2818The 64-bit alignment support is complete.
2819
2820-------------------------------------------
2821Summary of changes for this label: 06_30_00
2822
2823With a nod and a tip of the hat to the technology of
2824yesteryear, we've added  support in the source code for 80
2825column output devices.  The code is now mostly  constrained to
282680 columns or less to support environments and editors that 1)
2827cannot display or print more than 80 characters on a single
2828line, and 2) cannot  disable line wrapping.
2829
2830A major restructuring of the namespace data structure has been
2831completed.  The  result is 1) cleaner and more
2832understandable/maintainable code, and 2) a  significant
2833reduction in the dynamic memory requirement for each named
2834ACPI  object (almost half).
2835
2836-------------------------------------------
2837Summary of changes for this label: 06_23_00
2838
2839Linux support has been added.  In order to obtain approval to
2840get the ACPI CA  subsystem into the Linux kernel, we've had to
2841make quite a few changes to the  base subsystem that will
2842affect all users (all the changes are generic and OS-
2843independent).  The effects of these global changes have been
2844somewhat far  reaching.  Files have been merged and/or renamed
2845and interfaces have been  renamed.   The major changes are
2846described below.
2847
2848Osd* interfaces renamed to AcpiOs* to eliminate namespace
2849pollution/confusion  within our target kernels.  All OSD
2850interfaces must be modified to match the new  naming
2851convention.
2852
2853Files merged across the subsystem.  A number of the smaller
2854source and header  files have been merged to reduce the file
2855count and increase the density of the  existing files.  There
2856are too many to list here.  In general, makefiles that  call
2857out individual files will require rebuilding.
2858
2859Interpreter files renamed.  All interpreter files now have the
2860prefix am*  instead of ie* and is*.
2861
2862Header files renamed:  The acapi.h file is now acpixf.h.  The
2863acpiosd.h file is  now acpiosxf.h.  We are removing references
2864to the acronym "API" since it is  somewhat windowsy. The new
2865name is "external interface" or xface or xf in the
2866filenames.j
2867
2868
2869All manifest constants have been forced to upper case (some
2870were mixed case.)   Also, the string "ACPI_" has been
2871prepended to many (not all) of the constants,  typedefs, and
2872structs.
2873
2874The globals "DebugLevel" and "DebugLayer" have been renamed
2875"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
2876
2877All other globals within the subsystem are now prefixed with
2878"AcpiGbl_" Internal procedures within the subsystem are now
2879prefixed with "Acpi" (with only  a few exceptions).  The
2880original two-letter abbreviation for the subcomponent  remains
2881after "Acpi" - for example, CmCallocate became
2882AcpiCmCallocate.
2883
2884Added a source code translation/conversion utility.  Used to
2885generate the Linux  source code, it can be modified to
2886generate other types of source as well. Can  also be used to
2887cleanup existing source by removing extraneous spaces and
2888blank  lines.  Found in tools/acpisrc/*
2889
2890OsdUnMapMemory was renamed to OsdUnmapMemory and then
2891AcpiOsUnmapMemory.  (UnMap  became Unmap).
2892
2893A "MaxUnits" parameter has been added to
2894AcpiOsCreateSemaphore.  When set to  one, this indicates that
2895the caller wants to use the semaphore as a mutex, not a
2896counting semaphore.  ACPI CA uses both types.  However,
2897implementers of this  call may want to use different OS
2898primitives depending on the type of semaphore  requested.  For
2899example, some operating systems provide separate "mutex" and
2900"semaphore" interfaces - where the mutex interface is much
2901faster because it  doesn't have all the overhead of a full
2902semaphore implementation.
2903
2904Fixed a deadlock problem where a method that accesses the PCI
2905address space can  block forever if it is the first access to
2906the space.
2907
2908-------------------------------------------
2909Summary of changes for this label: 06_02_00
2910
2911Support for environments that cannot handle unaligned data
2912accesses (e.g.  firmware and OS environments devoid of
2913alignment handler technology namely  SAL/EFI and the IA-64
2914Linux kernel) has been added (via configurable macros) in
2915these three areas: - Transfer of data from the raw AML byte
2916stream is done via byte moves instead of    word/dword/qword
2917moves. - External objects are aligned within the user buffer,
2918including package   elements (sub-objects). - Conversion of
2919name strings to UINT32 Acpi Names is now done byte-wise.
2920
2921The Store operator was modified to mimic Microsoft's
2922implementation when storing  to a Buffer Field.
2923
2924Added a check of the BM_STS bit before entering C3.
2925
2926The methods subdirectory has been obsoleted and removed.  A
2927new file, cmeval.c  subsumes the functionality.
2928
2929A 16-bit (DOS) version of AcpiExec has been developed.  The
2930makefile is under  the acpiexec directory.
2931