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