xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 2efb75f3)
1----------------------------------------
203 October 2018. Summary of changes for version 20181003:
3
4
52) iASL Compiler/Disassembler and Tools:
6
7Fixed a regression introduced in version 20180927 that could cause the
8compiler to fault, especially with NamePaths containing one or more
9carats (^). Such as: ^^_SB_PCI0
10
11Added a new remark for the Sleep() operator when the sleep time operand
12is larger than one second. This is a very long time for the ASL/BIOS code
13and may not be what was intended by the ASL writer.
14
15----------------------------------------
1627 September 2018. Summary of changes for version 20180927:
17
18
191) ACPICA kernel-resident subsystem:
20
21Updated the GPE support to clear the status of all ACPI events when
22entering any/all sleep states in order to avoid premature wakeups. In
23theory, this may cause some wakeup events to be missed, but the
24likelihood of this is small. This change restores the original behavior
25of the ACPICA code in order to fix a regression seen from the previous
26"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
27This regression could cause some systems to incorrectly wake immediately.
28
29Updated the execution of the _REG methods during initialization and
30namespace loading to bring the behavior into closer conformance to the
31ACPI specification and other ACPI implementations:
32
33From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
34    "Control methods must assume all operation regions are inaccessible
35until the _REG(RegionSpace, 1) method is executed"
36
37    "The exceptions to this rule are:
381.  OSPM must guarantee that the following operation regions are always
39accessible:
40    SystemIO operation regions.
41    SystemMemory operation regions when accessing memory returned by the
42System Address Map reporting interfaces."
43
44Since the state of both the SystemIO and SystemMemory address spaces are
45defined by the specification to never change, this ACPICA change ensures
46that now _REG is never called on them. This solves some problems seen in
47the field and provides compatibility with other ACPI implementations. An
48update to the upcoming new version of the ACPI specification will help
49clarify this behavior.
50
51Updated the implementation of support for the Generic Serial Bus. For the
52"bidirectional" protocols, the internal implementation now automatically
53creates a return data buffer of the maximum size (255). This handles the
54worst-case for data that is returned from the serial bus handler, and
55fixes some problems seen in the field. This new buffer is directly
56returned to the ASL. As such, there is no true "bidirectional" buffer,
57which matches the ACPI specification. This is the reason for the "double
58store" seen in the example ASL code in the specification, shown below:
59
60Word Process Call (AttribProcessCall):
61    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
62    Field(TOP1, BufferAcc, NoLock, Preserve)
63    {
64        FLD1, 8, // Virtual register at command value 1.
65    }
66
67    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
68                             // as BUFF
69    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
70
71    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
72    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
73transaction
74                           // This is the "double store". The write to
75                           // FLD1 returns a new buffer, which is stored
76                           // back into BUFF with the second Store.
77
78
792) iASL Compiler/Disassembler and Tools:
80
81iASL: Implemented detection of extraneous/redundant uses of the Offset()
82operator within a Field Unit list. A remark is now issued for these. For
83example, the first two of the Offset() operators below are extraneous.
84Because both the compiler and the interpreter track the offsets
85automatically, these Offsets simply refer to the current offset and are
86unnecessary. Note, when optimization is enabled, the iASL compiler will
87in fact remove the redundant Offset operators and will not emit any AML
88code for them.
89
90    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
91    Field (OPR1)
92    {
93        Offset (0),     // Never needed
94        FLD1, 32,
95        Offset (4),     // Redundant, offset is already 4 (bytes)
96        FLD2, 8,
97        Offset (64),    // OK use of Offset.
98        FLD3, 16,
99    }
100dsdt.asl     14:         Offset (0),
101Remark   2158 -                 ^ Unnecessary/redundant use of Offset
102operator
103
104dsdt.asl     16:         Offset (4),
105Remark   2158 -                 ^ Unnecessary/redundant use of Offset
106operator
107
108----------------------------------------
10910 August 2018. Summary of changes for version 20180810:
110
111
1121) ACPICA kernel-resident subsystem:
113
114Initial ACPI table loading: Attempt to continue loading ACPI tables
115regardless of malformed AML. Since migrating table initialization to the
116new module-level code support, the AML interpreter rejected tables upon
117any ACPI error encountered during table load. This is a problem because
118non-serious ACPI errors during table load do not necessarily mean that
119the entire definition block (DSDT or SSDT) is invalid. This change
120improves the table loading by ignoring some types of errors that can be
121generated by incorrect AML. This can range from object type errors, scope
122errors, and index errors.
123
124Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
125during suspend/resume. The status of ACPI events is no longer cleared
126when entering the ACPI S5 system state (power off) which caused some
127systems to power up immediately after turning off power in certain
128situations. This was a functional regression. It was fixed by clearing
129the status of all ACPI events again when entering S5 (for system-wide
130suspend or hibernation the clearing of the status of all events is not
131desirable, as it might cause the kernel to miss wakeup events sometimes).
132Rafael Wysocki.
133
134
1352) iASL Compiler/Disassembler and Tools:
136
137AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
138elements listed in the initialization file were previously initialized
139after the table load and before executing module-level code blocks.
140Recent changes in the module-level code support means that the table load
141becomes a large control method execution. If fields are used within
142module-level code and we are executing with the -fi option, the
143initialization values were used to initialize the namespace object(s)
144only after the table was finished loading. This change Provides an early
145initialization of objects specified in the initialization file so that
146field unit values are populated during the table load (not after the
147load).
148
149AcpiExec: Fixed a small memory leak regression that could result in
150warnings during exit of the utility. These warnings were similar to
151these:
152    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
153    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
154
155----------------------------------------
15629 June 2018. Summary of changes for version 20180629:
157
158
1591) iASL Compiler/Disassembler and Tools:
160
161iASL: Fixed a regression related to the use of the ASL External
162statement. Error checking for the use of the External() statement has
163been relaxed. Previously, a restriction on the use of External meant that
164the referenced named object was required to be defined in a different
165table (an SSDT). Thus it would be an error to declare an object as an
166external and then define the same named object in the same table. For
167example:
168    DefinitionBlock (...)
169    {
170        External (DEV1)
171        Device (DEV1){...} // This was an error
172    }
173However, this behavior has caused regressions in some existing ASL code,
174because there is code that depends on named objects and externals (with
175the same name) being declared in the same table. This change will allow
176the ASL code above to compile without errors or warnings.
177
178iASL: Implemented ASL language extensions for four operators to make some
179of their arguments optional instead of required:
180    1) Field (RegionName, AccessType, LockRule, UpdateRule)
181    2) BankField (RegionName, BankName, BankValue,
182                AccessType, LockRule, UpdateRule)
183    3) IndexField (IndexName, DataName,
184                AccessType, LockRule, UpdateRule)
185For the Field operators above, the AccessType, LockRule, and UpdateRule
186are now optional arguments. The default values are:
187        AccessType: AnyAcc
188        LockRule:   NoLock
189        UpdateRule: Preserve
190    4) Mutex (MutexName, SyncLevel)
191For this operator, the SyncLevel argument is now optional. This argument
192is rarely used in any meaningful way by ASL code, and thus it makes sense
193to make it optional. The default value is:
194        SyncLevel:  0
195
196iASL: Attempted use of the ASL Unload() operator now results in the
197following warning:
198    "Unload is not supported by all operating systems"
199This is in fact very true, and the Unload operator may be completely
200deprecated in the near future.
201
202AcpiExec: Fixed a regression for the -fi option (Namespace initialization
203file. Recent changes in the ACPICA module-level code support altered the
204table load/initialization sequence . This means that the table load has
205become a large method execution of the table itself. If Operation Region
206Fields are used within any module-level code and the -fi option was
207specified, the initialization values were populated only after the table
208had completely finished loading (and thus the module-level code had
209already been executed). This change moves the initialization of objects
210listed in the initialization file to before the table is executed as a
211method. Field unit values are now initialized before the table execution
212is performed.
213
214----------------------------------------
21531 May 2018. Summary of changes for version 20180531:
216
217
2181) ACPICA kernel-resident Subsystem:
219
220Implemented additional support to help ensure that a DSDT or SSDT is
221fully loaded even if errors are incurred during the load. The majority of
222the problems that are seen is the failure of individual AML operators
223that occur during execution of any module-level code (MLC) existing in
224the table. This support adds a mechanism to abort the current ASL
225statement (AML opcode), emit an error message, and to simply move on to
226the next opcode -- instead of aborting the entire table load. This is
227different than the execution of a control method where the entire method
228is aborted upon any error. The goal is to perform a very "best effort" to
229load the ACPI tables. The most common MLC errors that have been seen in
230the field are direct references to unresolved ASL/AML symbols (referenced
231directly without the use of the CondRefOf operator to validate the
232symbol). This new ACPICA behavior is now compatible with other ACPI
233implementations.
234
235Interpreter: The Unload AML operator is no longer supported for the
236reasons below. An AE_NOT_IMPLEMENTED exception is returned.
2371) A correct implementation on at least some hosts may not be possible.
2382) Other ACPI implementations do not correctly/fully support it.
2393) It requires host device driver support which is not known to exist.
240    (To properly support namespace unload out from underneath.)
2414) This AML operator has never been seen in the field.
242
243Parser: Added a debug option to dump AML parse sub-trees as they are
244being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
245ACPI_DB_PARSE_TREES.
246
247Debugger: Reduced the verbosity for errors incurred during table load and
248module-level code execution.
249
250Completed an investigation into adding a namespace node "owner list"
251instead of the current "owner ID" associated with namespace nodes. This
252list would link together all nodes that are owned by an individual
253control method. The purpose would be to enhance control method execution
254by speeding up cleanup during method exit (all namespace nodes created by
255a method are deleted upon method termination.) Currently, the entire
256namespace must be searched for matching owner IDs if (and only if) the
257method creates named objects outside of the local scope. However, by far
258the most common case is that methods create objects locally, not outside
259the method scope. There is already an ACPICA optimization in place that
260only searches the entire namespace in the rare case of a method creating
261objects elsewhere in the namespace. Therefore, it is felt that the
262overhead of adding an additional pointer to each namespace node to
263implement the owner list makes this feature unnecessary.
264
265
2662) iASL Compiler/Disassembler and Tools:
267
268iASL, Disassembler, and Template generator: Implemented support for
269Revision D of the IORT table. Adds a new subtable that is used to specify
270SMMUv3 PMCGs. rmurphy-arm.
271
272Disassembler: Restored correct table header validation for the "special"
273ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
274table header and must be special-cased. This was a regression that has
275been present for apparently a long time.
276
277AcpiExec: Reduced verbosity of the local exception handler implemented
278within acpiexec. This handler is invoked by ACPICA upon any exceptions
279generated during control method execution. A new option was added: -vh
280restores the original verbosity level if desired.
281
282AcpiExec: Changed the default base from decimal to hex for the -x option
283(set debug level). This simplifies the use of this option and matches the
284behavior of the corresponding iASL -x option.
285
286AcpiExec: Restored a force-exit on multiple control-c (sigint)
287interrupts. This allows program termination even if other issues cause
288the control-c to fail.
289
290ASL test suite (ASLTS): Added tests for the recently implemented package
291element resolution mechanism that allows forward references to named
292objects from individual package elements (this mechanism provides
293compatibility with other ACPI implementations.)
294
295
296----------------------------------------
2978 May 2018. Summary of changes for version 20180508:
298
299
3001) ACPICA kernel-resident subsystem:
301
302Completed the new (recently deployed) package resolution mechanism for
303the Load and LoadTable ASL/AML operators. This fixes a regression that
304was introduced in version 20180209 that could result in an
305AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
306(SSDT) that contains package objects.
307
308
3092) iASL Compiler/Disassembler and Tools:
310
311AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
3121 MB. This change allows for table offsets within the acpidump file to be
313up to 8 characters. These changes are backwards compatible with existing
314acpidump files.
315
316
317----------------------------------------
31827 April 2018. Summary of changes for version 20180427:
319
320
3211) ACPICA kernel-resident subsystem:
322
323Debugger: Added support for Package objects in the "Test Objects"
324command. This command walks the entire namespace and evaluates all named
325data objects (Integers, Strings, Buffers, and now Packages).
326
327Improved error messages for the namespace root node. Originally, the root
328was referred to by the confusing string "\___". This has been replaced by
329"Namespace Root" for clarification.
330
331Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
332Ian King <colin.king@canonical.com>.
333
334
3352) iASL Compiler/Disassembler and Tools:
336
337iASL: Implemented support to detect and flag illegal forward references.
338For compatibility with other ACPI implementations, these references are
339now illegal at the root level of the DSDT or SSDTs. Forward references
340have always been illegal within control methods. This change should not
341affect existing ASL/AML code because of the fact that these references
342have always been illegal in the other ACPI implementation.
343
344iASL: Added error messages for the case where a table OEM ID and OEM
345TABLE ID strings are longer than the ACPI-defined length. Previously,
346these strings were simply silently truncated.
347
348iASL: Enhanced the -tc option (which creates an AML hex file in C,
349suitable for import into a firmware project):
350  1) Create a unique name for the table, to simplify use of multiple
351SSDTs.
352  2) Add a protection #ifdef in the file, similar to a .h header file.
353With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
354evan.lloyd@arm.com
355
356AcpiExec: Added a new option, -df, to disable the local fault handler.
357This is useful during debugging, where it may be desired to drop into a
358debugger on a fault.
359
360----------------------------------------
36113 March 2018. Summary of changes for version 20180313:
362
363
3641) ACPICA kernel-resident subsystem:
365
366Implemented various improvements to the GPE support:
367
3681) Dispatch all active GPEs at initialization time so that no GPEs are
369lost.
3702) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
371before devices are enumerated.
3723) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
373IRQs are not lost.
3744) Add parallel GPE handling to eliminate the possibility of dispatching
375the same GPE twice.
3765) Dispatch any pending GPEs after enabling for the first time.
377
378AcpiGetObjectInfo - removed support for the _STA method. This was causing
379problems on some platforms.
380
381Added a new _OSI string, "Windows 2017.2".
382
383Cleaned up and simplified the module-level code support. These changes
384are in preparation for the eventual removal of the legacy MLC support
385(deferred execution), replaced by the new MLC architecture which executes
386the MLC as a table is loaded (DSDT/SSDTs).
387
388Changed a compile-time option to a runtime option. Changes the option to
389ignore ACPI table load-time package resolution errors into a runtime
390option. Used only for platforms that generate many AE_NOT_FOUND errors
391during boot. AcpiGbl_IgnorePackageResolutionErrors.
392
393Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
394ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
395compilation errors from unused variables (seen with some compilers).
396
397
3982) iASL Compiler/Disassembler and Tools:
399
400ASLTS: parallelized execution in order to achieve an (approximately) 2X
401performance increase.
402
403ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
404error reporting.
405
406----------------------------------------
40709 February 2018. Summary of changes for version 20180209:
408
409
4101) ACPICA kernel-resident subsystem:
411
412Completed the final integration of the recent changes to Package Object
413handling and the module-level AML code support. This allows forward
414references from individual package elements when the package object is
415declared from within module-level code blocks. Provides compatibility
416with other ACPI implementations.
417
418The new architecture for the AML module-level code has been completed and
419is now the default for the ACPICA code. This new architecture executes
420the module-level code in-line as the ACPI table is loaded/parsed instead
421of the previous architecture which deferred this code until after the
422table was fully loaded. This solves some ASL code ordering issues and
423provides compatibility with other ACPI implementations. At this time,
424there is an option to fallback to the earlier architecture, but this
425support is deprecated and is planned to be completely removed later this
426year.
427
428Added a compile-time option to ignore AE_NOT_FOUND exceptions during
429resolution of named reference elements within Package objects. Although
430this is potentially a serious problem, it can generate a lot of
431noise/errors on platforms whose firmware carries around a bunch of unused
432Package objects. To disable these errors, define
433ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
434errors are always reported for ACPICA applications such as AcpiExec.
435
436Fixed a regression related to the explicit type-conversion AML operators
437(ToXXXX). The regression was introduced early in 2017 but was not seen
438until recently because these operators are not fully supported by other
439ACPI implementations and are thus rarely used by firmware developers. The
440operators are defined by the ACPI specification to not implement the
441"implicit result object conversion". The regression incorrectly
442introduced this object conversion for the following explicit conversion
443operators:
444    ToInteger
445    ToString
446    ToBuffer
447    ToDecimalString
448    ToHexString
449    ToBCD
450    FromBCD
451
452
4532) iASL Compiler/Disassembler and Tools:
454
455iASL: Fixed a problem with the compiler constant folding feature as
456related to the ToXXXX explicit conversion operators. These operators do
457not support the "implicit result object conversion" by definition. Thus,
458ASL expressions that use these operators cannot be folded to a simple
459Store operator because Store implements the implicit conversion. This
460change uses the CopyObject operator for the ToXXXX operator folding
461instead. CopyObject is defined to not implement implicit result
462conversions and is thus appropriate for folding the ToXXXX operators.
463
464iASL: Changed the severity of an error condition to a simple warning for
465the case where a symbol is declared both locally and as an external
466symbol. This accommodates existing ASL code.
467
468AcpiExec: The -ep option to enable the new architecture for module-level
469code has been removed. It is replaced by the -dp option which instead has
470the opposite effect: it disables the new architecture (the default) and
471enables the legacy architecture. When the legacy code is removed in the
472future, the -dp option will be removed also.
473
474----------------------------------------
47505 January 2018. Summary of changes for version 20180105:
476
477
4781) ACPICA kernel-resident subsystem:
479
480Updated all copyrights to 2018. This affects all source code modules.
481
482Fixed a possible build error caused by an unresolved reference to the
483AcpiUtSafeStrncpy function.
484
485Removed NULL pointer arithmetic in the various pointer manipulation
486macros. All "(void *) NULL" constructs are converted to "(void *) 0".
487This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
488
489Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
490Mittal.
491
492
4932) iASL Compiler/Disassembler and Tools:
494
495ASLTS: Updated all copyrights to 2018.
496
497Tools: Updated all signon copyrights to 2018.
498
499AcpiXtract: Fixed a regression related to ACPI table signatures where the
500signature was truncated to 3 characters (instead of 4).
501
502AcpiExec: Restore the original terminal mode after the use of the -v and
503-vd options.
504
505ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
506
507----------------------------------------
50814 December 2017. Summary of changes for version 20171214:
509
510
5111) ACPICA kernel-resident subsystem:
512
513Fixed a regression in the external (public) AcpiEvaluateObjectTyped
514interface where the optional "pathname" argument had inadvertently become
515a required argument returning an error if omitted (NULL pointer
516argument).
517
518Fixed two possible memory leaks related to the recently developed "late
519resolution" of reference objects within ASL Package Object definitions.
520
521Added two recently defined _OSI strings: "Windows 2016" and "Windows
5222017". Mario Limonciello.
523
524Implemented and deployed a safer version of the C library function
525strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
526creation of unterminated strings as a possible result of a standard
527strncpy.
528
529Cleaned up and restructured the global variable file (acglobal.h). There
530are many changes, but no functional changes.
531
532
5332) iASL Compiler/Disassembler and Tools:
534
535iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
536optional OemData field at the end of the table was incorrectly required
537for proper compilation. It is now correctly an optional field.
538
539ASLTS: The entire suite was converted from standard ASL to the ASL+
540language, using the ASL-to-ASL+ converter which is integrated into the
541iASL compiler. A binary compare of all output files has verified the
542correctness of the conversion.
543
544iASL: Fixed the source code build for platforms where "char" is unsigned.
545This affected the iASL lexer only. Jung-uk Kim.
546
547----------------------------------------
54810 November 2017. Summary of changes for version 20171110:
549
550
5511) ACPICA kernel-resident subsystem:
552
553This release implements full support for ACPI 6.2A:
554    NFIT - Added a new subtable, "Platform Capabilities Structure"
555No other changes to ACPICA were required, since ACPI 6.2A is primarily an
556errata release of the specification.
557
558Other ACPI table changes:
559    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
560    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
561Linton
562
563Utilities: Modified the string/integer conversion functions to use
564internal 64-bit divide support instead of a native divide. On 32-bit
565platforms, a 64-bit divide typically requires a library function which
566may not be present in the build (kernel or otherwise).
567
568Implemented a targeted error message for timeouts returned from the
569Embedded Controller device driver. This is seen frequently enough to
570special-case an AE_TIME returned from an EC operation region access:
571    "Timeout from EC hardware or EC device driver"
572
573Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
574runtime error messages have the identical prefix.
575
576
5772) iASL Compiler/Disassembler and Tools:
578
579AcpiXtract: Fixed a problem with table header detection within the
580acpidump file. Processing a table could be ended early if a 0x40 (@)
581appears in the original binary table, resulting in the @ symbol appearing
582in the decoded ASCII field at the end of the acpidump text line. The
583symbol caused acpixtract to incorrectly think it had reached the end of
584the current table and the beginning of a new table.
585
586AcpiXtract: Added an option (-f) to ignore some errors during table
587extraction. This initial implementation ignores non-ASCII and non-
588printable characters found in the acpidump text file.
589
590TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
591for ASLTS. This feature is used to track memory allocations from
592different memory caches within the ACPICA code. At the end of an ASLTS
593run, these memory statistics are recorded and stored in a log file.
594
595Debugger (user-space version): Implemented a simple "Background" command.
596Creates a new thread to execute a control method in the background, while
597control returns to the debugger prompt to allow additional commands.
598    Syntax: Background <Namepath> [Arguments]
599
600----------------------------------------
60129 September 2017. Summary of changes for version 20170929:
602
603
6041) ACPICA kernel-resident subsystem:
605
606Redesigned and implemented an improved ASL While() loop timeout
607mechanism. This mechanism is used to prevent infinite loops in the kernel
608AML interpreter caused by either non-responsive hardware or incorrect AML
609code. The new implementation uses AcpiOsGetTimer instead of a simple
610maximum loop count, and is thus more accurate and constant across
611different machines. The default timeout is currently 30 seconds, but this
612may be adjusted later.
613
614Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
615better reflect the new implementation of the loop timeout mechanism.
616
617Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
618and to fix an off-by-one error. Jung-uk Kim.
619
620Fixed an EFI build problem by updating the makefiles to for a new file
621that was added, utstrsuppt.c
622
623
6242) iASL Compiler/Disassembler and Tools:
625
626Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
627includes support in the table disassembler, compiler, and template
628generator.
629
630iASL: Added an exception for an illegal type of recursive method
631invocation. If a method creates named objects, the first recursive call
632will fail at runtime. This change adds an error detection at compile time
633to catch the problem up front. Note: Marking such a method as
634"serialized" will not help with this problem, because the same thread can
635acquire the method mutex more than once. Example compiler and runtime
636output:
637
638    Method (MTH1)
639    {
640        Name (INT1, 1)
641        MTH1 ()
642    }
643
644    dsdt.asl     22: MTH1 ()
645    Error    6152 -  ^ Illegal recursive call to method
646                       that creates named objects (MTH1)
647
648Previous runtime exception:
649    ACPI Error: [INT1] Namespace lookup failure,
650    AE_ALREADY_EXISTS (20170831/dswload2-465)
651
652iASL: Updated support for External() opcodes to improve namespace
653management and error detection. These changes are related to issues seen
654with multiple-segment namespace pathnames within External declarations,
655such as below:
656
657    External(\_SB.PCI0.GFX0, DeviceObj)
658    External(\_SB.PCI0.GFX0.ALSI)
659
660iASL: Implemented support for multi-line error/warning messages. This
661enables more detailed and helpful error messages as below, from the
662initial deployment for the duplicate names error:
663
664    DSDT.iiii   1692:       Device(PEG2) {
665    Error    6074 -                  ^ Name already exists in scope
666(PEG2)
667
668        Original name creation/declaration below:
669        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
670
671AcpiXtract: Added additional flexibility to support differing input hex
672dump formats. Specifically, hex dumps that contain partial disassembly
673and/or comments within the ACPI table data definition. There exist some
674dump utilities seen in the field that create this type of hex dump (such
675as Simics). For example:
676
677    DSDT @ 0xdfffd0c0 (10999 bytes)
678        Signature DSDT
679        Length 10999
680        Revision 1
681        Checksum 0xf3 (Ok)
682        OEM_ID BXPC
683        OEM_table_id BXDSDT
684        OEM_revision 1
685        Creator_id 1280593481
686        Creator_revision 537399345
687      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
688      ...
689      2af0: 5f 4c 30 46 00 a4 01
690
691Test suite: Miscellaneous changes/fixes:
692    More cleanup and simplification of makefiles
693    Continue compilation of test cases after a compile failure
694    Do not perform binary compare unless both files actually exist
695
696iASL: Performed some code/module restructuring. Moved all memory
697allocation functions to new modules. Two new files, aslallocate.c and
698aslcache.c
699
700----------------------------------------
70131 August 2017. Summary of changes for version 20170831:
702
703
7041) ACPICA kernel-resident subsystem:
705
706Implemented internal support for full 64-bit addresses that appear in all
707Generic Address Structure (GAS) structures. Previously, only the lower 32
708bits were used. Affects the use of GAS structures in the FADT and other
709tables, as well as the GAS structures passed to the AcpiRead and
710AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
711
712Added header support for the PDTT ACPI table (Processor Debug Trigger
713Table). Full support in the iASL Data Table Compiler and disassembler is
714forthcoming.
715
716
7172) iASL Compiler/Disassembler and Tools:
718
719iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
720Properties Topology Table) where a flag bit was specified in the wrong
721bit position ("Line Size Valid", bit 6).
722
723iASL: Implemented support for Octal integer constants as defined by the
724ASL language grammar, per the ACPI specification. Any integer constant
725that starts with a zero is an octal constant. For example,
726    Store (037777, Local0) /* Octal constant */
727    Store (0x3FFF, Local0) /* Hex equivalent */
728    Store (16383,  Local0) /* Decimal equivalent */
729
730iASL: Improved overflow detection for 64-bit string conversions during
731compilation of integer constants. "Overflow" in this case means a string
732that represents an integer that is too large to fit into a 64-bit value.
733Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
734the low-order 32 bits with a warning, as previously implemented. Several
735new exceptions are defined that indicate a 64-bit overflow, as well as
736the base (radix) that was used during the attempted conversion. Examples:
737    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
738    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
739    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
740
741iASL: Added a warning for the case where a ResourceTemplate is declared
742with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
743this case, the resulting template is created with a single END_TAG
744descriptor, which is essentially useless.
745
746iASL: Expanded the -vw option (ignore specific warnings/remarks) to
747include compilation error codes as well.
748
749----------------------------------------
75028 July 2017. Summary of changes for version 20170728:
751
752
7531) ACPICA kernel-resident subsystem:
754
755Fixed a regression seen with small resource descriptors that could cause
756an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
757
758AML interpreter: Implemented a new feature that allows forward references
759from individual named references within package objects that are
760contained within blocks of "module-level code". This provides
761compatibility with other ACPI implementations and supports existing
762firmware that depends on this feature. Example:
763
764    Name (ABCD, 1)
765    If (ABCD)                       /* An If() at module-level */
766    {
767        Name (PKG1, Package()
768        {
769            INT1                    /* Forward reference to object INT1
770*/
771        })
772        Name (INT1, 0x1234)
773    }
774
775AML Interpreter: Fixed a problem with the Alias() operator where aliases
776to some ASL objects were not handled properly. Objects affected are:
777Mutex, Event, and OperationRegion.
778
779AML Debugger: Enhanced to properly handle AML Alias objects. These
780objects have one level of indirection which was not fully supported by
781the debugger.
782
783Table Manager: Added support to detect and ignore duplicate SSDTs within
784the XSDT/RSDT. This error in the XSDT has been seen in the field.
785
786EFI and EDK2 support:
787    Enabled /WX flag for MSVC builds
788    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
789    Added local support for 64-bit multiply and shift operations
790    Added support to compile acpidump.efi on Windows
791    Added OSL function stubs for interfaces not used under EFI
792
793Added additional support for the _DMA predefined name. _DMA returns a
794buffer containing a resource template. This change add support within the
795resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
796resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
797
798
7992) iASL Compiler/Disassembler and Tools:
800
801iASL: Fixed a problem where the internal input line buffer(s) could
802overflow if there are very long lines in the input ASL source code file.
803Implemented buffer management that automatically increases the size of
804the buffers as necessary.
805
806iASL: Added an option (-vx) to "expect" particular remarks, warnings and
807errors. If the specified exception is not raised during compilation, the
808compiler emits an error. This is intended to support the ASL test suite,
809but may be useful in other contexts.
810
811iASL: Implemented a new predefined macro, __METHOD__, which returns a
812string containing the name of the current control method that is being
813compiled.
814
815iASL: Implemented debugger and table compiler support for the SDEI ACPI
816table (Software Delegated Exception Interface). James Morse
817<james.morse@arm.com>
818
819Unix/Linux makefiles: Added an option to disable compile optimizations.
820The disable occurs when the NOOPT flag is set to TRUE.
821theracermaster@gmail.com
822
823Acpidump: Added support for multiple DSDT and FACS tables. This can occur
824when there are different tables for 32-bit versus 64-bit.
825
826Enhanced error reporting for the ASL test suite (ASLTS) by removing
827unnecessary/verbose text, and emit the actual line number where an error
828has occurred. These changes are intended to improve the usefulness of the
829test suite.
830
831----------------------------------------
83229 June 2017. Summary of changes for version 20170629:
833
834
8351) ACPICA kernel-resident subsystem:
836
837Tables: Implemented a deferred ACPI table verification. This is useful
838for operating systems where the tables cannot be verified in the early
839initialization stage due to early memory mapping limitations on some
840architectures. Lv Zheng.
841
842Tables: Removed the signature validation for dynamically loaded tables.
843Provides compatibility with other ACPI implementations. Previously, only
844SSDT tables were allowed, as per the ACPI specification. Now, any table
845signature can be used via the Load() operator. Lv Zheng.
846
847Tables: Fixed several mutex issues that could cause errors during table
848acquisition. Lv Zheng.
849
850Tables: Fixed a problem where an ACPI warning could be generated if a
851null pointer was passed to the AcpiPutTable interface. Lv Zheng.
852
853Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
854AcpiPutTable interfaces. This applies to the "late stage" table loading
855when the use of AcpiPutTable is no longer required (since the system
856memory manager is fully running and available). Lv Zheng.
857
858Fixed/Reverted a regression during processing of resource descriptors
859that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
860exception in this case.
861
862Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
863I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
864
865Interpreter: Fixed a possible fault if an Alias operator with an invalid
866or duplicate target is encountered during Alias creation in
867AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
868
869Added an option to use designated initializers for function pointers.
870Kees Cook <keescook@google.com>
871
872
8732) iASL Compiler/Disassembler and Tools:
874
875iASL: Allow compilation of External declarations with target pathnames
876that refer to existing named objects within the table. Erik Schmauss.
877
878iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
879FieldUnit name also is declared via External in the same table. Erik
880Schmauss.
881
882iASL: Allow existing scope names within pathnames used in External
883statements. For example:
884    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
885    Device (ABCD)
886
887iASL: IORT ACPI table: Implemented changes required to decode the new
888Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
889compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
890
891Disassembler: Don't abort disassembly on errors from External()
892statements. Erik Schmauss.
893
894Disassembler: fixed a possible fault when one of the Create*Field
895operators references a Resource Template. ACPICA Bugzilla 1396.
896
897iASL: In the source code, resolved some naming inconsistences across the
898parsing support. Fixes confusion between "Parse Op" and "Parse Node".
899Adds a new file, aslparseop.c
900
901----------------------------------------
90231 May 2017. Summary of changes for version 20170531:
903
904
9050) ACPI 6.2 support:
906
907The ACPI specification version 6.2 has been released and is available at
908http://uefi.org/specifications
909
910This version of ACPICA fully supports the ACPI 6.2 specification. Changes
911are summarized below.
912
913New ACPI tables (Table Compiler/Disassembler/Templates):
914    HMAT (Heterogeneous Memory Attributes Table)
915    WSMT (Windows SMM Security Mitigation Table)
916    PPTT (Processor Properties Topology Table)
917
918New subtables for existing ACPI tables:
919    HEST (New subtable, Arch-deferred machine check)
920    SRAT (New subtable, Arch-specific affinity structure)
921    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
922
923Simple updates for existing ACPI tables:
924    BGRT (two new flag bits)
925    HEST (New bit defined for several subtables, GHES_ASSIST)
926
927New Resource Descriptors and Resource macros (Compiler/Disassembler):
928    PinConfig()
929    PinFunction()
930    PinGroup()
931    PinGroupConfig()
932    PinGroupFunction()
933    New type for hardware error notification (section 18.3.2.9)
934
935New predefined names/methods (Compiler/Interpreter):
936    _HMA (Heterogeneous Memory Attributes)
937    _LSI (Label Storage Information)
938    _LSR (Label Storage Read)
939    _LSW (Label Storage Write)
940
941ASL grammar/macro changes (Compiler):
942    For() ASL macro, implemented with the AML while operator
943    Extensions to Concatenate operator
944    Support for multiple definition blocks in same ASL file
945    Clarification for Buffer operator
946    Allow executable AML code underneath all scopes (Devices, etc.)
947    Clarification/change for the _OSI return value
948    ASL grammar update for reference operators
949    Allow a zero-length string for AML filename in DefinitionBlock
950
951Miscellaneous:
952    New device object notification value
953    Remove a notify value (0x0C) for graceful shutdown
954    New UUIDs for processor/cache properties and
955        physical package property
956    New _HID, ACPI0014 (Wireless Power Calibration Device)
957
958
9591) ACPICA kernel-resident subsystem:
960
961Added support to disable ACPI events on hardware-reduced platforms.
962Eliminates error messages of the form "Could not enable fixed event". Lv
963Zheng
964
965Fixed a problem using Device/Thermal objects with the ObjectType and
966DerefOf ASL operators. This support had not been fully/properly
967implemented.
968
969Fixed a problem where if a Buffer object containing a resource template
970was longer than the actual resource template, an error was generated --
971even though the AML is legal. This case has been seen in the field.
972
973Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
974The values for DUAL_PIC and MULTIPLE_APIC were reversed.
975
976Added header file changes for the TPM2 ACPI table. Update to new version
977of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
978
979Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
980These interfaces are intended to be used only in conjunction with the
981predefined _DLM method (Device Lock Method). "This object appears in a
982device scope when AML access to the device must be synchronized with the
983OS environment".
984
985Example Code and Data Size: These are the sizes for the OS-independent
986acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
987debug version of the code includes the debug output trace mechanism and
988has a much larger code and data size.
989
990  Current Release:
991    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
992    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
993  Previous Release:
994    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
995    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
996
997
9982) iASL Compiler/Disassembler and Tools:
999
1000iASL: Fixed a problem where an External() declaration could not refer to
1001a Field Unit. Erik Schmauss.
1002
1003Disassembler: Improved support for the Switch/Case operators. This
1004feature will disassemble AML code back to the original Switch operators
1005when possible, instead of an If..Else sequence. David Box
1006
1007iASL and disassembler: Improved the handling of multiple extraneous
1008parentheses for both ASL input and disassembled ASL output.
1009
1010Improved the behavior of the iASL compiler and disassembler to detect
1011improper use of external declarations
1012
1013Disassembler: Now aborts immediately upon detection of an unknown AML
1014opcode. The AML parser has no real way to recover from this, and can
1015result in the creation of an ill-formed parse tree that causes errors
1016later during the disassembly.
1017
1018All tools: Fixed a problem where the Unix application OSL did not handle
1019control-c correctly. For example, a control-c could incorrectly wake the
1020debugger.
1021
1022AcpiExec: Improved the Control-C handling and added a handler for
1023segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1024environments.
1025
1026Reduced the verbosity of the generic unix makefiles. Previously, each
1027compilation displayed the full set of compiler options. This has been
1028eliminated as the options are easily inspected within the makefiles. Each
1029compilation now results in a single line of output.
1030
1031----------------------------------------
103203 March 2017. Summary of changes for version 20170303:
1033
1034
10350) ACPICA licensing:
1036
1037The licensing information at the start of each source code module has
1038been updated. In addition to the Intel license, the dual GPLv2/BSD
1039license has been added for completeness. Now, a single version of the
1040source code should be suitable for all ACPICA customers. This is the
1041major change for this release since it affects all source code modules.
1042
1043
10441) ACPICA kernel-resident subsystem:
1045
1046Fixed two issues with the common asltypes.h header that could cause
1047problems in some environments: (Kim Jung-uk)
1048    Removed typedef for YY_BUFFER_STATE ?
1049       Fixes an error with earlier versions of Flex.
1050    Removed use of FILE typedef (which is only defined in stdio.h)
1051
1052
10532) iASL Compiler/Disassembler and Tools:
1054
1055Disassembler: fixed a regression introduced in 20170224. A fix for a
1056memory leak related to resource descriptor tags (names) could fault when
1057the disassembler was generated with 64-bit compilers.
1058
1059The ASLTS test suite has been updated to implement a new testing
1060architecture. During generation of the suite from ASL source, both the
1061ASL and ASL+ compilers are now validated, as well as the disassembler
1062itself (Erik Schmauss). The architecture executes as follows:
1063
1064    For every ASL source module:
1065        Compile (legacy ASL compilation)
1066        Disassemble the resulting AML to ASL+ source code
1067        Compile the new ASL+ module
1068        Perform a binary compare on the legacy AML and the new ASL+ AML
1069    The ASLTS suite then executes normally using the AML binaries.
1070
1071----------------------------------------
107224 February 2017. Summary of changes for version 20170224:
1073
1074
10751) ACPICA kernel-resident subsystem:
1076
1077Interpreter: Fixed two issues with the control method return value auto-
1078repair feature, where an attempt to double-delete an internal object
1079could result in an ACPICA warning (for _CID repair and others). No fault
1080occurs, however, because the attempted deletion (actually a release to an
1081internal cache) is detected and ignored via object poisoning.
1082
1083Debugger: Fixed an AML interpreter mutex issue during the single stepping
1084of control methods. If certain debugger commands are executed during
1085stepping, a mutex aquire/release error could occur. Lv Zheng.
1086
1087Fixed some issues generating ACPICA with the Intel C compiler by
1088restoring the original behavior and compiler-specific include file in
1089acenv.h. Lv Zheng.
1090
1091Example Code and Data Size: These are the sizes for the OS-independent
1092acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1093debug version of the code includes the debug output trace mechanism and
1094has a much larger code and data size.
1095
1096  Current Release:
1097    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1098    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1099  Previous Release:
1100    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1101    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1102
1103
11042) iASL Compiler/Disassembler and Tools:
1105
1106iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1107tool has been designed, implemented, and included in this release. The
1108key feature of this utility is that the original comments within the
1109input ASL file are preserved during the conversion process, and included
1110within the converted ASL+ file -- thus creating a transparent conversion
1111of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1112
1113    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1114converted code
1115
1116iASL/Disassembler: Improved the detection and correct disassembly of
1117Switch/Case operators. This feature detects sequences of if/elseif/else
1118operators that originated from ASL Switch/Case/Default operators and
1119emits the original operators. David Box.
1120
1121iASL: Improved the IORT ACPI table support in the following areas. Lv
1122Zheng:
1123    Clear MappingOffset if the MappingCount is zero.
1124    Fix the disassembly of the SMMU GSU interrupt offset.
1125    Update the template file for the IORT table.
1126
1127Disassembler: Enhanced the detection and disassembly of resource
1128template/descriptor within a Buffer object. An EndTag descriptor is now
1129required to have a zero second byte, since all known ASL compilers emit
1130this. This helps eliminate incorrect decisions when a buffer is
1131disassembled (false positives on resource templates).
1132
1133----------------------------------------
113419 January 2017. Summary of changes for version 20170119:
1135
1136
11371) General ACPICA software:
1138
1139Entire source code base: Added the 2017 copyright to all source code
1140legal/licensing module headers and utility/tool signons. This includes
1141the standard Linux dual-license header. This affects virtually every file
1142in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1143the ACPICA test suite.
1144
1145
11462) iASL Compiler/Disassembler and Tools:
1147
1148iASL: Removed/fixed an inadvertent remark when a method argument
1149containing a reference is used as a target operand within the method (and
1150never used as a simple argument), as in the example below. Jeffrey Hugo.
1151
1152    dsdt.asl   1507:    Store(0x1, Arg0)
1153    Remark   2146 -                ^ Method Argument is never used (Arg0)
1154
1155All tools: Removed the bit width of the compiler that generated the tool
1156from the common signon for all user space tools. This proved to be
1157confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1158from the generic makefiles (Thomas Petazzoni). Example below.
1159
1160    Old:
1161    ASL+ Optimizing Compiler version 20170119-32
1162    ASL+ Optimizing Compiler version 20170119-64
1163
1164    New:
1165    ASL+ Optimizing Compiler version 20170119
1166
1167----------------------------------------
116822 December 2016. Summary of changes for version 20161222:
1169
1170
11711) ACPICA kernel-resident subsystem:
1172
1173AML Debugger: Implemented a new mechanism to simplify and enhance
1174debugger integration into all environments, including kernel debuggers
1175and user-space utilities, as well as remote debug services. This
1176mechanism essentially consists of new OSL interfaces to support debugger
1177initialization/termination, as well as wait/notify interfaces to perform
1178the debugger handshake with the host. Lv Zheng.
1179
1180    New OSL interfaces:
1181        AcpiOsInitializeDebugger (void)
1182        AcpiOsTerminateDebugger (void)
1183        AcpiOsWaitCommandReady (void)
1184        AcpiOsNotifyCommandComplete (void)
1185
1186    New OS services layer:
1187        osgendbg.c -- Example implementation, and used for AcpiExec
1188
1189Update for Generic Address Space (GAS) support: Although the AccessWidth
1190and/or BitOffset fields of the GAS are not often used, this change now
1191fully supports these fields. This affects the internal support for FADT
1192registers, registers in other ACPI data tables, and the AcpiRead and
1193AcpiWrite public interfaces. Lv Zheng.
1194
1195Sleep support: In order to simplify integration of ACPI sleep for the
1196various host operating systems, a new OSL interface has been introduced.
1197AcpiOsEnterSleep allows the host to perform any required operations
1198before the final write to the sleep control register(s) is performed by
1199ACPICA. Lv Zheng.
1200
1201    New OSL interface:
1202        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1203
1204    Called from these internal interfaces:
1205        AcpiHwLegacySleep
1206        AcpiHwExtendedSleep
1207
1208EFI support: Added a very small EFI/ACPICA example application. Provides
1209a simple demo for EFI integration, as well as assisting with resolution
1210of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1211
1212    source/tools/efihello/efihello.c
1213
1214Local C library: Implemented several new functions to enhance ACPICA
1215portability, for environments where these clib functions are not
1216available (such as EFI). Lv Zheng:
1217    putchar
1218    getchar
1219    strpbrk
1220    strtok
1221    memmove
1222
1223Fixed a regression where occasionally a valid resource descriptor was
1224incorrectly detected as invalid at runtime, and a
1225AE_AML_NO_RESOURCE_END_TAG was returned.
1226
1227Fixed a problem with the recently implemented support that enables
1228control method invocations as Target operands to many ASL operators.
1229Warnings of this form: "Needed type [Reference], found [Processor]" were
1230seen at runtime for some method invocations.
1231
1232Example Code and Data Size: These are the sizes for the OS-independent
1233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1234debug version of the code includes the debug output trace mechanism and
1235has a much larger code and data size.
1236
1237  Current Release:
1238    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1239    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1240  Previous Release:
1241    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1242    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1243
1244
12452) iASL Compiler/Disassembler and Tools:
1246
1247Disassembler: Enhanced output by adding the capability to detect and
1248disassemble ASL Switch/Case statements back to the original ASL source
1249code instead of if/else blocks. David Box.
1250
1251AcpiHelp: Split a large file into separate files based upon
1252functionality/purpose. New files are:
1253    ahaml.c
1254    ahasl.c
1255
1256----------------------------------------
125717 November 2016. Summary of changes for version 20161117:
1258
1259
12601) ACPICA kernel-resident subsystem:
1261
1262Table Manager: Fixed a regression introduced in 20160729, "FADT support
1263cleanup". This was an attempt to remove all references in the source to
1264the FADT version 2, which never was a legal version number. It was
1265skipped because it was an early version of 64-bit support that was
1266eventually abandoned for the current 64-bit support.
1267
1268Interpreter: Fixed a problem where runtime implicit conversion was
1269incorrectly disabled for the ASL operators below. This brings the
1270behavior into compliance with the ACPI specification:
1271    FromBCD
1272    ToBCD
1273    ToDecimalString
1274    ToHexString
1275    ToInteger
1276    ToBuffer
1277
1278Table Manager: Added a new public interface, AcpiPutTable, used to
1279release and free an ACPI table returned by AcpiGetTable and related
1280interfaces. Lv Zheng.
1281
1282Example Code and Data Size: These are the sizes for the OS-independent
1283acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1284debug version of the code includes the debug output trace mechanism and
1285has a much larger code and data size.
1286
1287  Current Release:
1288    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1289    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1290  Previous Release:
1291    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1292    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1293
1294
12952) iASL Compiler/Disassembler and Tools:
1296
1297Disassembler: Fixed a regression for disassembly of Resource Template.
1298Detection of templates in the AML stream missed some types of templates.
1299
1300iASL: Fixed a problem where an Access Size error was returned for the PCC
1301address space when the AccessSize of the GAS register is greater than a
1302DWORD. Hoan Tran.
1303
1304iASL: Implemented several grammar changes for the operators below. These
1305changes are slated for the next version of the ACPI specification:
1306    RefOf        - Disallow method invocation as an operand
1307    CondRefOf    - Disallow method invocation as an operand
1308    DerefOf      - Disallow operands that use the result from operators
1309that
1310                   do not return a reference (Changed TermArg to
1311SuperName).
1312
1313iASL: Control method invocations are now allowed for Target operands, as
1314per the ACPI specification. Removed error for using a control method
1315invocation as a Target operand.
1316
1317Disassembler: Improved detection of Resource Templates, Unicode, and
1318Strings within Buffer objects. These subtypes do not contain a specific
1319opcode to indicate the originating ASL code, and they must be detected by
1320other means within the disassembler.
1321
1322iASL: Implemented an optimization improvement for 32-bit ACPI tables
1323(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1324only after 64-bit to 32-bit truncation. A truncation warning message is
1325still emitted, however.
1326
1327AcpiXtract: Implemented handling for both types of line terminators (LF
1328or CR/LF) so that it can accept AcpiDump output files from any system.
1329Peter Wu.
1330
1331AcpiBin: Added two new options for comparing AML files:
1332    -a: compare and display ALL mismatches
1333    -o: start compare at this offset into the second file
1334
1335----------------------------------------
133630 September 2016. Summary of changes for version 20160930:
1337
1338
13391) ACPICA kernel-resident subsystem:
1340
1341Fixed a regression in the internal AcpiTbFindTable function where a non
1342AE_OK exception could inadvertently be returned even if the function did
1343not fail. This problem affects the following operators:
1344    DataTableRegion
1345    LoadTable
1346
1347Fixed a regression in the LoadTable operator where a load to any
1348namespace location other than the root no longer worked properly.
1349
1350Increased the maximum loop count value that will result in the
1351AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1352prevent infinite loops within the AML interpreter and thus the host OS
1353kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
13541,048,575).
1355
1356Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1357acpixf.h file. This allows hosts to easily configure the maximum loop
1358count at runtime.
1359
1360Removed an illegal character in the strtoul64.c file. This character
1361caused errors with some C compilers.
1362
1363Example Code and Data Size: These are the sizes for the OS-independent
1364acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1365debug version of the code includes the debug output trace mechanism and
1366has a much larger code and data size.
1367
1368  Current Release:
1369    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1370    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1371  Previous Release:
1372    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1373    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1374
1375
13762) iASL Compiler/Disassembler and Tools:
1377
1378Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1379the simpler ASL ElseIf keyword. During the conversion, a trailing If
1380block could be lost and missing from the disassembled output.
1381
1382iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1383the missing rule caused a parse error when using the Index operator as an
1384operand to ObjectType. This construct now compiles properly. Example:
1385    ObjectType(PKG1[4]).
1386
1387iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1388option). Previously, unresolved symbols could cause a protection fault.
1389Such symbols are now marked as unresolved in the map file.
1390
1391iASL: Implemented support to allow control method invocations as an
1392operand to the ASL DeRefOf operator. Example:
1393    DeRefOf(MTH1(Local0))
1394
1395Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1396possible _PLD buffer now includes examination of both the normal buffer
1397length (16 or 20) as well as the surrounding AML package length.
1398
1399Disassembler: Fixed a problem with the decoding of complex expressions
1400within the Divide operator for ASL+. For the case where both the quotient
1401and remainder targets are specified, the entire statement cannot be
1402disassembled. Previously, the output incorrectly contained a mix of ASL-
1403and ASL+ operators. This mixed statement causes a syntax error when
1404compiled. Example:
1405    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
1406disassembled to:
1407    Divide (INT1 + 6, 128, RSLT, QUOT)
1408
1409iASL/Tools: Added support to process AML and non-AML ACPI tables
1410consistently. For the disassembler and AcpiExec, allow all types of ACPI
1411tables (AML and data tables). For the iASL -e option, allow only AML
1412tables (DSDT/SSDT).
1413
1414----------------------------------------
141531 August 2016. Summary of changes for version 20160831:
1416
1417
14181) ACPICA kernel-resident subsystem:
1419
1420Improve support for the so-called "module-level code", which is defined
1421to be math, logical and control AML opcodes that appear outside of any
1422control method. This change improves the support by adding more opcodes
1423that can be executed in the manner. Some other issues have been solved,
1424and the ASL grammar changes to support such code under all scope
1425operators (Device, etc.) are complete. Lv Zheng.
1426
1427UEFI support: these OSL functions have been implemented. This is an
1428additional step toward supporting the AcpiExec utility natively (with
1429full hardware access) under UEFI. Marcelo Ferreira.
1430    AcpiOsReadPciConfiguration
1431    AcpiOsWritePciConfiguration
1432
1433Fixed a possible mutex error during control method auto-serialization. Lv
1434Zheng.
1435
1436Updated support for the Generic Address Structure by fully implementing
1437all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
1438Zheng.
1439
1440Updated the return value for the internal _OSI method. Instead of
14410xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
1442for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
1443implementations, and will be reflected and clarified in the next version
1444of the ACPI specification.
1445
1446Implemented two new table events that can be passed to an ACPICA table
1447handler. These events are used to indicate a table installation or
1448uninstallation. These events are used in addition to existed table load
1449and unload events. Lv Zheng.
1450
1451Implemented a cleanup for all internal string-to-integer conversions.
1452Consolidate multiple versions of this functionality and limit possible
1453bases to either 10 or 16 to simplify the code. Adds a new file,
1454utstrtoul64.
1455
1456Cleanup the inclusion order of the various compiler-specific headers.
1457This simplifies build configuration management. The compiler-specific
1458headers are now split out from the host-specific headers. Lv Zheng.
1459
1460Example Code and Data Size: These are the sizes for the OS-independent
1461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1462debug version of the code includes the debug output trace mechanism and
1463has a much larger code and data size.
1464
1465  Current Release:
1466    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1467    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1468
1469
14702) iASL Compiler/Disassembler and Tools:
1471
1472iASL/AcpiExec: Added a command line option to display the build date/time
1473of the tool (-vd). This can be useful to verify that the correct version
1474of the tools are being used.
1475
1476AML Debugger: Implemented a new subcommand ("execute predef") to execute
1477all predefined control methods and names within the current namespace.
1478This can be useful for debugging problems with ACPI tables and the ACPI
1479namespace.
1480
1481----------------------------------------
148229 July 2016. Summary of changes for version 20160729:
1483
1484
14851) ACPICA kernel-resident subsystem:
1486
1487Implemented basic UEFI support for the various ACPICA tools. This
1488includes:
14891) An OSL to implement the various AcpiOs* interfaces on UEFI.
14902) Support to obtain the ACPI tables on UEFI.
14913) Local implementation of required C library functions not available on
1492UEFI.
14934) A front-end (main) function for the tools for UEFI-related
1494initialization.
1495
1496The initial deployment of this support is the AcpiDump utility executing
1497as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
1498Current environments supported are Linux/Unix. MSVC generation is not
1499supported at this time. See the generate/efi/README file for build
1500instructions. Lv Zheng.
1501
1502Future plans include porting the AcpiExec utility to execute natively on
1503the platform with I/O and memory access. This will allow viewing/dump of
1504the platform namespace and native execution of ACPI control methods that
1505access the actual hardware. To fully implement this support, the OSL
1506functions below must be implemented with UEFI interfaces. Any community
1507help in the implementation of these functions would be appreciated:
1508    AcpiOsReadPort
1509    AcpiOsWritePort
1510    AcpiOsReadMemory
1511    AcpiOsWriteMemory
1512    AcpiOsReadPciConfiguration
1513    AcpiOsWritePciConfiguration
1514
1515Restructured and standardized the C library configuration for ACPICA,
1516resulting in the various configuration options below. This includes a
1517global restructuring of the compiler-dependent and platform-dependent
1518include files. These changes may affect the existing platform-dependent
1519configuration files on some hosts. Lv Zheng.
1520
1521The current C library configuration options appear below. For any issues,
1522it may be helpful to examine the existing compiler-dependent and
1523platform-dependent files as examples. Lv Zheng.
1524
15251) Linux kernel:
1526    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1527library.
1528    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
15292) Unix/Windows/BSD applications:
1530    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
1531library.
1532    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
15333) UEFI applications:
1534    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1535library.
1536    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
15374) UEFI applications (EDK2/StdLib):
1538    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
1539    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
1540
1541
1542AML interpreter: "module-level code" support. Allows for execution of so-
1543called "executable" AML code (math/logical operations, etc.) outside of
1544control methods not just at the module level (top level) but also within
1545any scope declared outside of a control method - Scope{}, Device{},
1546Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
1547
1548Simplified the configuration of the "maximum AML loops" global option by
1549adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
1550modified at runtime.
1551
1552
1553Example Code and Data Size: These are the sizes for the OS-independent
1554acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1555debug version of the code includes the debug output trace mechanism and
1556has a much larger code and data size.
1557
1558  Current Release:
1559    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
1560    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
1561
1562
15632) iASL Compiler/Disassembler and Tools:
1564
1565iASL: Add full support for the RASF ACPI table (RAS Features Table).
1566Includes disassembler, data table compiler, and header support.
1567
1568iASL Expand "module-level code" support. Allows for
1569compilation/disassembly of so-called "executable" AML code (math/logical
1570operations, etc.) outside of control methods not just at the module level
1571(top level) but also within any scope declared outside of a control
1572method - Scope{}, Device{}, Processor{}, PowerResource{}, and
1573ThermalZone{}.
1574
1575AcpiDump: Added support for dumping all SSDTs on newer versions of
1576Windows. These tables are now easily available -- SSDTs are not available
1577through the registry on older versions.
1578
1579----------------------------------------
158027 May 2016. Summary of changes for version 20160527:
1581
1582
15831) ACPICA kernel-resident subsystem:
1584
1585Temporarily reverted the new arbitrary bit length/alignment support in
1586AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
1587a number of regressions with the new code that need to be fully resolved
1588and tested before this support can be finally integrated into ACPICA.
1589Apologies for any inconveniences these issues may have caused.
1590
1591The ACPI message macros are not configurable (ACPI_MSG_ERROR,
1592ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
1593and ACPI_MSG_BIOS_WARNING). Lv Zheng.
1594
1595Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
1596option. Adds a new return macro, return_STR. Junk-uk Kim.
1597
1598Example Code and Data Size: These are the sizes for the OS-independent
1599acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1600debug version of the code includes the debug output trace mechanism and
1601has a much larger code and data size.
1602
1603  Current Release:
1604    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
1605    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1606  Previous Release:
1607    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1608    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
1609
1610----------------------------------------
161122 April 2016. Summary of changes for version 20160422:
1612
16131) ACPICA kernel-resident subsystem:
1614
1615Fixed a regression in the GAS (generic address structure) arbitrary bit
1616support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
1617and incorrect return values. Lv Zheng. ACPICA BZ 1270.
1618
1619ACPI 6.0: Added support for new/renamed resource macros. One new argument
1620was added to each of these macros, and the original name has been
1621deprecated. The AML disassembler will always disassemble to the new
1622names. Support for the new macros was added to iASL, disassembler,
1623resource manager, and the acpihelp utility. ACPICA BZ 1274.
1624
1625    I2cSerialBus  -> I2cSerialBusV2
1626    SpiSerialBus  -> SpiSerialBusV2
1627    UartSerialBus -> UartSerialBusV2
1628
1629ACPI 6.0: Added support for a new integer field that was appended to the
1630package object returned by the _BIX method. This adds iASL compile-time
1631and AML runtime error checking. ACPICA BZ 1273.
1632
1633ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
1634Subspace Type2" (Headers, Disassembler, and data table compiler).
1635
1636Example Code and Data Size: These are the sizes for the OS-independent
1637acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1638debug version of the code includes the debug output trace mechanism and
1639has a much larger code and data size.
1640
1641  Current Release:
1642    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1643    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1644  Previous Release:
1645    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1646    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1647
1648
16492) iASL Compiler/Disassembler and Tools:
1650
1651iASL: Implemented an ASL grammar extension to allow/enable executable
1652"module-level code" to be created and executed under the various
1653operators that create new scopes. This type of AML code is already
1654supported in all known AML interpreters, and the grammar change will
1655appear in the next version of the ACPI specification. Simplifies the
1656conditional runtime creation of named objects under these object types:
1657
1658    Device
1659    PowerResource
1660    Processor
1661    Scope
1662    ThermalZone
1663
1664iASL: Implemented a new ASL extension, a "For" loop macro to add greater
1665ease-of-use to the ASL language. The syntax is similar to the
1666corresponding C operator, and is implemented with the existing AML While
1667opcode -- thus requiring no changes to existing AML interpreters.
1668
1669    For (Initialize, Predicate, Update) {TermList}
1670
1671Grammar:
1672    ForTerm :=
1673        For (
1674            Initializer    // Nothing | TermArg => ComputationalData
1675            Predicate      // Nothing | TermArg => ComputationalData
1676            Update         // Nothing | TermArg => ComputationalData
1677        ) {TermList}
1678
1679
1680iASL: The _HID/_ADR detection and validation has been enhanced to search
1681under conditionals in order to allow these objects to be conditionally
1682created at runtime.
1683
1684iASL: Fixed several issues with the constant folding feature. The
1685improvement allows better detection and resolution of statements that can
1686be folded at compile time. ACPICA BZ 1266.
1687
1688iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
1689conversion to the ASL ElseIf operator where incorrect ASL code could be
1690generated.
1691
1692iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
1693sometimes an extra (and extraneous) set of parentheses were emitted for
1694some combinations of operators. Although this did not cause any problems
1695with recompilation of the disassembled code, it made the code more
1696difficult to read. David Box. ACPICA BZ 1231.
1697
1698iASL: Changed to ignore the unreferenced detection for predefined names
1699of resource descriptor elements, when the resource descriptor is
1700created/defined within a control method.
1701
1702iASL: Disassembler: Fix a possible fault with externally declared Buffer
1703objects.
1704
1705----------------------------------------
170618 March 2016. Summary of changes for version 20160318:
1707
17081) ACPICA kernel-resident subsystem:
1709
1710Added support for arbitrary bit lengths and bit offsets for registers
1711defined by the Generic Address Structure. Previously, only aligned bit
1712lengths of 8/16/32/64 were supported. This was sufficient for many years,
1713but recently some machines have been seen that require arbitrary bit-
1714level support. ACPICA BZ 1240. Lv Zheng.
1715
1716Fixed an issue where the \_SB._INI method sometimes must be evaluated
1717before any _REG methods are evaluated. Lv Zheng.
1718
1719Implemented several changes related to ACPI table support
1720(Headers/Disassembler/TableCompiler):
1721NFIT: For ACPI 6.1, updated to add some additional new fields and
1722constants.
1723FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
17246).
1725DMAR: Added new constants per the 10/2014 DMAR spec.
1726IORT: Added new subtable per the 10/2015 IORT spec.
1727HEST: For ACPI 6.1, added new constants and new subtable.
1728DBG2: Added new constants per the 12/2015 DBG2 spec.
1729FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
1730ACPICA BZ 1249.
1731ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
1732
1733Updated header support for the DMAR table to match the current version of
1734the related spec.
1735
1736Added extensions to the ASL Concatenate operator to allow any ACPI object
1737to be passed as an operand. Any object other than Integer/String/Buffer
1738simply returns a string containing the object type. This extends the
1739usefulness of the Printf macros. Previously, Concatenate would abort the
1740control method if a non-data object was encountered.
1741
1742ACPICA source code: Deployed the C "const" keyword across the source code
1743where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
1744
1745Example Code and Data Size: These are the sizes for the OS-independent
1746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1747debug version of the code includes the debug output trace mechanism and
1748has a much larger code and data size.
1749
1750  Current Release:
1751    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1752    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1753  Previous Release:
1754    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1755    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1756
1757
17582) iASL Compiler/Disassembler and Tools:
1759
1760iASL/Disassembler: Improved the heuristic used to determine the number of
1761arguments for an externally defined control method (a method in another
1762table). Although this is an improvement, there is no deterministic way to
1763"guess" the number of method arguments. Only the ACPI 6.0 External opcode
1764will completely solve this problem as it is deployed (automatically) in
1765newer BIOS code.
1766
1767iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
1768statements that could cause errors when the disassembled file is
1769compiled. ACPICA BZ 1243. David Box.
1770
1771iASL: Fixed a regression caused by the merger of the two versions of the
1772local strtoul64. Because of a dependency on a global variable, strtoul64
1773could return an error for integers greater than a 32-bit value. ACPICA BZ
17741260.
1775
1776iASL: Fixed a regression where a fault could occur for an ASL Return
1777statement if it invokes a control method that is not resolved. ACPICA BZ
17781264.
1779
1780AcpiXtract: Improved input file validation: detection of binary files and
1781non-acpidump text files.
1782
1783----------------------------------------
178412 February 2016. Summary of changes for version 20160212:
1785
17861) ACPICA kernel-resident subsystem:
1787
1788Implemented full support for the ACPI 6.1 specification (released in
1789January). This version of the specification is available at:
1790http://www.uefi.org/specifications
1791
1792Only a relatively small number of changes were required in ACPICA to
1793support ACPI 6.1, in these areas:
1794- New predefined names
1795- New _HID values
1796- A new subtable for HEST
1797- A few other header changes for new values
1798
1799Ensure \_SB_._INI is executed before any _REG methods are executed. There
1800appears to be existing BIOS code that relies on this behavior. Lv Zheng.
1801
1802Reverted a change made in version 20151218 which enabled method
1803invocations to be targets of various ASL operators (SuperName and Target
1804grammar elements). While the new behavior is supported by the ACPI
1805specification, other AML interpreters do not support this behavior and
1806never will. The ACPI specification will be updated for ACPI 6.2 to remove
1807this support. Therefore, the change was reverted to the original ACPICA
1808behavior.
1809
1810ACPICA now supports the GCC 6 compiler.
1811
1812Current Release: (Note: build changes increased sizes)
1813    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1814    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1815Previous Release:
1816    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1817    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
1818
1819
18202) iASL Compiler/Disassembler and Tools:
1821
1822Completed full support for the ACPI 6.0 External() AML opcode. The
1823compiler emits an external AML opcode for each ASL External statement.
1824This opcode is used by the disassembler to assist with the disassembly of
1825external control methods by specifying the required number of arguments
1826for the method. AML interpreters do not use this opcode. To ensure that
1827interpreters do not even see the opcode, a block of one or more external
1828opcodes is surrounded by an "If(0)" construct. As this feature becomes
1829commonly deployed in BIOS code, the ability of disassemblers to correctly
1830disassemble AML code will be greatly improved. David Box.
1831
1832iASL: Implemented support for an optional cross-reference output file.
1833The -lx option will create a the cross-reference file with the suffix
1834"xrf". Three different types of cross-reference are created in this file:
1835- List of object references made from within each control method
1836- Invocation (caller) list for each user-defined control method
1837- List of references to each non-method object in the namespace
1838
1839iASL: Method invocations as ASL Target operands are now disallowed and
1840flagged as errors in preparation for ACPI 6.2 (see the description of the
1841problem above).
1842
1843----------------------------------------
18448 January 2016. Summary of changes for version 20160108:
1845
18461) ACPICA kernel-resident subsystem:
1847
1848Updated all ACPICA copyrights and signons to 2016: Added the 2016
1849copyright to all source code module headers and utility/tool signons.
1850This includes the standard Linux dual-license header. This affects
1851virtually every file in the ACPICA core subsystem, iASL compiler, all
1852ACPICA utilities, and the ACPICA test suite.
1853
1854Fixed a regression introduced in version 20151218 concerning the
1855execution of so-called module-level ASL/AML code. Namespace objects
1856created under a module-level If() construct were not properly/fully
1857entered into the namespace and could cause an interpreter fault when
1858accessed.
1859
1860Example Code and Data Size: These are the sizes for the OS-independent
1861acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1862debug version of the code includes the debug output trace mechanism and
1863has a much larger code and data size.
1864
1865Current Release:
1866    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1867    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
1868  Previous Release:
1869    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1870    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1871
1872
18732) iASL Compiler/Disassembler and Tools:
1874
1875Fixed a problem with the compilation of the GpioIo and GpioInt resource
1876descriptors. The _PIN field name was incorrectly defined to be an array
1877of 32-bit values, but the _PIN values are in fact 16 bits each. This
1878would cause incorrect bit width warnings when using Word (16-bit) fields
1879to access the descriptors.
1880
1881
1882----------------------------------------
188318 December 2015. Summary of changes for version 20151218:
1884
18851) ACPICA kernel-resident subsystem:
1886
1887Implemented per-AML-table execution of "module-level code" as individual
1888ACPI tables are loaded into the namespace during ACPICA initialization.
1889In other words, any module-level code within an AML table is executed
1890immediately after the table is loaded, instead of batched and executed
1891after all of the tables have been loaded. This provides compatibility
1892with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
1893David Box.
1894
1895To fully support the feature above, the default operation region handlers
1896for the SystemMemory, SystemIO, and PCI_Config address spaces are now
1897installed before any ACPI tables are loaded. This enables module-level
1898code to access these address spaces during the table load and module-
1899level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
1900Box.
1901
1902Implemented several changes to the internal _REG support in conjunction
1903with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
1904utilities for the changes above. Although these tools were changed, host
1905operating systems that simply use the default handlers for SystemMemory,
1906SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
1907
1908For example, in the code below, DEV1 is conditionally added to the
1909namespace by the DSDT via module-level code that accesses an operation
1910region. The SSDT references DEV1 via the Scope operator. DEV1 must be
1911created immediately after the DSDT is loaded in order for the SSDT to
1912successfully reference DEV1. Previously, this code would cause an
1913AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
1914fully supported by ACPICA.
1915
1916    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
1917    {
1918        OperationRegion (OPR1, SystemMemory, 0x400, 32)
1919        Field (OPR1, AnyAcc, NoLock, Preserve)
1920        {
1921            FLD1, 1
1922        }
1923        If (FLD1)
1924        {
1925            Device (\DEV1)
1926            {
1927            }
1928        }
1929    }
1930    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
1931    {
1932        External (\DEV1, DeviceObj)
1933        Scope (\DEV1)
1934        {
1935        }
1936    }
1937
1938Fixed an AML interpreter problem where control method invocations were
1939not handled correctly when the invocation was itself a SuperName argument
1940to another ASL operator. In these cases, the method was not invoked.
1941ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
1942argument:
1943    Store
1944    Acquire, Wait
1945    CondRefOf, RefOf
1946    Decrement, Increment
1947    Load, Unload
1948    Notify
1949    Signal, Release, Reset
1950    SizeOf
1951
1952Implemented automatic String-to-ObjectReference conversion support for
1953packages returned by predefined names (such as _DEP). A common BIOS error
1954is to add double quotes around an ObjectReference namepath, which turns
1955the reference into an unexpected string object. This support detects the
1956problem and corrects it before the package is returned to the caller that
1957invoked the method. Lv Zheng.
1958
1959Implemented extensions to the Concatenate operator. Concatenate now
1960accepts any type of object, it is not restricted to simply
1961Integer/String/Buffer. For objects other than these 3 basic data types,
1962the argument is treated as a string containing the name of the object
1963type. This expands the utility of Concatenate and the Printf/Fprintf
1964macros. ACPICA BZ 1222.
1965
1966Cleaned up the output of the ASL Debug object. The timer() value is now
1967optional and no longer emitted by default. Also, the basic data types of
1968Integer/String/Buffer are simply emitted as their values, without a data
1969type string -- since the data type is obvious from the output. ACPICA BZ
19701221.
1971
1972Example Code and Data Size: These are the sizes for the OS-independent
1973acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1974debug version of the code includes the debug output trace mechanism and
1975has a much larger code and data size.
1976
1977  Current Release:
1978    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1979    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1980  Previous Release:
1981    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1982    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1983
1984
19852) iASL Compiler/Disassembler and Tools:
1986
1987iASL: Fixed some issues with the ASL Include() operator. This operator
1988was incorrectly defined in the iASL parser rules, causing a new scope to
1989be opened for the code within the include file. This could lead to
1990several issues, including allowing ASL code that is technically illegal
1991and not supported by AML interpreters. Note, this does not affect the
1992related #include preprocessor operator. ACPICA BZ 1212.
1993
1994iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
1995operator is essentially an ASL macro since there is no AML opcode
1996associated with it. The code emitted by the iASL compiler for ElseIf is
1997an Else opcode followed immediately by an If opcode. The disassembler
1998will now emit an ElseIf if it finds an Else immediately followed by an
1999If. This simplifies the decoded ASL, especially for deeply nested
2000If..Else and large Switch constructs. Thus, the disassembled code more
2001closely follows the original source ASL. ACPICA BZ 1211. Example:
2002
2003    Old disassembly:
2004        Else
2005        {
2006            If (Arg0 == 0x02)
2007            {
2008                Local0 = 0x05
2009            }
2010        }
2011
2012    New disassembly:
2013        ElseIf (Arg0 == 0x02)
2014        {
2015            Local0 = 0x05
2016        }
2017
2018AcpiExec: Added support for the new module level code behavior and the
2019early region installation. This required a small change to the
2020initialization, since AcpiExec must install its own operation region
2021handlers.
2022
2023AcpiExec: Added support to make the debug object timer optional. Default
2024is timer disabled. This cleans up the debug object output -- the timer
2025data is rarely used.
2026
2027AcpiExec: Multiple ACPI tables are now loaded in the order that they
2028appear on the command line. This can be important when there are
2029interdependencies/references between the tables.
2030
2031iASL/Templates. Add support to generate template files with multiple
2032SSDTs within a single output file. Also added ommand line support to
2033specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
20341223, 1225.
2035
2036
2037----------------------------------------
203824 November 2015. Summary of changes for version 20151124:
2039
20401) ACPICA kernel-resident subsystem:
2041
2042Fixed a possible regression for a previous update to FADT handling. The
2043FADT no longer has a fixed table ID, causing some issues with code that
2044was hardwired to a specific ID. Lv Zheng.
2045
2046Fixed a problem where the method auto-serialization could interfere with
2047the current SyncLevel. This change makes the auto-serialization support
2048transparent to the SyncLevel support and management.
2049
2050Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2051interface is intended for early access to the namespace during the
2052initial namespace device discovery walk. The _SUB method has been seen to
2053access operation regions in some cases, causing errors because the
2054operation regions are not fully initialized.
2055
2056AML Debugger: Fixed some issues with the terminate/quit/exit commands
2057that can cause faults. Lv Zheng.
2058
2059AML Debugger: Add thread ID support so that single-step mode only applies
2060to the AML Debugger thread. This prevents runtime errors within some
2061kernels. Lv Zheng.
2062
2063Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2064methods that are invoked by this interface are optional, removed warnings
2065emitted for the case where one or more of these methods do not exist.
2066ACPICA BZ 1208, original change by Prarit Bhargava.
2067
2068Made a major pass through the entire ACPICA source code base to
2069standardize formatting that has diverged a bit over time. There are no
2070functional changes, but this will of course cause quite a few code
2071differences from the previous ACPICA release.
2072
2073Example Code and Data Size: These are the sizes for the OS-independent
2074acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2075debug version of the code includes the debug output trace mechanism and
2076has a much larger code and data size.
2077
2078  Current Release:
2079    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2080    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2081  Previous Release:
2082    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2083    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2084
2085
20862) iASL Compiler/Disassembler and Tools:
2087
2088iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2089definition blocks within a single ASL file and the resulting AML file.
2090Support for this type of file was also added to the various tools that
2091use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2092example code below shows two definition blocks within the same file:
2093
2094    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
20950x12345678)
2096    {
2097    }
2098    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2099    {
2100    }
2101
2102iASL: Enhanced typechecking for the Name() operator. All expressions for
2103the value of the named object must be reduced/folded to a single constant
2104at compile time, as per the ACPI specification (the AML definition of
2105Name()).
2106
2107iASL: Fixed some code indentation issues for the -ic and -ia options (C
2108and assembly headers). Now all emitted code correctly begins in column 1.
2109
2110iASL: Added an error message for an attempt to open a Scope() on an
2111object defined in an SSDT. The DSDT is always loaded into the namespace
2112first, so any attempt to open a Scope on an SSDT object will fail at
2113runtime.
2114
2115
2116----------------------------------------
211730 September 2015. Summary of changes for version 20150930:
2118
21191) ACPICA kernel-resident subsystem:
2120
2121Debugger: Implemented several changes and bug fixes to assist support for
2122the in-kernel version of the AML debugger. Lv Zheng.
2123- Fix the "predefined" command for in-kernel debugger.
2124- Do not enter debug command loop for the help and version commands.
2125- Disallow "execute" command during execution/single-step of a method.
2126
2127Interpreter: Updated runtime typechecking for all operators that have
2128target operands. The operand is resolved and validated that it is legal.
2129For example, the target cannot be a non-data object such as a Device,
2130Mutex, ThermalZone, etc., as per the ACPI specification.
2131
2132Debugger: Fixed the double-mutex user I/O handshake to work when local
2133deadlock detection is enabled.
2134
2135Debugger: limited display of method locals and arguments (LocalX and
2136ArgX) to only those that have actually been initialized. This prevents
2137lines of extraneous output.
2138
2139Updated the definition of the NFIT table to correct the bit polarity of
2140one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2141
2142Example Code and Data Size: These are the sizes for the OS-independent
2143acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2144debug version of the code includes the debug output trace mechanism and
2145has a much larger code and data size.
2146
2147  Current Release:
2148    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2149    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2150  Previous Release:
2151    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2152    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2153
2154
21552) iASL Compiler/Disassembler and Tools:
2156
2157iASL: Improved the compile-time typechecking for operands of many of the
2158ASL operators:
2159
2160-- Added an option to disable compiler operand/operator typechecking (-
2161ot).
2162
2163-- For the following operators, the TermArg operands are now validated
2164when possible to be Integer data objects: BankField, OperationRegion,
2165DataTableRegion, Buffer, and Package.
2166
2167-- Store (Source, Target): Both the source and target operands are
2168resolved and checked that the operands are both legal. For example,
2169neither operand can be a non-data object such as a Device, Mutex,
2170ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2171operator can be used to store an object to any type of target object.
2172
2173-- Store (Source, Target): If the source is a Package object, the target
2174must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2175is a Package, the source must also be a Package.
2176
2177-- Store (Source, Target): A warning is issued if the source and target
2178resolve to the identical named object.
2179
2180-- Store (Source, <method invocation>): An error is generated for the
2181target method invocation, as this construct is not supported by the AML
2182interpreter.
2183
2184-- For all ASL math and logic operators, the target operand must be a
2185data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2186includes the function return value also.
2187
2188-- External declarations are also included in the typechecking where
2189possible. External objects defined using the UnknownObj keyword cannot be
2190typechecked, however.
2191
2192iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2193operator:
2194- Legacy code: Index(PKG1, 3)
2195- New ASL+ code: PKG1[3]
2196This completes the ACPI 6.0 ASL+ support as it was the only operator not
2197supported.
2198
2199iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2200spaces were inadvertently appended to the filename, causing file access
2201and deletion problems on some systems.
2202
2203ASL Test Suite (ASLTS): Updated the master makefile to generate all
2204possible compiler output files when building the test suite -- thus
2205exercising these features of the compiler. These files are automatically
2206deleted when the test suite exits.
2207
2208
2209----------------------------------------
221018 August 2015. Summary of changes for version 20150818:
2211
22121) ACPICA kernel-resident subsystem:
2213
2214Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2215Zheng. ACPICA BZ 1186.
2216
2217Completed development to ensure that the ACPICA Disassembler and Debugger
2218are fully standalone components of ACPICA. Removed cross-component
2219dependences. Lv Zheng.
2220
2221The max-number-of-AML-loops is now runtime configurable (previously was
2222compile-time only). This is essentially a loop timeout to force-abort
2223infinite AML loops. ACPCIA BZ 1192.
2224
2225Debugger: Cleanup output to dump ACPI names and namepaths without any
2226trailing underscores. Lv Zheng. ACPICA BZ 1135.
2227
2228Removed unnecessary conditional compilations across the Debugger and
2229Disassembler components where entire modules could be left uncompiled.
2230
2231The aapits test is deprecated and has been removed from the ACPICA git
2232tree. The test has never been completed and has not been maintained, thus
2233becoming rather useless. ACPICA BZ 1015, 794.
2234
2235A batch of small changes to close bugzilla and other reports:
2236- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2237- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2238- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2239- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2240Moore.
2241- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2242ACPICA BZ 1184.
2243- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2244operators.
2245- Debugger: Split debugger initialization/termination interfaces. Lv
2246Zheng.
2247- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2248identification.
2249- AcpiExec: Add debug message during _REG method phase during table
2250load/init.
2251- AcpiNames: Fix a regression where some output was missing and no longer
2252emitted.
2253- Debugger: General cleanup and simplification. Lv Zheng.
2254- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2255
2256Example Code and Data Size: These are the sizes for the OS-independent
2257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2258debug version of the code includes the debug output trace mechanism and
2259has a much larger code and data size.
2260
2261  Current Release:
2262    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2263    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2264  Previous Release:
2265    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2266    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2267
2268
22692) iASL Compiler/Disassembler and Tools:
2270
2271AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2272were not handled properly and caused load errors. Now, properly invoke
2273and use the ACPICA auto-reallocate mechanism for ACPI table data
2274structures. ACPICA BZ 1188
2275
2276AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2277BZ 1190.
2278
2279AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2280AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2281executed during initialization. ACPICA BZ 1187, 1189.
2282
2283iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2284that corresponds to each disassembled ASL statement, to simplify
2285debugging. ACPICA BZ 1191.
2286
2287Debugger: Add option to the "objects" command to display a summary of the
2288current namespace objects (Object type and count). This is displayed if
2289the command is entered with no arguments.
2290
2291AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2292
2293
2294----------------------------------------
229517 July 2015. Summary of changes for version 20150717:
2296
22971) ACPICA kernel-resident subsystem:
2298
2299Improved the partitioning between the Debugger and Disassembler
2300components. This allows the Debugger to be used standalone within kernel
2301code without the Disassembler (which is used for single stepping also).
2302This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2303
2304Debugger: Implemented a new command to trace the execution of control
2305methods (Trace). This is especially useful for the in-kernel version of
2306the debugger when file I/O may not be available for method trace output.
2307See the ACPICA reference for more information. Lv Zheng.
2308
2309Moved all C library prototypes (used for the local versions of these
2310functions when requested) to a new header, acclib.h
2311Cleaned up the use of non-ANSI C library functions. These functions are
2312implemented locally in ACPICA. Moved all such functions to a common
2313source file, utnonansi.c
2314
2315Debugger: Fixed a problem with the "!!" command (get last command
2316executed) where the debugger could enter an infinite loop and eventually
2317crash.
2318
2319Removed the use of local macros that were used for some of the standard C
2320library functions to automatically cast input parameters. This mostly
2321affected the is* functions where the input parameter is defined to be an
2322int. This required a few modifications to the main ACPICA source code to
2323provide casting for these functions and eliminate possible compiler
2324warnings for these parameters.
2325
2326Across the source code, added additional status/error checking to resolve
2327issues discovered by static source code analysis tools such as Coverity.
2328
2329Example Code and Data Size: These are the sizes for the OS-independent
2330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2331debug version of the code includes the debug output trace mechanism and
2332has a much larger code and data size.
2333
2334  Current Release:
2335    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2336    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2337  Previous Release:
2338    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2339    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2340
2341
23422) iASL Compiler/Disassembler and Tools:
2343
2344iASL: Fixed a regression where the device map file feature no longer
2345worked properly when used in conjunction with the disassembler. It only
2346worked properly with the compiler itself.
2347
2348iASL: Implemented a new warning for method LocalX variables that are set
2349but never used (similar to a C compiler such as gcc). This also applies
2350to ArgX variables that are not defined by the parent method, and are
2351instead (legally) used as local variables.
2352
2353iASL/Preprocessor: Finished the pass-through of line numbers from the
2354preprocessor to the compiler. This ensures that compiler errors/warnings
2355have the correct original line numbers and filenames, regardless of any
2356#include files.
2357
2358iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2359pass-through of comments to the preprocessor output file (which becomes
2360the compiler input file). Also fixed a problem with // comments that
2361appear after a math expression.
2362
2363iASL: Added support for the TCPA server table to the table compiler and
2364template generator. (The client table was already previously supported)
2365
2366iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2367identify the iASL compiler.
2368
2369Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2370multiple times. The new names are ACPI_SIGN_NEGATIVE and
2371ACPI_SIGN_POSITIVE.
2372
2373AcpiHelp: Update to expand help messages for the iASL preprocessor
2374directives.
2375
2376
2377----------------------------------------
237819 June 2015. Summary of changes for version 20150619:
2379
2380Two regressions in version 20150616 have been addressed:
2381
2382Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2383etc.) This update changes ACPICA to only use the standard headers for
2384functions, or the prototypes for the local versions of the C library
2385functions. Across the source code, this required some additional casts
2386for some Clib invocations for portability. Moved all local prototypes to
2387a new file, acclib.h
2388
2389Fixes several problems with recent changes to the handling of the FACS
2390table that could cause some systems not to boot.
2391
2392
2393----------------------------------------
239416 June 2015. Summary of changes for version 20150616:
2395
2396
23971) ACPICA kernel-resident subsystem:
2398
2399Across the entire ACPICA source code base, the various macros for the C
2400library functions (such as ACPI_STRLEN, etc.) have been removed and
2401replaced by the standard C library names (strlen, etc.) The original
2402purpose for these macros is no longer applicable. This simplification
2403reduces the number of macros used in the ACPICA source code
2404significantly, improving readability and maintainability.
2405
2406Implemented support for a new ACPI table, the OSDT. This table, the
2407"override" SDT, can be loaded directly by the host OS at boot time. It
2408enables the replacement of existing namespace objects that were installed
2409via the DSDT and/or SSDTs. The primary purpose for this is to replace
2410buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
2411for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
2412Moore.
2413
2414Added support for systems with (improperly) two FACS tables -- a "32-bit"
2415table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
2416X field). This change will support both automatically. There continues to
2417be systems found with this issue. This support requires a change to the
2418AcpiSetFirmwareWakingVector interface. Also, a public global variable has
2419been added to allow the host to select which FACS is desired
2420(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
2421details Lv Zheng.
2422
2423Added a new feature to allow for systems that do not contain an FACS.
2424Although this is already supported on hardware-reduced platforms, the
2425feature has been extended for all platforms. The reasoning is that we do
2426not want to abort the entire ACPICA initialization just because the
2427system is seriously buggy and has no FACS.
2428
2429Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
2430not correctly transcribed from the ACPI specification in ACPICA version
243120150515.
2432
2433Implemented support for the _CLS object in the AcpiGetObjectInfo external
2434interface.
2435
2436Updated the definitions of the TCPA and TPM2 ACPI tables to the more
2437recent TCG ACPI Specification, December 14, 2014. Table disassembler and
2438compiler also updated. Note: The TCPA "server" table is not supported by
2439the disassembler/table-compiler at this time.
2440
2441ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2442
2443Example Code and Data Size: These are the sizes for the OS-independent
2444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2445debug version of the code includes the debug output trace mechanism and
2446has a much larger code and data size.
2447
2448  Current Release:
2449    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2450    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2451  Previous Release:
2452    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2453    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2454
2455
24562) iASL Compiler/Disassembler and Tools:
2457
2458Disassembler: Fixed a problem with the new symbolic operator disassembler
2459where incorrect ASL code could be emitted in some cases for the "non-
2460commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
2461ShiftRight. The actual problem cases seem to be rather unusual in common
2462ASL code, however. David Box.
2463
2464Modified the linux version of acpidump to obtain ACPI tables from not
2465just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
2466Zheng.
2467
2468iASL: Fixed a problem where the user preprocessor output file (.i)
2469contained extra data that was not expected. The compiler was using this
2470file as a temporary file and passed through #line directives in order to
2471keep compiler error messages in sync with the input file and line number
2472across multiple include files. The (.i) is no longer a temporary file as
2473the compiler uses a new, different file for the original purpose.
2474
2475iASL: Fixed a problem where comments within the original ASL source code
2476file were not passed through to the preprocessor output file, nor any
2477listing files.
2478
2479iASL: Fixed some issues for the handling of the "#include" preprocessor
2480directive and the similar (but not the same) "Include" ASL operator.
2481
2482iASL: Add support for the new OSDT in both the disassembler and compiler.
2483
2484iASL: Fixed a problem with the constant folding support where a Buffer
2485object could be incorrectly generated (incorrectly formed) during a
2486conversion to a Store() operator.
2487
2488AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
2489description text for the _REV predefined name. _REV now permanently
2490returns 2, as per the ACPI 6.0 specification.
2491
2492Debugger: Enhanced the output of the Debug ASL object for references
2493produced by the Index operator. For Buffers and strings, only output the
2494actual byte pointed to by the index. For packages, only print the single
2495package element decoded by the index. Previously, the entire
2496buffer/string/package was emitted.
2497
2498iASL/Table-compiler: Fixed a regression where the "generic" data types
2499were no longer recognized, causing errors.
2500
2501
2502----------------------------------------
250315 May 2015. Summary of changes for version 20150515:
2504
2505This release implements most of ACPI 6.0 as described below.
2506
25071) ACPICA kernel-resident subsystem:
2508
2509Implemented runtime argument checking and return value checking for all
2510new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
2511_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2512
2513Example Code and Data Size: These are the sizes for the OS-independent
2514acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2515debug version of the code includes the debug output trace mechanism and
2516has a much larger code and data size.
2517
2518  Current Release:
2519    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2520    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2521  Previous Release:
2522    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2523    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2524
2525
25262) iASL Compiler/Disassembler and Tools:
2527
2528iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
2529names (argument count validation and return value typechecking.)
2530
2531iASL disassembler and table compiler: implemented support for all new
2532ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
2533
2534iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
2535tables: FADT, MADT.
2536
2537iASL preprocessor: Added a new directive to enable inclusion of binary
2538blobs into ASL code. The new directive is #includebuffer. It takes a
2539binary file as input and emits a named ascii buffer object into the ASL
2540code.
2541
2542AcpiHelp: Added support for all new ACPI 6.0 predefined names.
2543
2544AcpiHelp: Added a new option, -d, to display all iASL preprocessor
2545directives.
2546
2547AcpiHelp: Added a new option, -t, to display all known/supported ACPI
2548tables.
2549
2550
2551----------------------------------------
255210 April 2015. Summary of changes for version 20150410:
2553
2554Reverted a change introduced in version 20150408 that caused
2555a regression in the disassembler where incorrect operator
2556symbols could be emitted.
2557
2558
2559----------------------------------------
256008 April 2015. Summary of changes for version 20150408:
2561
2562
25631) ACPICA kernel-resident subsystem:
2564
2565Permanently set the return value for the _REV predefined name. It now
2566returns 2 (was 5). This matches other ACPI implementations. _REV will be
2567deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
2568for ACPI 2.0 and later. It should never be used to differentiate or
2569identify operating systems.
2570
2571Added the "Windows 2015" string to the _OSI support. ACPICA will now
2572return TRUE to a query with this string.
2573
2574Fixed several issues with the local version of the printf function.
2575
2576Added the C99 compiler option (-std=c99) to the Unix makefiles.
2577
2578  Current Release:
2579    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
2580    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
2581  Previous Release:
2582    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2583    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2584
2585
25862) iASL Compiler/Disassembler and Tools:
2587
2588iASL: Implemented an enhancement to the constant folding feature to
2589transform the parse tree to a simple Store operation whenever possible:
2590    Add (2, 3, X) ==> is converted to: Store (5, X)
2591    X = 2 + 3     ==> is converted to: Store (5, X)
2592
2593Updated support for the SLIC table (Software Licensing Description Table)
2594in both the Data Table compiler and the disassembler. The SLIC table
2595support now conforms to "Microsoft Software Licensing Tables (SLIC and
2596MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
2597following the ACPI header is now defined to be "Proprietary Data", and as
2598such, can only be entered or displayed as a hex data block.
2599
2600Implemented full support for the MSDM table as described in the document
2601above. Note: The format of MSDM is similar to SLIC. Any MSDM data
2602following the ACPI header is defined to be "Proprietary Data", and can
2603only be entered or displayed as a hex data block.
2604
2605Implemented the -Pn option for the iASL Table Compiler (was only
2606implemented for the ASL compiler). This option disables the iASL
2607preprocessor.
2608
2609Disassembler: For disassembly of Data Tables, added a comment field
2610around the Ascii equivalent data that is emitted as part of the "Raw
2611Table Data" block. This prevents the iASL Preprocessor from possible
2612confusion if/when the table is compiled.
2613
2614Disassembler: Added an option (-df) to force the disassembler to assume
2615that the table being disassembled contains valid AML. This feature is
2616useful for disassembling AML files that contain ACPI signatures other
2617than DSDT or SSDT (such as OEMx or other signatures).
2618
2619Changes for the EFI version of the tools:
26201) Fixed a build error/issue
26212) Fixed a cast warning
2622
2623iASL: Fixed a path issue with the __FILE__ operator by making the
2624directory prefix optional within the internal SplitInputFilename
2625function.
2626
2627Debugger: Removed some unused global variables.
2628
2629Tests: Updated the makefile for proper generation of the AAPITS suite.
2630
2631
2632----------------------------------------
263304 February 2015. Summary of changes for version 20150204:
2634
2635ACPICA kernel-resident subsystem:
2636
2637Updated all ACPICA copyrights and signons to 2014. Added the 2014
2638copyright to all module headers and signons, including the standard Linux
2639header. This affects virtually every file in the ACPICA core subsystem,
2640iASL compiler, all ACPICA utilities, and the test suites.
2641
2642Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
2643A raw gpe handling mechanism was created to allow better handling of GPE
2644storms that aren't easily managed by the normal handler. The raw handler
2645allows disabling/renabling of the the GPE so that interrupt storms can be
2646avoided in cases where events cannot be timely serviced. In this
2647scenario, handlers should use the AcpiSetGpe() API to disable/enable the
2648GPE. This API will leave the reference counts undisturbed, thereby
2649preventing unintentional clearing of the GPE when the intent in only to
2650temporarily disable it. Raw handlers allow enabling and disabling of a
2651GPE by removing GPE register locking. As such, raw handlers much provide
2652their own locks while using GPE API's to protect access to GPE data
2653structures.
2654Lv Zheng
2655
2656Events: Always modify GPE registers under the GPE lock.
2657Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
2658values. Reported as bug by joe.liu@apple.com.
2659
2660Unix makefiles: Separate option to disable optimizations and
2661_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
2662NOOPT disable option and creates a separate flag (NOFORTIFY) for this
2663purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
2664errors when building ACPICA. This allows disabling the option without
2665also having to disable optimazations.
2666David Box
2667
2668  Current Release:
2669    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2670    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
2671
2672--
2673--------------------------------------
267407 November 2014. Summary of changes for version 20141107:
2675
2676This release is available at https://acpica.org/downloads
2677
2678This release introduces and implements language extensions to ASL that
2679provide support for symbolic ("C-style") operators and expressions. These
2680language extensions are known collectively as ASL+.
2681
2682
26831) iASL Compiler/Disassembler and Tools:
2684
2685Disassembler: Fixed a problem with disassembly of the UartSerialBus
2686macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
2687Box.
2688
2689Disassembler: Fixed the Unicode macro support to add escape sequences.
2690All non-printable ASCII values are emitted as escape sequences, as well
2691as the standard escapes for quote and backslash. Ensures that the
2692disassembled macro can be correctly recompiled.
2693
2694iASL: Added Printf/Fprintf macros for formatted output. These macros are
2695translated to existing AML Concatenate and Store operations. Printf
2696writes to the ASL Debug object. Fprintf allows the specification of an
2697ASL name as the target. Only a single format specifier is required, %o,
2698since the AML interpreter dynamically converts objects to the required
2699type. David E. Box.
2700
2701    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2702                 (Concatenate (Concatenate (Concatenate ("", Arg0),
2703                 ": Unexpected value for "), Arg1), ", "), Arg2),
2704                 " at line "), Arg3), Debug)
2705
2706    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
2707                 Arg0, Arg1, Arg2, Arg3)
2708
2709    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2710                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
2711
2712    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
2713
2714iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
2715ASL parse tree before the AML code is generated. This allows blocks of
2716ASL code to be removed in order to help locate and identify problem
2717devices and/or code. David E. Box.
2718
2719AcpiExec: Added support (-fi) for an optional namespace object
2720initialization file. This file specifies initial values for namespace
2721objects as necessary for debugging and testing different ASL code paths
2722that may be taken as a result of BIOS options.
2723
2724
27252) Overview of symbolic operator support for ASL (ASL+)
2726-------------------------------------------------------
2727
2728As an extension to the ASL language, iASL implements support for symbolic
2729(C-style) operators for math and logical expressions. This can greatly
2730simplify ASL code as well as improve both readability and
2731maintainability. These language extensions can exist concurrently with
2732all legacy ASL code and expressions.
2733
2734The symbolic extensions are 100% compatible with existing AML
2735interpreters, since no new AML opcodes are created. To implement the
2736extensions, the iASL compiler transforms the symbolic expressions into
2737the legacy ASL/AML equivalents at compile time.
2738
2739Full symbolic expressions are supported, along with the standard C
2740precedence and associativity rules.
2741
2742Full disassembler support for the symbolic expressions is provided, and
2743creates an automatic migration path for existing ASL code to ASL+ code
2744via the disassembly process. By default, the disassembler now emits ASL+
2745code with symbolic expressions. An option (-dl) is provided to force the
2746disassembler to emit legacy ASL code if desired.
2747
2748Below is the complete list of the currently supported symbolic operators
2749with examples. See the iASL User Guide for additional information.
2750
2751
2752ASL+ Syntax      Legacy ASL Equivalent
2753-----------      ---------------------
2754
2755    // Math operators
2756
2757Z = X + Y        Add (X, Y, Z)
2758Z = X - Y        Subtract (X, Y, Z)
2759Z = X * Y        Multiply (X, Y, Z)
2760Z = X / Y        Divide (X, Y, , Z)
2761Z = X % Y        Mod (X, Y, Z)
2762Z = X << Y       ShiftLeft (X, Y, Z)
2763Z = X >> Y       ShiftRight (X, Y, Z)
2764Z = X & Y        And (X, Y, Z)
2765Z = X | Y        Or (X, Y, Z)
2766Z = X ^ Y        Xor (X, Y, Z)
2767Z = ~X           Not (X, Z)
2768X++              Increment (X)
2769X--              Decrement (X)
2770
2771    // Logical operators
2772
2773(X == Y)         LEqual (X, Y)
2774(X != Y)         LNotEqual (X, Y)
2775(X < Y)          LLess (X, Y)
2776(X > Y)          LGreater (X, Y)
2777(X <= Y)         LLessEqual (X, Y)
2778(X >= Y)         LGreaterEqual (X, Y)
2779(X && Y)         LAnd (X, Y)
2780(X || Y)         LOr (X, Y)
2781(!X)             LNot (X)
2782
2783    // Assignment and compound assignment operations
2784
2785X = Y           Store (Y, X)
2786X += Y          Add (X, Y, X)
2787X -= Y          Subtract (X, Y, X)
2788X *= Y          Multiply (X, Y, X)
2789X /= Y          Divide (X, Y, , X)
2790X %= Y          Mod (X, Y, X)
2791X <<= Y         ShiftLeft (X, Y, X)
2792X >>= Y         ShiftRight (X, Y, X)
2793X &= Y          And (X, Y, X)
2794X |= Y          Or (X, Y, X)
2795X ^= Y          Xor (X, Y, X)
2796
2797
27983) ASL+ Examples:
2799-----------------
2800
2801Legacy ASL:
2802        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
2803            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
28040x03FB),
2805            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
2806        {
2807            And (MEMB, 0xFFFFFFF0, SRMB)
2808            Store (MEMB, Local2)
2809            Store (PDBM, Local1)
2810            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
2811            Store (SRMB, MEMB)
2812            Or (PDBM, 0x02, PDBM)
2813        }
2814
2815ASL+ version:
2816        If (((R510 & 0x03FB) == 0x02E0) ||
2817            ((R520 & 0x03FB) == 0x02E0) ||
2818            ((R530 & 0x03FB) == 0x02E0) ||
2819            ((R540 & 0x03FB) == 0x02E0))
2820        {
2821            SRMB = (MEMB & 0xFFFFFFF0)
2822            Local2 = MEMB
2823            Local1 = PDBM
2824            PDBM &= 0xFFFFFFFFFFFFFFF9
2825            MEMB = SRMB
2826            PDBM |= 0x02
2827        }
2828
2829Legacy ASL:
2830        Store (0x1234, Local1)
2831        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
2832        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
2833        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
2834        Store (Index (PKG1, 0x03), Local6)
2835        Store (Add (Local3, Local2), Debug)
2836        Add (Local1, 0x0F, Local2)
2837        Add (Local1, Multiply (Local2, Local3), Local2)
2838        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
2839
2840ASL+ version:
2841        Local1 = 0x1234
2842        Local3 = (((Local1 + TEST) + 0x20) * Local2)
2843        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
2844        Local3 = (Local1 + (TEST + (0x20 * Local2)))
2845        Local6 = Index (PKG1, 0x03)
2846        Debug = (Local3 + Local2)
2847        Local2 = (Local1 + 0x0F)
2848        Local2 = (Local1 + (Local2 * Local3))
2849        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
2850
2851
2852----------------------------------------
285326 September 2014. Summary of changes for version 20140926:
2854
28551) ACPICA kernel-resident subsystem:
2856
2857Updated the GPIO operation region handler interface (GeneralPurposeIo).
2858In order to support GPIO Connection objects with multiple pins, along
2859with the related Field objects, the following changes to the interface
2860have been made: The Address is now defined to be the offset in bits of
2861the field unit from the previous invocation of a Connection. It can be
2862viewed as a "Pin Number Index" into the connection resource descriptor.
2863The BitWidth is the exact bit width of the field. It is usually one bit,
2864but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
2865additional information and examples.
2866
2867GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
2868corresponding _Lxx/_Exx methods are disabled (they may have been enabled
2869by the firmware), so that they cannot fire until they are enabled via
2870AcpiUpdateAllGpes. Rafael J. Wysocki.
2871
2872Added a new return flag for the Event/GPE status interfaces --
2873AcpiGetEventStatus and AcpiGetGpeStatus. The new
2874ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
2875GPE currently has a handler associated with it, and can thus actually
2876affect the system. Lv Zheng.
2877
2878Example Code and Data Size: These are the sizes for the OS-independent
2879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2880debug version of the code includes the debug output trace mechanism and
2881has a much larger code and data size.
2882
2883  Current Release:
2884    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2885    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2886  Previous Release:
2887    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2888    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2889
28902) iASL Compiler/Disassembler and Tools:
2891
2892iASL: Fixed a memory allocation/free regression introduced in 20140828
2893that could cause the compiler to crash. This was introduced inadvertently
2894during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
28951113.
2896
2897iASL: Removed two error messages that have been found to create false
2898positives, until they can be fixed and fully validated (ACPICA BZ 1112):
28991) Illegal forward reference within a method
29002) Illegal reference across two methods
2901
2902iASL: Implemented a new option (-lm) to create a hardware mapping file
2903that summarizes all GPIO, I2C, SPI, and UART connections. This option
2904works for both the compiler and disassembler. See the iASL compiler user
2905guide for additional information and examples (section 6.4.6).
2906
2907AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
2908version 2. This corrects the AE_BAD_HEADER exception seen on systems with
2909a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
2910
2911AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
2912unless STDIN is actually a terminal. Assists with batch-mode processing.
2913ACPICA BZ 1114.
2914
2915Disassembler/AcpiHelp: Added another large group of recognized _HID
2916values.
2917
2918
2919----------------------------------------
292028 August 2014. Summary of changes for version 20140828:
2921
29221) ACPICA kernel-resident subsystem:
2923
2924Fixed a problem related to the internal use of the Timer() operator where
2925a 64-bit divide could cause an attempted link to a double-precision math
2926library. This divide is not actually necessary, so the code was
2927restructured to eliminate it. Lv Zheng.
2928
2929ACPI 5.1: Added support for the runtime validation of the _DSD package
2930(similar to the iASL support).
2931
2932ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
2933SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
2934
2935Example Code and Data Size: These are the sizes for the OS-independent
2936acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2937debug version of the code includes the debug output trace mechanism and
2938has a much larger code and data size.
2939
2940  Current Release:
2941    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2942    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2943  Previous Release:
2944    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
2945    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2946
29472) iASL Compiler/Disassembler and Tools:
2948
2949AcpiExec: Fixed a problem on unix systems where the original terminal
2950state was not always properly restored upon exit. Seen when using the -v
2951option. ACPICA BZ 1104.
2952
2953iASL: Fixed a problem with the validation of the ranges/length within the
2954Memory24 resource descriptor. There was a boundary condition when the
2955range was equal to the (length -1) caused by the fact that these values
2956are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
2957
2958Disassembler: Fixed a problem with the GpioInt descriptor interrupt
2959polarity
2960flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
2961is
2962now supported properly.
2963
2964ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
2965in the disassembler, data table compiler, and table template generator.
2966
2967iASL: Added a requirement for Device() objects that one of either a _HID
2968or _ADR must exist within the scope of a Device, as per the ACPI
2969specification. Remove a similar requirement that was incorrectly in place
2970for the _DSD object.
2971
2972iASL: Added error detection for illegal named references within control
2973methods that would cause runtime failures. Now trapped as errors are: 1)
2974References to objects within a non-parent control method. 2) Forward
2975references (within a method) -- for control methods, AML interpreters use
2976a one-pass parse of control methods. ACPICA BZ 1008.
2977
2978iASL: Added error checking for dependencies related to the _PSx power
2979methods. ACPICA BZ 1029.
29801) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
2981_PS3.
29822) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
2983scope.
2984
2985iASL and table compiler: Cleanup miscellaneous memory leaks by fully
2986deploying the existing object and string caches and adding new caches for
2987the table compiler.
2988
2989iASL: Split the huge parser source file into multiple subfiles to improve
2990manageability. Generation now requires the M4 macro preprocessor, which
2991is part of the Bison distribution on both unix and windows platforms.
2992
2993AcpiSrc: Fixed and removed all extraneous warnings generated during
2994entire ACPICA source code scan and/or conversion.
2995
2996
2997----------------------------------------
2998
299924 July 2014. Summary of changes for version 20140724:
3000
3001The ACPI 5.1 specification has been released and is available at:
3002http://uefi.org/specs/access
3003
3004
30050) ACPI 5.1 support in ACPICA:
3006
3007ACPI 5.1 is fully supported in ACPICA as of this release.
3008
3009New predefined names. Support includes iASL and runtime ACPICA
3010validation.
3011    _CCA (Cache Coherency Attribute).
3012    _DSD (Device-Specific Data). David Box.
3013
3014Modifications to existing ACPI tables. Support includes headers, iASL
3015Data Table compiler, disassembler, and the template generator.
3016    FADT - New fields and flags. Graeme Gregory.
3017    GTDT - One new subtable and new fields. Tomasz Nowicki.
3018    MADT - Two new subtables. Tomasz Nowicki.
3019    PCCT - One new subtable.
3020
3021Miscellaneous.
3022    New notification type for System Resource Affinity change events.
3023
3024
30251) ACPICA kernel-resident subsystem:
3026
3027Fixed a regression introduced in 20140627 where a fault can happen during
3028the deletion of Alias AML namespace objects. The problem affected both
3029the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3030
3031Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3032simple mechanism to enable wake GPEs that have no associated handler or
3033control method. Rafael Wysocki.
3034
3035Updated the AcpiEnableGpe interface to disallow the enable if there is no
3036handler or control method associated with the particular GPE. This will
3037help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3038
3039Updated GPE handling and dispatch by disabling the GPE before clearing
3040the status bit for edge-triggered GPEs. Lv Zheng.
3041
3042Added Timer() support to the AML Debug object. The current timer value is
3043now displayed with each invocation of (Store to) the debug object to
3044enable simple generation of execution times for AML code (method
3045execution for example.) ACPICA BZ 1093.
3046
3047Example Code and Data Size: These are the sizes for the OS-independent
3048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3049debug version of the code includes the debug output trace mechanism and
3050has a much larger code and data size.
3051
3052  Current Release:
3053    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3054    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3055  Previous Release:
3056    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3057    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3058
3059
30602) iASL Compiler/Disassembler and Tools:
3061
3062Fixed an issue with the recently added local printf implementation,
3063concerning width/precision specifiers that could cause incorrect output.
3064Lv Zheng. ACPICA BZ 1094.
3065
3066Disassembler: Added support to detect buffers that contain UUIDs and
3067disassemble them to an invocation of the ToUUID operator. Also emit
3068commented descriptions of known ACPI-related UUIDs.
3069
3070AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3071-u. Adds three new files.
3072
3073iASL: Update table compiler and disassembler for DMAR table changes that
3074were introduced in September 2013. With assistance by David Woodhouse.
3075
3076----------------------------------------
307727 June 2014. Summary of changes for version 20140627:
3078
30791) ACPICA kernel-resident subsystem:
3080
3081Formatted Output: Implemented local versions of standard formatted output
3082utilities such as printf, etc. Over time, it has been discovered that
3083there are in fact many portability issues with printf, and the addition
3084of this feature will fix/prevent these issues once and for all. Some
3085known issues are summarized below:
3086
30871) Output of 64-bit values is not portable. For example, UINT64 is %ull
3088for the Linux kernel and is %uI64 for some MSVC versions.
30892) Invoking printf consistently in a manner that is portable across both
309032-bit and 64-bit platforms is difficult at best in many situations.
30913) The output format for pointers varies from system to system (leading
3092zeros especially), and leads to inconsistent output from ACPICA across
3093platforms.
30944) Certain platform-specific printf formats may conflict with ACPICA use.
30955) If there is no local C library available, ACPICA now has local support
3096for printf.
3097
3098-- To address these printf issues in a complete manner, ACPICA now
3099directly implements a small subset of printf format specifiers, only
3100those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3101
3102Implemented support for ACPICA generation within the EFI environment.
3103Initially, the AcpiDump utility is supported in the UEFI shell
3104environment. Lv Zheng.
3105
3106Added a new external interface, AcpiLogError, to improve ACPICA
3107portability. This allows the host to redirect error messages from the
3108ACPICA utilities. Lv Zheng.
3109
3110Added and deployed new OSL file I/O interfaces to improve ACPICA
3111portability:
3112  AcpiOsOpenFile
3113  AcpiOsCloseFile
3114  AcpiOsReadFile
3115  AcpiOsWriteFile
3116  AcpiOsGetFileOffset
3117  AcpiOsSetFileOffset
3118There are C library implementations of these functions in the new file
3119service_layers/oslibcfs.c -- however, the functions can be implemented by
3120the local host in any way necessary. Lv Zheng.
3121
3122Implemented a mechanism to disable/enable ACPI table checksum validation
3123at runtime. This can be useful when loading tables very early during OS
3124initialization when it may not be possible to map the entire table in
3125order to compute the checksum. Lv Zheng.
3126
3127Fixed a buffer allocation issue for the Generic Serial Bus support.
3128Originally, a fixed buffer length was used. This change allows for
3129variable-length buffers based upon the protocol indicated by the field
3130access attributes. Reported by Lan Tianyu. Lv Zheng.
3131
3132Fixed a problem where an object detached from a namespace node was not
3133properly terminated/cleared and could cause a circular list problem if
3134reattached. ACPICA BZ 1063. David Box.
3135
3136Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3137
3138Fixed a possible memory leak in an error return path within the function
3139AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3140
3141Example Code and Data Size: These are the sizes for the OS-independent
3142acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3143debug version of the code includes the debug output trace mechanism and
3144has a much larger code and data size.
3145
3146  Current Release:
3147    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3148    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3149  Previous Release:
3150    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3151    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3152
3153
31542) iASL Compiler/Disassembler and Tools:
3155
3156Disassembler: Add dump of ASCII equivalent text within a comment at the
3157end of each line of the output for the Buffer() ASL operator.
3158
3159AcpiDump: Miscellaneous changes:
3160  Fixed repetitive table dump in -n mode.
3161  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3162the ACPI 2.0 GUID fails.
3163
3164iASL: Fixed a problem where the compiler could fault if incorrectly given
3165an acpidump output file as input. ACPICA BZ 1088. David Box.
3166
3167AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3168they are invoked without any arguments.
3169
3170Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
31711086. Colin Ian King.
3172
3173Disassembler: Cleaned up a block of code that extracts a parent Op
3174object. Added a comment that explains that the parent is guaranteed to be
3175valid in this case. ACPICA BZ 1069.
3176
3177
3178----------------------------------------
317924 April 2014. Summary of changes for version 20140424:
3180
31811) ACPICA kernel-resident subsystem:
3182
3183Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3184Some of these tables are known to contain a trailing NULL entry. Lv
3185Zheng.
3186
3187Removed an extraneous error message for the case where there are a large
3188number of system GPEs (> 124). This was the "32-bit FADT register is too
3189long to convert to GAS struct" message, which is irrelevant for GPEs
3190since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3191(limited capacity) GAS bit length. Also, several changes to ensure proper
3192support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3193internally.
3194
3195Implemented and deployed additional configuration support for the public
3196ACPICA external interfaces. Entire classes of interfaces can now be
3197easily modified or configured out, replaced by stubbed inline functions
3198by default. Lv Zheng.
3199
3200Moved all public ACPICA runtime configuration globals to the public
3201ACPICA external interface file for convenience. Also, removed some
3202obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3203
3204Documentation: Added a new section to the ACPICA reference describing the
3205maximum number of GPEs that can be supported by the FADT-defined GPEs in
3206block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3207reference.
3208
3209Example Code and Data Size: These are the sizes for the OS-independent
3210acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3211debug version of the code includes the debug output trace mechanism and
3212has a much larger code and data size.
3213
3214  Current Release:
3215    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3216    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3217  Previous Release:
3218    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3219    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3220
3221
32222) iASL Compiler/Disassembler and Tools:
3223
3224iASL and disassembler: Add full support for the LPIT table (Low Power
3225Idle Table). Includes support in the disassembler, data table compiler,
3226and template generator.
3227
3228AcpiDump utility:
32291) Add option to force the use of the RSDT (over the XSDT).
32302) Improve validation of the RSDP signature (use 8 chars instead of 4).
3231
3232iASL: Add check for predefined packages that are too large.  For
3233predefined names that contain subpackages, check if each subpackage is
3234too large. (Check for too small already exists.)
3235
3236Debugger: Updated the GPE command (which simulates a GPE by executing the
3237GPE code paths in ACPICA). The GPE device is now optional, and defaults
3238to the GPE 0/1 FADT-defined blocks.
3239
3240Unix application OSL: Update line-editing support. Add additional error
3241checking and take care not to reset terminal attributes on exit if they
3242were never set. This should help guarantee that the terminal is always
3243left in the previous state on program exit.
3244
3245
3246----------------------------------------
324725 March 2014. Summary of changes for version 20140325:
3248
32491) ACPICA kernel-resident subsystem:
3250
3251Updated the auto-serialize feature for control methods. This feature
3252automatically serializes all methods that create named objects in order
3253to prevent runtime errors. The update adds support to ignore the
3254currently executing AML SyncLevel when invoking such a method, in order
3255to prevent disruption of any existing SyncLevel priorities that may exist
3256in the AML code. Although the use of SyncLevels is relatively rare, this
3257change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3258appear on some machines starting with the 20140214 release.
3259
3260Added a new external interface to allow the host to install ACPI tables
3261very early, before the namespace is even created. AcpiInstallTable gives
3262the host additional flexibility for ACPI table management. Tables can be
3263installed directly by the host as if they had originally appeared in the
3264XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3265(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3266with additional internal restructuring and cleanup. See the ACPICA
3267Reference for interface details. Lv Zheng.
3268
3269Added validation of the checksum for all incoming dynamically loaded
3270tables (via external interfaces or via AML Load/LoadTable operators). Lv
3271Zheng.
3272
3273Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3274and GPE handler removal. Restructured calls to eliminate possible race
3275conditions. Lv Zheng.
3276
3277Added a warning for the use/execution of the ASL/AML Unload (table)
3278operator. This will help detect and identify machines that use this
3279operator if and when it is ever used. This operator has never been seen
3280in the field and the usage model and possible side-effects of the drastic
3281runtime action of a full table removal are unknown.
3282
3283Reverted the use of #pragma push/pop which was introduced in the 20140214
3284release. It appears that push and pop are not implemented by enough
3285compilers to make the use of this feature feasible for ACPICA at this
3286time. However, these operators may be deployed in a future ACPICA
3287release.
3288
3289Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3290handler interfaces.
3291
3292Source code generation:
32931) Disabled the use of the "strchr" macro for the gcc-specific
3294generation. For some versions of gcc, this macro can periodically expose
3295a compiler bug which in turn causes compile-time error(s).
32962) Added support for PPC64 compilation. Colin Ian King.
3297
3298Example Code and Data Size: These are the sizes for the OS-independent
3299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3300debug version of the code includes the debug output trace mechanism and
3301has a much larger code and data size.
3302
3303  Current Release:
3304    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3305    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3306  Previous Release:
3307    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3308    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3309
3310
33112) iASL Compiler/Disassembler and Tools:
3312
3313Disassembler: Added several new features to improve the readability of
3314the resulting ASL code. Extra information is emitted within comment
3315fields in the ASL code:
33161) Known _HID/_CID values are decoded to descriptive text.
33172) Standard values for the Notify() operator are decoded to descriptive
3318text.
33193) Target operands are expanded to full pathnames (in a comment) when
3320possible.
3321
3322Disassembler: Miscellaneous updates for extern() handling:
33231) Abort compiler if file specified by -fe option does not exist.
33242) Silence unnecessary warnings about argument count mismatches.
33253) Update warning messages concerning unresolved method externals.
33264) Emit "UnknownObj" keyword for externals whose type cannot be
3327determined.
3328
3329AcpiHelp utility:
33301) Added the -a option to display both the ASL syntax and the AML
3331encoding for an input ASL operator. This effectively displays all known
3332information about an ASL operator with one AcpiHelp invocation.
33332) Added substring match support (similar to a wildcard) for the -i
3334(_HID/PNP IDs) option.
3335
3336iASL/Disassembler: Since this tool does not yet support execution on big-
3337endian machines, added detection of endianness and an error message if
3338execution is attempted on big-endian. Support for big-endian within iASL
3339is a feature that is on the ACPICA to-be-done list.
3340
3341AcpiBin utility:
33421) Remove option to extract binary files from an acpidump; this function
3343is made obsolete by the AcpiXtract utility.
33442) General cleanup of open files and allocated buffers.
3345
3346
3347----------------------------------------
334814 February 2014. Summary of changes for version 20140214:
3349
33501) ACPICA kernel-resident subsystem:
3351
3352Implemented a new mechanism to proactively prevent problems with ill-
3353behaved reentrant control methods that create named ACPI objects. This
3354behavior is illegal as per the ACPI specification, but is nonetheless
3355frequently seen in the field. Previously, this could lead to an
3356AE_ALREADY_EXISTS exception if the method was actually entered by more
3357than one thread. This new mechanism detects such methods at table load
3358time and marks them "serialized" to prevent reentrancy. A new global
3359option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3360feature if desired. This mechanism and global option obsoletes and
3361supersedes the previous AcpiGbl_SerializeAllMethods option.
3362
3363Added the "Windows 2013" string to the _OSI support. ACPICA will now
3364respond TRUE to _OSI queries with this string. It is the stated policy of
3365ACPICA to add new strings to the _OSI support as soon as possible after
3366they are defined. See the full ACPICA _OSI policy which has been added to
3367the utilities/utosi.c file.
3368
3369Hardened/updated the _PRT return value auto-repair code:
33701) Do not abort the repair on a single subpackage failure, continue to
3371check all subpackages.
33722) Add check for the minimum subpackage length (4).
33733) Properly handle extraneous NULL package elements.
3374
3375Added support to avoid the possibility of infinite loops when traversing
3376object linked lists. Never allow an infinite loop, even in the face of
3377corrupted object lists.
3378
3379ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3380pack(pop) directives to ensure that the ACPICA headers are independent of
3381compiler settings or other host headers.
3382
3383Example Code and Data Size: These are the sizes for the OS-independent
3384acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3385debug version of the code includes the debug output trace mechanism and
3386has a much larger code and data size.
3387
3388  Current Release:
3389    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3390    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3391  Previous Release:
3392    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3393    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3394
3395
33962) iASL Compiler/Disassembler and Tools:
3397
3398iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3399first reserved field was incorrectly forced to have a value of zero. This
3400change correctly forces the field to have a value of one. ACPICA BZ 1081.
3401
3402Debugger: Added missing support for the "Extra" and "Data" subobjects
3403when displaying object data.
3404
3405Debugger: Added support to display entire object linked lists when
3406displaying object data.
3407
3408iASL: Removed the obsolete -g option to obtain ACPI tables from the
3409Windows registry. This feature has been superseded by the acpidump
3410utility.
3411
3412
3413----------------------------------------
341414 January 2014. Summary of changes for version 20140114:
3415
34161) ACPICA kernel-resident subsystem:
3417
3418Updated all ACPICA copyrights and signons to 2014. Added the 2014
3419copyright to all module headers and signons, including the standard Linux
3420header. This affects virtually every file in the ACPICA core subsystem,
3421iASL compiler, all ACPICA utilities, and the test suites.
3422
3423Improved parameter validation for AcpiInstallGpeBlock. Added the
3424following checks:
34251) The incoming device handle refers to type ACPI_TYPE_DEVICE.
34262) There is not already a GPE block attached to the device.
3427Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
3428device.
3429
3430Correctly support "references" in the ACPI_OBJECT. This change fixes the
3431support to allow references (namespace nodes) to be passed as arguments
3432to control methods via the evaluate object interface. This is probably
3433most useful for testing purposes, however.
3434
3435Improved support for 32/64 bit physical addresses in printf()-like
3436output. This change improves the support for physical addresses in printf
3437debug statements and other output on both 32-bit and 64-bit hosts. It
3438consistently outputs the appropriate number of bytes for each host. The
3439%p specifier is unsatisfactory since it does not emit uniform output on
3440all hosts/clib implementations (on some, leading zeros are not supported,
3441leading to difficult-to-read output).
3442
3443Example Code and Data Size: These are the sizes for the OS-independent
3444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3445debug version of the code includes the debug output trace mechanism and
3446has a much larger code and data size.
3447
3448  Current Release:
3449    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3450    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3451  Previous Release:
3452    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3453    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3454
3455
34562) iASL Compiler/Disassembler and Tools:
3457
3458iASL: Fix a possible fault when using the Connection() operator. Fixes a
3459problem if the parent Field definition for the Connection operator refers
3460to an operation region that does not exist. ACPICA BZ 1064.
3461
3462AcpiExec: Load of local test tables is now optional. The utility has the
3463capability to load some various tables to test features of ACPICA.
3464However, there are enough of them that the output of the utility became
3465confusing. With this change, only the required local tables are displayed
3466(RSDP, XSDT, etc.) along with the actual tables loaded via the command
3467line specification. This makes the default output simler and easier to
3468understand. The -el command line option restores the original behavior
3469for testing purposes.
3470
3471AcpiExec: Added support for overlapping operation regions. This change
3472expands the simulation of operation regions by supporting regions that
3473overlap within the given address space. Supports SystemMemory and
3474SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3475
3476AcpiExec: Added region handler support for PCI_Config and EC spaces. This
3477allows AcpiExec to simulate these address spaces, similar to the current
3478support for SystemMemory and SystemIO.
3479
3480Debugger: Added new command to read/write/compare all namespace objects.
3481The command "test objects" will exercise the entire namespace by writing
3482new values to each data object, and ensuring that the write was
3483successful. The original value is then restored and verified.
3484
3485Debugger: Added the "test predefined" command. This change makes this
3486test public and puts it under the new "test" command. The test executes
3487each and every predefined name within the current namespace.
3488
3489
3490----------------------------------------
349118 December 2013. Summary of changes for version 20131218:
3492
3493Global note: The ACPI 5.0A specification was released this month. There
3494are no changes needed for ACPICA since this release of ACPI is an
3495errata/clarification release. The specification is available at
3496acpi.info.
3497
3498
34991) ACPICA kernel-resident subsystem:
3500
3501Added validation of the XSDT root table if it is present. Some older
3502platforms contain an XSDT that is ill-formed or otherwise invalid (such
3503as containing some or all entries that are NULL pointers). This change
3504adds a new function to validate the XSDT before actually using it. If the
3505XSDT is found to be invalid, ACPICA will now automatically fall back to
3506using the RSDT instead. Original implementation by Zhao Yakui. Ported to
3507ACPICA and enhanced by Lv Zheng and Bob Moore.
3508
3509Added a runtime option to ignore the XSDT and force the use of the RSDT.
3510This change adds a runtime option that will force ACPICA to use the RSDT
3511instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
3512requires that an XSDT be used instead of the RSDT, the XSDT has been
3513found to be corrupt or ill-formed on some machines. Lv Zheng.
3514
3515Added a runtime option to favor 32-bit FADT register addresses over the
351664-bit addresses. This change adds an option to favor 32-bit FADT
3517addresses when there is a conflict between the 32-bit and 64-bit versions
3518of the same register. The default behavior is to use the 64-bit version
3519in accordance with the ACPI specification. This can now be overridden via
3520the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3521
3522During the change above, the internal "Convert FADT" and "Verify FADT"
3523functions have been merged to simplify the code, making it easier to
3524understand and maintain. ACPICA BZ 933.
3525
3526Improve exception reporting and handling for GPE block installation.
3527Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
3528status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3529
3530Added helper macros to extract bus/segment numbers from the HEST table.
3531This change adds two macros to extract the encoded bus and segment
3532numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
3533Betty Dall <betty.dall@hp.com>
3534
3535Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
3536by ACPICA. It is not a public macro, so it should have no effect on
3537existing OSV code. Lv Zheng.
3538
3539Example Code and Data Size: These are the sizes for the OS-independent
3540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3541debug version of the code includes the debug output trace mechanism and
3542has a much larger code and data size.
3543
3544  Current Release:
3545    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3546    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3547  Previous Release:
3548    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3549    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3550
3551
35522) iASL Compiler/Disassembler and Tools:
3553
3554Disassembler: Improved pathname support for emitted External()
3555statements. This change adds full pathname support for external names
3556that have been resolved internally by the inclusion of additional ACPI
3557tables (via the iASL -e option). Without this change, the disassembler
3558can emit multiple externals for the same object, or it become confused
3559when the Scope() operator is used on an external object. Overall, greatly
3560improves the ability to actually recompile the emitted ASL code when
3561objects a referenced across multiple ACPI tables. Reported by Michael
3562Tsirkin (mst@redhat.com).
3563
3564Tests/ASLTS: Updated functional control suite to execute with no errors.
3565David Box. Fixed several errors related to the testing of the interpreter
3566slack mode. Lv Zheng.
3567
3568iASL: Added support to detect names that are declared within a control
3569method, but are unused (these are temporary names that are only valid
3570during the time the method is executing). A remark is issued for these
3571cases. ACPICA BZ 1022.
3572
3573iASL: Added full support for the DBG2 table. Adds full disassembler,
3574table compiler, and template generator support for the DBG2 table (Debug
3575Port 2 table).
3576
3577iASL: Added full support for the PCCT table, update the table definition.
3578Updates the PCCT table definition in the actbl3.h header and adds table
3579compiler and template generator support.
3580
3581iASL: Added an option to emit only error messages (no warnings/remarks).
3582The -ve option will enable only error messages, warnings and remarks are
3583suppressed. This can simplify debugging when only the errors are
3584important, such as when an ACPI table is disassembled and there are many
3585warnings and remarks -- but only the actual errors are of real interest.
3586
3587Example ACPICA code (source/tools/examples): Updated the example code so
3588that it builds to an actual working program, not just example code. Added
3589ACPI tables and execution of an example control method in the DSDT. Added
3590makefile support for Unix generation.
3591
3592
3593----------------------------------------
359415 November 2013. Summary of changes for version 20131115:
3595
3596This release is available at https://acpica.org/downloads
3597
3598
35991) ACPICA kernel-resident subsystem:
3600
3601Resource Manager: Fixed loop termination for the "get AML length"
3602function. The loop previously had an error termination on a NULL resource
3603pointer, which can never happen since the loop simply increments a valid
3604resource pointer. This fix changes the loop to terminate with an error on
3605an invalid end-of-buffer condition. The problem can be seen as an
3606infinite loop by callers to AcpiSetCurrentResources with an invalid or
3607corrupted resource descriptor, or a resource descriptor that is missing
3608an END_TAG descriptor. Reported by Dan Carpenter
3609<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
3610
3611Table unload and ACPICA termination: Delete all attached data objects
3612during namespace node deletion. This fix updates namespace node deletion
3613to delete the entire list of attached objects (attached via
3614AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
36151024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
3616
3617ACPICA termination: Added support to delete all objects attached to the
3618root namespace node. This fix deletes any and all objects that have been
3619attached to the root node via AcpiAttachData. Previously, none of these
3620objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
3621
3622Debug output: Do not emit the function nesting level for the in-kernel
3623build. The nesting level is really only useful during a single-thread
3624execution. Therefore, only enable this output for the AcpiExec utility.
3625Also, only emit the thread ID when executing under AcpiExec (Context
3626switches are still always detected and a message is emitted). ACPICA BZ
3627972.
3628
3629Example Code and Data Size: These are the sizes for the OS-independent
3630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3631debug version of the code includes the debug output trace mechanism and
3632has a much larger code and data size.
3633
3634  Current Release:
3635    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3636    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3637  Previous Release:
3638    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3639    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3640
3641
36422) iASL Compiler/Disassembler and Tools:
3643
3644AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
3645correct portable POSIX header for terminal control functions.
3646
3647Disassembler: Fixed control method invocation issues related to the use
3648of the CondRefOf() operator. The problem is seen in the disassembly where
3649control method invocations may not be disassembled properly if the
3650control method name has been used previously as an argument to CondRefOf.
3651The solution is to not attempt to emit an external declaration for the
3652CondRefOf target (it is not necessary in the first place). This prevents
3653disassembler object type confusion. ACPICA BZ 988.
3654
3655Unix Makefiles: Added an option to disable compiler optimizations and the
3656_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
3657with optimizations (reportedly, gcc 4.4 for example). This change adds a
3658command line option for make (NOOPT) that disables all compiler
3659optimizations and the _FORTIFY_SOURCE compiler flag. The default
3660optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
36611034. Lv Zheng, Bob Moore.
3662
3663Tests/ASLTS: Added options to specify individual test cases and modes.
3664This allows testers running aslts.sh to optionally specify individual
3665test modes and test cases. Also added an option to disable the forced
3666generation of the ACPICA tools from source if desired. Lv Zheng.
3667
3668----------------------------------------
366927 September 2013. Summary of changes for version 20130927:
3670
3671This release is available at https://acpica.org/downloads
3672
3673
36741) ACPICA kernel-resident subsystem:
3675
3676Fixed a problem with store operations to reference objects. This change
3677fixes a problem where a Store operation to an ArgX object that contained
3678a
3679reference to a field object did not complete the automatic dereference
3680and
3681then write to the actual field object. Instead, the object type of the
3682field object was inadvertently changed to match the type of the source
3683operand. The new behavior will actually write to the field object (buffer
3684field or field unit), thus matching the correct ACPI-defined behavior.
3685
3686Implemented support to allow the host to redefine individual OSL
3687prototypes. This change enables the host to redefine OSL prototypes found
3688in the acpiosxf.h file. This allows the host to implement OSL interfaces
3689with a macro or inlined function. Further, it allows the host to add any
3690additional required modifiers such as __iomem, __init, __exit, etc., as
3691necessary on a per-interface basis. Enables maximum flexibility for the
3692OSL interfaces. Lv Zheng.
3693
3694Hardcoded the access width for the FADT-defined reset register. The ACPI
3695specification requires the reset register width to be 8 bits. ACPICA now
3696hardcodes the width to 8 and ignores the FADT width value. This provides
3697compatibility with other ACPI implementations that have allowed BIOS code
3698with bad register width values to go unnoticed. Matthew Garett, Bob
3699Moore,
3700Lv Zheng.
3701
3702Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
3703used
3704in the OSL header (acpiosxf). The change modifies the position of this
3705macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
3706build issues if the OSL defines the implementation of the interface to be
3707an inline stub function. Lv Zheng.
3708
3709Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
3710initialization interfaces. This change adds a new macro for the main init
3711and terminate external interfaces in order to support hosts that require
3712additional or different processing for these functions. Changed from
3713ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
3714Zheng, Bob Moore.
3715
3716Cleaned up the memory allocation macros for configurability. In the
3717common
3718case, the ACPI_ALLOCATE and related macros now resolve directly to their
3719respective AcpiOs* OSL interfaces. Two options:
37201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
3721default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
37222) For AcpiExec (and for debugging), the macros can optionally be
3723resolved
3724to the local ACPICA interfaces that track each allocation (local tracking
3725is used to immediately detect memory leaks).
3726Lv Zheng.
3727
3728Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
3729to predefine this macro to either TRUE or FALSE during the system build.
3730
3731Replaced __FUNCTION_ with __func__ in the gcc-specific header.
3732
3733Example Code and Data Size: These are the sizes for the OS-independent
3734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3735debug version of the code includes the debug output trace mechanism and
3736has a much larger code and data size.
3737
3738  Current Release:
3739    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3740    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3741  Previous Release:
3742    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3743    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3744
3745
37462) iASL Compiler/Disassembler and Tools:
3747
3748iASL: Implemented wildcard support for the -e option. This simplifies use
3749when there are many SSDTs that must be included to resolve external
3750method
3751declarations. ACPICA BZ 1041. Example:
3752    iasl -e ssdt*.dat -d dsdt.dat
3753
3754AcpiExec: Add history/line-editing for Unix/Linux systems. This change
3755adds a portable module that implements full history and limited line
3756editing for Unix and Linux systems. It does not use readline() due to
3757portability issues. Instead it uses the POSIX termio interface to put the
3758terminal in raw input mode so that the various special keys can be
3759trapped
3760(such as up/down-arrow for history support and left/right-arrow for line
3761editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
3762
3763AcpiXtract: Add support to handle (ignore) "empty" lines containing only
3764one or more spaces. This provides compatible with early or different
3765versions of the AcpiDump utility. ACPICA BZ 1044.
3766
3767AcpiDump: Do not ignore tables that contain only an ACPI table header.
3768Apparently, some BIOSs create SSDTs that contain an ACPI table header but
3769no other data. This change adds support to dump these tables. Any tables
3770shorter than the length of an ACPI table header remain in error (an error
3771message is emitted). Reported by Yi Li.
3772
3773Debugger: Echo actual command along with the "unknown command" message.
3774
3775----------------------------------------
377623 August 2013. Summary of changes for version 20130823:
3777
37781) ACPICA kernel-resident subsystem:
3779
3780Implemented support for host-installed System Control Interrupt (SCI)
3781handlers. Certain ACPI functionality requires the host to handle raw
3782SCIs. For example, the "SCI Doorbell" that is defined for memory power
3783state support requires the host device driver to handle SCIs to examine
3784if the doorbell has been activated. Multiple SCI handlers can be
3785installed to allow for future expansion. New external interfaces are
3786AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
3787details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
3788
3789Operation region support: Never locally free the handler "context"
3790pointer. This change removes some dangerous code that attempts to free
3791the handler context pointer in some (rare) circumstances. The owner of
3792the handler owns this pointer and the ACPICA code should never touch it.
3793Although not seen to be an issue in any kernel, it did show up as a
3794problem (fault) under AcpiExec. Also, set the internal storage field for
3795the context pointer to zero when the region is deactivated, simply for
3796sanity. David Box. ACPICA BZ 1039.
3797
3798AcpiRead: On error, do not modify the return value target location. If an
3799error happens in the middle of a split 32/32 64-bit I/O operation, do not
3800modify the target of the return value pointer. Makes the code consistent
3801with the rest of ACPICA. Bjorn Helgaas.
3802
3803Example Code and Data Size: These are the sizes for the OS-independent
3804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3805debug version of the code includes the debug output trace mechanism and
3806has a much larger code and data size.
3807
3808  Current Release:
3809    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3810    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3811  Previous Release:
3812    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3813    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
3814
3815
38162) iASL Compiler/Disassembler and Tools:
3817
3818AcpiDump: Implemented several new features and fixed some problems:
38191) Added support to dump the RSDP, RSDT, and XSDT tables.
38202) Added support for multiple table instances (SSDT, UEFI).
38213) Added option to dump "customized" (overridden) tables (-c).
38224) Fixed a problem where some table filenames were improperly
3823constructed.
38245) Improved some error messages, removed some unnecessary messages.
3825
3826iASL: Implemented additional support for disassembly of ACPI tables that
3827contain invocations of external control methods. The -fe<file> option
3828allows the import of a file that specifies the external methods along
3829with the required number of arguments for each -- allowing for the
3830correct disassembly of the table. This is a workaround for a limitation
3831of AML code where the disassembler often cannot determine the number of
3832arguments required for an external control method and generates incorrect
3833ASL code. See the iASL reference for details. ACPICA BZ 1030.
3834
3835Debugger: Implemented a new command (paths) that displays the full
3836pathnames (namepaths) and object types of all objects in the namespace.
3837This is an alternative to the namespace command.
3838
3839Debugger: Implemented a new command (sci) that invokes the SCI dispatch
3840mechanism and any installed handlers.
3841
3842iASL: Fixed a possible segfault for "too many parent prefixes" condition.
3843This can occur if there are too many parent prefixes in a namepath (for
3844example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
3845
3846Application OSLs: Set the return value for the PCI read functions. These
3847functions simply return AE_OK, but should set the return value to zero
3848also. This change implements this. ACPICA BZ 1038.
3849
3850Debugger: Prevent possible command line buffer overflow. Increase the
3851size of a couple of the debugger line buffers, and ensure that overflow
3852cannot happen. ACPICA BZ 1037.
3853
3854iASL: Changed to abort immediately on serious errors during the parsing
3855phase. Due to the nature of ASL, there is no point in attempting to
3856compile these types of errors, and they typically end up causing a
3857cascade of hundreds of errors which obscure the original problem.
3858
3859----------------------------------------
386025 July 2013. Summary of changes for version 20130725:
3861
38621) ACPICA kernel-resident subsystem:
3863
3864Fixed a problem with the DerefOf operator where references to FieldUnits
3865and BufferFields incorrectly returned the parent object, not the actual
3866value of the object. After this change, a dereference of a FieldUnit
3867reference results in a read operation on the field to get the value, and
3868likewise, the appropriate BufferField value is extracted from the target
3869buffer.
3870
3871Fixed a problem where the _WAK method could cause a fault under these
3872circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
3873method returned no value. The problem is rarely seen because most kernels
3874run ACPICA in slack mode.
3875
3876For the DerefOf operator, a fatal error now results if an attempt is made
3877to dereference a reference (created by the Index operator) to a NULL
3878package element. Provides compatibility with other ACPI implementations,
3879and this behavior will be added to a future version of the ACPI
3880specification.
3881
3882The ACPI Power Management Timer (defined in the FADT) is now optional.
3883This provides compatibility with other ACPI implementations and will
3884appear in the next version of the ACPI specification. If there is no PM
3885Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
3886zero in the FADT indicates no PM timer.
3887
3888Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
3889allows the host to globally enable/disable all vendor strings, all
3890feature strings, or both. Intended to be primarily used for debugging
3891purposes only. Lv Zheng.
3892
3893Expose the collected _OSI data to the host via a global variable. This
3894data tracks the highest level vendor ID that has been invoked by the BIOS
3895so that the host (and potentially ACPICA itself) can change behaviors
3896based upon the age of the BIOS.
3897
3898Example Code and Data Size: These are the sizes for the OS-independent
3899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3900debug version of the code includes the debug output trace mechanism and
3901has a much larger code and data size.
3902
3903  Current Release:
3904    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3905    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3906  Previous Release:
3907    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3908    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3909
3910
39112) iASL Compiler/Disassembler and Tools:
3912
3913iASL: Created the following enhancements for the -so option (create
3914offset table):
39151)Add offsets for the last nameseg in each namepath for every supported
3916object type
39172)Add support for Processor, Device, Thermal Zone, and Scope objects
39183)Add the actual AML opcode for the parent object of every supported
3919object type
39204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
3921
3922Disassembler: Emit all unresolved external symbols in a single block.
3923These are external references to control methods that could not be
3924resolved, and thus, the disassembler had to make a guess at the number of
3925arguments to parse.
3926
3927iASL: The argument to the -T option (create table template) is now
3928optional. If not specified, the default table is a DSDT, typically the
3929most common case.
3930
3931----------------------------------------
393226 June 2013. Summary of changes for version 20130626:
3933
39341) ACPICA kernel-resident subsystem:
3935
3936Fixed an issue with runtime repair of the _CST object. Null or invalid
3937elements were not always removed properly. Lv Zheng.
3938
3939Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
3940FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
3941the maximum number of GPEs is 1016. Use of multiple GPE block devices
3942makes the system-wide number of GPEs essentially unlimited.
3943
3944Example Code and Data Size: These are the sizes for the OS-independent
3945acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3946debug version of the code includes the debug output trace mechanism and
3947has a much larger code and data size.
3948
3949  Current Release:
3950    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3951    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3952  Previous Release:
3953    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3954    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3955
3956
39572) iASL Compiler/Disassembler and Tools:
3958
3959Portable AcpiDump: Implemented full support for the Linux and FreeBSD
3960hosts. Now supports Linux, FreeBSD, and Windows.
3961
3962Disassembler: Added some missing types for the HEST and EINJ tables: "Set
3963Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
3964
3965iASL/Preprocessor: Implemented full support for nested
3966#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
3967
3968Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
3969max. The original purpose of this constraint was to limit the amount of
3970debug output. However, the string function in question (UtPrintString) is
3971now used for the disassembler also, where 256 bytes is insufficient.
3972Reported by RehabMan@GitHub.
3973
3974iASL/DataTables: Fixed some problems and issues with compilation of DMAR
3975tables. ACPICA BZ 999. Lv Zheng.
3976
3977iASL: Fixed a couple of error exit issues that could result in a "Could
3978not delete <file>" message during ASL compilation.
3979
3980AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
3981the actual signatures for these tables are "FACP" and "APIC",
3982respectively.
3983
3984AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
3985tables are allowed to have multiple instances.
3986
3987----------------------------------------
398817 May 2013. Summary of changes for version 20130517:
3989
39901) ACPICA kernel-resident subsystem:
3991
3992Fixed a regression introduced in version 20130328 for _INI methods. This
3993change fixes a problem introduced in 20130328 where _INI methods are no
3994longer executed properly because of a memory block that was not
3995initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
3996<tomasz.nowicki@linaro.org>.
3997
3998Fixed a possible problem with the new extended sleep registers in the
3999ACPI
40005.0 FADT. Do not use these registers (even if populated) unless the HW-
4001reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
40021020. Lv Zheng.
4003
4004Implemented return value repair code for _CST predefined objects: Sort
4005the
4006list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4007
4008Implemented a debug-only option to disable loading of SSDTs from the
4009RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4010ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4011acglobal.h - ACPICA BZ 1005. Lv Zheng.
4012
4013Fixed some issues in the ACPICA initialization and termination code:
4014Tomasz Nowicki <tomasz.nowicki@linaro.org>
40151) Clear events initialized flag upon event component termination. ACPICA
4016BZ 1013.
40172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
40183) Delete global lock pending lock during termination. ACPICA BZ 1012.
40194) Clear debug buffer global on termination to prevent possible multiple
4020delete. ACPICA BZ 1010.
4021
4022Standardized all switch() blocks across the entire source base. After
4023many
4024years, different formatting for switch() had crept in. This change makes
4025the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4026
4027Split some files to enhance ACPICA modularity and configurability:
40281) Split buffer dump routines into utilities/utbuffer.c
40292) Split internal error message routines into utilities/uterror.c
40303) Split table print utilities into tables/tbprint.c
40314) Split iASL command-line option processing into asloptions.c
4032
4033Makefile enhancements:
40341) Support for all new files above.
40352) Abort make on errors from any subcomponent. Chao Guan.
40363) Add build support for Apple Mac OS X. Liang Qi.
4037
4038Example Code and Data Size: These are the sizes for the OS-independent
4039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4040debug version of the code includes the debug output trace mechanism and
4041has a much larger code and data size.
4042
4043  Current Release:
4044    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4045    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4046  Previous Release:
4047    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4048    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4049
4050
40512) iASL Compiler/Disassembler and Tools:
4052
4053New utility: Implemented an easily portable version of the acpidump
4054utility to extract ACPI tables from the system (or a file) in an ASCII
4055hex
4056dump format. The top-level code implements the various command line
4057options, file I/O, and table dump routines. To port to a new host, only
4058three functions need to be implemented to get tables -- since this
4059functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4060the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
40611) The Windows version obtains the ACPI tables from the Registry.
40622) The Linux version is under development.
40633) Other hosts - If an OS-dependent module is submitted, it will be
4064distributed with ACPICA.
4065
4066iASL: Fixed a regression for -D preprocessor option (define symbol). A
4067restructuring/change to the initialization sequence caused this option to
4068no longer work properly.
4069
4070iASL: Implemented a mechanism to disable specific warnings and remarks.
4071Adds a new command line option, "-vw <messageid> as well as "#pragma
4072disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4073
4074iASL: Fix for too-strict package object validation. The package object
4075validation for return values from the predefined names is a bit too
4076strict, it does not allow names references within the package (which will
4077be resolved at runtime.) These types of references cannot be validated at
4078compile time. This change ignores named references within package objects
4079for names that return or define static packages.
4080
4081Debugger: Fixed the 80-character command line limitation for the History
4082command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4083
4084iASL: Added control method and package support for the -so option
4085(generates AML offset table for BIOS support.)
4086
4087iASL: issue a remark if a non-serialized method creates named objects. If
4088a thread blocks within the method for any reason, and another thread
4089enters the method, the method will fail because an attempt will be made
4090to
4091create the same (named) object twice. In this case, issue a remark that
4092the method should be marked serialized. NOTE: may become a warning later.
4093ACPICA BZ 909.
4094
4095----------------------------------------
409618 April 2013. Summary of changes for version 20130418:
4097
40981) ACPICA kernel-resident subsystem:
4099
4100Fixed a possible buffer overrun during some rare but specific field unit
4101read operations. This overrun can only happen if the DSDT version is 1 --
4102meaning that all AML integers are 32 bits -- and the field length is
4103between 33 and 55 bits long. During the read, an internal buffer object
4104is
4105created for the field unit because the field is larger than an integer
4106(32
4107bits). However, in this case, the buffer will be incorrectly written
4108beyond the end because the buffer length is less than the internal
4109minimum
4110of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4111long, but a full 8 bytes will be written.
4112
4113Updated the Embedded Controller "orphan" _REG method support. This refers
4114to _REG methods under the EC device that have no corresponding operation
4115region. This is allowed by the ACPI specification. This update removes a
4116dependency on the existence an ECDT table. It will execute an orphan _REG
4117method as long as the operation region handler for the EC is installed at
4118the EC device node and not the namespace root. Rui Zhang (original
4119update), Bob Moore (update/integrate).
4120
4121Implemented run-time argument typechecking for all predefined ACPI names
4122(_STA, _BIF, etc.) This change performs object typechecking on all
4123incoming arguments for all predefined names executed via
4124AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4125passing correct object types as well as the correct number of arguments
4126(therefore identifying any issues immediately). Also, the ASL/namespace
4127definition of the predefined name is checked against the ACPI
4128specification for the proper argument count. Adds one new file,
4129nsarguments.c
4130
4131Changed an exception code for the ASL UnLoad() operator. Changed the
4132exception code for the case where the input DdbHandle is invalid, from
4133AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4134
4135Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4136global makefile. The use of this flag causes compiler errors on earlier
4137versions of GCC, so it has been removed for compatibility.
4138
4139Miscellaneous cleanup:
41401) Removed some unused/obsolete macros
41412) Fixed a possible memory leak in the _OSI support
41423) Removed an unused variable in the predefined name support
41434) Windows OSL: remove obsolete reference to a memory list field
4144
4145Example Code and Data Size: These are the sizes for the OS-independent
4146acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4147debug version of the code includes the debug output trace mechanism and
4148has a much larger code and data size.
4149
4150  Current Release:
4151    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4152    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4153  Previous Release:
4154    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4155    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4156
4157
41582) iASL Compiler/Disassembler and Tools:
4159
4160AcpiExec: Added installation of a handler for the SystemCMOS address
4161space. This prevents control method abort if a method accesses this
4162space.
4163
4164AcpiExec: Added support for multiple EC devices, and now install EC
4165operation region handler(s) at the actual EC device instead of the
4166namespace root. This reflects the typical behavior of host operating
4167systems.
4168
4169AcpiExec: Updated to ensure that all operation region handlers are
4170installed before the _REG methods are executed. This prevents a _REG
4171method from aborting if it accesses an address space has no handler.
4172AcpiExec installs a handler for every possible address space.
4173
4174Debugger: Enhanced the "handlers" command to display non-root handlers.
4175This change enhances the handlers command to display handlers associated
4176with individual devices throughout the namespace, in addition to the
4177currently supported display of handlers associated with the root
4178namespace
4179node.
4180
4181ASL Test Suite: Several test suite errors have been identified and
4182resolved, reducing the total error count during execution. Chao Guan.
4183
4184----------------------------------------
418528 March 2013. Summary of changes for version 20130328:
4186
41871) ACPICA kernel-resident subsystem:
4188
4189Fixed several possible race conditions with the internal object reference
4190counting mechanism. Some of the external ACPICA interfaces update object
4191reference counts without holding the interpreter or namespace lock. This
4192change adds a spinlock to protect reference count updates on the internal
4193ACPICA objects. Reported by and with assistance from Andriy Gapon
4194(avg@FreeBSD.org).
4195
4196FADT support: Removed an extraneous warning for very large GPE register
4197sets. This change removes a size mismatch warning if the legacy length
4198field for a GPE register set is larger than the 64-bit GAS structure can
4199accommodate. GPE register sets can be larger than the 255-bit width
4200limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4201
4202_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4203return from this interface. Handles a possible timeout case if
4204ACPI_WAIT_FOREVER is modified by the host to be a value less than
4205"forever". Jung-uk Kim.
4206
4207Predefined name support: Add allowed/required argument type information
4208to
4209the master predefined info table. This change adds the infrastructure to
4210enable typechecking on incoming arguments for all predefined
4211methods/objects. It does not actually contain the code that will fully
4212utilize this information, this is still under development. Also condenses
4213some duplicate code for the predefined names into a new module,
4214utilities/utpredef.c
4215
4216Example Code and Data Size: These are the sizes for the OS-independent
4217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4218debug version of the code includes the debug output trace mechanism and
4219has a much larger code and data size.
4220
4221  Previous Release:
4222    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4223    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4224  Current Release:
4225    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4226    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4227
4228
42292) iASL Compiler/Disassembler and Tools:
4230
4231iASL: Implemented a new option to simplify the development of ACPI-
4232related
4233BIOS code. Adds support for a new "offset table" output file. The -so
4234option will create a C table containing the AML table offsets of various
4235named objects in the namespace so that BIOS code can modify them easily
4236at
4237boot time. This can simplify BIOS runtime code by eliminating expensive
4238searches for "magic values", enhancing boot times and adding greater
4239reliability. With assistance from Lee Hamel.
4240
4241iASL: Allow additional predefined names to return zero-length packages.
4242Now, all predefined names that are defined by the ACPI specification to
4243return a "variable-length package of packages" are allowed to return a
4244zero length top-level package. This allows the BIOS to tell the host that
4245the requested feature is not supported, and supports existing BIOS/ASL
4246code and practices.
4247
4248iASL: Changed the "result not used" warning to an error. This is the case
4249where an ASL operator is effectively a NOOP because the result of the
4250operation is not stored anywhere. For example:
4251    Add (4, Local0)
4252There is no target (missing 3rd argument), nor is the function return
4253value used. This is potentially a very serious problem -- since the code
4254was probably intended to do something, but for whatever reason, the value
4255was not stored. Therefore, this issue has been upgraded from a warning to
4256an error.
4257
4258AcpiHelp: Added allowable/required argument types to the predefined names
4259info display. This feature utilizes the recent update to the predefined
4260names table (above).
4261
4262----------------------------------------
426314 February 2013. Summary of changes for version 20130214:
4264
42651) ACPICA Kernel-resident Subsystem:
4266
4267Fixed a possible regression on some hosts: Reinstated the safe return
4268macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4269evaluated only once. Although these macros are not needed for the ACPICA
4270code itself, they are often used by ACPI-related host device drivers
4271where
4272the safe feature may be necessary.
4273
4274Fixed several issues related to the ACPI 5.0 reduced hardware support
4275(SOC): Now ensure that if the platform declares itself as hardware-
4276reduced
4277via the FADT, the following functions become NOOPs (and always return
4278AE_OK) because ACPI is always enabled by definition on these machines:
4279  AcpiEnable
4280  AcpiDisable
4281  AcpiHwGetMode
4282  AcpiHwSetMode
4283
4284Dynamic Object Repair: Implemented additional runtime repairs for
4285predefined name return values. Both of these repairs can simplify code in
4286the related device drivers that invoke these methods:
42871) For the _STR and _MLS names, automatically repair/convert an ASCII
4288string to a Unicode buffer.
42892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4290a
4291lone end tag descriptor in the following cases: A Return(0) was executed,
4292a null buffer was returned, or no object at all was returned (non-slack
4293mode only). Adds a new file, nsconvert.c
4294ACPICA BZ 998. Bob Moore, Lv Zheng.
4295
4296Resource Manager: Added additional code to prevent possible infinite
4297loops
4298while traversing corrupted or ill-formed resource template buffers. Check
4299for zero-length resource descriptors in all code that loops through
4300resource templates (the length field is used to index through the
4301template). This change also hardens the external AcpiWalkResources and
4302AcpiWalkResourceBuffer interfaces.
4303
4304Local Cache Manager: Enhanced the main data structure to eliminate an
4305unnecessary mechanism to access the next object in the list. Actually
4306provides a small performance enhancement for hosts that use the local
4307ACPICA cache manager. Jung-uk Kim.
4308
4309Example Code and Data Size: These are the sizes for the OS-independent
4310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4311debug version of the code includes the debug output trace mechanism and
4312has a much larger code and data size.
4313
4314  Previous Release:
4315    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4316    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4317  Current Release:
4318    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4319    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4320
4321
43222) iASL Compiler/Disassembler and Tools:
4323
4324iASL/Disassembler: Fixed several issues with the definition of the ACPI
43255.0 RASF table (RAS Feature Table). This change incorporates late changes
4326that were made to the ACPI 5.0 specification.
4327
4328iASL/Disassembler: Added full support for the following new ACPI tables:
4329  1) The MTMR table (MID Timer Table)
4330  2) The VRTC table (Virtual Real Time Clock Table).
4331Includes header file, disassembler, table compiler, and template support
4332for both tables.
4333
4334iASL: Implemented compile-time validation of package objects returned by
4335predefined names. This new feature validates static package objects
4336returned by the various predefined names defined to return packages. Both
4337object types and package lengths are validated, for both parent packages
4338and sub-packages, if any. The code is similar in structure and behavior
4339to
4340the runtime repair mechanism within the AML interpreter and uses the
4341existing predefined name information table. Adds a new file, aslprepkg.c.
4342ACPICA BZ 938.
4343
4344iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4345This feature detects a binary file with a valid ACPI table header and
4346invokes the disassembler automatically. Eliminates the need to
4347specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4348
4349iASL/Disassembler: Added several warnings for the case where there are
4350unresolved control methods during the disassembly. This can potentially
4351cause errors when the output file is compiled, because the disassembler
4352assumes zero method arguments in these cases (it cannot determine the
4353actual number of arguments without resolution/definition of the method).
4354
4355Debugger: Added support to display all resources with a single command.
4356Invocation of the resources command with no arguments will now display
4357all
4358resources within the current namespace.
4359
4360AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4361via the -e option.
4362
4363----------------------------------------
436417 January 2013. Summary of changes for version 20130117:
4365
43661) ACPICA Kernel-resident Subsystem:
4367
4368Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4369return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4370objects to return a package containing one integer, most BIOS code
4371returns
4372two integers and the previous code reflects that. However, we also need
4373to
4374support BIOS code that actually implements to the ACPI spec, and this
4375change reflects this.
4376
4377Fixed two issues with the ACPI_DEBUG_PRINT macros:
43781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4379C compilers that require this support.
43802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4381ACPI_DEBUG is already used by many of the various hosts.
4382
4383Updated all ACPICA copyrights and signons to 2013. Added the 2013
4384copyright to all module headers and signons, including the standard Linux
4385header. This affects virtually every file in the ACPICA core subsystem,
4386iASL compiler, all ACPICA utilities, and the test suites.
4387
4388Example Code and Data Size: These are the sizes for the OS-independent
4389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4390debug version of the code includes the debug output trace mechanism and
4391has a much larger code and data size.
4392
4393  Previous Release:
4394    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4395    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4396  Current Release:
4397    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4398    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4399
4400
44012) iASL Compiler/Disassembler and Tools:
4402
4403Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
4404prevent a possible fault on some hosts. Some C libraries modify the arg
4405pointer parameter to vfprintf making it difficult to call it twice in the
4406AcpiOsVprintf function. Use a local buffer to workaround this issue. This
4407does not affect the Windows OSL since the Win C library does not modify
4408the arg pointer. Chao Guan, Bob Moore.
4409
4410iASL: Fixed a possible infinite loop when the maximum error count is
4411reached. If an output file other than the .AML file is specified (such as
4412a listing file), and the maximum number of errors is reached, do not
4413attempt to flush data to the output file(s) as the compiler is aborting.
4414This can cause an infinite loop as the max error count code essentially
4415keeps calling itself.
4416
4417iASL/Disassembler: Added an option (-in) to ignore NOOP
4418opcodes/operators.
4419Implemented for both the compiler and the disassembler. Often, the NOOP
4420opcode is used as padding for packages that are changed dynamically by
4421the
4422BIOS. When disassembled and recompiled, these NOOPs will cause syntax
4423errors. This option causes the disassembler to ignore all NOOP opcodes
4424(0xA3), and it also causes the compiler to ignore all ASL source code
4425NOOP
4426statements as well.
4427
4428Debugger: Enhanced the Sleep command to execute all sleep states. This
4429change allows Sleep to be invoked with no arguments and causes the
4430debugger to execute all of the sleep states, 0-5, automatically.
4431
4432----------------------------------------
443320 December 2012. Summary of changes for version 20121220:
4434
44351) ACPICA Kernel-resident Subsystem:
4436
4437Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
4438alternate entry point for AcpiWalkResources and improves the usability of
4439the resource manager by accepting as input a buffer containing the output
4440of either a _CRS, _PRS, or _AEI method. The key functionality is that the
4441input buffer is not deleted by this interface so that it can be used by
4442the host later. See the ACPICA reference for details.
4443
4444Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
4445(DSDT version < 2). The constant will be truncated and this warning
4446reflects that behavior.
4447
4448Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
4449ExtendedInterrupt, and GpioInt descriptors. This change adds support to
4450both get and set the new wake bit in these descriptors, separately from
4451the existing share bit. Reported by Aaron Lu.
4452
4453Interpreter: Fix Store() when an implicit conversion is not possible. For
4454example, in the cases such as a store of a string to an existing package
4455object, implement the store as a CopyObject(). This is a small departure
4456from the ACPI specification which states that the control method should
4457be
4458aborted in this case. However, the ASLTS suite depends on this behavior.
4459
4460Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
4461macros: check if debug output is currently enabled as soon as possible to
4462minimize performance impact if debug is in fact not enabled.
4463
4464Source code restructuring: Cleanup to improve modularity. The following
4465new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
4466psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
4467Associated makefiles and project files have been updated.
4468
4469Changed an exception code for LoadTable operator. For the case where one
4470of the input strings is too long, change the returned exception code from
4471AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
4472
4473Fixed a possible memory leak in dispatcher error path. On error, delete
4474the mutex object created during method mutex creation. Reported by
4475tim.gardner@canonical.com.
4476
4477Example Code and Data Size: These are the sizes for the OS-independent
4478acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4479debug version of the code includes the debug output trace mechanism and
4480has a much larger code and data size.
4481
4482  Previous Release:
4483    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4484    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4485  Current Release:
4486    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4487    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4488
4489
44902) iASL Compiler/Disassembler and Tools:
4491
4492iASL: Disallow a method call as argument to the ObjectType ASL operator.
4493This change tracks an errata to the ACPI 5.0 document. The AML grammar
4494will not allow the interpreter to differentiate between a method and a
4495method invocation when these are used as an argument to the ObjectType
4496operator. The ACPI specification change is to disallow a method
4497invocation
4498(UserTerm) for the ObjectType operator.
4499
4500Finish support for the TPM2 and CSRT tables in the headers, table
4501compiler, and disassembler.
4502
4503Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
4504always expires immediately if the semaphore is not available. The
4505original
4506code was using a relative-time timeout, but sem_timedwait requires the
4507use
4508of an absolute time.
4509
4510iASL: Added a remark if the Timer() operator is used within a 32-bit
4511table. This operator returns a 64-bit time value that will be truncated
4512within a 32-bit table.
4513
4514iASL Source code restructuring: Cleanup to improve modularity. The
4515following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
4516aslmethod.c, and aslfileio.c. Associated makefiles and project files have
4517been updated.
4518
4519
4520----------------------------------------
452114 November 2012. Summary of changes for version 20121114:
4522
45231) ACPICA Kernel-resident Subsystem:
4524
4525Implemented a performance enhancement for ACPI/AML Package objects. This
4526change greatly increases the performance of Package objects within the
4527interpreter. It changes the processing of reference counts for packages
4528by
4529optimizing for the most common case where the package sub-objects are
4530either Integers, Strings, or Buffers. Increases the overall performance
4531of
4532the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
45332X.)
4534Chao Guan. ACPICA BZ 943.
4535
4536Implemented and deployed common macros to extract flag bits from resource
4537descriptors. Improves readability and maintainability of the code. Fixes
4538a
4539problem with the UART serial bus descriptor for the number of data bits
4540flags (was incorrectly 2 bits, should be 3).
4541
4542Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
4543of the macros and changed the SETx macros to the style of (destination,
4544source). Also added ACPI_CASTx companion macros. Lv Zheng.
4545
4546Example Code and Data Size: These are the sizes for the OS-independent
4547acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4548debug version of the code includes the debug output trace mechanism and
4549has a much larger code and data size.
4550
4551  Previous Release:
4552    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4553    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4554  Current Release:
4555    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4556    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4557
4558
45592) iASL Compiler/Disassembler and Tools:
4560
4561Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
4562adds the ShareAndWake and ExclusiveAndWake flags which were added to the
4563Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
4564
4565Disassembler: Fixed a problem with external declaration generation. Fixes
4566a problem where an incorrect pathname could be generated for an external
4567declaration if the original reference to the object includes leading
4568carats (^). ACPICA BZ 984.
4569
4570Debugger: Completed a major update for the Disassemble<method> command.
4571This command was out-of-date and did not properly disassemble control
4572methods that had any reasonable complexity. This fix brings the command
4573up
4574to the same level as the rest of the disassembler. Adds one new file,
4575dmdeferred.c, which is existing code that is now common with the main
4576disassembler and the debugger disassemble command. ACPICA MZ 978.
4577
4578iASL: Moved the parser entry prototype to avoid a duplicate declaration.
4579Newer versions of Bison emit this prototype, so moved the prototype out
4580of
4581the iASL header to where it is actually used in order to avoid a
4582duplicate
4583declaration.
4584
4585iASL/Tools: Standardized use of the stream I/O functions:
4586  1) Ensure check for I/O error after every fopen/fread/fwrite
4587  2) Ensure proper order of size/count arguments for fread/fwrite
4588  3) Use test of (Actual != Requested) after all fwrite, and most fread
4589  4) Standardize I/O error messages
4590Improves reliability and maintainability of the code. Bob Moore, Lv
4591Zheng.
4592ACPICA BZ 981.
4593
4594Disassembler: Prevent duplicate External() statements. During generation
4595of external statements, detect similar pathnames that are actually
4596duplicates such as these:
4597  External (\ABCD)
4598  External (ABCD)
4599Remove all leading '\' characters from pathnames during the external
4600statement generation so that duplicates will be detected and tossed.
4601ACPICA BZ 985.
4602
4603Tools: Replace low-level I/O with stream I/O functions. Replace
4604open/read/write/close with the stream I/O equivalents
4605fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
4606Moore.
4607
4608AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
4609name header so that AcpiXtract recognizes the output file/table.
4610
4611iASL: Remove obsolete -2 option flag. Originally intended to force the
4612compiler/disassembler into an ACPI 2.0 mode, this was never implemented
4613and the entire concept is now obsolete.
4614
4615----------------------------------------
461618 October 2012. Summary of changes for version 20121018:
4617
4618
46191) ACPICA Kernel-resident Subsystem:
4620
4621Updated support for the ACPI 5.0 MPST table. Fixes some problems
4622introduced by late changes to the table as it was added to the ACPI 5.0
4623specification. Includes header, disassembler, and data table compiler
4624support as well as a new version of the MPST template.
4625
4626AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
46275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
4628methods: _HID, _CID, and _UID.
4629
4630Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
4631ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
4632name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
4633names for their various drivers. Affects the AcpiGetObjectInfo external
4634interface, and other internal interfaces as well.
4635
4636Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
4637This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
4638on machines that support non-aligned transfers. Optimizes for this case
4639rather than using a strncpy. With assistance from Zheng Lv.
4640
4641Resource Manager: Small fix for buffer size calculation. Fixed a one byte
4642error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
4643
4644Added a new debug print message for AML mutex objects that are force-
4645released. At control method termination, any currently acquired mutex
4646objects are force-released. Adds a new debug-only message for each one
4647that is released.
4648
4649Audited/updated all ACPICA return macros and the function debug depth
4650counter: 1) Ensure that all functions that use the various TRACE macros
4651also use the appropriate ACPICA return macros. 2) Ensure that all normal
4652return statements surround the return expression (value) with parens to
4653ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
4654Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
4655
4656Global source code changes/maintenance: All extra lines at the start and
4657end of each source file have been removed for consistency. Also, within
4658comments, all new sentences start with a single space instead of a double
4659space, again for consistency across the code base.
4660
4661Example Code and Data Size: These are the sizes for the OS-independent
4662acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4663debug version of the code includes the debug output trace mechanism and
4664has a much larger code and data size.
4665
4666  Previous Release:
4667    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4668    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4669  Current Release:
4670    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4671    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4672
4673
46742) iASL Compiler/Disassembler and Tools:
4675
4676AcpiExec: Improved the algorithm used for memory leak/corruption
4677detection. Added some intelligence to the code that maintains the global
4678list of allocated memory. The list is now ordered by allocated memory
4679address, significantly improving performance. When running AcpiExec on
4680the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
4681on the platform and/or the environment. Note, this performance
4682enhancement affects the AcpiExec utility only, not the kernel-resident
4683ACPICA code.
4684
4685Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
4686the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
4687incorrect table offset reported for invalid opcodes. Report the original
468832-bit value for bad ACPI_NAMEs (as well as the repaired name.)
4689
4690Disassembler: Enhanced the -vt option to emit the binary table data in
4691hex format to assist with debugging.
4692
4693Fixed a potential filename buffer overflow in osunixdir.c. Increased the
4694size of file structure. Colin Ian King.
4695
4696----------------------------------------
469713 September 2012. Summary of changes for version 20120913:
4698
4699
47001) ACPICA Kernel-resident Subsystem:
4701
4702ACPI 5.0: Added two new notify types for the Hardware Error Notification
4703Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
4704and
4705MCE(6).
4706
4707Table Manager: Merged/removed duplicate code in the root table resize
4708functions. One function is external, the other is internal. Lv Zheng,
4709ACPICA
4710BZ 846.
4711
4712Makefiles: Completely removed the obsolete "Linux" makefiles under
4713acpica/generate/linux. These makefiles are obsolete and have been
4714replaced
4715by
4716the generic unix makefiles under acpica/generate/unix.
4717
4718Makefiles: Ensure that binary files always copied properly. Minor rule
4719change
4720to ensure that the final binary output files are always copied up to the
4721appropriate binary directory (bin32 or bin64.)
4722
4723Example Code and Data Size: These are the sizes for the OS-independent
4724acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4725debug
4726version of the code includes the debug output trace mechanism and has a
4727much
4728larger code and data size.
4729
4730  Previous Release:
4731    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4732    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4733  Current Release:
4734    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4735    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4736
4737
47382) iASL Compiler/Disassembler and Tools:
4739
4740Disassembler: Fixed a possible fault during the disassembly of resource
4741descriptors when a second parse is required because of the invocation of
4742external control methods within the table. With assistance from
4743adq@lidskialf.net. ACPICA BZ 976.
4744
4745iASL: Fixed a namepath optimization problem. An error can occur if the
4746parse
4747node that contains the namepath to be optimized does not have a parent
4748node
4749that is a named object. This change fixes the problem.
4750
4751iASL: Fixed a regression where the AML file is not deleted on errors. The
4752AML
4753output file should be deleted if there are any errors during the
4754compiler.
4755The
4756only exception is if the -f (force output) option is used. ACPICA BZ 974.
4757
4758iASL: Added a feature to automatically increase internal line buffer
4759sizes.
4760Via realloc(), automatically increase the internal line buffer sizes as
4761necessary to support very long source code lines. The current version of
4762the
4763preprocessor requires a buffer long enough to contain full source code
4764lines.
4765This change increases the line buffer(s) if the input lines go beyond the
4766current buffer size. This eliminates errors that occurred when a source
4767code
4768line was longer than the buffer.
4769
4770iASL: Fixed a problem with constant folding in method declarations. The
4771SyncLevel term is a ByteConstExpr, and incorrect code would be generated
4772if a
4773Type3 opcode was used.
4774
4775Debugger: Improved command help support. For incorrect argument count,
4776display
4777full help for the command. For help command itself, allow an argument to
4778specify a command.
4779
4780Test Suites: Several bug fixes for the ASLTS suite reduces the number of
4781errors during execution of the suite. Guan Chao.
4782
4783----------------------------------------
478416 August 2012. Summary of changes for version 20120816:
4785
4786
47871) ACPICA Kernel-resident Subsystem:
4788
4789Removed all use of the deprecated _GTS and _BFS predefined methods. The
4790_GTS
4791(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
4792deprecated and will probably be removed from the ACPI specification.
4793Windows
4794does not invoke them, and reportedly never will. The final nail in the
4795coffin
4796is that the ACPI specification states that these methods must be run with
4797interrupts off, which is not going to happen in a kernel interpreter.
4798Note:
4799Linux has removed all use of the methods also. It was discovered that
4800invoking these functions caused failures on some machines, probably
4801because
4802they were never tested since Windows does not call them. Affects two
4803external
4804interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
4805ACPICA BZ 969.
4806
4807Implemented support for complex bit-packed buffers returned from the _PLD
4808(Physical Location of Device) predefined method. Adds a new external
4809interface, AcpiDecodePldBuffer that parses the buffer into a more usable
4810C
4811structure. Note: C Bitfields cannot be used for this type of predefined
4812structure since the memory layout of individual bitfields is not defined
4813by
4814the C language. In addition, there are endian concerns where a compiler
4815will
4816change the bitfield ordering based on the machine type. The new ACPICA
4817interface eliminates these issues, and should be called after _PLD is
4818executed. ACPICA BZ 954.
4819
4820Implemented a change to allow a scope change to root (via "Scope (\)")
4821during
4822execution of module-level ASL code (code that is executed at table load
4823time.) Lin Ming.
4824
4825Added the Windows8/Server2012 string for the _OSI method. This change
4826adds
4827a
4828new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
48292012.
4830
4831Added header support for the new ACPI tables DBG2 (Debug Port Table Type
48322)
4833and CSRT (Core System Resource Table).
4834
4835Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
4836names. This simplifies access to the buffers returned by these predefined
4837names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
4838
4839GPE support: Removed an extraneous parameter from the various low-level
4840internal GPE functions. Tang Feng.
4841
4842Removed the linux makefiles from the unix packages. The generate/linux
4843makefiles are obsolete and have been removed from the unix tarball
4844release
4845packages. The replacement makefiles are under generate/unix, and there is
4846a
4847top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
4848
4849Updates for Unix makefiles:
48501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
48512) Update linker flags (move to end of command line) for AcpiExec
4852utility.
4853Guan Chao.
4854
4855Split ACPICA initialization functions to new file, utxfinit.c. Split from
4856utxface.c to improve modularity and reduce file size.
4857
4858Example Code and Data Size: These are the sizes for the OS-independent
4859acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4860debug version of the code includes the debug output trace mechanism and
4861has a
4862much larger code and data size.
4863
4864  Previous Release:
4865    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4866    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4867  Current Release:
4868    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4869    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4870
4871
48722) iASL Compiler/Disassembler and Tools:
4873
4874iASL: Fixed a problem with constant folding for fixed-length constant
4875expressions. The constant-folding code was not being invoked for constant
4876expressions that allow the use of type 3/4/5 opcodes to generate
4877constants
4878for expressions such as ByteConstExpr, WordConstExpr, etc. This could
4879result
4880in the generation of invalid AML bytecode. ACPICA BZ 970.
4881
4882iASL: Fixed a generation issue on newer versions of Bison. Newer versions
4883apparently automatically emit some of the necessary externals. This
4884change
4885handles these versions in order to eliminate generation warnings.
4886
4887Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
4888
4889Disassembler: Add support to decode _PLD buffers. The decoded buffer
4890appears
4891within comments in the output file.
4892
4893Debugger: Fixed a regression with the "Threads" command where
4894AE_BAD_PARAMETER was always returned.
4895
4896----------------------------------------
489711 July 2012. Summary of changes for version 20120711:
4898
48991) ACPICA Kernel-resident Subsystem:
4900
4901Fixed a possible fault in the return package object repair code. Fixes a
4902problem that can occur when a lone package object is wrapped with an
4903outer
4904package object in order to force conformance to the ACPI specification.
4905Can
4906affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
4907_DLM,
4908_CSD, _PSD, _TSD.
4909
4910Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
4911PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
4912ARB_DIS bit must be implemented in the host-dependent C3 processor power
4913state
4914support. Note, ARB_DIS is obsolete and only applies to older chipsets,
4915both
4916Intel and other vendors. (for Intel: ICH4-M and earlier)
4917
4918This change removes the code to disable/enable bus master arbitration
4919during
4920suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
4921causes
4922resume problems on some machines. The change has been in use for over
4923seven
4924years within Linux.
4925
4926Implemented two new external interfaces to support host-directed dynamic
4927ACPI
4928table load and unload. They are intended to simplify the host
4929implementation
4930of hot-plug support:
4931  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
4932  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
4933table.
4934See the ACPICA reference for additional details. Adds one new file,
4935components/tables/tbxfload.c
4936
4937Implemented and deployed two new interfaces for errors and warnings that
4938are
4939known to be caused by BIOS/firmware issues:
4940  AcpiBiosError: Prints "ACPI Firmware Error" message.
4941  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
4942Deployed these new interfaces in the ACPICA Table Manager code for ACPI
4943table
4944and FADT errors. Additional deployment to be completed as appropriate in
4945the
4946future. The associated conditional macros are ACPI_BIOS_ERROR and
4947ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
4948ACPICA
4949BZ
4950843.
4951
4952Implicit notify support: ensure that no memory allocation occurs within a
4953critical region. This fix moves a memory allocation outside of the time
4954that a
4955spinlock is held. Fixes issues on systems that do not allow this
4956behavior.
4957Jung-uk Kim.
4958
4959Split exception code utilities and tables into a new file,
4960utilities/utexcep.c
4961
4962Example Code and Data Size: These are the sizes for the OS-independent
4963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4964debug
4965version of the code includes the debug output trace mechanism and has a
4966much
4967larger code and data size.
4968
4969  Previous Release:
4970    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4971    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4972  Current Release:
4973    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4974    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4975
4976
49772) iASL Compiler/Disassembler and Tools:
4978
4979iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
4980of
49810. Jung-uk Kim.
4982
4983Debugger: Enhanced the "tables" command to emit additional information
4984about
4985the current set of ACPI tables, including the owner ID and flags decode.
4986
4987Debugger: Reimplemented the "unload" command to use the new
4988AcpiUnloadParentTable external interface. This command was disable
4989previously
4990due to need for an unload interface.
4991
4992AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
4993option
4994will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
4995
4996----------------------------------------
499720 June 2012. Summary of changes for version 20120620:
4998
4999
50001) ACPICA Kernel-resident Subsystem:
5001
5002Implemented support to expand the "implicit notify" feature to allow
5003multiple
5004devices to be notified by a single GPE. This feature automatically
5005generates a
5006runtime device notification in the absence of a BIOS-provided GPE control
5007method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5008notify is
5009provided by ACPICA for Windows compatibility, and is a workaround for
5010BIOS
5011AML
5012code errors. See the description of the AcpiSetupGpeForWake interface in
5013the
5014APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5015
5016Changed some comments and internal function names to simplify and ensure
5017correctness of the Linux code translation. No functional changes.
5018
5019Example Code and Data Size: These are the sizes for the OS-independent
5020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5021debug
5022version of the code includes the debug output trace mechanism and has a
5023much
5024larger code and data size.
5025
5026  Previous Release:
5027    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5028    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5029  Current Release:
5030    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5031    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5032
5033
50342) iASL Compiler/Disassembler and Tools:
5035
5036Disassembler: Added support to emit short, commented descriptions for the
5037ACPI
5038predefined names in order to improve the readability of the disassembled
5039output. ACPICA BZ 959. Changes include:
5040  1) Emit descriptions for all standard predefined names (_INI, _STA,
5041_PRW,
5042etc.)
5043  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5044  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5045etc.)
5046
5047AcpiSrc: Fixed several long-standing Linux code translation issues.
5048Argument
5049descriptions in function headers are now translated properly to lower
5050case
5051and
5052underscores. ACPICA BZ 961. Also fixes translation problems such as
5053these:
5054(old -> new)
5055  i_aSL -> iASL
5056  00-7_f -> 00-7F
5057  16_k -> 16K
5058  local_fADT -> local_FADT
5059  execute_oSI -> execute_OSI
5060
5061iASL: Fixed a problem where null bytes were inadvertently emitted into
5062some
5063listing files.
5064
5065iASL: Added the existing debug options to the standard help screen. There
5066are
5067no longer two different help screens. ACPICA BZ 957.
5068
5069AcpiHelp: Fixed some typos in the various predefined name descriptions.
5070Also
5071expand some of the descriptions where appropriate.
5072
5073iASL: Fixed the -ot option (display compile times/statistics). Was not
5074working
5075properly for standard output; only worked for the debug file case.
5076
5077----------------------------------------
507818 May 2012. Summary of changes for version 20120518:
5079
5080
50811) ACPICA Core Subsystem:
5082
5083Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5084defined
5085to block until asynchronous events such as notifies and GPEs have
5086completed.
5087Within ACPICA, it is only called before a notify or GPE handler is
5088removed/uninstalled. It also may be useful for the host OS within related
5089drivers such as the Embedded Controller driver. See the ACPICA reference
5090for
5091additional information. ACPICA BZ 868.
5092
5093ACPI Tables: Added a new error message for a possible overflow failure
5094during
5095the conversion of FADT 32-bit legacy register addresses to internal
5096common
509764-
5098bit GAS structure representation. The GAS has a one-byte "bit length"
5099field,
5100thus limiting the register length to 255 bits. ACPICA BZ 953.
5101
5102Example Code and Data Size: These are the sizes for the OS-independent
5103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5104debug
5105version of the code includes the debug output trace mechanism and has a
5106much
5107larger code and data size.
5108
5109  Previous Release:
5110    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5111    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5112  Current Release:
5113    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5114    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5115
5116
51172) iASL Compiler/Disassembler and Tools:
5118
5119iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5120macro.
5121This keyword was added late in the ACPI 5.0 release cycle and was not
5122implemented until now.
5123
5124Disassembler: Added support for Operation Region externals. Adds missing
5125support for operation regions that are defined in another table, and
5126referenced locally via a Field or BankField ASL operator. Now generates
5127the
5128correct External statement.
5129
5130Disassembler: Several additional fixes for the External() statement
5131generation
5132related to some ASL operators. Also, order the External() statements
5133alphabetically in the disassembler output. Fixes the External()
5134generation
5135for
5136the Create* field, Alias, and Scope operators:
5137 1) Create* buffer field operators - fix type mismatch warning on
5138disassembly
5139 2) Alias - implement missing External support
5140 3) Scope - fix to make sure all necessary externals are emitted.
5141
5142iASL: Improved pathname support. For include files, merge the prefix
5143pathname
5144with the file pathname and eliminate unnecessary components. Convert
5145backslashes in all pathnames to forward slashes, for readability. Include
5146file
5147pathname changes affect both #include and Include() type operators.
5148
5149iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5150end
5151of a valid line by inserting a newline and then returning the EOF during
5152the
5153next call to GetNextLine. Prevents the line from being ignored due to EOF
5154condition.
5155
5156iASL: Implemented some changes to enhance the IDE support (-vi option.)
5157Error
5158and Warning messages are now correctly recognized for both the source
5159code
5160browser and the global error and warning counts.
5161
5162----------------------------------------
516320 April 2012. Summary of changes for version 20120420:
5164
5165
51661) ACPICA Core Subsystem:
5167
5168Implemented support for multiple notify handlers. This change adds
5169support
5170to
5171allow multiple system and device notify handlers on Device, Thermal Zone,
5172and
5173Processor objects. This can simplify the host OS notification
5174implementation.
5175Also re-worked and restructured the entire notify support code to
5176simplify
5177handler installation, handler removal, notify event queuing, and notify
5178dispatch to handler(s). Note: there can still only be two global notify
5179handlers - one for system notifies and one for device notifies. There are
5180no
5181changes to the existing handler install/remove interfaces. Lin Ming, Bob
5182Moore, Rafael Wysocki.
5183
5184Fixed a regression in the package repair code where the object reference
5185count was calculated incorrectly. Regression was introduced in the commit
5186"Support to add Package wrappers".
5187
5188Fixed a couple possible memory leaks in the AML parser, in the error
5189recovery
5190path. Jesper Juhl, Lin Ming.
5191
5192Example Code and Data Size: These are the sizes for the OS-independent
5193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5194debug version of the code includes the debug output trace mechanism and
5195has a
5196much larger code and data size.
5197
5198  Previous Release:
5199    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5200    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5201  Current Release:
5202    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5203    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5204
5205
52062) iASL Compiler/Disassembler and Tools:
5207
5208iASL: Fixed a problem with the resource descriptor support where the
5209length
5210of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5211included in cumulative descriptor offset, resulting in incorrect values
5212for
5213resource tags within resource descriptors appearing after a
5214StartDependent*
5215descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5216
5217iASL and Preprocessor: Implemented full support for the #line directive
5218to
5219correctly track original source file line numbers through the .i
5220preprocessor
5221output file - for error and warning messages.
5222
5223iASL: Expand the allowable byte constants for address space IDs.
5224Previously,
5225the allowable range was 0x80-0xFF (user-defined spaces), now the range is
52260x0A-0xFF to allow for custom and new IDs without changing the compiler.
5227
5228iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5229
5230iASL: Add option to completely disable the preprocessor (-Pn).
5231
5232iASL: Now emit all error/warning messages to standard error (stderr) by
5233default (instead of the previous stdout).
5234
5235ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5236Update
5237for resource descriptor offset fix above. Update/cleanup error output
5238routines. Enable and send iASL errors/warnings to an error logfile
5239(error.txt). Send all other iASL output to a logfile (compiler.txt).
5240Fixed
5241several extraneous "unrecognized operator" messages.
5242
5243----------------------------------------
524420 March 2012. Summary of changes for version 20120320:
5245
5246
52471) ACPICA Core Subsystem:
5248
5249Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5250(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5251apparently
5252does not execute these methods, and therefore these methods are often
5253untested. It has been seen on some systems where the execution of these
5254methods causes errors and also prevents the machine from entering S5. It
5255is
5256therefore suggested that host operating systems do not execute these
5257methods
5258by default. In the future, perhaps these methods can be optionally
5259executed
5260based on the age of the system and/or what is the newest version of
5261Windows
5262that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5263and
5264AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5265Ming.
5266
5267Fixed a problem where the length of the local/common FADT was set too
5268early.
5269The local FADT table length cannot be set to the common length until the
5270original length has been examined. There is code that checks the table
5271length
5272and sets various fields appropriately. This can affect older machines
5273with
5274early FADT versions. For example, this can cause inadvertent writes to
5275the
5276CST_CNT register. Julian Anastasov.
5277
5278Fixed a mapping issue related to a physical table override. Use the
5279deferred
5280mapping mechanism for tables loaded via the physical override OSL
5281interface.
5282This allows for early mapping before the virtual memory manager is
5283available.
5284Thomas Renninger, Bob Moore.
5285
5286Enhanced the automatic return-object repair code: Repair a common problem
5287with
5288predefined methods that are defined to return a variable-length Package
5289of
5290sub-objects. If there is only one sub-object, some BIOS ASL code
5291mistakenly
5292simply returns the single object instead of a Package with one sub-
5293object.
5294This new support will repair this error by wrapping a Package object
5295around
5296the original object, creating the correct and expected Package with one
5297sub-
5298object. Names that can be repaired in this manner include: _ALR, _CSD,
5299_HPX,
5300_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5301939.
5302
5303Changed the exception code returned for invalid ACPI paths passed as
5304parameters to external interfaces such as AcpiEvaluateObject. Was
5305AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5306
5307Example Code and Data Size: These are the sizes for the OS-independent
5308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5309debug
5310version of the code includes the debug output trace mechanism and has a
5311much
5312larger code and data size.
5313
5314  Previous Release:
5315    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5316    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5317  Current Release:
5318    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5319    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5320
5321
53222) iASL Compiler/Disassembler and Tools:
5323
5324iASL: Added the infrastructure and initial implementation of a integrated
5325C-
5326like preprocessor. This will simplify BIOS development process by
5327eliminating
5328the need for a separate preprocessing step during builds. On Windows, it
5329also
5330eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5331features including full #define() macro support are still under
5332development.
5333These preprocessor directives are supported:
5334    #define
5335    #elif
5336    #else
5337    #endif
5338    #error
5339    #if
5340    #ifdef
5341    #ifndef
5342    #include
5343    #pragma message
5344    #undef
5345    #warning
5346In addition, these new command line options are supported:
5347    -D <symbol> Define symbol for preprocessor use
5348    -li         Create preprocessed output file (*.i)
5349    -P          Preprocess only and create preprocessor output file (*.i)
5350
5351Table Compiler: Fixed a problem where the equals operator within an
5352expression
5353did not work properly.
5354
5355Updated iASL to use the current versions of Bison/Flex. Updated the
5356Windows
5357project file to invoke these tools from the standard location. ACPICA BZ
5358904.
5359Versions supported:
5360    Flex for Windows:  V2.5.4
5361    Bison for Windows: V2.4.1
5362
5363----------------------------------------
536415 February 2012. Summary of changes for version 20120215:
5365
5366
53671) ACPICA Core Subsystem:
5368
5369There have been some major changes to the sleep/wake support code, as
5370described below (a - e).
5371
5372a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5373AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5374AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5375the
5376time the _BFS method is called and the _WAK method is called. NOTE: all
5377hosts
5378must update their wake/resume code or else sleep/wake will not work
5379properly.
5380Rafael Wysocki.
5381
5382b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5383_WAK
5384method. Some machines require that the GPEs are enabled before the _WAK
5385method
5386is executed. Thomas Renninger.
5387
5388c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5389bit.
5390Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5391to
5392determine whether the system is rebooting or resuming. Matthew Garrett.
5393
5394d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5395Sleep) to
5396match the ACPI specification requirement. Rafael Wysocki.
5397
5398e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5399registers within the V5 FADT. This support adds two new files:
5400hardware/hwesleep.c implements the support for the new registers. Moved
5401all
5402sleep/wake external interfaces to hardware/hwxfsleep.c.
5403
5404
5405Added a new OSL interface for ACPI table overrides,
5406AcpiOsPhysicalTableOverride. This interface allows the host to override a
5407table via a physical address, instead of the logical address required by
5408AcpiOsTableOverride. This simplifies the host implementation. Initial
5409implementation by Thomas Renninger. The ACPICA implementation creates a
5410single
5411shared function for table overrides that attempts both a logical and a
5412physical override.
5413
5414Expanded the OSL memory read/write interfaces to 64-bit data
5415(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
5416transfer support for GAS register structures passed to AcpiRead and
5417AcpiWrite.
5418
5419Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
5420custom
5421build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
5422model.
5423See the ACPICA reference for details. ACPICA BZ 942. This option removes
5424about
542510% of the code and 5% of the static data, and the following hardware
5426ACPI
5427features become unavailable:
5428    PM Event and Control registers
5429    SCI interrupt (and handler)
5430    Fixed Events
5431    General Purpose Events (GPEs)
5432    Global Lock
5433    ACPI PM timer
5434    FACS table (Waking vectors and Global Lock)
5435
5436Updated the unix tarball directory structure to match the ACPICA git
5437source
5438tree. This ensures that the generic unix makefiles work properly (in
5439generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
5440867.
5441
5442Updated the return value of the _REV predefined method to integer value 5
5443to
5444reflect ACPI 5.0 support.
5445
5446Moved the external ACPI PM timer interface prototypes to the public
5447acpixf.h
5448file where they belong.
5449
5450Example Code and Data Size: These are the sizes for the OS-independent
5451acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5452debug
5453version of the code includes the debug output trace mechanism and has a
5454much
5455larger code and data size.
5456
5457  Previous Release:
5458    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5459    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5460  Current Release:
5461    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5462    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5463
5464
54652) iASL Compiler/Disassembler and Tools:
5466
5467Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
5468descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
5469incorrectly displayed.
5470
5471AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
5472specification.
5473
5474----------------------------------------
547511 January 2012. Summary of changes for version 20120111:
5476
5477
54781) ACPICA Core Subsystem:
5479
5480Implemented a new mechanism to allow host device drivers to check for
5481address
5482range conflicts with ACPI Operation Regions. Both SystemMemory and
5483SystemIO
5484address spaces are supported. A new external interface,
5485AcpiCheckAddressRange,
5486allows drivers to check an address range against the ACPI namespace. See
5487the
5488ACPICA reference for additional details. Adds one new file,
5489utilities/utaddress.c. Lin Ming, Bob Moore.
5490
5491Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
5492Control
5493and
5494Status registers, update the ACPI 5.0 flags, and update internal data
5495structures to handle an FADT larger than 256 bytes. The size of the ACPI
54965.0
5497FADT is 268 bytes.
5498
5499Updated all ACPICA copyrights and signons to 2012. Added the 2012
5500copyright to
5501all module headers and signons, including the standard Linux header. This
5502affects virtually every file in the ACPICA core subsystem, iASL compiler,
5503and
5504all ACPICA utilities.
5505
5506Example Code and Data Size: These are the sizes for the OS-independent
5507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5508debug
5509version of the code includes the debug output trace mechanism and has a
5510much
5511larger code and data size.
5512
5513  Previous Release:
5514    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5515    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5516  Current Release:
5517    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5518    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5519
5520
55212) iASL Compiler/Disassembler and Tools:
5522
5523Disassembler: fixed a problem with the automatic resource tag generation
5524support. Fixes a problem where the resource tags are inadvertently not
5525constructed if the table being disassembled contains external references
5526to
5527control methods. Moved the actual construction of the tags to after the
5528final
5529namespace is constructed (after 2nd parse is invoked due to external
5530control
5531method references.) ACPICA BZ 941.
5532
5533Table Compiler: Make all "generic" operators caseless. These are the
5534operators
5535like UINT8, String, etc. Making these caseless improves ease-of-use.
5536ACPICA BZ
5537934.
5538
5539----------------------------------------
554023 November 2011. Summary of changes for version 20111123:
5541
55420) ACPI 5.0 Support:
5543
5544This release contains full support for the ACPI 5.0 specification, as
5545summarized below.
5546
5547Reduced Hardware Support:
5548-------------------------
5549
5550This support allows for ACPI systems without the usual ACPI hardware.
5551This
5552support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
5553will
5554not attempt to initialize or use any of the usual ACPI hardware. Note,
5555when
5556this flag is set, all of the following ACPI hardware is assumed to be not
5557present and is not initialized or accessed:
5558
5559    General Purpose Events (GPEs)
5560    Fixed Events (PM1a/PM1b and PM Control)
5561    Power Management Timer and Console Buttons (power/sleep)
5562    Real-time Clock Alarm
5563    Global Lock
5564    System Control Interrupt (SCI)
5565    The FACS is assumed to be non-existent
5566
5567ACPI Tables:
5568------------
5569
5570All new tables and updates to existing tables are fully supported in the
5571ACPICA headers (for use by device drivers), the disassembler, and the
5572iASL
5573Data Table Compiler. ACPI 5.0 defines these new tables:
5574
5575    BGRT        /* Boot Graphics Resource Table */
5576    DRTM        /* Dynamic Root of Trust for Measurement table */
5577    FPDT        /* Firmware Performance Data Table */
5578    GTDT        /* Generic Timer Description Table */
5579    MPST        /* Memory Power State Table */
5580    PCCT        /* Platform Communications Channel Table */
5581    PMTT        /* Platform Memory Topology Table */
5582    RASF        /* RAS Feature table */
5583
5584Operation Regions/SpaceIDs:
5585---------------------------
5586
5587All new operation regions are fully supported by the iASL compiler, the
5588disassembler, and the ACPICA runtime code (for dispatch to region
5589handlers.)
5590The new operation region Space IDs are:
5591
5592    GeneralPurposeIo
5593    GenericSerialBus
5594
5595Resource Descriptors:
5596---------------------
5597
5598All new ASL resource descriptors are fully supported by the iASL
5599compiler,
5600the
5601ASL/AML disassembler, and the ACPICA runtime Resource Manager code
5602(including
5603all new predefined resource tags). New descriptors are:
5604
5605    FixedDma
5606    GpioIo
5607    GpioInt
5608    I2cSerialBus
5609    SpiSerialBus
5610    UartSerialBus
5611
5612ASL/AML Operators, New and Modified:
5613------------------------------------
5614
5615One new operator is added, the Connection operator, which is used to
5616associate
5617a GeneralPurposeIo or GenericSerialBus resource descriptor with
5618individual
5619field objects within an operation region. Several new protocols are
5620associated
5621with the AccessAs operator. All are fully supported by the iASL compiler,
5622disassembler, and runtime ACPICA AML interpreter:
5623
5624    Connection                      // Declare Field Connection
5625attributes
5626    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
5627    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
5628Protocol
5629    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
5630    RawDataBuffer                       // Data type for Vendor Data
5631fields
5632
5633Predefined ASL/AML Objects:
5634---------------------------
5635
5636All new predefined objects/control-methods are supported by the iASL
5637compiler
5638and the ACPICA runtime validation/repair (arguments and return values.)
5639New
5640predefined names include the following:
5641
5642Standard Predefined Names (Objects or Control Methods):
5643    _AEI, _CLS, _CPC, _CWS, _DEP,
5644    _DLM, _EVT, _GCP, _CRT, _GWS,
5645    _HRV, _PRE, _PSE, _SRT, _SUB.
5646
5647Resource Tags (Names used to access individual fields within resource
5648descriptors):
5649    _DBT, _DPL, _DRS, _END, _FLC,
5650    _IOR, _LIN, _MOD, _PAR, _PHA,
5651    _PIN, _PPI, _POL, _RXL, _SLV,
5652    _SPE, _STB, _TXL, _VEN.
5653
5654ACPICA External Interfaces:
5655---------------------------
5656
5657Several new interfaces have been defined for use by ACPI-related device
5658drivers and other host OS services:
5659
5660AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
5661to
5662acquire and release AML mutexes that are defined in the DSDT/SSDT tables
5663provided by the BIOS. They are intended to be used in conjunction with
5664the
5665ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
5666mutual exclusion with the AML code/interpreter.
5667
5668AcpiGetEventResources: Returns the (formatted) resource descriptors as
5669defined
5670by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
5671provides
5672resource descriptors associated with hardware-reduced platform events,
5673similar
5674to the AcpiGetCurrentResources interface.
5675
5676Operation Region Handlers: For General Purpose IO and Generic Serial Bus
5677operation regions, information about the Connection() object and any
5678optional
5679length information is passed to the region handler within the Context
5680parameter.
5681
5682AcpiBufferToResource: This interface converts a raw AML buffer containing
5683a
5684resource template or resource descriptor to the ACPI_RESOURCE internal
5685format
5686suitable for use by device drivers. Can be used by an operation region
5687handler
5688to convert the Connection() buffer object into a ACPI_RESOURCE.
5689
5690Miscellaneous/Tools/TestSuites:
5691-------------------------------
5692
5693Support for extended _HID names (Four alpha characters instead of three).
5694Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
5695Support for ACPI 5.0 features in the ASLTS test suite.
5696Fully updated documentation (ACPICA and iASL reference documents.)
5697
5698ACPI Table Definition Language:
5699-------------------------------
5700
5701Support for this language was implemented and released as a subsystem of
5702the
5703iASL compiler in 2010. (See the iASL compiler User Guide.)
5704
5705
5706Non-ACPI 5.0 changes for this release:
5707--------------------------------------
5708
57091) ACPICA Core Subsystem:
5710
5711Fix a problem with operation region declarations where a failure can
5712occur
5713if
5714the region name and an argument that evaluates to an object (such as the
5715region address) are in different namespace scopes. Lin Ming, ACPICA BZ
5716937.
5717
5718Do not abort an ACPI table load if an invalid space ID is found within.
5719This
5720will be caught later if the offending method is executed. ACPICA BZ 925.
5721
5722Fixed an issue with the FFixedHW space ID where the ID was not always
5723recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
5724
5725Fixed a problem with the 32-bit generation of the unix-specific OSL
5726(osunixxf.c). Lin Ming, ACPICA BZ 936.
5727
5728Several changes made to enable generation with the GCC 4.6 compiler.
5729ACPICA BZ
5730935.
5731
5732New error messages: Unsupported I/O requests (not 8/16/32 bit), and
5733Index/Bank
5734field registers out-of-range.
5735
57362) iASL Compiler/Disassembler and Tools:
5737
5738iASL: Implemented the __PATH__ operator, which returns the full pathname
5739of
5740the current source file.
5741
5742AcpiHelp: Automatically display expanded keyword information for all ASL
5743operators.
5744
5745Debugger: Add "Template" command to disassemble/dump resource template
5746buffers.
5747
5748Added a new master script to generate and execute the ASLTS test suite.
5749Automatically handles 32- and 64-bit generation. See tests/aslts.sh
5750
5751iASL: Fix problem with listing generation during processing of the
5752Switch()
5753operator where AML listing was disabled until the entire Switch block was
5754completed.
5755
5756iASL: Improve support for semicolon statement terminators. Fix "invalid
5757character" message for some cases when the semicolon is used. Semicolons
5758are
5759now allowed after every <Term> grammar element. ACPICA BZ 927.
5760
5761iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
5762923.
5763
5764Disassembler: Fix problem with disassembly of the DataTableRegion
5765operator
5766where an inadvertent "Unhandled deferred opcode" message could be
5767generated.
5768
57693) Example Code and Data Size
5770
5771These are the sizes for the OS-independent acpica.lib produced by the
5772Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5773includes the debug output trace mechanism and has a much larger code and
5774data
5775size.
5776
5777  Previous Release:
5778    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5779    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5780  Current Release:
5781    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5782    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5783
5784----------------------------------------
578522 September 2011. Summary of changes for version 20110922:
5786
57870) ACPI 5.0 News:
5788
5789Support for ACPI 5.0 in ACPICA has been underway for several months and
5790will
5791be released at the same time that ACPI 5.0 is officially released.
5792
5793The ACPI 5.0 specification is on track for release in the next few
5794months.
5795
57961) ACPICA Core Subsystem:
5797
5798Fixed a problem where the maximum sleep time for the Sleep() operator was
5799intended to be limited to two seconds, but was inadvertently limited to
580020
5801seconds instead.
5802
5803Linux and Unix makefiles: Added header file dependencies to ensure
5804correct
5805generation of ACPICA core code and utilities. Also simplified the
5806makefiles
5807considerably through the use of the vpath variable to specify search
5808paths.
5809ACPICA BZ 924.
5810
58112) iASL Compiler/Disassembler and Tools:
5812
5813iASL: Implemented support to check the access length for all fields
5814created to
5815access named Resource Descriptor fields. For example, if a resource field
5816is
5817defined to be two bits, a warning is issued if a CreateXxxxField() is
5818used
5819with an incorrect bit length. This is implemented for all current
5820resource
5821descriptor names. ACPICA BZ 930.
5822
5823Disassembler: Fixed a byte ordering problem with the output of 24-bit and
582456-
5825bit integers.
5826
5827iASL: Fixed a couple of issues associated with variable-length package
5828objects. 1) properly handle constants like One, Ones, Zero -- do not make
5829a
5830VAR_PACKAGE when these are used as a package length. 2) Allow the
5831VAR_PACKAGE
5832opcode (in addition to PACKAGE) when validating object types for
5833predefined
5834names.
5835
5836iASL: Emit statistics for all output files (instead of just the ASL input
5837and
5838AML output). Includes listings, hex files, etc.
5839
5840iASL: Added -G option to the table compiler to allow the compilation of
5841custom
5842ACPI tables. The only part of a table that is required is the standard
584336-
5844byte
5845ACPI header.
5846
5847AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
5848headers),
5849which also adds correct 64-bit support. Also, now all output filenames
5850are
5851completely lower case.
5852
5853AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
5854loading table files. A warning is issued for any such tables. The only
5855exception is an FADT. This also fixes a possible fault when attempting to
5856load
5857non-AML tables. ACPICA BZ 932.
5858
5859AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
5860a
5861missing table terminator could cause a fault when using the -p option.
5862
5863AcpiSrc: Fixed a possible divide-by-zero fault when generating file
5864statistics.
5865
58663) Example Code and Data Size
5867
5868These are the sizes for the OS-independent acpica.lib produced by the
5869Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5870includes the debug output trace mechanism and has a much larger code and
5871data
5872size.
5873
5874  Previous Release (VC 9.0):
5875    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5876    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5877  Current Release (VC 9.0):
5878    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5879    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5880
5881
5882----------------------------------------
588323 June 2011. Summary of changes for version 20110623:
5884
58851) ACPI CA Core Subsystem:
5886
5887Updated the predefined name repair mechanism to not attempt repair of a
5888_TSS
5889return object if a _PSS object is present. We can only sort the _TSS
5890return
5891package if there is no _PSS within the same scope. This is because if
5892_PSS
5893is
5894present, the ACPI specification dictates that the _TSS Power Dissipation
5895field
5896is to be ignored, and therefore some BIOSs leave garbage values in the
5897_TSS
5898Power field(s). In this case, it is best to just return the _TSS package
5899as-
5900is. Reported by, and fixed with assistance from Fenghua Yu.
5901
5902Added an option to globally disable the control method return value
5903validation
5904and repair. This runtime option can be used to disable return value
5905repair
5906if
5907this is causing a problem on a particular machine. Also added an option
5908to
5909AcpiExec (-dr) to set this disable flag.
5910
5911All makefiles and project files: Major changes to improve generation of
5912ACPICA
5913tools. ACPICA BZ 912:
5914    Reduce default optimization levels to improve compatibility
5915    For Linux, add strict-aliasing=0 for gcc 4
5916    Cleanup and simplify use of command line defines
5917    Cleanup multithread library support
5918    Improve usage messages
5919
5920Linux-specific header: update handling of THREAD_ID and pthread. For the
592132-
5922bit case, improve casting to eliminate possible warnings, especially with
5923the
5924acpica tools.
5925
5926Example Code and Data Size: These are the sizes for the OS-independent
5927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5928debug
5929version of the code includes the debug output trace mechanism and has a
5930much
5931larger code and data size.
5932
5933  Previous Release (VC 9.0):
5934    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5935    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5936  Current Release (VC 9.0):
5937    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5938    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5939
59402) iASL Compiler/Disassembler and Tools:
5941
5942With this release, a new utility named "acpihelp" has been added to the
5943ACPICA
5944package. This utility summarizes the ACPI specification chapters for the
5945ASL
5946and AML languages. It generates under Linux/Unix as well as Windows, and
5947provides the following functionality:
5948    Find/display ASL operator(s) -- with description and syntax.
5949    Find/display ASL keyword(s) -- with exact spelling and descriptions.
5950    Find/display ACPI predefined name(s) -- with description, number
5951        of arguments, and the return value data type.
5952    Find/display AML opcode name(s) -- with opcode, arguments, and
5953grammar.
5954    Decode/display AML opcode -- with opcode name, arguments, and
5955grammar.
5956
5957Service Layers: Make multi-thread support configurable. Conditionally
5958compile
5959the multi-thread support so that threading libraries will not be linked
5960if
5961not
5962necessary. The only tool that requires multi-thread support is AcpiExec.
5963
5964iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
5965of
5966Bison appear to want the interface to yyerror to be a const char * (or at
5967least this is a problem when generating iASL on some systems.) ACPICA BZ
5968923
5969Pierre Lejeune.
5970
5971Tools: Fix for systems where O_BINARY is not defined. Only used for
5972Windows
5973versions of the tools.
5974
5975----------------------------------------
597627 May 2011. Summary of changes for version 20110527:
5977
59781) ACPI CA Core Subsystem:
5979
5980ASL Load() operator: Reinstate most restrictions on the incoming ACPI
5981table
5982signature. Now, only allow SSDT, OEMx, and a null signature. History:
5983    1) Originally, we checked the table signature for "SSDT" or "PSDT".
5984       (PSDT is now obsolete.)
5985    2) We added support for OEMx tables, signature "OEM" plus a fourth
5986       "don't care" character.
5987    3) Valid tables were encountered with a null signature, so we just
5988       gave up on validating the signature, (05/2008).
5989    4) We encountered non-AML tables such as the MADT, which caused
5990       interpreter errors and kernel faults. So now, we once again allow
5991       only SSDT, OEMx, and now, also a null signature. (05/2011).
5992
5993Added the missing _TDL predefined name to the global name list in order
5994to
5995enable validation. Affects both the core ACPICA code and the iASL
5996compiler.
5997
5998Example Code and Data Size: These are the sizes for the OS-independent
5999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6000debug
6001version of the code includes the debug output trace mechanism and has a
6002much
6003larger code and data size.
6004
6005  Previous Release (VC 9.0):
6006    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6007    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6008  Current Release (VC 9.0):
6009    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6010    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6011
60122) iASL Compiler/Disassembler and Tools:
6013
6014Debugger/AcpiExec: Implemented support for "complex" method arguments on
6015the
6016debugger command line. This adds support beyond simple integers --
6017including
6018Strings, Buffers, and Packages. Includes support for nested packages.
6019Increased the default command line buffer size to accommodate these
6020arguments.
6021See the ACPICA reference for details and syntax. ACPICA BZ 917.
6022
6023Debugger/AcpiExec: Implemented support for "default" method arguments for
6024the
6025Execute/Debug command. Now, the debugger will always invoke a control
6026method
6027with the required number of arguments -- even if the command line
6028specifies
6029none or insufficient arguments. It uses default integer values for any
6030missing
6031arguments. Also fixes a bug where only six method arguments maximum were
6032supported instead of the required seven.
6033
6034Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6035and
6036also return status in order to prevent buffer overruns. See the ACPICA
6037reference for details and syntax. ACPICA BZ 921
6038
6039iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6040makefiles to simplify support for the two different but similar parser
6041generators, bison and yacc.
6042
6043Updated the generic unix makefile for gcc 4. The default gcc version is
6044now
6045expected to be 4 or greater, since options specific to gcc 4 are used.
6046
6047----------------------------------------
604813 April 2011. Summary of changes for version 20110413:
6049
60501) ACPI CA Core Subsystem:
6051
6052Implemented support to execute a so-called "orphan" _REG method under the
6053EC
6054device. This change will force the execution of a _REG method underneath
6055the
6056EC
6057device even if there is no corresponding operation region of type
6058EmbeddedControl. Fixes a problem seen on some machines and apparently is
6059compatible with Windows behavior. ACPICA BZ 875.
6060
6061Added more predefined methods that are eligible for automatic NULL
6062package
6063element removal. This change adds another group of predefined names to
6064the
6065list
6066of names that can be repaired by having NULL package elements dynamically
6067removed. This group are those methods that return a single variable-
6068length
6069package containing simple data types such as integers, buffers, strings.
6070This
6071includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6072_PSL,
6073_Sx,
6074and _TZD. ACPICA BZ 914.
6075
6076Split and segregated all internal global lock functions to a new file,
6077evglock.c.
6078
6079Updated internal address SpaceID for DataTable regions. Moved this
6080internal
6081space
6082id in preparation for ACPI 5.0 changes that will include some new space
6083IDs.
6084This
6085change should not affect user/host code.
6086
6087Example Code and Data Size: These are the sizes for the OS-independent
6088acpica.lib
6089produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6090version of
6091the code includes the debug output trace mechanism and has a much larger
6092code
6093and
6094data size.
6095
6096  Previous Release (VC 9.0):
6097    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6098    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6099  Current Release (VC 9.0):
6100    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6101    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6102
61032) iASL Compiler/Disassembler and Tools:
6104
6105iASL/DTC: Major update for new grammar features. Allow generic data types
6106in
6107custom ACPI tables. Field names are now optional. Any line can be split
6108to
6109multiple lines using the continuation char (\). Large buffers now use
6110line-
6111continuation character(s) and no colon on the continuation lines. See the
6112grammar
6113update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6114Moore.
6115
6116iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6117statements.
6118Since the parser stuffs a "zero" as the return value for these statements
6119(due
6120to
6121the underlying AML grammar), they were seen as "return with value" by the
6122iASL
6123semantic checking. They are now seen correctly as "null" return
6124statements.
6125
6126iASL: Check if a_REG declaration has a corresponding Operation Region.
6127Adds a
6128check for each _REG to ensure that there is in fact a corresponding
6129operation
6130region declaration in the same scope. If not, the _REG method is not very
6131useful
6132since it probably won't be executed. ACPICA BZ 915.
6133
6134iASL/DTC: Finish support for expression evaluation. Added a new
6135expression
6136parser
6137that implements c-style operator precedence and parenthesization. ACPICA
6138bugzilla
6139908.
6140
6141Disassembler/DTC: Remove support for () and <> style comments in data
6142tables.
6143Now
6144that DTC has full expression support, we don't want to have comment
6145strings
6146that
6147start with a parentheses or a less-than symbol. Now, only the standard /*
6148and
6149//
6150comments are supported, as well as the bracket [] comments.
6151
6152AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6153"unusual"
6154headers in the acpidump file. Update the header validation to support
6155these
6156tables. Problem introduced in previous AcpiXtract version in the change
6157to
6158support "wrong checksum" error messages emitted by acpidump utility.
6159
6160iASL: Add a * option to generate all template files (as a synonym for
6161ALL)
6162as
6163in
6164"iasl -T *" or "iasl -T ALL".
6165
6166iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6167completely
6168abort the compiler on "fatal" errors, simply should abort the current
6169compile.
6170This allows multiple compiles with a single (possibly wildcard) compiler
6171invocation.
6172
6173----------------------------------------
617416 March 2011. Summary of changes for version 20110316:
6175
61761) ACPI CA Core Subsystem:
6177
6178Fixed a problem caused by a _PRW method appearing at the namespace root
6179scope
6180during the setup of wake GPEs. A fault could occur if a _PRW directly
6181under
6182the
6183root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6184
6185Implemented support for "spurious" Global Lock interrupts. On some
6186systems, a
6187global lock interrupt can occur without the pending flag being set. Upon
6188a
6189GL
6190interrupt, we now ensure that a thread is actually waiting for the lock
6191before
6192signaling GL availability. Rafael Wysocki, Bob Moore.
6193
6194Example Code and Data Size: These are the sizes for the OS-independent
6195acpica.lib
6196produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6197version of
6198the code includes the debug output trace mechanism and has a much larger
6199code
6200and
6201data size.
6202
6203  Previous Release (VC 9.0):
6204    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6205    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6206  Current Release (VC 9.0):
6207    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6208    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6209
62102) iASL Compiler/Disassembler and Tools:
6211
6212Implemented full support for the "SLIC" ACPI table. Includes support in
6213the
6214header files, disassembler, table compiler, and template generator. Bob
6215Moore,
6216Lin Ming.
6217
6218AcpiXtract: Correctly handle embedded comments and messages from
6219AcpiDump.
6220Apparently some or all versions of acpidump will occasionally emit a
6221comment
6222like
6223"Wrong checksum", etc., into the dump file. This was causing problems for
6224AcpiXtract. ACPICA BZ 905.
6225
6226iASL: Fix the Linux makefile by removing an inadvertent double file
6227inclusion.
6228ACPICA BZ 913.
6229
6230AcpiExec: Update installation of operation region handlers. Install one
6231handler
6232for a user-defined address space. This is used by the ASL test suite
6233(ASLTS).
6234
6235----------------------------------------
623611 February 2011. Summary of changes for version 20110211:
6237
62381) ACPI CA Core Subsystem:
6239
6240Added a mechanism to defer _REG methods for some early-installed
6241handlers.
6242Most user handlers should be installed before call to
6243AcpiEnableSubsystem.
6244However, Event handlers and region handlers should be installed after
6245AcpiInitializeObjects. Override handlers for the "default" regions should
6246be
6247installed early, however. This change executes all _REG methods for the
6248default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6249chicken/egg issues between them. ACPICA BZ 848.
6250
6251Implemented an optimization for GPE detection. This optimization will
6252simply
6253ignore GPE registers that contain no enabled GPEs -- there is no need to
6254read the register since this information is available internally. This
6255becomes more important on machines with a large GPE space. ACPICA
6256bugzilla
6257884. Lin Ming. Suggestion from Joe Liu.
6258
6259Removed all use of the highly unreliable FADT revision field. The
6260revision
6261number in the FADT has been found to be completely unreliable and cannot
6262be
6263trusted. Only the actual table length can be used to infer the version.
6264This
6265change updates the ACPICA core and the disassembler so that both no
6266longer
6267even look at the FADT version and instead depend solely upon the FADT
6268length.
6269
6270Fix an unresolved name issue for the no-debug and no-error-message source
6271generation cases. The _AcpiModuleName was left undefined in these cases,
6272but
6273it is actually needed as a parameter to some interfaces. Define
6274_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6275
6276Split several large files (makefiles and project files updated)
6277  utglobal.c   -> utdecode.c
6278  dbcomds.c    -> dbmethod.c dbnames.c
6279  dsopcode.c   -> dsargs.c dscontrol.c
6280  dsload.c     -> dsload2.c
6281  aslanalyze.c -> aslbtypes.c aslwalks.c
6282
6283Example Code and Data Size: These are the sizes for the OS-independent
6284acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6285debug version of the code includes the debug output trace mechanism and
6286has
6287a much larger code and data size.
6288
6289  Previous Release (VC 9.0):
6290    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6291    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6292  Current Release (VC 9.0):
6293    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6294    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6295
62962) iASL Compiler/Disassembler and Tools:
6297
6298iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6299These are useful C-style macros with the standard definitions. ACPICA
6300bugzilla 898.
6301
6302iASL/DTC: Added support for integer expressions and labels. Support for
6303full
6304expressions for all integer fields in all ACPI tables. Support for labels
6305in
6306"generic" portions of tables such as UEFI. See the iASL reference manual.
6307
6308Debugger: Added a command to display the status of global handlers. The
6309"handlers" command will display op region, fixed event, and miscellaneous
6310global handlers. installation status -- and for op regions, whether
6311default
6312or user-installed handler will be used.
6313
6314iASL: Warn if reserved method incorrectly returns a value. Many
6315predefined
6316names are defined such that they do not return a value. If implemented as
6317a
6318method, issue a warning if such a name explicitly returns a value. ACPICA
6319Bugzilla 855.
6320
6321iASL: Added detection of GPE method name conflicts. Detects a conflict
6322where
6323there are two GPE methods of the form _Lxy and _Exy in the same scope.
6324(For
6325example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6326
6327iASL/DTC: Fixed a couple input scanner issues with comments and line
6328numbers. Comment remover could get confused and miss a comment ending.
6329Fixed
6330a problem with line counter maintenance.
6331
6332iASL/DTC: Reduced the severity of some errors from fatal to error. There
6333is
6334no need to abort on simple errors within a field definition.
6335
6336Debugger: Simplified the output of the help command. All help output now
6337in
6338a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6339
6340----------------------------------------
634112 January 2011. Summary of changes for version 20110112:
6342
63431) ACPI CA Core Subsystem:
6344
6345Fixed a race condition between method execution and namespace walks that
6346can
6347possibly cause a fault. The problem was apparently introduced in version
634820100528 as a result of a performance optimization that reduces the
6349number
6350of
6351namespace walks upon method exit by using the delete_namespace_subtree
6352function instead of the delete_namespace_by_owner function used
6353previously.
6354Bug is a missing namespace lock in the delete_namespace_subtree function.
6355dana.myers@oracle.com
6356
6357Fixed several issues and a possible fault with the automatic "serialized"
6358method support. History: This support changes a method to "serialized" on
6359the
6360fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6361possibility that it cannot handle reentrancy. This fix repairs a couple
6362of
6363issues seen in the field, especially on machines with many cores:
6364
6365    1) Delete method children only upon the exit of the last thread,
6366       so as to not delete objects out from under other running threads
6367      (and possibly causing a fault.)
6368    2) Set the "serialized" bit for the method only upon the exit of the
6369       Last thread, so as to not cause deadlock when running threads
6370       attempt to exit.
6371    3) Cleanup the use of the AML "MethodFlags" and internal method flags
6372       so that there is no longer any confusion between the two.
6373
6374    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
6375
6376Debugger: Now lock the namespace for duration of a namespace dump.
6377Prevents
6378issues if the namespace is changing dynamically underneath the debugger.
6379Especially affects temporary namespace nodes, since the debugger displays
6380these also.
6381
6382Updated the ordering of include files. The ACPICA headers should appear
6383before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6384set
6385any necessary compiler-specific defines, etc. Affects the ACPI-related
6386tools
6387and utilities.
6388
6389Updated all ACPICA copyrights and signons to 2011. Added the 2011
6390copyright
6391to all module headers and signons, including the Linux header. This
6392affects
6393virtually every file in the ACPICA core subsystem, iASL compiler, and all
6394utilities.
6395
6396Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6397project files for VC++ 6.0 are now obsolete. New project files can be
6398found
6399under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6400details.
6401
6402Example Code and Data Size: These are the sizes for the OS-independent
6403acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6404debug version of the code includes the debug output trace mechanism and
6405has a
6406much larger code and data size.
6407
6408  Previous Release (VC 6.0):
6409    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6410    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6411  Current Release (VC 9.0):
6412    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6413    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6414
64152) iASL Compiler/Disassembler and Tools:
6416
6417iASL: Added generic data types to the Data Table compiler. Add "generic"
6418data
6419types such as UINT32, String, Unicode, etc., to simplify the generation
6420of
6421platform-defined tables such as UEFI. Lin Ming.
6422
6423iASL: Added listing support for the Data Table Compiler. Adds listing
6424support
6425(-l) to display actual binary output for each line of input code.
6426
6427----------------------------------------
642809 December 2010. Summary of changes for version 20101209:
6429
64301) ACPI CA Core Subsystem:
6431
6432Completed the major overhaul of the GPE support code that was begun in
6433July
64342010. Major features include: removal of _PRW execution in ACPICA (host
6435executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
6436changes to existing interfaces, simplification of GPE handler operation,
6437and
6438a handful of new interfaces:
6439
6440    AcpiUpdateAllGpes
6441    AcpiFinishGpe
6442    AcpiSetupGpeForWake
6443    AcpiSetGpeWakeMask
6444    One new file, evxfgpe.c to consolidate all external GPE interfaces.
6445
6446See the ACPICA Programmer Reference for full details and programming
6447information. See the new section 4.4 "General Purpose Event (GPE)
6448Support"
6449for a full overview, and section 8.7 "ACPI General Purpose Event
6450Management"
6451for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
6452Ming,
6453Bob Moore, Rafael Wysocki.
6454
6455Implemented a new GPE feature for Windows compatibility, the "Implicit
6456Wake
6457GPE Notify". This feature will automatically issue a Notify(2) on a
6458device
6459when a Wake GPE is received if there is no corresponding GPE method or
6460handler. ACPICA BZ 870.
6461
6462Fixed a problem with the Scope() operator during table parse and load
6463phase.
6464During load phase (table load or method execution), the scope operator
6465should
6466not enter the target into the namespace. Instead, it should open a new
6467scope
6468at the target location. Linux BZ 19462, ACPICA BZ 882.
6469
6470Example Code and Data Size: These are the sizes for the OS-independent
6471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6472debug version of the code includes the debug output trace mechanism and
6473has a
6474much larger code and data size.
6475
6476  Previous Release:
6477    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6478    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6479  Current Release:
6480    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6481    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6482
64832) iASL Compiler/Disassembler and Tools:
6484
6485iASL: Relax the alphanumeric restriction on _CID strings. These strings
6486are
6487"bus-specific" per the ACPI specification, and therefore any characters
6488are
6489acceptable. The only checks that can be performed are for a null string
6490and
6491perhaps for a leading asterisk. ACPICA BZ 886.
6492
6493iASL: Fixed a problem where a syntax error that caused a premature EOF
6494condition on the source file emitted a very confusing error message. The
6495premature EOF is now detected correctly. ACPICA BZ 891.
6496
6497Disassembler: Decode the AccessSize within a Generic Address Structure
6498(byte
6499access, word access, etc.) Note, this field does not allow arbitrary bit
6500access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
6501
6502New: AcpiNames utility - Example namespace dump utility. Shows an example
6503of
6504ACPICA configuration for a minimal namespace dump utility. Uses table and
6505namespace managers, but no AML interpreter. Does not add any
6506functionality
6507over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
6508partition and configure ACPICA. ACPICA BZ 883.
6509
6510AML Debugger: Increased the debugger buffer size for method return
6511objects.
6512Was 4K, increased to 16K. Also enhanced error messages for debugger
6513method
6514execution, including the buffer overflow case.
6515
6516----------------------------------------
651713 October 2010. Summary of changes for version 20101013:
6518
65191) ACPI CA Core Subsystem:
6520
6521Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
6522now
6523clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
6524HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
6525
6526Changed the type of the predefined namespace object _TZ from ThermalZone
6527to
6528Device. This was found to be confusing to the host software that
6529processes
6530the various thermal zones, since _TZ is not really a ThermalZone.
6531However,
6532a
6533Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
6534Zhang.
6535
6536Added Windows Vista SP2 to the list of supported _OSI strings. The actual
6537string is "Windows 2006 SP2".
6538
6539Eliminated duplicate code in AcpiUtExecute* functions. Now that the
6540nsrepair
6541code automatically repairs _HID-related strings, this type of code is no
6542longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
6543878.
6544
6545Example Code and Data Size: These are the sizes for the OS-independent
6546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6547debug version of the code includes the debug output trace mechanism and
6548has a
6549much larger code and data size.
6550
6551  Previous Release:
6552    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6553    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6554  Current Release:
6555    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6556    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6557
65582) iASL Compiler/Disassembler and Tools:
6559
6560iASL: Implemented additional compile-time validation for _HID strings.
6561The
6562non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
6563length
6564of
6565the string must be exactly seven or eight characters. For both _HID and
6566_CID
6567strings, all characters must be alphanumeric. ACPICA BZ 874.
6568
6569iASL: Allow certain "null" resource descriptors. Some BIOS code creates
6570descriptors that are mostly or all zeros, with the expectation that they
6571will
6572be filled in at runtime. iASL now allows this as long as there is a
6573"resource
6574tag" (name) associated with the descriptor, which gives the ASL a handle
6575needed to modify the descriptor. ACPICA BZ 873.
6576
6577Added single-thread support to the generic Unix application OSL.
6578Primarily
6579for iASL support, this change removes the use of semaphores in the
6580single-
6581threaded ACPICA tools/applications - increasing performance. The
6582_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
6583option. ACPICA BZ 879.
6584
6585AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
6586support
6587for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
6588
6589iASL: Moved all compiler messages to a new file, aslmessages.h.
6590
6591----------------------------------------
659215 September 2010. Summary of changes for version 20100915:
6593
65941) ACPI CA Core Subsystem:
6595
6596Removed the AcpiOsDerivePciId OSL interface. The various host
6597implementations
6598of this function were not OS-dependent and are now obsolete and can be
6599removed from all host OSLs. This function has been replaced by
6600AcpiHwDerivePciId, which is now part of the ACPICA core code.
6601AcpiHwDerivePciId has been implemented without recursion. Adds one new
6602module, hwpci.c. ACPICA BZ 857.
6603
6604Implemented a dynamic repair for _HID and _CID strings. The following
6605problems are now repaired at runtime: 1) Remove a leading asterisk in the
6606string, and 2) the entire string is uppercased. Both repairs are in
6607accordance with the ACPI specification and will simplify host driver
6608code.
6609ACPICA BZ 871.
6610
6611The ACPI_THREAD_ID type is no longer configurable, internally it is now
6612always UINT64. This simplifies the ACPICA code, especially any printf
6613output.
6614UINT64 is the only common data type for all thread_id types across all
6615operating systems. It is now up to the host OSL to cast the native
6616thread_id
6617type to UINT64 before returning the value to ACPICA (via
6618AcpiOsGetThreadId).
6619Lin Ming, Bob Moore.
6620
6621Added the ACPI_INLINE type to enhance the ACPICA configuration. The
6622"inline"
6623keyword is not standard across compilers, and this type allows inline to
6624be
6625configured on a per-compiler basis. Lin Ming.
6626
6627Made the system global AcpiGbl_SystemAwakeAndRunning publically
6628available.
6629Added an extern for this boolean in acpixf.h. Some hosts utilize this
6630value
6631during suspend/restore operations. ACPICA BZ 869.
6632
6633All code that implements error/warning messages with the "ACPI:" prefix
6634has
6635been moved to a new module, utxferror.c.
6636
6637The UINT64_OVERLAY was moved to utmath.c, which is the only module where
6638it
6639is used. ACPICA BZ 829. Lin Ming, Bob Moore.
6640
6641Example Code and Data Size: These are the sizes for the OS-independent
6642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6643debug version of the code includes the debug output trace mechanism and
6644has a
6645much larger code and data size.
6646
6647  Previous Release:
6648    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6649    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6650  Current Release:
6651    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6652    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6653
66542) iASL Compiler/Disassembler and Tools:
6655
6656iASL/Disassembler: Write ACPI errors to stderr instead of the output
6657file.
6658This keeps the output files free of random error messages that may
6659originate
6660from within the namespace/interpreter code. Used this opportunity to
6661merge
6662all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
6663866. Lin Ming, Bob Moore.
6664
6665Tools: update some printfs for ansi warnings on size_t. Handle width
6666change
6667of size_t on 32-bit versus 64-bit generations. Lin Ming.
6668
6669----------------------------------------
667006 August 2010. Summary of changes for version 20100806:
6671
66721) ACPI CA Core Subsystem:
6673
6674Designed and implemented a new host interface to the _OSI support code.
6675This
6676will allow the host to dynamically add or remove multiple _OSI strings,
6677as
6678well as install an optional handler that is called for each _OSI
6679invocation.
6680Also added a new AML debugger command, 'osi' to display and modify the
6681global
6682_OSI string table, and test support in the AcpiExec utility. See the
6683ACPICA
6684reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
6685New Functions:
6686    AcpiInstallInterface - Add an _OSI string.
6687    AcpiRemoveInterface - Delete an _OSI string.
6688    AcpiInstallInterfaceHandler - Install optional _OSI handler.
6689Obsolete Functions:
6690    AcpiOsValidateInterface - no longer used.
6691New Files:
6692    source/components/utilities/utosi.c
6693
6694Re-introduced the support to enable multi-byte transfers for Embedded
6695Controller (EC) operation regions. A reported problem was found to be a
6696bug
6697in the host OS, not in the multi-byte support. Previously, the maximum
6698data
6699size passed to the EC operation region handler was a single byte. There
6700are
6701often EC Fields larger than one byte that need to be transferred, and it
6702is
6703useful for the EC driver to lock these as a single transaction. This
6704change
6705enables single transfers larger than 8 bits. This effectively changes the
6706access to the EC space from ByteAcc to AnyAcc, and will probably require
6707changes to the host OS Embedded Controller driver to enable 16/32/64/256-
6708bit
6709transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
6710
6711Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
6712prototype in acpiosxf.h had the output value pointer as a (void *).
6713It should be a (UINT64 *). This may affect some host OSL code.
6714
6715Fixed a couple problems with the recently modified Linux makefiles for
6716iASL
6717and AcpiExec. These new makefiles place the generated object files in the
6718local directory so that there can be no collisions between the files that
6719are
6720shared between them that are compiled with different options.
6721
6722Example Code and Data Size: These are the sizes for the OS-independent
6723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6724debug version of the code includes the debug output trace mechanism and
6725has a
6726much larger code and data size.
6727
6728  Previous Release:
6729    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6730    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6731  Current Release:
6732    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6733    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6734
67352) iASL Compiler/Disassembler and Tools:
6736
6737iASL/Disassembler: Added a new option (-da, "disassemble all") to load
6738the
6739namespace from and disassemble an entire group of AML files. Useful for
6740loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
6741and
6742disassembling with one simple command. ACPICA BZ 865. Lin Ming.
6743
6744iASL: Allow multiple invocations of -e option. This change allows
6745multiple
6746uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
6747834.
6748Lin Ming.
6749
6750----------------------------------------
675102 July 2010. Summary of changes for version 20100702:
6752
67531) ACPI CA Core Subsystem:
6754
6755Implemented several updates to the recently added GPE reference count
6756support. The model for "wake" GPEs is changing to give the host OS
6757complete
6758control of these GPEs. Eventually, the ACPICA core will not execute any
6759_PRW
6760methods, since the host already must execute them. Also, additional
6761changes
6762were made to help ensure that the reference counts are kept in proper
6763synchronization with reality. Rafael J. Wysocki.
6764
67651) Ensure that GPEs are not enabled twice during initialization.
67662) Ensure that GPE enable masks stay in sync with the reference count.
67673) Do not inadvertently enable GPEs when writing GPE registers.
67684) Remove the internal wake reference counter and add new AcpiGpeWakeup
6769interface. This interface will set or clear individual GPEs for wakeup.
67705) Remove GpeType argument from AcpiEnable and AcpiDisable. These
6771interfaces
6772are now used for "runtime" GPEs only.
6773
6774Changed the behavior of the GPE install/remove handler interfaces. The
6775GPE
6776is
6777no longer disabled during this process, as it was found to cause problems
6778on
6779some machines. Rafael J. Wysocki.
6780
6781Reverted a change introduced in version 20100528 to enable Embedded
6782Controller multi-byte transfers. This change was found to cause problems
6783with
6784Index Fields and possibly Bank Fields. It will be reintroduced when these
6785problems have been resolved.
6786
6787Fixed a problem with references to Alias objects within Package Objects.
6788A
6789reference to an Alias within the definition of a Package was not always
6790resolved properly. Aliases to objects like Processors, Thermal zones,
6791etc.
6792were resolved to the actual object instead of a reference to the object
6793as
6794it
6795should be. Package objects are only allowed to contain integer, string,
6796buffer, package, and reference objects. Redhat bugzilla 608648.
6797
6798Example Code and Data Size: These are the sizes for the OS-independent
6799acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6800debug version of the code includes the debug output trace mechanism and
6801has a
6802much larger code and data size.
6803
6804  Previous Release:
6805    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6806    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6807  Current Release:
6808    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6809    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6810
68112) iASL Compiler/Disassembler and Tools:
6812
6813iASL: Implemented a new compiler subsystem to allow definition and
6814compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
6815These
6816are called "ACPI Data Tables", and the new compiler is the "Data Table
6817Compiler". This compiler is intended to simplify the existing error-prone
6818process of creating these tables for the BIOS, as well as allowing the
6819disassembly, modification, recompilation, and override of existing ACPI
6820data
6821tables. See the iASL User Guide for detailed information.
6822
6823iASL: Implemented a new Template Generator option in support of the new
6824Data
6825Table Compiler. This option will create examples of all known ACPI tables
6826that can be used as the basis for table development. See the iASL
6827documentation and the -T option.
6828
6829Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
6830Descriptor Table).
6831
6832Updated the Linux makefiles for iASL and AcpiExec to place the generated
6833object files in the local directory so that there can be no collisions
6834between the shared files between them that are generated with different
6835options.
6836
6837Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
6838Use
6839the #define __APPLE__ to enable this support.
6840
6841----------------------------------------
684228 May 2010. Summary of changes for version 20100528:
6843
6844Note: The ACPI 4.0a specification was released on April 5, 2010 and is
6845available at www.acpi.info. This is primarily an errata release.
6846
68471) ACPI CA Core Subsystem:
6848
6849Undefined ACPI tables: We are looking for the definitions for the
6850following
6851ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
6852
6853Implemented support to enable multi-byte transfers for Embedded
6854Controller
6855(EC) operation regions. Previously, the maximum data size passed to the
6856EC
6857operation region handler was a single byte. There are often EC Fields
6858larger
6859than one byte that need to be transferred, and it is useful for the EC
6860driver
6861to lock these as a single transaction. This change enables single
6862transfers
6863larger than 8 bits. This effectively changes the access to the EC space
6864from
6865ByteAcc to AnyAcc, and will probably require changes to the host OS
6866Embedded
6867Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
6868bit
6869transfers. Alexey Starikovskiy, Lin Ming
6870
6871Implemented a performance enhancement for namespace search and access.
6872This
6873change enhances the performance of namespace searches and walks by adding
6874a
6875backpointer to the parent in each namespace node. On large namespaces,
6876this
6877change can improve overall ACPI performance by up to 9X. Adding a pointer
6878to
6879each namespace node increases the overall size of the internal namespace
6880by
6881about 5%, since each namespace entry usually consists of both a namespace
6882node and an ACPI operand object. However, this is the first growth of the
6883namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
6884
6885Implemented a performance optimization that reduces the number of
6886namespace
6887walks. On control method exit, only walk the namespace if the method is
6888known
6889to have created namespace objects outside of its local scope. Previously,
6890the
6891entire namespace was traversed on each control method exit. This change
6892can
6893improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
6894Moore.
6895
6896Added support to truncate I/O addresses to 16 bits for Windows
6897compatibility.
6898Some ASL code has been seen in the field that inadvertently has bits set
6899above bit 15. This feature is optional and is enabled if the BIOS
6900requests
6901any Windows OSI strings. It can also be enabled by the host OS. Matthew
6902Garrett, Bob Moore.
6903
6904Added support to limit the maximum time for the ASL Sleep() operator. To
6905prevent accidental deep sleeps, limit the maximum time that Sleep() will
6906actually sleep. Configurable, the default maximum is two seconds. ACPICA
6907bugzilla 854.
6908
6909Added run-time validation support for the _WDG and_WED Microsoft
6910predefined
6911methods. These objects are defined by "Windows Instrumentation", and are
6912not
6913part of the ACPI spec. ACPICA BZ 860.
6914
6915Expanded all statistic counters used during namespace and device
6916initialization from 16 to 32 bits in order to support very large
6917namespaces.
6918
6919Replaced all instances of %d in printf format specifiers with %u since
6920nearly
6921all integers in ACPICA are unsigned.
6922
6923Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
6924returned
6925as AE_NO_HANDLER.
6926
6927Example Code and Data Size: These are the sizes for the OS-independent
6928acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6929debug version of the code includes the debug output trace mechanism and
6930has a
6931much larger code and data size.
6932
6933  Previous Release:
6934    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6935    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6936  Current Release:
6937    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6938    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6939
69402) iASL Compiler/Disassembler and Tools:
6941
6942iASL: Added compiler support for the _WDG and_WED Microsoft predefined
6943methods. These objects are defined by "Windows Instrumentation", and are
6944not
6945part of the ACPI spec. ACPICA BZ 860.
6946
6947AcpiExec: added option to disable the memory tracking mechanism. The -dt
6948option will disable the tracking mechanism, which improves performance
6949considerably.
6950
6951AcpiExec: Restructured the command line options into -d (disable) and -e
6952(enable) options.
6953
6954----------------------------------------
695528 April 2010. Summary of changes for version 20100428:
6956
69571) ACPI CA Core Subsystem:
6958
6959Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
6960including FADT-based and GPE Block Devices, execute any _PRW methods in
6961the
6962new table, and process any _Lxx/_Exx GPE methods in the new table. Any
6963runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
6964immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
6965Devices. Provides compatibility with other ACPI implementations. Two new
6966files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
6967Moore.
6968
6969Fixed a regression introduced in version 20100331 within the table
6970manager
6971where initial table loading could fail. This was introduced in the fix
6972for
6973AcpiReallocateRootTable. Also, renamed some of fields in the table
6974manager
6975data structures to clarify their meaning and use.
6976
6977Fixed a possible allocation overrun during internal object copy in
6978AcpiUtCopySimpleObject. The original code did not correctly handle the
6979case
6980where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
6981847.
6982
6983Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
6984possible access beyond end-of-allocation. Also, now fully validate
6985descriptor
6986(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
6987
6988Example Code and Data Size: These are the sizes for the OS-independent
6989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6990debug version of the code includes the debug output trace mechanism and
6991has a
6992much larger code and data size.
6993
6994  Previous Release:
6995    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6996    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6997  Current Release:
6998    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6999    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7000
70012) iASL Compiler/Disassembler and Tools:
7002
7003iASL: Implemented Min/Max/Len/Gran validation for address resource
7004descriptors. This change implements validation for the address fields
7005that
7006are common to all address-type resource descriptors. These checks are
7007implemented: Checks for valid Min/Max, length within the Min/Max window,
7008valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7009per
7010table 6-40 in the ACPI 4.0a specification. Also split the large
7011aslrestype1.c
7012and aslrestype2.c files into five new files. ACPICA BZ 840.
7013
7014iASL: Added support for the _Wxx predefined names. This support was
7015missing
7016and these names were not recognized by the compiler as valid predefined
7017names. ACPICA BZ 851.
7018
7019iASL: Added an error for all predefined names that are defined to return
7020no
7021value and thus must be implemented as Control Methods. These include all
7022of
7023the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7024names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7025
7026iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7027an
7028ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7029be
7030dynamically loaded via the Load() operator. Also cleaned up output for
7031the
7032-
7033ta and -tc options. ACPICA BZ 853.
7034
7035Tests: Added a new file with examples of extended iASL error checking.
7036Demonstrates the advanced error checking ability of the iASL compiler.
7037Available at tests/misc/badcode.asl.
7038
7039----------------------------------------
704031 March 2010. Summary of changes for version 20100331:
7041
70421) ACPI CA Core Subsystem:
7043
7044Completed a major update for the GPE support in order to improve support
7045for
7046shared GPEs and to simplify both host OS and ACPICA code. Added a
7047reference
7048count mechanism to support shared GPEs that require multiple device
7049drivers.
7050Several external interfaces have changed. One external interface has been
7051removed. One new external interface was added. Most of the GPE external
7052interfaces now use the GPE spinlock instead of the events mutex (and the
7053Flags parameter for many GPE interfaces has been removed.) See the
7054updated
7055ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7056Rafael
7057Wysocki. ACPICA BZ 831.
7058
7059Changed:
7060    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7061Removed:
7062    AcpiSetGpeType
7063New:
7064    AcpiSetGpe
7065
7066Implemented write support for DataTable operation regions. These regions
7067are
7068defined via the DataTableRegion() operator. Previously, only read support
7069was
7070implemented. The ACPI specification allows DataTableRegions to be
7071read/write,
7072however.
7073
7074Implemented a new subsystem option to force a copy of the DSDT to local
7075memory. Optionally copy the entire DSDT to local memory (instead of
7076simply
7077mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7078replace
7079the original DSDT, creating the need for this option. Default is FALSE,
7080do
7081not copy the DSDT.
7082
7083Implemented detection of a corrupted or replaced DSDT. This change adds
7084support to detect a DSDT that has been corrupted and/or replaced from
7085outside
7086the OS (by firmware). This is typically catastrophic for the system, but
7087has
7088been seen on some machines. Once this problem has been detected, the DSDT
7089copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7090
7091Fixed two problems with AcpiReallocateRootTable during the root table
7092copy.
7093When copying the root table to the new allocation, the length used was
7094incorrect. The new size was used instead of the current table size,
7095meaning
7096too much data was copied. Also, the count of available slots for ACPI
7097tables
7098was not set correctly. Alexey Starikovskiy, Bob Moore.
7099
7100Example Code and Data Size: These are the sizes for the OS-independent
7101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7102debug version of the code includes the debug output trace mechanism and
7103has a
7104much larger code and data size.
7105
7106  Previous Release:
7107    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7108    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7109  Current Release:
7110    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7111    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7112
71132) iASL Compiler/Disassembler and Tools:
7114
7115iASL: Implement limited typechecking for values returned from predefined
7116control methods. The type of any returned static (unnamed) object is now
7117validated. For example, Return(1). ACPICA BZ 786.
7118
7119iASL: Fixed a predefined name object verification regression. Fixes a
7120problem
7121introduced in version 20100304. An error is incorrectly generated if a
7122predefined name is declared as a static named object with a value defined
7123using the keywords "Zero", "One", or "Ones". Lin Ming.
7124
7125iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7126by
7127reducing the requested registry access rights. ACPICA BZ 842.
7128
7129Disassembler: fixed a possible fault when generating External()
7130statements.
7131Introduced in commit ae7d6fd: Properly handle externals with parent-
7132prefix
7133(carat). Fixes a string length allocation calculation. Lin Ming.
7134
7135----------------------------------------
713604 March 2010. Summary of changes for version 20100304:
7137
71381) ACPI CA Core Subsystem:
7139
7140Fixed a possible problem with the AML Mutex handling function
7141AcpiExReleaseMutex where the function could fault under the very rare
7142condition when the interpreter has blocked, the interpreter lock is
7143released,
7144the interpreter is then reentered via the same thread, and attempts to
7145acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7146Lin
7147Ming.
7148
7149Implemented additional configuration support for the AML "Debug Object".
7150Output from the debug object can now be enabled via a global variable,
7151AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7152debugging.
7153This debug output is now available in the release version of ACPICA
7154instead
7155of just the debug version. Also, the entire debug output module can now
7156be
7157configured out of the ACPICA build if desired. One new file added,
7158executer/exdebug.c. Lin Ming, Bob Moore.
7159
7160Added header support for the ACPI MCHI table (Management Controller Host
7161Interface Table). This table was added in ACPI 4.0, but the defining
7162document
7163has only recently become available.
7164
7165Standardized output of integer values for ACPICA warnings/errors. Always
7166use
71670x prefix for hex output, always use %u for unsigned integer decimal
7168output.
7169Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7170400
7171invocations.) These invocations were converted from the original
7172ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7173
7174Example Code and Data Size: These are the sizes for the OS-independent
7175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7176debug version of the code includes the debug output trace mechanism and
7177has a
7178much larger code and data size.
7179
7180  Previous Release:
7181    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7182    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7183  Current Release:
7184    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7185    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7186
71872) iASL Compiler/Disassembler and Tools:
7188
7189iASL: Implemented typechecking support for static (non-control method)
7190predefined named objects that are declared with the Name() operator. For
7191example, the type of this object is now validated to be of type Integer:
7192Name(_BBN, 1). This change migrates the compiler to using the core
7193predefined
7194name table instead of maintaining a local version. Added a new file,
7195aslpredef.c. ACPICA BZ 832.
7196
7197Disassembler: Added support for the ACPI 4.0 MCHI table.
7198
7199----------------------------------------
720021 January 2010. Summary of changes for version 20100121:
7201
72021) ACPI CA Core Subsystem:
7203
7204Added the 2010 copyright to all module headers and signons. This affects
7205virtually every file in the ACPICA core subsystem, the iASL compiler, the
7206tools/utilities, and the test suites.
7207
7208Implemented a change to the AcpiGetDevices interface to eliminate
7209unnecessary
7210invocations of the _STA method. In the case where a specific _HID is
7211requested, do not run _STA until a _HID match is found. This eliminates
7212potentially dozens of _STA calls during a search for a particular
7213device/HID,
7214which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7215
7216Implemented an additional repair for predefined method return values.
7217Attempt
7218to repair unexpected NULL elements within returned Package objects.
7219Create
7220an
7221Integer of value zero, a NULL String, or a zero-length Buffer as
7222appropriate.
7223ACPICA BZ 818. Lin Ming, Bob Moore.
7224
7225Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7226the
7227code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7228(with
722964-bit AML integers). It is now obsolete and this change removes it from
7230the
7231ACPICA code base, replaced by UINT64. The original typedef has been
7232retained
7233for now for compatibility with existing device driver code. ACPICA BZ
7234824.
7235
7236Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7237in
7238the parse tree object.
7239
7240Added additional warning options for the gcc-4 generation. Updated the
7241source
7242accordingly. This includes some code restructuring to eliminate
7243unreachable
7244code, elimination of some gotos, elimination of unused return values,
7245some
7246additional casting, and removal of redundant declarations.
7247
7248Example Code and Data Size: These are the sizes for the OS-independent
7249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7250debug version of the code includes the debug output trace mechanism and
7251has a
7252much larger code and data size.
7253
7254  Previous Release:
7255    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7256    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7257  Current Release:
7258    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7259    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7260
72612) iASL Compiler/Disassembler and Tools:
7262
7263No functional changes for this release.
7264
7265----------------------------------------
726614 December 2009. Summary of changes for version 20091214:
7267
72681) ACPI CA Core Subsystem:
7269
7270Enhanced automatic data type conversions for predefined name repairs.
7271This
7272change expands the automatic repairs/conversions for predefined name
7273return
7274values to make Integers, Strings, and Buffers fully interchangeable.
7275Also,
7276a
7277Buffer can be converted to a Package of Integers if necessary. The
7278nsrepair.c
7279module was completely restructured. Lin Ming, Bob Moore.
7280
7281Implemented automatic removal of null package elements during predefined
7282name
7283repairs. This change will automatically remove embedded and trailing NULL
7284package elements from returned package objects that are defined to
7285contain
7286a
7287variable number of sub-packages. The driver is then presented with a
7288package
7289with no null elements to deal with. ACPICA BZ 819.
7290
7291Implemented a repair for the predefined _FDE and _GTM names. The expected
7292return value for both names is a Buffer of 5 DWORDs. This repair fixes
7293two
7294possible problems (both seen in the field), where a package of integers
7295is
7296returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7297Kim.
7298
7299Implemented additional module-level code support. This change will
7300properly
7301execute module-level code that is not at the root of the namespace (under
7302a
7303Device object, etc.). Now executes the code within the current scope
7304instead
7305of the root. ACPICA BZ 762. Lin Ming.
7306
7307Fixed possible mutex acquisition errors when running _REG methods. Fixes
7308a
7309problem where mutex errors can occur when running a _REG method that is
7310in
7311the same scope as a method-defined operation region or an operation
7312region
7313under a module-level IF block. This type of code is rare, so the problem
7314has
7315not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7316
7317Fixed a possible memory leak during module-level code execution. An
7318object
7319could be leaked for each block of executed module-level code if the
7320interpreter slack mode is enabled This change deletes any implicitly
7321returned
7322object from the module-level code block. Lin Ming.
7323
7324Removed messages for successful predefined repair(s). The repair
7325mechanism
7326was considered too wordy. Now, messages are only unconditionally emitted
7327if
7328the return object cannot be repaired. Existing messages for successful
7329repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7330827.
7331
7332Example Code and Data Size: These are the sizes for the OS-independent
7333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7334debug version of the code includes the debug output trace mechanism and
7335has a
7336much larger code and data size.
7337
7338  Previous Release:
7339    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7340    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7341  Current Release:
7342    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7343    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7344
73452) iASL Compiler/Disassembler and Tools:
7346
7347iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7348files
7349were no longer automatically removed at the termination of the compile.
7350
7351acpiexec: Implemented the -f option to specify default region fill value.
7352This option specifies the value used to initialize buffers that simulate
7353operation regions. Default value is zero. Useful for debugging problems
7354that
7355depend on a specific initial value for a region or field.
7356
7357----------------------------------------
735812 November 2009. Summary of changes for version 20091112:
7359
73601) ACPI CA Core Subsystem:
7361
7362Implemented a post-order callback to AcpiWalkNamespace. The existing
7363interface only has a pre-order callback. This change adds an additional
7364parameter for a post-order callback which will be more useful for bus
7365scans.
7366ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7367
7368Modified the behavior of the operation region memory mapping cache for
7369SystemMemory. Ensure that the memory mappings created for operation
7370regions
7371do not cross 4K page boundaries. Crossing a page boundary while mapping
7372regions can cause kernel warnings on some hosts if the pages have
7373different
7374attributes. Such regions are probably BIOS bugs, and this is the
7375workaround.
7376Linux BZ 14445. Lin Ming.
7377
7378Implemented an automatic repair for predefined methods that must return
7379sorted lists. This change will repair (by sorting) packages returned by
7380_ALR,
7381_PSS, and _TSS. Drivers can now assume that the packages are correctly
7382sorted
7383and do not contain NULL package elements. Adds one new file,
7384namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7385
7386Fixed a possible fault during predefined name validation if a return
7387Package
7388object contains NULL elements. Also adds a warning if a NULL element is
7389followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7390may
7391include repair or removal of all such NULL elements where possible.
7392
7393Implemented additional module-level executable AML code support. This
7394change
7395will execute module-level code that is not at the root of the namespace
7396(under a Device object, etc.) at table load time. Module-level executable
7397AML
7398code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7399
7400Implemented a new internal function to create Integer objects. This
7401function
7402simplifies miscellaneous object creation code. ACPICA BZ 823.
7403
7404Reduced the severity of predefined repair messages, Warning to Info.
7405Since
7406the object was successfully repaired, a warning is too severe. Reduced to
7407an
7408info message for now. These messages may eventually be changed to debug-
7409only.
7410ACPICA BZ 812.
7411
7412Example Code and Data Size: These are the sizes for the OS-independent
7413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7414debug version of the code includes the debug output trace mechanism and
7415has a
7416much larger code and data size.
7417
7418  Previous Release:
7419    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7420    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7421  Current Release:
7422    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7423    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7424
74252) iASL Compiler/Disassembler and Tools:
7426
7427iASL: Implemented Switch() with While(1) so that Break works correctly.
7428This
7429change correctly implements the Switch operator with a surrounding
7430While(1)
7431so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
7432
7433iASL: Added a message if a package initializer list is shorter than
7434package
7435length. Adds a new remark for a Package() declaration if an initializer
7436list
7437exists, but is shorter than the declared length of the package. Although
7438technically legal, this is probably a coding error and it is seen in the
7439field. ACPICA BZ 815. Lin Ming, Bob Moore.
7440
7441iASL: Fixed a problem where the compiler could fault after the maximum
7442number
7443of errors was reached (200).
7444
7445acpixtract: Fixed a possible warning for pointer cast if the compiler
7446warning
7447level set very high.
7448
7449----------------------------------------
745013 October 2009. Summary of changes for version 20091013:
7451
74521) ACPI CA Core Subsystem:
7453
7454Fixed a problem where an Operation Region _REG method could be executed
7455more
7456than once. If a custom address space handler is installed by the host
7457before
7458the "initialize operation regions" phase of the ACPICA initialization,
7459any
7460_REG methods for that address space could be executed twice. This change
7461fixes the problem. ACPICA BZ 427. Lin Ming.
7462
7463Fixed a possible memory leak for the Scope() ASL operator. When the exact
7464invocation of "Scope(\)" is executed (change scope to root), one internal
7465operand object was leaked. Lin Ming.
7466
7467Implemented a run-time repair for the _MAT predefined method. If the _MAT
7468return value is defined as a Field object in the AML, and the field
7469size is less than or equal to the default width of an integer (32 or
747064),_MAT
7471can incorrectly return an Integer instead of a Buffer. ACPICA now
7472automatically repairs this problem. ACPICA BZ 810.
7473
7474Implemented a run-time repair for the _BIF and _BIX predefined methods.
7475The
7476"OEM Information" field is often incorrectly returned as an Integer with
7477value zero if the field is not supported by the platform. This is due to
7478an
7479ambiguity in the ACPI specification. The field should always be a string.
7480ACPICA now automatically repairs this problem by returning a NULL string
7481within the returned Package. ACPICA BZ 807.
7482
7483Example Code and Data Size: These are the sizes for the OS-independent
7484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7485debug version of the code includes the debug output trace mechanism and
7486has a
7487much larger code and data size.
7488
7489  Previous Release:
7490    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7491    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7492  Current Release:
7493    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7494    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7495
74962) iASL Compiler/Disassembler and Tools:
7497
7498Disassembler: Fixed a problem where references to external symbols that
7499contained one or more parent-prefixes (carats) were not handled
7500correctly,
7501possibly causing a fault. ACPICA BZ 806. Lin Ming.
7502
7503Disassembler: Restructured the code so that all functions that handle
7504external symbols are in a single module. One new file is added,
7505common/dmextern.c.
7506
7507AML Debugger: Added a max count argument for the Batch command (which
7508executes multiple predefined methods within the namespace.)
7509
7510iASL: Updated the compiler documentation (User Reference.) Available at
7511http://www.acpica.org/documentation/. ACPICA BZ 750.
7512
7513AcpiXtract: Updated for Lint and other formatting changes. Close all open
7514files.
7515
7516----------------------------------------
751703 September 2009. Summary of changes for version 20090903:
7518
75191) ACPI CA Core Subsystem:
7520
7521For Windows Vista compatibility, added the automatic execution of an _INI
7522method located at the namespace root (\_INI). This method is executed at
7523table load time. This support is in addition to the automatic execution
7524of
7525\_SB._INI. Lin Ming.
7526
7527Fixed a possible memory leak in the interpreter for AML package objects
7528if
7529the package initializer list is longer than the defined size of the
7530package.
7531This apparently can only happen if the BIOS changes the package size on
7532the
7533fly (seen in a _PSS object), as ASL compilers do not allow this. The
7534interpreter will truncate the package to the defined size (and issue an
7535error
7536message), but previously could leave the extra objects undeleted if they
7537were
7538pre-created during the argument processing (such is the case if the
7539package
7540consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
7541
7542Fixed a problem seen when a Buffer or String is stored to itself via ASL.
7543This has been reported in the field. Previously, ACPICA would zero out
7544the
7545buffer/string. Now, the operation is treated as a noop. Provides Windows
7546compatibility. ACPICA BZ 803. Lin Ming.
7547
7548Removed an extraneous error message for ASL constructs of the form
7549Store(LocalX,LocalX) when LocalX is uninitialized. These curious
7550statements
7551are seen in many BIOSs and are once again treated as NOOPs and no error
7552is
7553emitted when they are encountered. ACPICA BZ 785.
7554
7555Fixed an extraneous warning message if a _DSM reserved method returns a
7556Package object. _DSM can return any type of object, so validation on the
7557return type cannot be performed. ACPICA BZ 802.
7558
7559Example Code and Data Size: These are the sizes for the OS-independent
7560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7561debug version of the code includes the debug output trace mechanism and
7562has a
7563much larger code and data size.
7564
7565  Previous Release:
7566    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7567    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7568  Current Release:
7569    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7570    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7571
75722) iASL Compiler/Disassembler and Tools:
7573
7574iASL: Fixed a problem with the use of the Alias operator and Resource
7575Templates. The correct alias is now constructed and no error is emitted.
7576ACPICA BZ 738.
7577
7578iASL: Implemented the -I option to specify additional search directories
7579for
7580include files. Allows multiple additional search paths for include files.
7581Directories are searched in the order specified on the command line
7582(after
7583the local directory is searched.) ACPICA BZ 800.
7584
7585iASL: Fixed a problem where the full pathname for include files was not
7586emitted for warnings/errors. This caused the IDE support to not work
7587properly. ACPICA BZ 765.
7588
7589iASL: Implemented the -@ option to specify a Windows-style response file
7590containing additional command line options. ACPICA BZ 801.
7591
7592AcpiExec: Added support to load multiple AML files simultaneously (such
7593as
7594a
7595DSDT and multiple SSDTs). Also added support for wildcards within the AML
7596pathname. These features allow all machine tables to be easily loaded and
7597debugged together. ACPICA BZ 804.
7598
7599Disassembler: Added missing support for disassembly of HEST table Error
7600Bank
7601subtables.
7602
7603----------------------------------------
760430 July 2009. Summary of changes for version 20090730:
7605
7606The ACPI 4.0 implementation for ACPICA is complete with this release.
7607
76081) ACPI CA Core Subsystem:
7609
7610ACPI 4.0: Added header file support for all new and changed ACPI tables.
7611Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
7612new
7613for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
7614BERT,
7615EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
7616There
7617have been some ACPI 4.0 changes to other existing tables. Split the large
7618actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
7619
7620ACPI 4.0: Implemented predefined name validation for all new names. There
7621are
762231 new names in ACPI 4.0. The predefined validation module was split into
7623two
7624files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
7625
7626Implemented support for so-called "module-level executable code". This is
7627executable AML code that exists outside of any control method and is
7628intended
7629to be executed at table load time. Although illegal since ACPI 2.0, this
7630type
7631of code still exists and is apparently still being created. Blocks of
7632this
7633code are now detected and executed as intended. Currently, the code
7634blocks
7635must exist under either an If, Else, or While construct; these are the
7636typical cases seen in the field. ACPICA BZ 762. Lin Ming.
7637
7638Implemented an automatic dynamic repair for predefined names that return
7639nested Package objects. This applies to predefined names that are defined
7640to
7641return a variable-length Package of sub-packages. If the number of sub-
7642packages is one, BIOS code is occasionally seen that creates a simple
7643single
7644package with no sub-packages. This code attempts to fix the problem by
7645wrapping a new package object around the existing package. These methods
7646can
7647be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
7648BZ
7649790.
7650
7651Fixed a regression introduced in 20090625 for the AcpiGetDevices
7652interface.
7653The _HID/_CID matching was broken and no longer matched IDs correctly.
7654ACPICA
7655BZ 793.
7656
7657Fixed a problem with AcpiReset where the reset would silently fail if the
7658register was one of the protected I/O ports. AcpiReset now bypasses the
7659port
7660validation mechanism. This may eventually be driven into the
7661AcpiRead/Write
7662interfaces.
7663
7664Fixed a regression related to the recent update of the AcpiRead/Write
7665interfaces. A sleep/suspend could fail if the optional PM2 Control
7666register
7667does not exist during an attempt to write the Bus Master Arbitration bit.
7668(However, some hosts already delete the code that writes this bit, and
7669the
7670code may in fact be obsolete at this date.) ACPICA BZ 799.
7671
7672Fixed a problem where AcpiTerminate could fault if inadvertently called
7673twice
7674in succession. ACPICA BZ 795.
7675
7676Example Code and Data Size: These are the sizes for the OS-independent
7677acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7678debug version of the code includes the debug output trace mechanism and
7679has a
7680much larger code and data size.
7681
7682  Previous Release:
7683    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7684    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7685  Current Release:
7686    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7687    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7688
76892) iASL Compiler/Disassembler and Tools:
7690
7691ACPI 4.0: Implemented disassembler support for all new ACPI tables and
7692changes to existing tables. ACPICA BZ 775.
7693
7694----------------------------------------
769525 June 2009. Summary of changes for version 20090625:
7696
7697The ACPI 4.0 Specification was released on June 16 and is available at
7698www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
7699continue for the next few releases.
7700
77011) ACPI CA Core Subsystem:
7702
7703ACPI 4.0: Implemented interpreter support for the IPMI operation region
7704address space. Includes support for bi-directional data buffers and an
7705IPMI
7706address space handler (to be installed by an IPMI device driver.) ACPICA
7707BZ
7708773. Lin Ming.
7709
7710ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
7711Includes
7712support in both the header files and the disassembler.
7713
7714Completed a major update for the AcpiGetObjectInfo external interface.
7715Changes include:
7716 - Support for variable, unlimited length HID, UID, and CID strings.
7717 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
7718etc.)
7719 - Call the _SxW power methods on behalf of a device object.
7720 - Determine if a device is a PCI root bridge.
7721 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
7722These changes will require an update to all callers of this interface.
7723See
7724the updated ACPICA Programmer Reference for details. One new source file
7725has
7726been added - utilities/utids.c. ACPICA BZ 368, 780.
7727
7728Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
7729transfers. The Value parameter has been extended from 32 bits to 64 bits
7730in
7731order to support new ACPI 4.0 tables. These changes will require an
7732update
7733to
7734all callers of these interfaces. See the ACPICA Programmer Reference for
7735details. ACPICA BZ 768.
7736
7737Fixed several problems with AcpiAttachData. The handler was not invoked
7738when
7739the host node was deleted. The data sub-object was not automatically
7740deleted
7741when the host node was deleted. The interface to the handler had an
7742unused
7743parameter, this was removed. ACPICA BZ 778.
7744
7745Enhanced the function that dumps ACPI table headers. All non-printable
7746characters in the string fields are now replaced with '?' (Signature,
7747OemId,
7748OemTableId, and CompilerId.) ACPI tables with non-printable characters in
7749these fields are occasionally seen in the field. ACPICA BZ 788.
7750
7751Fixed a problem with predefined method repair code where the code that
7752attempts to repair/convert an object of incorrect type is only executed
7753on
7754the first time the predefined method is called. The mechanism that
7755disables
7756warnings on subsequent calls was interfering with the repair mechanism.
7757ACPICA BZ 781.
7758
7759Fixed a possible memory leak in the predefined validation/repair code
7760when
7761a
7762buffer is automatically converted to an expected string object.
7763
7764Removed obsolete 16-bit files from the distribution and from the current
7765git
7766tree head. ACPICA BZ 776.
7767
7768Example Code and Data Size: These are the sizes for the OS-independent
7769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7770debug version of the code includes the debug output trace mechanism and
7771has a
7772much larger code and data size.
7773
7774  Previous Release:
7775    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7776    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7777  Current Release:
7778    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7779    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7780
77812) iASL Compiler/Disassembler and Tools:
7782
7783ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
7784operation region keyword. ACPICA BZ 771, 772. Lin Ming.
7785
7786ACPI 4.0: iASL - implemented compile-time validation support for all new
7787predefined names and control methods (31 total). ACPICA BZ 769.
7788
7789----------------------------------------
779021 May 2009. Summary of changes for version 20090521:
7791
77921) ACPI CA Core Subsystem:
7793
7794Disabled the preservation of the SCI enable bit in the PM1 control
7795register.
7796The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
7797to
7798be
7799a "preserved" bit - "OSPM always preserves this bit position", section
78004.7.3.2.1. However, some machines fail if this bit is in fact preserved
7801because the bit needs to be explicitly set by the OS as a workaround. No
7802machines fail if the bit is not preserved. Therefore, ACPICA no longer
7803attempts to preserve this bit.
7804
7805Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
7806incorrectly formed _PRT package could cause a fault. Added validation to
7807ensure that each package element is actually a sub-package.
7808
7809Implemented a new interface to install or override a single control
7810method,
7811AcpiInstallMethod. This interface is useful when debugging in order to
7812repair
7813an existing method or to install a missing method without having to
7814override
7815the entire ACPI table. See the ACPICA Programmer Reference for use and
7816examples. Lin Ming, Bob Moore.
7817
7818Fixed several reference count issues with the DdbHandle object that is
7819created from a Load or LoadTable operator. Prevent premature deletion of
7820the
7821object. Also, mark the object as invalid once the table has been
7822unloaded.
7823This is needed because the handle itself may not be deleted after the
7824table
7825unload, depending on whether it has been stored in a named object by the
7826caller. Lin Ming.
7827
7828Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
7829mutexes of the same sync level are acquired but then not released in
7830strict
7831opposite order, the internally maintained Current Sync Level becomes
7832confused
7833and can cause subsequent execution errors. ACPICA BZ 471.
7834
7835Changed the allowable release order for ASL mutex objects. The ACPI 4.0
7836specification has been changed to make the SyncLevel for mutex objects
7837more
7838useful. When releasing a mutex, the SyncLevel of the mutex must now be
7839the
7840same as the current sync level. This makes more sense than the previous
7841rule
7842(SyncLevel less than or equal). This change updates the code to match the
7843specification.
7844
7845Fixed a problem with the local version of the AcpiOsPurgeCache function.
7846The
7847(local) cache must be locked during all cache object deletions. Andrew
7848Baumann.
7849
7850Updated the Load operator to use operation region interfaces. This
7851replaces
7852direct memory mapping with region access calls. Now, all region accesses
7853go
7854through the installed region handler as they should.
7855
7856Simplified and optimized the NsGetNextNode function. Reduced parameter
7857count
7858and reduced code for this frequently used function.
7859
7860Example Code and Data Size: These are the sizes for the OS-independent
7861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7862debug version of the code includes the debug output trace mechanism and
7863has a
7864much larger code and data size.
7865
7866  Previous Release:
7867    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7868    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7869  Current Release:
7870    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7871    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7872
78732) iASL Compiler/Disassembler and Tools:
7874
7875Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
7876problems
7877with sub-table disassembly and handling invalid sub-tables. Attempt
7878recovery
7879after an invalid sub-table ID.
7880
7881----------------------------------------
788222 April 2009. Summary of changes for version 20090422:
7883
78841) ACPI CA Core Subsystem:
7885
7886Fixed a compatibility issue with the recently released I/O port
7887protection
7888mechanism. For windows compatibility, 1) On a port protection violation,
7889simply ignore the request and do not return an exception (allow the
7890control
7891method to continue execution.) 2) If only part of the request overlaps a
7892protected port, read/write the individual ports that are not protected.
7893Linux
7894BZ 13036. Lin Ming
7895
7896Enhanced the execution of the ASL/AML BreakPoint operator so that it
7897actually
7898breaks into the AML debugger if the debugger is present. This matches the
7899ACPI-defined behavior.
7900
7901Fixed several possible warnings related to the use of the configurable
7902ACPI_THREAD_ID. This type can now be configured as either an integer or a
7903pointer with no warnings. Also fixes several warnings in printf-like
7904statements for the 64-bit build when the type is configured as a pointer.
7905ACPICA BZ 766, 767.
7906
7907Fixed a number of possible warnings when compiling with gcc 4+ (depending
7908on
7909warning options.) Examples include printf formats, aliasing, unused
7910globals,
7911missing prototypes, missing switch default statements, use of non-ANSI
7912library functions, use of non-ANSI constructs. See generate/unix/Makefile
7913for
7914a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
7915
7916Example Code and Data Size: These are the sizes for the OS-independent
7917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7918debug version of the code includes the debug output trace mechanism and
7919has a
7920much larger code and data size.
7921
7922  Previous Release:
7923    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7924    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7925  Current Release:
7926    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7927    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7928
79292) iASL Compiler/Disassembler and Tools:
7930
7931iASL: Fixed a generation warning from Bison 2.3 and fixed several
7932warnings
7933on
7934the 64-bit build.
7935
7936iASL: Fixed a problem where the Unix/Linux versions of the compiler could
7937not
7938correctly digest Windows/DOS formatted files (with CR/LF).
7939
7940iASL: Added a new option for "quiet mode" (-va) that produces only the
7941compilation summary, not individual errors and warnings. Useful for large
7942batch compilations.
7943
7944AcpiExec: Implemented a new option (-z) to enable a forced
7945semaphore/mutex
7946timeout that can be used to detect hang conditions during execution of
7947AML
7948code (includes both internal semaphores and AML-defined mutexes and
7949events.)
7950
7951Added new makefiles for the generation of acpica in a generic unix-like
7952environment. These makefiles are intended to generate the acpica tools
7953and
7954utilities from the original acpica git source tree structure.
7955
7956Test Suites: Updated and cleaned up the documentation files. Updated the
7957copyrights to 2009, affecting all source files. Use the new version of
7958iASL
7959with quiet mode. Increased the number of available semaphores in the
7960Windows
7961OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
7962added
7963an alternate implementation of the semaphore timeout to allow aslts to
7964execute fully on Cygwin.
7965
7966----------------------------------------
796720 March 2009. Summary of changes for version 20090320:
7968
79691) ACPI CA Core Subsystem:
7970
7971Fixed a possible race condition between AcpiWalkNamespace and dynamic
7972table
7973unloads. Added a reader/writer locking mechanism to allow multiple
7974concurrent
7975namespace walks (readers), but block a dynamic table unload until it can
7976gain
7977exclusive write access to the namespace. This fixes a problem where a
7978table
7979unload could (possibly catastrophically) delete the portion of the
7980namespace
7981that is currently being examined by a walk. Adds a new file, utlock.c,
7982that
7983implements the reader/writer lock mechanism. ACPICA BZ 749.
7984
7985Fixed a regression introduced in version 20090220 where a change to the
7986FADT
7987handling could cause the ACPICA subsystem to access non-existent I/O
7988ports.
7989
7990Modified the handling of FADT register and table (FACS/DSDT) addresses.
7991The
7992FADT can contain both 32-bit and 64-bit versions of these addresses.
7993Previously, the 64-bit versions were favored, meaning that if both 32 and
799464
7995versions were valid, but not equal, the 64-bit version was used. This was
7996found to cause some machines to fail. Now, in this case, the 32-bit
7997version
7998is used instead. This now matches the Windows behavior.
7999
8000Implemented a new mechanism to protect certain I/O ports. Provides
8001Microsoft
8002compatibility and protects the standard PC I/O ports from access via AML
8003code. Adds a new file, hwvalid.c
8004
8005Fixed a possible extraneous warning message from the FADT support. The
8006message warns of a 32/64 length mismatch between the legacy and GAS
8007definitions for a register.
8008
8009Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8010is
8011made obsolete by the port protection mechanism above. It was previously
8012used
8013to validate the entire address range of an operation region, which could
8014be
8015incorrect if the range included illegal ports, but fields within the
8016operation region did not actually access those ports. Validation is now
8017performed on a per-field basis instead of the entire region.
8018
8019Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8020Ignored bits must be "preserved" according to the ACPI spec. Usually,
8021this
8022means a read/modify/write when writing to the register. However, for
8023status
8024registers, writing a one means clear the event. Writing a zero means
8025preserve
8026the event (do not clear.) This behavior is clarified in the ACPI 4.0
8027spec,
8028and the ACPICA code now simply always writes a zero to the ignored bit.
8029
8030Modified the handling of ignored bits for the PM1 A/B Control Registers.
8031As
8032per the ACPI specification, for the control registers, preserve
8033(read/modify/write) all bits that are defined as either reserved or
8034ignored.
8035
8036Updated the handling of write-only bits in the PM1 A/B Control Registers.
8037When reading the register, zero the write-only bits as per the ACPI spec.
8038ACPICA BZ 443. Lin Ming.
8039
8040Removed "Linux" from the list of supported _OSI strings. Linux no longer
8041wants to reply true to this request. The Windows strings are the only
8042paths
8043through the AML that are tested and known to work properly.
8044
8045  Previous Release:
8046    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8047    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8048  Current Release:
8049    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8050    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8051
80522) iASL Compiler/Disassembler and Tools:
8053
8054Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8055and
8056aetables.c
8057
8058----------------------------------------
805920 February 2009. Summary of changes for version 20090220:
8060
80611) ACPI CA Core Subsystem:
8062
8063Optimized the ACPI register locking. Removed locking for reads from the
8064ACPI
8065bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8066is
8067not required when reading the single-bit registers. The
8068AcpiGetRegisterUnlocked function is no longer needed and has been
8069removed.
8070This will improve performance for reads on these registers. ACPICA BZ
8071760.
8072
8073Fixed the parameter validation for AcpiRead/Write. Now return
8074AE_BAD_PARAMETER if the input register pointer is null, and
8075AE_BAD_ADDRESS
8076if
8077the register has an address of zero. Previously, these cases simply
8078returned
8079AE_OK. For optional registers such as PM1B status/enable/control, the
8080caller
8081should check for a valid register address before calling. ACPICA BZ 748.
8082
8083Renamed the external ACPI bit register access functions. Renamed
8084AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8085functions. The new names are AcpiReadBitRegister and
8086AcpiWriteBitRegister.
8087Also, restructured the code for these functions by simplifying the code
8088path
8089and condensing duplicate code to reduce code size.
8090
8091Added new functions to transparently handle the possibly split PM1 A/B
8092registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8093functions
8094now handle the split registers for PM1 Status, Enable, and Control.
8095ACPICA
8096BZ
8097746.
8098
8099Added a function to handle the PM1 control registers,
8100AcpiHwWritePm1Control.
8101This function writes both of the PM1 control registers (A/B). These
8102registers
8103are different than the PM1 A/B status and enable registers in that
8104different
8105values can be written to the A/B registers. Most notably, the SLP_TYP
8106bits
8107can be different, as per the values returned from the _Sx predefined
8108methods.
8109
8110Removed an extra register write within AcpiHwClearAcpiStatus. This
8111function
8112was writing an optional PM1B status register twice. The existing call to
8113the
8114low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8115A/B
8116register. ACPICA BZ 751.
8117
8118Split out the PM1 Status registers from the FADT. Added new globals for
8119these
8120registers (A/B), similar to the way the PM1 Enable registers are handled.
8121Instead of overloading the FADT Event Register blocks. This makes the
8122code
8123clearer and less prone to error.
8124
8125Fixed the warning message for when the platform contains too many ACPI
8126tables
8127for the default size of the global root table data structure. The
8128calculation
8129for the truncation value was incorrect.
8130
8131Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8132obsolete macro, since it is now a simple reference to ->common.type.
8133There
8134were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8135
8136Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8137TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8138simply SLEEP_TYPE. ACPICA BZ 754.
8139
8140Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8141function is only needed on 64-bit host operating systems and is thus not
8142included for 32-bit hosts.
8143
8144Debug output: print the input and result for invocations of the _OSI
8145reserved
8146control method via the ACPI_LV_INFO debug level. Also, reduced some of
8147the
8148verbosity of this debug level. Len Brown.
8149
8150Example Code and Data Size: These are the sizes for the OS-independent
8151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8152debug version of the code includes the debug output trace mechanism and
8153has a
8154much larger code and data size.
8155
8156  Previous Release:
8157    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8158    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8159  Current Release:
8160    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8161    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8162
81632) iASL Compiler/Disassembler and Tools:
8164
8165Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8166various legal performance profiles.
8167
8168----------------------------------------
816923 January 2009. Summary of changes for version 20090123:
8170
81711) ACPI CA Core Subsystem:
8172
8173Added the 2009 copyright to all module headers and signons. This affects
8174virtually every file in the ACPICA core subsystem, the iASL compiler, and
8175the tools/utilities.
8176
8177Implemented a change to allow the host to override any ACPI table,
8178including
8179dynamically loaded tables. Previously, only the DSDT could be replaced by
8180the
8181host. With this change, the AcpiOsTableOverride interface is called for
8182each
8183table found in the RSDT/XSDT during ACPICA initialization, and also
8184whenever
8185a table is dynamically loaded via the AML Load operator.
8186
8187Updated FADT flag definitions, especially the Boot Architecture flags.
8188
8189Debugger: For the Find command, automatically pad the input ACPI name
8190with
8191underscores if the name is shorter than 4 characters. This enables a
8192match
8193with the actual namespace entry which is itself padded with underscores.
8194
8195Example Code and Data Size: These are the sizes for the OS-independent
8196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8197debug version of the code includes the debug output trace mechanism and
8198has a
8199much larger code and data size.
8200
8201  Previous Release:
8202    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8203    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8204  Current Release:
8205    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8206    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8207
82082) iASL Compiler/Disassembler and Tools:
8209
8210Fix build error under Bison-2.4.
8211
8212Dissasembler: Enhanced FADT support. Added decoding of the Boot
8213Architecture
8214flags. Now decode all flags, regardless of the FADT version. Flag output
8215includes the FADT version which first defined each flag.
8216
8217The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8218and
8219DSDT). Windows only.
8220
8221----------------------------------------
822204 December 2008. Summary of changes for version 20081204:
8223
82241) ACPI CA Core Subsystem:
8225
8226The ACPICA Programmer Reference has been completely updated and revamped
8227for
8228this release. This includes updates to the external interfaces, OSL
8229interfaces, the overview sections, and the debugger reference.
8230
8231Several new ACPICA interfaces have been implemented and documented in the
8232programmer reference:
8233AcpiReset - Writes the reset value to the FADT-defined reset register.
8234AcpiDisableAllGpes - Disable all available GPEs.
8235AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8236AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8237AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8238AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8239AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8240
8241Most of the public ACPI hardware-related interfaces have been moved to a
8242new
8243file, components/hardware/hwxface.c
8244
8245Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8246register lengths within the FADT are now used, and the low level ACPI
8247register access no longer hardcodes the ACPI register lengths. Given that
8248there may be some risk in actually trusting the FADT register lengths, a
8249run-
8250time option was added to fall back to the default hardcoded lengths if
8251the
8252FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8253option is set to true for now, and a warning is issued if a suspicious
8254FADT
8255register length is overridden with the default value.
8256
8257Fixed a reference count issue in NsRepairObject. This problem was
8258introduced
8259in version 20081031 as part of a fix to repair Buffer objects within
8260Packages. Lin Ming.
8261
8262Added semaphore support to the Linux/Unix application OS-services layer
8263(OSL). ACPICA BZ 448. Lin Ming.
8264
8265Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8266will
8267be implemented in the OSL, or will binary semaphores be used instead.
8268
8269Example Code and Data Size: These are the sizes for the OS-independent
8270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8271debug version of the code includes the debug output trace mechanism and
8272has a
8273much larger code and data size.
8274
8275  Previous Release:
8276    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8277    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8278  Current Release:
8279    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8280    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8281
82822) iASL Compiler/Disassembler and Tools:
8283
8284iASL: Completed the '-e' option to include additional ACPI tables in
8285order
8286to
8287aid with disassembly and External statement generation. ACPICA BZ 742.
8288Lin
8289Ming.
8290
8291iASL: Removed the "named object in while loop" error. The compiler cannot
8292determine how many times a loop will execute. ACPICA BZ 730.
8293
8294Disassembler: Implemented support for FADT revision 2 (MS extension).
8295ACPICA
8296BZ 743.
8297
8298Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8299MCFG).
8300
8301----------------------------------------
830231 October 2008. Summary of changes for version 20081031:
8303
83041) ACPI CA Core Subsystem:
8305
8306Restructured the ACPICA header files into public/private. acpi.h now
8307includes
8308only the "public" acpica headers. All other acpica headers are "private"
8309and
8310should not be included by acpica users. One new file, accommon.h is used
8311to
8312include the commonly used private headers for acpica code generation.
8313Future
8314plans include moving all private headers to a new subdirectory.
8315
8316Implemented an automatic Buffer->String return value conversion for
8317predefined ACPI methods. For these methods (such as _BIF), added
8318automatic
8319conversion for return objects that are required to be a String, but a
8320Buffer
8321was found instead. This can happen when reading string battery data from
8322an
8323operation region, because it used to be difficult to convert the data
8324from
8325buffer to string from within the ASL. Ensures that the host OS is
8326provided
8327with a valid null-terminated string. Linux BZ 11822.
8328
8329Updated the FACS waking vector interfaces. Split
8330AcpiSetFirmwareWakingVector
8331into two: one for the 32-bit vector, another for the 64-bit vector. This
8332is
8333required because the host OS must setup the wake much differently for
8334each
8335vector (real vs. protected mode, etc.) and the interface itself should
8336not
8337be
8338deciding which vector to use. Also, eliminated the
8339GetFirmwareWakingVector
8340interface, as it served no purpose (only the firmware reads the vector,
8341OS
8342only writes the vector.) ACPICA BZ 731.
8343
8344Implemented a mechanism to escape infinite AML While() loops. Added a
8345loop
8346counter to force exit from AML While loops if the count becomes too
8347large.
8348This can occur in poorly written AML when the hardware does not respond
8349within a while loop and the loop does not implement a timeout. The
8350maximum
8351loop count is configurable. A new exception code is returned when a loop
8352is
8353broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8354
8355Optimized the execution of AML While loops. Previously, a control state
8356object was allocated and freed for each execution of the loop. The
8357optimization is to simply reuse the control state for each iteration.
8358This
8359speeds up the raw loop execution time by about 5%.
8360
8361Enhanced the implicit return mechanism. For Windows compatibility, return
8362an
8363implicit integer of value zero for methods that contain no executable
8364code.
8365Such methods are seen in the field as stubs (presumably), and can cause
8366drivers to fail if they expect a return value. Lin Ming.
8367
8368Allow multiple backslashes as root prefixes in namepaths. In a fully
8369qualified namepath, allow multiple backslash prefixes. This can happen
8370(and
8371is seen in the field) because of the use of a double-backslash in strings
8372(since backslash is the escape character) causing confusion. ACPICA BZ
8373739
8374Lin Ming.
8375
8376Emit a warning if two different FACS or DSDT tables are discovered in the
8377FADT. Checks if there are two valid but different addresses for the FACS
8378and
8379DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8380
8381Consolidated the method argument count validation code. Merged the code
8382that
8383validates control method argument counts into the predefined validation
8384module. Eliminates possible multiple warnings for incorrect argument
8385counts.
8386
8387Implemented ACPICA example code. Includes code for ACPICA initialization,
8388handler installation, and calling a control method. Available at
8389source/tools/examples.
8390
8391Added a global pointer for FACS table to simplify internal FACS access.
8392Use
8393the global pointer instead of using AcpiGetTableByIndex for each FACS
8394access.
8395This simplifies the code for the Global Lock and the Firmware Waking
8396Vector(s).
8397
8398Example Code and Data Size: These are the sizes for the OS-independent
8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8400debug version of the code includes the debug output trace mechanism and
8401has a
8402much larger code and data size.
8403
8404  Previous Release:
8405    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8406    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8407  Current Release:
8408    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8409    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8410
84112) iASL Compiler/Disassembler and Tools:
8412
8413iASL: Improved disassembly of external method calls. Added the -e option
8414to
8415allow the inclusion of additional ACPI tables to help with the
8416disassembly
8417of
8418method invocations and the generation of external declarations during the
8419disassembly. Certain external method invocations cannot be disassembled
8420properly without the actual declaration of the method. Use the -e option
8421to
8422include the table where the external method(s) are actually declared.
8423Most
8424useful for disassembling SSDTs that make method calls back to the master
8425DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
8426-d
8427-e dsdt.aml ssdt1.aml
8428
8429iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
8430problem where the use of an alias within a namepath would result in a not
8431found error or cause the compiler to fault. Also now allows forward
8432references from the Alias operator itself. ACPICA BZ 738.
8433
8434----------------------------------------
843526 September 2008. Summary of changes for version 20080926:
8436
84371) ACPI CA Core Subsystem:
8438
8439Designed and implemented a mechanism to validate predefined ACPI methods
8440and
8441objects. This code validates the predefined ACPI objects (objects whose
8442names
8443start with underscore) that appear in the namespace, at the time they are
8444evaluated. The argument count and the type of the returned object are
8445validated against the ACPI specification. The purpose of this validation
8446is
8447to detect problems with the BIOS-implemented predefined ACPI objects
8448before
8449the results are returned to the ACPI-related drivers. Future enhancements
8450may
8451include actual repair of incorrect return objects where possible. Two new
8452files are nspredef.c and acpredef.h.
8453
8454Fixed a fault in the AML parser if a memory allocation fails during the
8455Op
8456completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
8457
8458Fixed an issue with implicit return compatibility. This change improves
8459the
8460implicit return mechanism to be more compatible with the MS interpreter.
8461Lin
8462Ming, ACPICA BZ 349.
8463
8464Implemented support for zero-length buffer-to-string conversions. Allow
8465zero
8466length strings during interpreter buffer-to-string conversions. For
8467example,
8468during the ToDecimalString and ToHexString operators, as well as implicit
8469conversions. Fiodor Suietov, ACPICA BZ 585.
8470
8471Fixed two possible memory leaks in the error exit paths of
8472AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
8473are
8474similar in that they use a stack of state objects in order to eliminate
8475recursion. The stack must be fully unwound and deallocated if an error
8476occurs. Lin Ming. ACPICA BZ 383.
8477
8478Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
8479global
8480ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
8481Moore ACPICA BZ 442.
8482
8483Removed the obsolete version number in module headers. Removed the
8484"$Revision" number that appeared in each module header. This version
8485number
8486was useful under SourceSafe and CVS, but has no meaning under git. It is
8487not
8488only incorrect, it could also be misleading.
8489
8490Example Code and Data Size: These are the sizes for the OS-independent
8491acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8492debug version of the code includes the debug output trace mechanism and
8493has a
8494much larger code and data size.
8495
8496  Previous Release:
8497    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8498    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8499  Current Release:
8500    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8501    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8502
8503----------------------------------------
850429 August 2008. Summary of changes for version 20080829:
8505
85061) ACPI CA Core Subsystem:
8507
8508Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
8509Reference. Changes include the elimination of cheating on the Object
8510field
8511for the DdbHandle subtype, addition of a reference class field to
8512differentiate the various reference types (instead of an AML opcode), and
8513the
8514cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
8515
8516Reduce an error to a warning for an incorrect method argument count.
8517Previously aborted with an error if too few arguments were passed to a
8518control method via the external ACPICA interface. Now issue a warning
8519instead
8520and continue. Handles the case where the method inadvertently declares
8521too
8522many arguments, but does not actually use the extra ones. Applies mainly
8523to
8524the predefined methods. Lin Ming. Linux BZ 11032.
8525
8526Disallow the evaluation of named object types with no intrinsic value.
8527Return
8528AE_TYPE for objects that have no value and therefore evaluation is
8529undefined:
8530Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
8531of
8532these types were allowed, but an exception would be generated at some
8533point
8534during the evaluation. Now, the error is generated up front.
8535
8536Fixed a possible memory leak in the AcpiNsGetExternalPathname function
8537(nsnames.c). Fixes a leak in the error exit path.
8538
8539Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
8540debug
8541levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
8542ACPI_EXCEPTION
8543interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
8544ACPI_LV_EVENTS.
8545
8546Removed obsolete and/or unused exception codes from the acexcep.h header.
8547There is the possibility that certain device drivers may be affected if
8548they
8549use any of these exceptions.
8550
8551The ACPICA documentation has been added to the public git source tree,
8552under
8553acpica/documents. Included are the ACPICA programmer reference, the iASL
8554compiler reference, and the changes.txt release logfile.
8555
8556Example Code and Data Size: These are the sizes for the OS-independent
8557acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8558debug version of the code includes the debug output trace mechanism and
8559has a
8560much larger code and data size.
8561
8562  Previous Release:
8563    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8564    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8565  Current Release:
8566    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8567    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8568
85692) iASL Compiler/Disassembler and Tools:
8570
8571Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
8572defines _SCP with 3 arguments. Previous versions defined it with only 1
8573argument. iASL now allows both definitions.
8574
8575iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
8576zero-
8577length subtables when disassembling ACPI tables. Also fixed a couple of
8578errors where a full 16-bit table type field was not extracted from the
8579input
8580properly.
8581
8582acpisrc: Improve comment counting mechanism for generating source code
8583statistics. Count first and last lines of multi-line comments as
8584whitespace,
8585not comment lines. Handle Linux legal header in addition to standard
8586acpica
8587header.
8588
8589----------------------------------------
8590
859129 July 2008. Summary of changes for version 20080729:
8592
85931) ACPI CA Core Subsystem:
8594
8595Fix a possible deadlock in the GPE dispatch. Remove call to
8596AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
8597attempt
8598to acquire the GPE lock but can deadlock since the GPE lock is already
8599held
8600at dispatch time. This code was introduced in version 20060831 as a
8601response
8602to Linux BZ 6881 and has since been removed from Linux.
8603
8604Add a function to dereference returned reference objects. Examines the
8605return
8606object from a call to AcpiEvaluateObject. Any Index or RefOf references
8607are
8608automatically dereferenced in an attempt to return something useful
8609(these
8610reference types cannot be converted into an external ACPI_OBJECT.)
8611Provides
8612MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
8613
8614x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
8615subtables for the MADT and one new subtable for the SRAT. Includes
8616disassembler and AcpiSrc support. Data from the Intel 64 Architecture
8617x2APIC
8618Specification, June 2008.
8619
8620Additional error checking for pathname utilities. Add error check after
8621all
8622calls to AcpiNsGetPathnameLength. Add status return from
8623AcpiNsBuildExternalPath and check after all calls. Add parameter
8624validation
8625to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
8626
8627Return status from the global init function AcpiUtGlobalInitialize. This
8628is
8629used by both the kernel subsystem and the utilities such as iASL
8630compiler.
8631The function could possibly fail when the caches are initialized. Yang
8632Yi.
8633
8634Add a function to decode reference object types to strings. Created for
8635improved error messages.
8636
8637Improve object conversion error messages. Better error messages during
8638object
8639conversion from internal to the external ACPI_OBJECT. Used for external
8640calls
8641to AcpiEvaluateObject.
8642
8643Example Code and Data Size: These are the sizes for the OS-independent
8644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8645debug version of the code includes the debug output trace mechanism and
8646has a
8647much larger code and data size.
8648
8649  Previous Release:
8650    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8651    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8652  Current Release:
8653    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8654    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8655
86562) iASL Compiler/Disassembler and Tools:
8657
8658Debugger: fix a possible hang when evaluating non-methods. Fixes a
8659problem
8660introduced in version 20080701. If the object being evaluated (via
8661execute
8662command) is not a method, the debugger can hang while trying to obtain
8663non-
8664existent parameters.
8665
8666iASL: relax error for using reserved "_T_x" identifiers. These names can
8667appear in a disassembled ASL file if they were emitted by the original
8668compiler. Instead of issuing an error or warning and forcing the user to
8669manually change these names, issue a remark instead.
8670
8671iASL: error if named object created in while loop. Emit an error if any
8672named
8673object is created within a While loop. If allowed, this code will
8674generate
8675a
8676run-time error on the second iteration of the loop when an attempt is
8677made
8678to
8679create the same named object twice. ACPICA bugzilla 730.
8680
8681iASL: Support absolute pathnames for include files. Add support for
8682absolute
8683pathnames within the Include operator. previously, only relative
8684pathnames
8685were supported.
8686
8687iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
8688Descriptor.
8689The ACPI spec requires one interrupt minimum. BZ 423
8690
8691iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
8692Handles the case for the Interrupt Resource Descriptor where
8693the ResourceSource argument is omitted but ResourceSourceIndex
8694is present. Now leave room for the Index. BZ 426
8695
8696iASL: Prevent error message if CondRefOf target does not exist. Fixes
8697cases
8698where an error message is emitted if the target does not exist. BZ 516
8699
8700iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
8701(get ACPI tables on Windows). This was apparently broken in version
870220070919.
8703
8704AcpiXtract: Handle EOF while extracting data. Correctly handle the case
8705where
8706the EOF happens immediately after the last table in the input file. Print
8707completion message. Previously, no message was displayed in this case.
8708
8709----------------------------------------
871001 July 2008. Summary of changes for version 20080701:
8711
87120) Git source tree / acpica.org
8713
8714Fixed a problem where a git-clone from http would not transfer the entire
8715source tree.
8716
87171) ACPI CA Core Subsystem:
8718
8719Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
8720enable bit. Now performs a read-change-write of the enable register
8721instead
8722of simply writing out the cached enable mask. This will prevent
8723inadvertent
8724enabling of GPEs if a rogue GPE is received during initialization (before
8725GPE
8726handlers are installed.)
8727
8728Implemented a copy for dynamically loaded tables. Previously, dynamically
8729loaded tables were simply mapped - but on some machines this memory is
8730corrupted after suspend. Now copy the table to a local buffer. For the
8731OpRegion case, added checksum verify. Use the table length from the table
8732header, not the region length. For the Buffer case, use the table length
8733also. Dennis Noordsij, Bob Moore. BZ 10734
8734
8735Fixed a problem where the same ACPI table could not be dynamically loaded
8736and
8737unloaded more than once. Without this change, a table cannot be loaded
8738again
8739once it has been loaded/unloaded one time. The current mechanism does not
8740unregister a table upon an unload. During a load, if the same table is
8741found,
8742this no longer returns an exception. BZ 722
8743
8744Fixed a problem where the wrong descriptor length was calculated for the
8745EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
8746EndTag
8747are calculated as 12 bytes long, but the actual length in the internal
8748descriptor is 16 because of the round-up to 8 on the 64-bit build.
8749Reported
8750by Linn Crosetto. BZ 728
8751
8752Fixed a possible memory leak in the Unload operator. The DdbHandle
8753returned
8754by Load() did not have its reference count decremented during unload,
8755leading
8756to a memory leak. Lin Ming. BZ 727
8757
8758Fixed a possible memory leak when deleting thermal/processor objects. Any
8759associated notify handlers (and objects) were not being deleted. Fiodor
8760Suietov. BZ 506
8761
8762Fixed the ordering of the ASCII names in the global mutex table to match
8763the
8764actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
8765only.
8766Vegard Nossum. BZ 726
8767
8768Enhanced the AcpiGetObjectInfo interface to return the number of required
8769arguments if the object is a control method. Added this call to the
8770debugger
8771so the proper number of default arguments are passed to a method. This
8772prevents a warning when executing methods from AcpiExec.
8773
8774Added a check for an invalid handle in AcpiGetObjectInfo. Return
8775AE_BAD_PARAMETER if input handle is invalid. BZ 474
8776
8777Fixed an extraneous warning from exconfig.c on the 64-bit build.
8778
8779Example Code and Data Size: These are the sizes for the OS-independent
8780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8781debug version of the code includes the debug output trace mechanism and
8782has a
8783much larger code and data size.
8784
8785  Previous Release:
8786    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8787    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8788  Current Release:
8789    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8790    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8791
87922) iASL Compiler/Disassembler and Tools:
8793
8794iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
8795resource descriptor names.
8796
8797iASL: Detect invalid ASCII characters in input (windows version). Removed
8798the
8799"-CF" flag from the flex compile, enables correct detection of non-ASCII
8800characters in the input. BZ 441
8801
8802iASL: Eliminate warning when result of LoadTable is not used. Eliminate
8803the
8804"result of operation not used" warning when the DDB handle returned from
8805LoadTable is not used. The warning is not needed. BZ 590
8806
8807AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
8808method
8809to
8810pass address of table to the AML. Added option to disable OpRegion
8811simulation
8812to allow creation of an OpRegion with a real address that was passed to
8813_CFG.
8814All of this allows testing of the Load and Unload operators from
8815AcpiExec.
8816
8817Debugger: update tables command for unloaded tables. Handle unloaded
8818tables
8819and use the standard table header output routine.
8820
8821----------------------------------------
882209 June 2008. Summary of changes for version 20080609:
8823
88241) ACPI CA Core Subsystem:
8825
8826Implemented a workaround for reversed _PRT entries. A significant number
8827of
8828BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
8829change dynamically detects and repairs this problem. Provides
8830compatibility
8831with MS ACPI. BZ 6859
8832
8833Simplified the internal ACPI hardware interfaces to eliminate the locking
8834flag parameter from Register Read/Write. Added a new external interface,
8835AcpiGetRegisterUnlocked.
8836
8837Fixed a problem where the invocation of a GPE control method could hang.
8838This
8839was a regression introduced in 20080514. The new method argument count
8840validation mechanism can enter an infinite loop when a GPE method is
8841dispatched. Problem fixed by removing the obsolete code that passed GPE
8842block
8843information to the notify handler via the control method parameter
8844pointer.
8845
8846Fixed a problem where the _SST execution status was incorrectly returned
8847to
8848the caller of AcpiEnterSleepStatePrep. This was a regression introduced
8849in
885020080514. _SST is optional and a NOT_FOUND exception should never be
8851returned. BZ 716
8852
8853Fixed a problem where a deleted object could be accessed from within the
8854AML
8855parser. This was a regression introduced in version 20080123 as a fix for
8856the
8857Unload operator. Lin Ming. BZ 10669
8858
8859Cleaned up the debug operand dump mechanism. Eliminated unnecessary
8860operands
8861and eliminated the use of a negative index in a loop. Operands are now
8862displayed in the correct order, not backwards. This also fixes a
8863regression
8864introduced in 20080514 on 64-bit systems where the elimination of
8865ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
8866715
8867
8868Fixed a possible memory leak in EvPciConfigRegionSetup where the error
8869exit
8870path did not delete a locally allocated structure.
8871
8872Updated definitions for the DMAR and SRAT tables to synchronize with the
8873current specifications. Includes disassembler support.
8874
8875Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
8876loop termination value was used. Loop terminated on iteration early,
8877missing
8878one mutex. Linn Crosetto
8879
8880Example Code and Data Size: These are the sizes for the OS-independent
8881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8882debug version of the code includes the debug output trace mechanism and
8883has a
8884much larger code and data size.
8885
8886  Previous Release:
8887    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8888    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8889  Current Release:
8890    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8891    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8892
88932) iASL Compiler/Disassembler and Tools:
8894
8895Disassembler: Implemented support for EisaId() within _CID objects. Now
8896disassemble integer _CID objects back to EisaId invocations, including
8897multiple integers within _CID packages. Includes single-step support for
8898debugger also.
8899
8900Disassembler: Added support for DMAR and SRAT table definition changes.
8901
8902----------------------------------------
890314 May 2008. Summary of changes for version 20080514:
8904
89051) ACPI CA Core Subsystem:
8906
8907Fixed a problem where GPEs were enabled too early during the ACPICA
8908initialization. This could lead to "handler not installed" errors on some
8909machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
8910This
8911ensures that all operation regions and devices throughout the namespace
8912have
8913been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
8914
8915Implemented a change to the enter sleep code. Moved execution of the _GTS
8916method to just before setting sleep enable bit. The execution was moved
8917from
8918AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
8919immediately before the SLP_EN bit is set, as per the ACPI specification.
8920Luming Yu, BZ 1653.
8921
8922Implemented a fix to disable unknown GPEs (2nd version). Now always
8923disable
8924the GPE, even if ACPICA thinks that that it is already disabled. It is
8925possible that the AML or some other code has enabled the GPE unbeknownst
8926to
8927the ACPICA code.
8928
8929Fixed a problem with the Field operator where zero-length fields would
8930return
8931an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
8932ASL
8933field declarations in Field(), BankField(), and IndexField(). BZ 10606.
8934
8935Implemented a fix for the Load operator, now load the table at the
8936namespace
8937root. This reverts a change introduced in version 20071019. The table is
8938now
8939loaded at the namespace root even though this goes against the ACPI
8940specification. This provides compatibility with other ACPI
8941implementations.
8942The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
8943Ming.
8944
8945Fixed a problem where ACPICA would not Load() tables with unusual
8946signatures.
8947Now ignore ACPI table signature for Load() operator. Only "SSDT" is
8948acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
8949Therefore, signature validation is worthless. Apparently MS ACPI accepts
8950such
8951signatures, ACPICA must be compatible. BZ 10454.
8952
8953Fixed a possible negative array index in AcpiUtValidateException. Added
8954NULL
8955fields to the exception string arrays to eliminate a -1 subtraction on
8956the
8957SubStatus field.
8958
8959Updated the debug tracking macros to reduce overall code and data size.
8960Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
8961instead of pointers to static strings. Jan Beulich and Bob Moore.
8962
8963Implemented argument count checking in control method invocation via
8964AcpiEvaluateObject. Now emit an error if too few arguments, warning if
8965too
8966many. This applies only to extern programmatic control method execution,
8967not
8968method-to-method calls within the AML. Lin Ming.
8969
8970Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
8971no
8972longer needed, especially with the removal of 16-bit support. It was
8973replaced
8974mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
8975bit
8976on
897732/64-bit platforms is required.
8978
8979Added the C const qualifier for appropriate string constants -- mostly
8980MODULE_NAME and printf format strings. Jan Beulich.
8981
8982Example Code and Data Size: These are the sizes for the OS-independent
8983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8984debug version of the code includes the debug output trace mechanism and
8985has a
8986much larger code and data size.
8987
8988  Previous Release:
8989    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8990    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8991  Current Release:
8992    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8993    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8994
89952) iASL Compiler/Disassembler and Tools:
8996
8997Implemented ACPI table revision ID validation in the disassembler. Zero
8998is
8999always invalid. For DSDTs, the ID controls the interpreter integer width.
90001
9001means 32-bit and this is unusual. 2 or greater is 64-bit.
9002
9003----------------------------------------
900421 March 2008. Summary of changes for version 20080321:
9005
90061) ACPI CA Core Subsystem:
9007
9008Implemented an additional change to the GPE support in order to suppress
9009spurious or stray GPEs. The AcpiEvDisableGpe function will now
9010permanently
9011disable incoming GPEs that are neither enabled nor disabled -- meaning
9012that
9013the GPE is unknown to the system. This should prevent future interrupt
9014floods
9015from that GPE. BZ 6217 (Zhang Rui)
9016
9017Fixed a problem where NULL package elements were not returned to the
9018AcpiEvaluateObject interface correctly. The element was simply ignored
9019instead of returning a NULL ACPI_OBJECT package element, potentially
9020causing
9021a buffer overflow and/or confusing the caller who expected a fixed number
9022of
9023elements. BZ 10132 (Lin Ming, Bob Moore)
9024
9025Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9026Dword,
9027Qword), Field, BankField, and IndexField operators when invoked from
9028inside
9029an executing control method. In this case, these operators created
9030namespace
9031nodes that were incorrectly left marked as permanent nodes instead of
9032temporary nodes. This could cause a problem if there is race condition
9033between an exiting control method and a running namespace walk. (Reported
9034by
9035Linn Crosetto)
9036
9037Fixed a problem where the CreateField and CreateXXXField operators would
9038incorrectly allow duplicate names (the name of the field) with no
9039exception
9040generated.
9041
9042Implemented several changes for Notify handling. Added support for new
9043Notify
9044values (ACPI 2.0+) and improved the Notify debug output. Notify on
9045PowerResource objects is no longer allowed, as per the ACPI
9046specification.
9047(Bob Moore, Zhang Rui)
9048
9049All Reference Objects returned via the AcpiEvaluateObject interface are
9050now
9051marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9052for
9053NULL objects - either NULL package elements or unresolved named
9054references.
9055
9056Fixed a problem where an extraneous debug message was produced for
9057package
9058objects (when debugging enabled). The message "Package List length larger
9059than NumElements count" is now produced in the correct case, and is now
9060an
9061error message rather than a debug message. Added a debug message for the
9062opposite case, where NumElements is larger than the Package List (the
9063package
9064will be padded out with NULL elements as per the ACPI spec.)
9065
9066Implemented several improvements for the output of the ASL "Debug" object
9067to
9068clarify and keep all data for a given object on one output line.
9069
9070Fixed two size calculation issues with the variable-length Start
9071Dependent
9072resource descriptor.
9073
9074Example Code and Data Size: These are the sizes for the OS-independent
9075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9076debug version of the code includes the debug output trace mechanism and
9077has
9078a much larger code and data size.
9079
9080  Previous Release:
9081    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9082    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9083  Current Release:
9084    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9085    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9086
90872) iASL Compiler/Disassembler and Tools:
9088
9089Fixed a problem with the use of the Switch operator where execution of
9090the
9091containing method by multiple concurrent threads could cause an
9092AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9093actual Switch opcode, it must be simulated with local named temporary
9094variables and if/else pairs. The solution chosen was to mark any method
9095that
9096uses Switch as Serialized, thus preventing multiple thread entries. BZ
9097469.
9098
9099----------------------------------------
910013 February 2008. Summary of changes for version 20080213:
9101
91021) ACPI CA Core Subsystem:
9103
9104Implemented another MS compatibility design change for GPE/Notify
9105handling.
9106GPEs are now cleared/enabled asynchronously to allow all pending notifies
9107to
9108complete first. It is expected that the OSL will queue the enable request
9109behind all pending notify requests (may require changes to the local host
9110OSL
9111in AcpiOsExecute). Alexey Starikovskiy.
9112
9113Fixed a problem where buffer and package objects passed as arguments to a
9114control method via the external AcpiEvaluateObject interface could cause
9115an
9116AE_AML_INTERNAL exception depending on the order and type of operators
9117executed by the target control method.
9118
9119Fixed a problem where resource descriptor size optimization could cause a
9120problem when a _CRS resource template is passed to a _SRS method. The
9121_SRS
9122resource template must use the same descriptors (with the same size) as
9123returned from _CRS. This change affects the following resource
9124descriptors:
9125IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
91269487)
9127
9128Fixed a problem where a CopyObject to RegionField, BankField, and
9129IndexField
9130objects did not perform an implicit conversion as it should. These types
9131must
9132retain their initial type permanently as per the ACPI specification.
9133However,
9134a CopyObject to all other object types should not perform an implicit
9135conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9136
9137Fixed a problem with the AcpiGetDevices interface where the mechanism to
9138match device CIDs did not examine the entire list of available CIDs, but
9139instead aborted on the first non-matching CID. Andrew Patterson.
9140
9141Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9142was
9143inadvertently changed to return a 16-bit value instead of a 32-bit value,
9144truncating the upper dword of a 64-bit value. This macro is only used to
9145display debug output, so no incorrect calculations were made. Also,
9146reimplemented the macro so that a 64-bit shift is not performed by
9147inefficient compilers.
9148
9149Added missing va_end statements that should correspond with each va_start
9150statement.
9151
9152Example Code and Data Size: These are the sizes for the OS-independent
9153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9154debug version of the code includes the debug output trace mechanism and
9155has
9156a much larger code and data size.
9157
9158  Previous Release:
9159    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9160    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9161  Current Release:
9162    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9163    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9164
91652) iASL Compiler/Disassembler and Tools:
9166
9167Implemented full disassembler support for the following new ACPI tables:
9168BERT, EINJ, and ERST. Implemented partial disassembler support for the
9169complicated HEST table. These tables support the Windows Hardware Error
9170Architecture (WHEA).
9171
9172----------------------------------------
917323 January 2008. Summary of changes for version 20080123:
9174
91751) ACPI CA Core Subsystem:
9176
9177Added the 2008 copyright to all module headers and signons. This affects
9178virtually every file in the ACPICA core subsystem, the iASL compiler, and
9179the tools/utilities.
9180
9181Fixed a problem with the SizeOf operator when used with Package and
9182Buffer
9183objects. These objects have deferred execution for some arguments, and
9184the
9185execution is now completed before the SizeOf is executed. This problem
9186caused
9187unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9188BZ
91899558
9190
9191Implemented an enhancement to the interpreter "slack mode". In the
9192absence
9193of
9194an explicit return or an implicitly returned object from the last
9195executed
9196opcode, a control method will now implicitly return an integer of value 0
9197for
9198Microsoft compatibility. (Lin Ming) BZ 392
9199
9200Fixed a problem with the Load operator where an exception was not
9201returned
9202in
9203the case where the table is already loaded. (Lin Ming) BZ 463
9204
9205Implemented support for the use of DDBHandles as an Indexed Reference, as
9206per
9207the ACPI spec. (Lin Ming) BZ 486
9208
9209Implemented support for UserTerm (Method invocation) for the Unload
9210operator
9211as per the ACPI spec. (Lin Ming) BZ 580
9212
9213Fixed a problem with the LoadTable operator where the OemId and
9214OemTableId
9215input strings could cause unexpected failures if they were shorter than
9216the
9217maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9218
9219Implemented support for UserTerm (Method invocation) for the Unload
9220operator
9221as per the ACPI spec. (Lin Ming) BZ 580
9222
9223Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9224HEST,
9225IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9226
9227Example Code and Data Size: These are the sizes for the OS-independent
9228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9229debug version of the code includes the debug output trace mechanism and
9230has
9231a much larger code and data size.
9232
9233  Previous Release:
9234    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9235    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9236  Current Release:
9237    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9238    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9239
92402) iASL Compiler/Disassembler and Tools:
9241
9242Implemented support in the disassembler for checksum validation on
9243incoming
9244binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9245table
9246header dump at the start of the disassembly.
9247
9248Implemented additional debugging information in the namespace listing
9249file
9250created during compilation. In addition to the namespace hierarchy, the
9251full
9252pathname to each namespace object is displayed.
9253
9254Fixed a problem with the disassembler where invalid ACPI tables could
9255cause
9256faults or infinite loops.
9257
9258Fixed an unexpected parse error when using the optional "parameter types"
9259list in a control method declaration. (Lin Ming) BZ 397
9260
9261Fixed a problem where two External declarations with the same name did
9262not
9263cause an error (Lin Ming) BZ 509
9264
9265Implemented support for full TermArgs (adding Argx, Localx and method
9266invocation) for the ParameterData parameter to the LoadTable operator.
9267(Lin
9268Ming) BZ 583,587
9269
9270----------------------------------------
927119 December 2007. Summary of changes for version 20071219:
9272
92731) ACPI CA Core Subsystem:
9274
9275Implemented full support for deferred execution for the TermArg string
9276arguments for DataTableRegion. This enables forward references and full
9277operand resolution for the three string arguments. Similar to
9278OperationRegion
9279deferred argument execution.) Lin Ming. BZ 430
9280
9281Implemented full argument resolution support for the BankValue argument
9282to
9283BankField. Previously, only constants were supported, now any TermArg may
9284be
9285used. Lin Ming BZ 387, 393
9286
9287Fixed a problem with AcpiGetDevices where the search of a branch of the
9288device tree could be terminated prematurely. In accordance with the ACPI
9289specification, the search down the current branch is terminated if a
9290device
9291is both not present and not functional (instead of just not present.)
9292Yakui
9293Zhao.
9294
9295Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9296if
9297the underlying AML code changed the GPE enable registers. Now, any
9298unknown
9299incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9300disabled
9301instead of simply ignored. Rui Zhang.
9302
9303Fixed a problem with Index Fields where the Index register was
9304incorrectly
9305limited to a maximum of 32 bits. Now any size may be used.
9306
9307Fixed a couple memory leaks associated with "implicit return" objects
9308when
9309the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9310
9311Example Code and Data Size: These are the sizes for the OS-independent
9312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9313debug version of the code includes the debug output trace mechanism and
9314has
9315a much larger code and data size.
9316
9317  Previous Release:
9318    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9319    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9320  Current Release:
9321    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9322    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9323
9324----------------------------------------
932514 November 2007. Summary of changes for version 20071114:
9326
93271) ACPI CA Core Subsystem:
9328
9329Implemented event counters for each of the Fixed Events, the ACPI SCI
9330(interrupt) itself, and control methods executed. Named
9331AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9332These
9333should be useful for debugging and statistics.
9334
9335Implemented a new external interface, AcpiGetStatistics, to retrieve the
9336contents of the various event counters. Returns the current values for
9337AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9338AcpiMethodCount. The interface can be expanded in the future if new
9339counters
9340are added. Device drivers should use this interface rather than access
9341the
9342counters directly.
9343
9344Fixed a problem with the FromBCD and ToBCD operators. With some
9345compilers,
9346the ShortDivide function worked incorrectly, causing problems with the
9347BCD
9348functions with large input values. A truncation from 64-bit to 32-bit
9349inadvertently occurred. Internal BZ 435. Lin Ming
9350
9351Fixed a problem with Index references passed as method arguments.
9352References
9353passed as arguments to control methods were dereferenced immediately
9354(before
9355control was passed to the called method). The references are now
9356correctly
9357passed directly to the called method. BZ 5389. Lin Ming
9358
9359Fixed a problem with CopyObject used in conjunction with the Index
9360operator.
9361The reference was incorrectly dereferenced before the copy. The reference
9362is
9363now correctly copied. BZ 5391. Lin Ming
9364
9365Fixed a problem with Control Method references within Package objects.
9366These
9367references are now correctly generated. This completes the package
9368construction overhaul that began in version 20071019.
9369
9370Example Code and Data Size: These are the sizes for the OS-independent
9371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9372debug version of the code includes the debug output trace mechanism and
9373has
9374a much larger code and data size.
9375
9376  Previous Release:
9377    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9378    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9379  Current Release:
9380    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9381    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9382
9383
93842) iASL Compiler/Disassembler and Tools:
9385
9386The AcpiExec utility now installs handlers for all of the predefined
9387Operation Region types. New types supported are: PCI_Config, CMOS, and
9388PCIBARTarget.
9389
9390Fixed a problem with the 64-bit version of AcpiExec where the extended
9391(64-
9392bit) address fields for the DSDT and FACS within the FADT were not being
9393used, causing truncation of the upper 32-bits of these addresses. Lin
9394Ming
9395and Bob Moore
9396
9397----------------------------------------
939819 October 2007. Summary of changes for version 20071019:
9399
94001) ACPI CA Core Subsystem:
9401
9402Fixed a problem with the Alias operator when the target of the alias is a
9403named ASL operator that opens a new scope -- Scope, Device,
9404PowerResource,
9405Processor, and ThermalZone. In these cases, any children of the original
9406operator could not be accessed via the alias, potentially causing
9407unexpected
9408AE_NOT_FOUND exceptions. (BZ 9067)
9409
9410Fixed a problem with the Package operator where all named references were
9411created as object references and left otherwise unresolved. According to
9412the
9413ACPI specification, a Package can only contain Data Objects or references
9414to
9415control methods. The implication is that named references to Data Objects
9416(Integer, Buffer, String, Package, BufferField, Field) should be resolved
9417immediately upon package creation. This is the approach taken with this
9418change. References to all other named objects (Methods, Devices, Scopes,
9419etc.) are all now properly created as reference objects. (BZ 5328)
9420
9421Reverted a change to Notify handling that was introduced in version
942220070508. This version changed the Notify handling from asynchronous to
9423fully synchronous (Device driver Notify handling with respect to the
9424Notify
9425ASL operator). It was found that this change caused more problems than it
9426solved and was removed by most users.
9427
9428Fixed a problem with the Increment and Decrement operators where the type
9429of
9430the target object could be unexpectedly and incorrectly changed. (BZ 353)
9431Lin Ming.
9432
9433Fixed a problem with the Load and LoadTable operators where the table
9434location within the namespace was ignored. Instead, the table was always
9435loaded into the root or current scope. Lin Ming.
9436
9437Fixed a problem with the Load operator when loading a table from a buffer
9438object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
9439
9440Fixed a problem with the Debug object where a store of a DdbHandle
9441reference
9442object to the Debug object could cause a fault.
9443
9444Added a table checksum verification for the Load operator, in the case
9445where
9446the load is from a buffer. (BZ 578).
9447
9448Implemented additional parameter validation for the LoadTable operator.
9449The
9450length of the input strings SignatureString, OemIdString, and OemTableId
9451are
9452now checked for maximum lengths. (BZ 582) Lin Ming.
9453
9454Example Code and Data Size: These are the sizes for the OS-independent
9455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9456debug version of the code includes the debug output trace mechanism and
9457has
9458a much larger code and data size.
9459
9460  Previous Release:
9461    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9462    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9463  Current Release:
9464    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9465    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9466
9467
94682) iASL Compiler/Disassembler:
9469
9470Fixed a problem where if a single file was specified and the file did not
9471exist, no error message was emitted. (Introduced with wildcard support in
9472version 20070917.)
9473
9474----------------------------------------
947519 September 2007. Summary of changes for version 20070919:
9476
94771) ACPI CA Core Subsystem:
9478
9479Designed and implemented new external interfaces to install and remove
9480handlers for ACPI table-related events. Current events that are defined
9481are
9482LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
9483they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
9484AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
9485
9486Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
9487(acpi_serialized option on Linux) could cause some systems to hang during
9488initialization. (Bob Moore) BZ 8171
9489
9490Fixed a problem where objects of certain types (Device, ThermalZone,
9491Processor, PowerResource) can be not found if they are declared and
9492referenced from within the same control method (Lin Ming) BZ 341
9493
9494Example Code and Data Size: These are the sizes for the OS-independent
9495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9496debug version of the code includes the debug output trace mechanism and
9497has
9498a much larger code and data size.
9499
9500  Previous Release:
9501    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9502    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9503  Current Release:
9504    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9505    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9506
9507
95082) iASL Compiler/Disassembler:
9509
9510Implemented support to allow multiple files to be compiled/disassembled
9511in
9512a
9513single invocation. This includes command line wildcard support for both
9514the
9515Windows and Unix versions of the compiler. This feature simplifies the
9516disassembly and compilation of multiple ACPI tables in a single
9517directory.
9518
9519----------------------------------------
952008 May 2007. Summary of changes for version 20070508:
9521
95221) ACPI CA Core Subsystem:
9523
9524Implemented a Microsoft compatibility design change for the handling of
9525the
9526Notify AML operator. Previously, notify handlers were dispatched and
9527executed completely asynchronously in a deferred thread. The new design
9528still executes the notify handlers in a different thread, but the
9529original
9530thread that executed the Notify() now waits at a synchronization point
9531for
9532the notify handler to complete. Some machines depend on a synchronous
9533Notify
9534operator in order to operate correctly.
9535
9536Implemented support to allow Package objects to be passed as method
9537arguments to the external AcpiEvaluateObject interface. Previously, this
9538would return the AE_NOT_IMPLEMENTED exception. This feature had not been
9539implemented since there were no reserved control methods that required it
9540until recently.
9541
9542Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
9543that
9544contained invalid non-zero values in reserved fields could cause later
9545failures because these fields have meaning in later revisions of the
9546FADT.
9547For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
9548fields
9549are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
9550
9551Fixed a problem where the Global Lock handle was not properly updated if
9552a
9553thread that acquired the Global Lock via executing AML code then
9554attempted
9555to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
9556Joe
9557Liu.
9558
9559Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
9560could be corrupted if the interrupt being removed was at the head of the
9561list. Reported by Linn Crosetto.
9562
9563Example Code and Data Size: These are the sizes for the OS-independent
9564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9565debug version of the code includes the debug output trace mechanism and
9566has
9567a much larger code and data size.
9568
9569  Previous Release:
9570    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9571    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9572  Current Release:
9573    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9574    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9575
9576----------------------------------------
957720 March 2007. Summary of changes for version 20070320:
9578
95791) ACPI CA Core Subsystem:
9580
9581Implemented a change to the order of interpretation and evaluation of AML
9582operand objects within the AML interpreter. The interpreter now evaluates
9583operands in the order that they appear in the AML stream (and the
9584corresponding ASL code), instead of in the reverse order (after the
9585entire
9586operand list has been parsed). The previous behavior caused several
9587subtle
9588incompatibilities with the Microsoft AML interpreter as well as being
9589somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
9590
9591Implemented a change to the ACPI Global Lock support. All interfaces to
9592the
9593global lock now allow the same thread to acquire the lock multiple times.
9594This affects the AcpiAcquireGlobalLock external interface to the global
9595lock
9596as well as the internal use of the global lock to support AML fields -- a
9597control method that is holding the global lock can now simultaneously
9598access
9599AML fields that require global lock protection. Previously, in both
9600cases,
9601this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
9602to
9603AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
9604Controller. There is no change to the behavior of the AML Acquire
9605operator,
9606as this can already be used to acquire a mutex multiple times by the same
9607thread. BZ 8066. With assistance from Alexey Starikovskiy.
9608
9609Fixed a problem where invalid objects could be referenced in the AML
9610Interpreter after error conditions. During operand evaluation, ensure
9611that
9612the internal "Return Object" field is cleared on error and only valid
9613pointers are stored there. Caused occasional access to deleted objects
9614that
9615resulted in "large reference count" warning messages. Valery Podrezov.
9616
9617Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
9618on
9619deeply nested control method invocations. BZ 7873, local BZ 487. Valery
9620Podrezov.
9621
9622Fixed an internal problem with the handling of result objects on the
9623interpreter result stack. BZ 7872. Valery Podrezov.
9624
9625Removed obsolete code that handled the case where AML_NAME_OP is the
9626target
9627of a reference (Reference.Opcode). This code was no longer necessary. BZ
96287874. Valery Podrezov.
9629
9630Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
9631was
9632a
9633remnant from the previously discontinued 16-bit support.
9634
9635Example Code and Data Size: These are the sizes for the OS-independent
9636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9637debug version of the code includes the debug output trace mechanism and
9638has
9639a much larger code and data size.
9640
9641  Previous Release:
9642    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9643    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9644  Current Release:
9645    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9646    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9647
9648----------------------------------------
964926 January 2007. Summary of changes for version 20070126:
9650
96511) ACPI CA Core Subsystem:
9652
9653Added the 2007 copyright to all module headers and signons. This affects
9654virtually every file in the ACPICA core subsystem, the iASL compiler, and
9655the utilities.
9656
9657Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
9658during a table load. A bad pointer was passed in the case where the DSDT
9659is
9660overridden, causing a fault in this case.
9661
9662Example Code and Data Size: These are the sizes for the OS-independent
9663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9664debug version of the code includes the debug output trace mechanism and
9665has
9666a much larger code and data size.
9667
9668  Previous Release:
9669    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9670    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9671  Current Release:
9672    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9673    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9674
9675----------------------------------------
967615 December 2006. Summary of changes for version 20061215:
9677
96781) ACPI CA Core Subsystem:
9679
9680Support for 16-bit ACPICA has been completely removed since it is no
9681longer
9682necessary and it clutters the code. All 16-bit macros, types, and
9683conditional compiles have been removed, cleaning up and simplifying the
9684code
9685across the entire subsystem. DOS support is no longer needed since the
9686bootable Linux firmware kit is now available.
9687
9688The handler for the Global Lock is now removed during AcpiTerminate to
9689enable a clean subsystem restart, via the implementation of the
9690AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
9691HP)
9692
9693Implemented enhancements to the multithreading support within the
9694debugger
9695to enable improved multithreading debugging and evaluation of the
9696subsystem.
9697(Valery Podrezov)
9698
9699Debugger: Enhanced the Statistics/Memory command to emit the total
9700(maximum)
9701memory used during the execution, as well as the maximum memory consumed
9702by
9703each of the various object types. (Valery Podrezov)
9704
9705Example Code and Data Size: These are the sizes for the OS-independent
9706acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9707debug version of the code includes the debug output trace mechanism and
9708has
9709a much larger code and data size.
9710
9711  Previous Release:
9712    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9713    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
9714  Current Release:
9715    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9716    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9717
9718
97192) iASL Compiler/Disassembler and Tools:
9720
9721AcpiExec: Implemented a new option (-m) to display full memory use
9722statistics upon subsystem/program termination. (Valery Podrezov)
9723
9724----------------------------------------
972509 November 2006. Summary of changes for version 20061109:
9726
97271) ACPI CA Core Subsystem:
9728
9729Optimized the Load ASL operator in the case where the source operand is
9730an
9731operation region. Simply map the operation region memory, instead of
9732performing a bytewise read. (Region must be of type SystemMemory, see
9733below.)
9734
9735Fixed the Load ASL operator for the case where the source operand is a
9736region field. A buffer object is also allowed as the source operand. BZ
9737480
9738
9739Fixed a problem where the Load ASL operator allowed the source operand to
9740be
9741an operation region of any type. It is now restricted to regions of type
9742SystemMemory, as per the ACPI specification. BZ 481
9743
9744Additional cleanup and optimizations for the new Table Manager code.
9745
9746AcpiEnable will now fail if all of the required ACPI tables are not
9747loaded
9748(FADT, FACS, DSDT). BZ 477
9749
9750Added #pragma pack(8/4) to acobject.h to ensure that the structures in
9751this
9752header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
9753manually optimized to be aligned and will not work if it is byte-packed.
9754
9755Example Code and Data Size: These are the sizes for the OS-independent
9756acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9757debug version of the code includes the debug output trace mechanism and
9758has
9759a much larger code and data size.
9760
9761  Previous Release:
9762    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9763    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9764  Current Release:
9765    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9766    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
9767
9768
97692) iASL Compiler/Disassembler and Tools:
9770
9771Fixed a problem where the presence of the _OSI predefined control method
9772within complex expressions could cause an internal compiler error.
9773
9774AcpiExec: Implemented full region support for multiple address spaces.
9775SpaceId is now part of the REGION object. BZ 429
9776
9777----------------------------------------
977811 October 2006. Summary of changes for version 20061011:
9779
97801) ACPI CA Core Subsystem:
9781
9782Completed an AML interpreter performance enhancement for control method
9783execution. Previously a 2-pass parse/execution, control methods are now
9784completely parsed and executed in a single pass. This improves overall
9785interpreter performance by ~25%, reduces code size, and reduces CPU stack
9786use. (Valery Podrezov + interpreter changes in version 20051202 that
9787eliminated namespace loading during the pass one parse.)
9788
9789Implemented _CID support for PCI Root Bridge detection. If the _HID does
9790not
9791match the predefined PCI Root Bridge IDs, the _CID list (if present) is
9792now
9793obtained and also checked for an ID match.
9794
9795Implemented additional support for the PCI _ADR execution: upsearch until
9796a
9797device scope is found before executing _ADR. This allows PCI_Config
9798operation regions to be declared locally within control methods
9799underneath
9800PCI device objects.
9801
9802Fixed a problem with a possible race condition between threads executing
9803AcpiWalkNamespace and the AML interpreter. This condition was removed by
9804modifying AcpiWalkNamespace to (by default) ignore all temporary
9805namespace
9806entries created during any concurrent control method execution. An
9807additional namespace race condition is known to exist between
9808AcpiWalkNamespace and the Load/Unload ASL operators and is still under
9809investigation.
9810
9811Restructured the AML ParseLoop function, breaking it into several
9812subfunctions in order to reduce CPU stack use and improve
9813maintainability.
9814(Mikhail Kouzmich)
9815
9816AcpiGetHandle: Fix for parameter validation to detect invalid
9817combinations
9818of prefix handle and pathname. BZ 478
9819
9820Example Code and Data Size: These are the sizes for the OS-independent
9821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9822debug version of the code includes the debug output trace mechanism and
9823has
9824a much larger code and data size.
9825
9826  Previous Release:
9827    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9828    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9829  Current Release:
9830    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9831    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9832
98332) iASL Compiler/Disassembler and Tools:
9834
9835Ported the -g option (get local ACPI tables) to the new ACPICA Table
9836Manager
9837to restore original behavior.
9838
9839----------------------------------------
984027 September 2006. Summary of changes for version 20060927:
9841
98421) ACPI CA Core Subsystem:
9843
9844Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
9845These functions now use a spinlock for mutual exclusion and the interrupt
9846level indication flag is not needed.
9847
9848Fixed a problem with the Global Lock where the lock could appear to be
9849obtained before it is actually obtained. The global lock semaphore was
9850inadvertently created with one unit instead of zero units. (BZ 464)
9851Fiodor
9852Suietov.
9853
9854Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
9855during
9856a read from a buffer or region field. (BZ 458) Fiodor Suietov.
9857
9858Example Code and Data Size: These are the sizes for the OS-independent
9859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9860debug version of the code includes the debug output trace mechanism and
9861has
9862a much larger code and data size.
9863
9864  Previous Release:
9865    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9866    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9867  Current Release:
9868    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9869    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9870
9871
98722) iASL Compiler/Disassembler and Tools:
9873
9874Fixed a compilation problem with the pre-defined Resource Descriptor
9875field
9876names where an "object does not exist" error could be incorrectly
9877generated
9878if the parent ResourceTemplate pathname places the template within a
9879different namespace scope than the current scope. (BZ 7212)
9880
9881Fixed a problem where the compiler could hang after syntax errors
9882detected
9883in an ElseIf construct. (BZ 453)
9884
9885Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
9886operator. An incorrect output filename was produced when this parameter
9887was
9888a null string (""). Now, the original input filename is used as the AML
9889output filename, with an ".aml" extension.
9890
9891Implemented a generic batch command mode for the AcpiExec utility
9892(execute
9893any AML debugger command) (Valery Podrezov).
9894
9895----------------------------------------
989612 September 2006. Summary of changes for version 20060912:
9897
98981) ACPI CA Core Subsystem:
9899
9900Enhanced the implementation of the "serialized mode" of the interpreter
9901(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
9902specified, instead of creating a serialization semaphore per control
9903method,
9904the interpreter lock is simply no longer released before a blocking
9905operation during control method execution. This effectively makes the AML
9906Interpreter single-threaded. The overhead of a semaphore per-method is
9907eliminated.
9908
9909Fixed a regression where an error was no longer emitted if a control
9910method
9911attempts to create 2 objects of the same name. This once again returns
9912AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
9913that
9914will dynamically serialize the control method to possible prevent future
9915errors. (BZ 440)
9916
9917Integrated a fix for a problem with PCI Express HID detection in the PCI
9918Config Space setup procedure. (BZ 7145)
9919
9920Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
9921AcpiHwInitialize function - the FADT registers are now validated when the
9922table is loaded.
9923
9924Added two new warnings during FADT verification - 1) if the FADT is
9925larger
9926than the largest known FADT version, and 2) if there is a mismatch
9927between
9928a
992932-bit block address and the 64-bit X counterpart (when both are non-
9930zero.)
9931
9932Example Code and Data Size: These are the sizes for the OS-independent
9933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9934debug version of the code includes the debug output trace mechanism and
9935has
9936a much larger code and data size.
9937
9938  Previous Release:
9939    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9940    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9941  Current Release:
9942    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9943    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9944
9945
99462) iASL Compiler/Disassembler and Tools:
9947
9948Fixed a problem with the implementation of the Switch() operator where
9949the
9950temporary variable was declared too close to the actual Switch, instead
9951of
9952at method level. This could cause a problem if the Switch() operator is
9953within a while loop, causing an error on the second iteration. (BZ 460)
9954
9955Disassembler - fix for error emitted for unknown type for target of scope
9956operator. Now, ignore it and continue.
9957
9958Disassembly of an FADT now verifies the input FADT and reports any errors
9959found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
9960
9961Disassembly of raw data buffers with byte initialization data now
9962prefixes
9963each output line with the current buffer offset.
9964
9965Disassembly of ASF! table now includes all variable-length data fields at
9966the end of some of the subtables.
9967
9968The disassembler now emits a comment if a buffer appears to be a
9969ResourceTemplate, but cannot be disassembled as such because the EndTag
9970does
9971not appear at the very end of the buffer.
9972
9973AcpiExec - Added the "-t" command line option to enable the serialized
9974mode
9975of the AML interpreter.
9976
9977----------------------------------------
997831 August 2006. Summary of changes for version 20060831:
9979
99801) ACPI CA Core Subsystem:
9981
9982Miscellaneous fixes for the Table Manager:
9983- Correctly initialize internal common FADT for all 64-bit "X" fields
9984- Fixed a couple table mapping issues during table load
9985- Fixed a couple alignment issues for IA64
9986- Initialize input array to zero in AcpiInitializeTables
9987- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
9988AcpiGetTableByIndex
9989
9990Change for GPE support: when a "wake" GPE is received, all wake GPEs are
9991now
9992immediately disabled to prevent the waking GPE from firing again and to
9993prevent other wake GPEs from interrupting the wake process.
9994
9995Added the AcpiGpeCount global that tracks the number of processed GPEs,
9996to
9997be used for debugging systems with a large number of ACPI interrupts.
9998
9999Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10000both the ACPICA headers and the disassembler.
10001
10002Example Code and Data Size: These are the sizes for the OS-independent
10003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10004debug version of the code includes the debug output trace mechanism and
10005has
10006a much larger code and data size.
10007
10008  Previous Release:
10009    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10010    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10011  Current Release:
10012    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10013    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10014
10015
100162) iASL Compiler/Disassembler and Tools:
10017
10018Disassembler support for the DMAR ACPI table.
10019
10020----------------------------------------
1002123 August 2006. Summary of changes for version 20060823:
10022
100231) ACPI CA Core Subsystem:
10024
10025The Table Manager component has been completely redesigned and
10026reimplemented. The new design is much simpler, and reduces the overall
10027code
10028and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10029is
10030now possible to obtain the ACPI tables very early during kernel
10031initialization, even before dynamic memory management is initialized.
10032(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10033
10034Obsolete ACPICA interfaces:
10035
10036- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10037init
10038time).
10039- AcpiLoadTable: Not needed.
10040- AcpiUnloadTable: Not needed.
10041
10042New ACPICA interfaces:
10043
10044- AcpiInitializeTables: Must be called before the table manager can be
10045used.
10046- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10047allocated memory after it becomes available.
10048- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10049tables
10050in the RSDT/XSDT.
10051
10052Other ACPICA changes:
10053
10054- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10055Use
10056AcpiOsUnmapMemory to free this mapping.
10057- AcpiGetTable returns the actual mapped table. The mapping is managed
10058internally and must not be deleted by the caller. Use of this interface
10059causes no additional dynamic memory allocation.
10060- AcpiFindRootPointer: Support for physical addressing has been
10061eliminated,
10062it appeared to be unused.
10063- The interface to AcpiOsMapMemory has changed to be consistent with the
10064other allocation interfaces.
10065- The interface to AcpiOsGetRootPointer has changed to eliminate
10066unnecessary
10067parameters.
10068- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1006964-
10070bit platforms. Was previously 64 bits on all platforms.
10071- The interface to the ACPI Global Lock acquire/release macros have
10072changed
10073slightly since ACPICA no longer keeps a local copy of the FACS with a
10074constructed pointer to the actual global lock.
10075
10076Porting to the new table manager:
10077
10078- AcpiInitializeTables: Must be called once, and can be called anytime
10079during the OS initialization process. It allows the host to specify an
10080area
10081of memory to be used to store the internal version of the RSDT/XSDT (root
10082table). This allows the host to access ACPI tables before memory
10083management
10084is initialized and running.
10085- AcpiReallocateRootTable: Can be called after memory management is
10086running
10087to copy the root table to a dynamically allocated array, freeing up the
10088scratch memory specified in the call to AcpiInitializeTables.
10089- AcpiSubsystemInitialize: This existing interface is independent of the
10090Table Manager, and does not have to be called before the Table Manager
10091can
10092be used, it only must be called before the rest of ACPICA can be used.
10093- ACPI Tables: Some changes have been made to the names and structure of
10094the
10095actbl.h and actbl1.h header files and may require changes to existing
10096code.
10097For example, bitfields have been completely removed because of their lack
10098of
10099portability across C compilers.
10100- Update interfaces to the Global Lock acquire/release macros if local
10101versions are used. (see acwin.h)
10102
10103Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10104
10105New files: tbfind.c
10106
10107Example Code and Data Size: These are the sizes for the OS-independent
10108acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10109debug version of the code includes the debug output trace mechanism and
10110has
10111a much larger code and data size.
10112
10113  Previous Release:
10114    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10115    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10116  Current Release:
10117    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10118    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10119
10120
101212) iASL Compiler/Disassembler and Tools:
10122
10123No changes for this release.
10124
10125----------------------------------------
1012621 July 2006. Summary of changes for version 20060721:
10127
101281) ACPI CA Core Subsystem:
10129
10130The full source code for the ASL test suite used to validate the iASL
10131compiler and the ACPICA core subsystem is being released with the ACPICA
10132source for the first time. The source is contained in a separate package
10133and
10134consists of over 1100 files that exercise all ASL/AML operators. The
10135package
10136should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10137Fiodor
10138Suietov)
10139
10140Completed a new design and implementation for support of the ACPI Global
10141Lock. On the OS side, the global lock is now treated as a standard AML
10142mutex. Previously, multiple OS threads could "acquire" the global lock
10143simultaneously. However, this could cause the BIOS to be starved out of
10144the
10145lock - especially in cases such as the Embedded Controller driver where
10146there is a tight coupling between the OS and the BIOS.
10147
10148Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10149The Global Lock interrupt handler no longer queues the execution of a
10150separate thread to signal the global lock semaphore. Instead, the
10151semaphore
10152is signaled directly from the interrupt handler.
10153
10154Implemented support within the AML interpreter for package objects that
10155contain a larger AML length (package list length) than the package
10156element
10157count. In this case, the length of the package is truncated to match the
10158package element count. Some BIOS code apparently modifies the package
10159length
10160on the fly, and this change supports this behavior. Provides
10161compatibility
10162with the MS AML interpreter. (With assistance from Fiodor Suietov)
10163
10164Implemented a temporary fix for the BankValue parameter of a Bank Field
10165to
10166support all constant values, now including the Zero and One opcodes.
10167Evaluation of this parameter must eventually be converted to a full
10168TermArg
10169evaluation. A not-implemented error is now returned (temporarily) for
10170non-
10171constant values for this parameter.
10172
10173Fixed problem reports (Fiodor Suietov) integrated:
10174- Fix for premature object deletion after CopyObject on Operation Region
10175(BZ
10176350)
10177
10178Example Code and Data Size: These are the sizes for the OS-independent
10179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10180debug version of the code includes the debug output trace mechanism and
10181has
10182a much larger code and data size.
10183
10184  Previous Release:
10185    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
10186    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
10187  Current Release:
10188    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10189    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10190
10191
101922) iASL Compiler/Disassembler and Tools:
10193
10194No changes for this release.
10195
10196----------------------------------------
1019707 July 2006. Summary of changes for version 20060707:
10198
101991) ACPI CA Core Subsystem:
10200
10201Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10202that do not allow the initialization of address pointers within packed
10203structures - even though the hardware itself may support misaligned
10204transfers. Some of the debug data structures are packed by default to
10205minimize size.
10206
10207Added an error message for the case where AcpiOsGetThreadId() returns
10208zero.
10209A non-zero value is required by the core ACPICA code to ensure the proper
10210operation of AML mutexes and recursive control methods.
10211
10212The DSDT is now the only ACPI table that determines whether the AML
10213interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10214but
10215the hooks for per-table 32/64 switching have been removed from the code.
10216A
10217clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10218
10219Fixed a possible leak of an OwnerID in the error path of
10220AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10221deletion to a single place in AcpiTbUninstallTable to correct possible
10222leaks
10223when using the AcpiTbDeleteTablesByType interface (with assistance from
10224Lance Ortiz.)
10225
10226Fixed a problem with Serialized control methods where the semaphore
10227associated with the method could be over-signaled after multiple method
10228invocations.
10229
10230Fixed two issues with the locking of the internal namespace data
10231structure.
10232Both the Unload() operator and AcpiUnloadTable interface now lock the
10233namespace during the namespace deletion associated with the table unload
10234(with assistance from Linn Crosetto.)
10235
10236Fixed problem reports (Valery Podrezov) integrated:
10237- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10238
10239Fixed problem reports (Fiodor Suietov) integrated:
10240- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10241- On Address Space handler deletion, needless deactivation call (BZ 374)
10242- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10243375)
10244- Possible memory leak, Notify sub-objects of Processor, Power,
10245ThermalZone
10246(BZ 376)
10247- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10248- Minimum Length of RSDT should be validated (BZ 379)
10249- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10250Handler (BZ (380)
10251- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10252loaded
10253(BZ 381)
10254
10255Example Code and Data Size: These are the sizes for the OS-independent
10256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10257debug version of the code includes the debug output trace mechanism and
10258has
10259a much larger code and data size.
10260
10261  Previous Release:
10262    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10263    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10264  Current Release:
10265    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10266    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10267
10268
102692) iASL Compiler/Disassembler and Tools:
10270
10271Fixed problem reports:
10272Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10273436)
10274
10275----------------------------------------
1027623 June 2006. Summary of changes for version 20060623:
10277
102781) ACPI CA Core Subsystem:
10279
10280Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10281allows the type to be customized to the host OS for improved efficiency
10282(since a spinlock is usually a very small object.)
10283
10284Implemented support for "ignored" bits in the ACPI registers. According
10285to
10286the ACPI specification, these bits should be preserved when writing the
10287registers via a read/modify/write cycle. There are 3 bits preserved in
10288this
10289manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10290
10291Implemented the initial deployment of new OSL mutex interfaces. Since
10292some
10293host operating systems have separate mutex and semaphore objects, this
10294feature was requested. The base code now uses mutexes (and the new mutex
10295interfaces) wherever a binary semaphore was used previously. However, for
10296the current release, the mutex interfaces are defined as macros to map
10297them
10298to the existing semaphore interfaces. Therefore, no OSL changes are
10299required
10300at this time. (See acpiosxf.h)
10301
10302Fixed several problems with the support for the control method SyncLevel
10303parameter. The SyncLevel now works according to the ACPI specification
10304and
10305in concert with the Mutex SyncLevel parameter, since the current
10306SyncLevel
10307is a property of the executing thread. Mutual exclusion for control
10308methods
10309is now implemented with a mutex instead of a semaphore.
10310
10311Fixed three instances of the use of the C shift operator in the bitfield
10312support code (exfldio.c) to avoid the use of a shift value larger than
10313the
10314target data width. The behavior of C compilers is undefined in this case
10315and
10316can cause unpredictable results, and therefore the case must be detected
10317and
10318avoided. (Fiodor Suietov)
10319
10320Added an info message whenever an SSDT or OEM table is loaded dynamically
10321via the Load() or LoadTable() ASL operators. This should improve
10322debugging
10323capability since it will show exactly what tables have been loaded
10324(beyond
10325the tables present in the RSDT/XSDT.)
10326
10327Example Code and Data Size: These are the sizes for the OS-independent
10328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10329debug version of the code includes the debug output trace mechanism and
10330has
10331a much larger code and data size.
10332
10333  Previous Release:
10334    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10335    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10336  Current Release:
10337    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10338    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10339
10340
103412) iASL Compiler/Disassembler and Tools:
10342
10343No changes for this release.
10344
10345----------------------------------------
1034608 June 2006. Summary of changes for version 20060608:
10347
103481) ACPI CA Core Subsystem:
10349
10350Converted the locking mutex used for the ACPI hardware to a spinlock.
10351This
10352change should eliminate all problems caused by attempting to acquire a
10353semaphore at interrupt level, and it means that all ACPICA external
10354interfaces that directly access the ACPI hardware can be safely called
10355from
10356interrupt level. OSL code that implements the semaphore interfaces should
10357be
10358able to eliminate any workarounds for being called at interrupt level.
10359
10360Fixed a regression introduced in 20060526 where the ACPI device
10361initialization could be prematurely aborted with an AE_NOT_FOUND if a
10362device
10363did not have an optional _INI method.
10364
10365Fixed an IndexField issue where a write to the Data Register should be
10366limited in size to the AccessSize (width) of the IndexField itself. (BZ
10367433,
10368Fiodor Suietov)
10369
10370Fixed problem reports (Valery Podrezov) integrated:
10371- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10372
10373Fixed problem reports (Fiodor Suietov) integrated:
10374- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10375
10376Removed four global mutexes that were obsolete and were no longer being
10377used.
10378
10379Example Code and Data Size: These are the sizes for the OS-independent
10380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10381debug version of the code includes the debug output trace mechanism and
10382has
10383a much larger code and data size.
10384
10385  Previous Release:
10386    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10387    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10388  Current Release:
10389    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10390    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10391
10392
103932) iASL Compiler/Disassembler and Tools:
10394
10395Fixed a fault when using -g option (get tables from registry) on Windows
10396machines.
10397
10398Fixed problem reports integrated:
10399- Generate error if CreateField NumBits parameter is zero. (BZ 405)
10400- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10401Suietov)
10402- Global table revision override (-r) is ignored (BZ 413)
10403
10404----------------------------------------
1040526 May 2006. Summary of changes for version 20060526:
10406
104071) ACPI CA Core Subsystem:
10408
10409Restructured, flattened, and simplified the internal interfaces for
10410namespace object evaluation - resulting in smaller code, less CPU stack
10411use,
10412and fewer interfaces. (With assistance from Mikhail Kouzmich)
10413
10414Fixed a problem with the CopyObject operator where the first parameter
10415was
10416not typed correctly for the parser, interpreter, compiler, and
10417disassembler.
10418Caused various errors and unexpected behavior.
10419
10420Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
10421produced incorrect results with some C compilers. Since the behavior of C
10422compilers when the shift value is larger than the datatype width is
10423apparently not well defined, the interpreter now detects this condition
10424and
10425simply returns zero as expected in all such cases. (BZ 395)
10426
10427Fixed problem reports (Valery Podrezov) integrated:
10428- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
10429- Allow interpreter to handle nested method declarations (BZ 5361)
10430
10431Fixed problem reports (Fiodor Suietov) integrated:
10432- AcpiTerminate doesn't free debug memory allocation list objects (BZ
10433355)
10434- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
10435356)
10436- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
10437- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
10438- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
10439- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
10440- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
10441- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
10442- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
10443365)
10444- Status of the Global Initialization Handler call not used (BZ 366)
10445- Incorrect object parameter to Global Initialization Handler (BZ 367)
10446
10447Example Code and Data Size: These are the sizes for the OS-independent
10448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10449debug version of the code includes the debug output trace mechanism and
10450has
10451a much larger code and data size.
10452
10453  Previous Release:
10454    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10455    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10456  Current Release:
10457    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10458    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10459
10460
104612) iASL Compiler/Disassembler and Tools:
10462
10463Modified the parser to allow the names IO, DMA, and IRQ to be used as
10464namespace identifiers with no collision with existing resource descriptor
10465macro names. This provides compatibility with other ASL compilers and is
10466most useful for disassembly/recompilation of existing tables without
10467parse
10468errors. (With assistance from Thomas Renninger)
10469
10470Disassembler: fixed an incorrect disassembly problem with the
10471DataTableRegion and CopyObject operators. Fixed a possible fault during
10472disassembly of some Alias operators.
10473
10474----------------------------------------
1047512 May 2006. Summary of changes for version 20060512:
10476
104771) ACPI CA Core Subsystem:
10478
10479Replaced the AcpiOsQueueForExecution interface with a new interface named
10480AcpiOsExecute. The major difference is that the new interface does not
10481have
10482a Priority parameter, this appeared to be useless and has been replaced
10483by
10484a
10485Type parameter. The Type tells the host what type of execution is being
10486requested, such as global lock handler, notify handler, GPE handler, etc.
10487This allows the host to queue and execute the request as appropriate for
10488the
10489request type, possibly using different work queues and different
10490priorities
10491for the various request types. This enables fixes for multithreading
10492deadlock problems such as BZ #5534, and will require changes to all
10493existing
10494OS interface layers. (Alexey Starikovskiy and Bob Moore)
10495
10496Fixed a possible memory leak associated with the support for the so-
10497called
10498"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
10499Suietov)
10500
10501Fixed a problem with the Load() operator where a table load from an
10502operation region could overwrite an internal table buffer by up to 7
10503bytes
10504and cause alignment faults on IPF systems. (With assistance from Luming
10505Yu)
10506
10507Example Code and Data Size: These are the sizes for the OS-independent
10508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10509debug version of the code includes the debug output trace mechanism and
10510has
10511a much larger code and data size.
10512
10513  Previous Release:
10514    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10515    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10516  Current Release:
10517    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10518    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10519
10520
10521
105222) iASL Compiler/Disassembler and Tools:
10523
10524Disassembler: Implemented support to cross reference the internal
10525namespace
10526and automatically generate ASL External() statements for symbols not
10527defined
10528within the current table being disassembled. This will simplify the
10529disassembly and recompilation of interdependent tables such as SSDTs
10530since
10531these statements will no longer have to be added manually.
10532
10533Disassembler: Implemented experimental support to automatically detect
10534invocations of external control methods and generate appropriate
10535External()
10536statements. This is problematic because the AML cannot be correctly
10537parsed
10538until the number of arguments for each control method is known.
10539Currently,
10540standalone method invocations and invocations as the source operand of a
10541Store() statement are supported.
10542
10543Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
10544LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
10545LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
10546more readable and likely closer to the original ASL source.
10547
10548----------------------------------------
1054921 April 2006. Summary of changes for version 20060421:
10550
105511) ACPI CA Core Subsystem:
10552
10553Removed a device initialization optimization introduced in 20051216 where
10554the _STA method was not run unless an _INI was also present for the same
10555device. This optimization could cause problems because it could allow
10556_INI
10557methods to be run within a not-present device subtree. (If a not-present
10558device had no _INI, _STA would not be run, the not-present status would
10559not
10560be discovered, and the children of the device would be incorrectly
10561traversed.)
10562
10563Implemented a new _STA optimization where namespace subtrees that do not
10564contain _INI are identified and ignored during device initialization.
10565Selectively running _STA can significantly improve boot time on large
10566machines (with assistance from Len Brown.)
10567
10568Implemented support for the device initialization case where the returned
10569_STA flags indicate a device not-present but functioning. In this case,
10570_INI
10571is not run, but the device children are examined for presence, as per the
10572ACPI specification.
10573
10574Implemented an additional change to the IndexField support in order to
10575conform to MS behavior. The value written to the Index Register is not
10576simply a byte offset, it is a byte offset in units of the access width of
10577the parent Index Field. (Fiodor Suietov)
10578
10579Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
10580interface is called during the creation of all AML operation regions, and
10581allows the host OS to exert control over what addresses it will allow the
10582AML code to access. Operation Regions whose addresses are disallowed will
10583cause a runtime exception when they are actually accessed (will not
10584affect
10585or abort table loading.) See oswinxf or osunixxf for an example
10586implementation.
10587
10588Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
10589interface allows the host OS to match the various "optional"
10590interface/behavior strings for the _OSI predefined control method as
10591appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
10592for an example implementation.
10593
10594Restructured and corrected various problems in the exception handling
10595code
10596paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
10597(with assistance from Takayoshi Kochi.)
10598
10599Modified the Linux source converter to ignore quoted string literals
10600while
10601converting identifiers from mixed to lower case. This will correct
10602problems
10603with the disassembler and other areas where such strings must not be
10604modified.
10605
10606The ACPI_FUNCTION_* macros no longer require quotes around the function
10607name. This allows the Linux source converter to convert the names, now
10608that
10609the converter ignores quoted strings.
10610
10611Example Code and Data Size: These are the sizes for the OS-independent
10612acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10613debug version of the code includes the debug output trace mechanism and
10614has
10615a much larger code and data size.
10616
10617  Previous Release:
10618
10619    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10620    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10621  Current Release:
10622    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10623    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10624
10625
106262) iASL Compiler/Disassembler and Tools:
10627
10628Implemented 3 new warnings for iASL, and implemented multiple warning
10629levels
10630(w2 flag).
10631
106321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
10633not
10634WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
10635check for the possible timeout, a warning is issued.
10636
106372) Useless operators: If an ASL operator does not specify an optional
10638target
10639operand and it also does not use the function return value from the
10640operator, a warning is issued since the operator effectively does
10641nothing.
10642
106433) Unreferenced objects: If a namespace object is created, but never
10644referenced, a warning is issued. This is a warning level 2 since there
10645are
10646cases where this is ok, such as when a secondary table is loaded that
10647uses
10648the unreferenced objects. Even so, care is taken to only flag objects
10649that
10650don't look like they will ever be used. For example, the reserved methods
10651(starting with an underscore) are usually not referenced because it is
10652expected that the OS will invoke them.
10653
10654----------------------------------------
1065531 March 2006. Summary of changes for version 20060331:
10656
106571) ACPI CA Core Subsystem:
10658
10659Implemented header file support for the following additional ACPI tables:
10660ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
10661support,
10662all current and known ACPI tables are now defined in the ACPICA headers
10663and
10664are available for use by device drivers and other software.
10665
10666Implemented support to allow tables that contain ACPI names with invalid
10667characters to be loaded. Previously, this would cause the table load to
10668fail, but since there are several known cases of such tables on existing
10669machines, this change was made to enable ACPI support for them. Also,
10670this
10671matches the behavior of the Microsoft ACPI implementation.
10672
10673Fixed a couple regressions introduced during the memory optimization in
10674the
1067520060317 release. The namespace node definition required additional
10676reorganization and an internal datatype that had been changed to 8-bit
10677was
10678restored to 32-bit. (Valery Podrezov)
10679
10680Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
10681could be passed through to AcpiOsReleaseObject which is unexpected. Such
10682null pointers are now trapped and ignored, matching the behavior of the
10683previous implementation before the deployment of AcpiOsReleaseObject.
10684(Valery Podrezov, Fiodor Suietov)
10685
10686Fixed a memory mapping leak during the deletion of a SystemMemory
10687operation
10688region where a cached memory mapping was not deleted. This became a
10689noticeable problem for operation regions that are defined within
10690frequently
10691used control methods. (Dana Meyers)
10692
10693Reorganized the ACPI table header files into two main files: one for the
10694ACPI tables consumed by the ACPICA core, and another for the
10695miscellaneous
10696ACPI tables that are consumed by the drivers and other software. The
10697various
10698FADT definitions were merged into one common section and three different
10699tables (ACPI 1.0, 1.0+, and 2.0)
10700
10701Example Code and Data Size: These are the sizes for the OS-independent
10702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10703debug version of the code includes the debug output trace mechanism and
10704has
10705a much larger code and data size.
10706
10707  Previous Release:
10708    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10709    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10710  Current Release:
10711    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10712    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10713
10714
107152) iASL Compiler/Disassembler and Tools:
10716
10717Disassembler: Implemented support to decode and format all non-AML ACPI
10718tables (tables other than DSDTs and SSDTs.) This includes the new tables
10719added to the ACPICA headers, therefore all current and known ACPI tables
10720are
10721supported.
10722
10723Disassembler: The change to allow ACPI names with invalid characters also
10724enables the disassembly of such tables. Invalid characters within names
10725are
10726changed to '*' to make the name printable; the iASL compiler will still
10727generate an error for such names, however, since this is an invalid ACPI
10728character.
10729
10730Implemented an option for AcpiXtract (-a) to extract all tables found in
10731the
10732input file. The default invocation extracts only the DSDTs and SSDTs.
10733
10734Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
10735makefile for the AcpiXtract utility.
10736
10737----------------------------------------
1073817 March 2006. Summary of changes for version 20060317:
10739
107401) ACPI CA Core Subsystem:
10741
10742Implemented the use of a cache object for all internal namespace nodes.
10743Since there are about 1000 static nodes in a typical system, this will
10744decrease memory use for cache implementations that minimize per-
10745allocation
10746overhead (such as a slab allocator.)
10747
10748Removed the reference count mechanism for internal namespace nodes, since
10749it
10750was deemed unnecessary. This reduces the size of each namespace node by
10751about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
10752case,
10753and 32 bytes for the 64-bit case.
10754
10755Optimized several internal data structures to reduce object size on 64-
10756bit
10757platforms by packing data within the 64-bit alignment. This includes the
10758frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
10759instances corresponding to the namespace objects.
10760
10761Added two new strings for the predefined _OSI method: "Windows 2001.1
10762SP1"
10763and "Windows 2006".
10764
10765Split the allocation tracking mechanism out to a separate file, from
10766utalloc.c to uttrack.c. This mechanism appears to be only useful for
10767application-level code. Kernels may wish to not include uttrack.c in
10768distributions.
10769
10770Removed all remnants of the obsolete ACPI_REPORT_* macros and the
10771associated
10772code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
10773macros.)
10774
10775Code and Data Size: These are the sizes for the acpica.lib produced by
10776the
10777Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10778ACPI
10779driver or OSPM code. The debug version of the code includes the debug
10780output
10781trace mechanism and has a much larger code and data size. Note that these
10782values will vary depending on the efficiency of the compiler and the
10783compiler options used during generation.
10784
10785  Previous Release:
10786    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10787    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10788  Current Release:
10789    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10790    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10791
10792
107932) iASL Compiler/Disassembler and Tools:
10794
10795Implemented an ANSI C version of the acpixtract utility. This version
10796will
10797automatically extract the DSDT and all SSDTs from the input acpidump text
10798file and dump the binary output to separate files. It can also display a
10799summary of the input file including the headers for each table found and
10800will extract any single ACPI table, with any signature. (See
10801source/tools/acpixtract)
10802
10803----------------------------------------
1080410 March 2006. Summary of changes for version 20060310:
10805
108061) ACPI CA Core Subsystem:
10807
10808Tagged all external interfaces to the subsystem with the new
10809ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
10810assist
10811kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
10812macro. The default definition is NULL.
10813
10814Added the ACPI_THREAD_ID type for the return value from
10815AcpiOsGetThreadId.
10816This allows the host to define this as necessary to simplify kernel
10817integration. The default definition is ACPI_NATIVE_UINT.
10818
10819Fixed two interpreter problems related to error processing, the deletion
10820of
10821objects, and placing invalid pointers onto the internal operator result
10822stack. BZ 6028, 6151 (Valery Podrezov)
10823
10824Increased the reference count threshold where a warning is emitted for
10825large
10826reference counts in order to eliminate unnecessary warnings on systems
10827with
10828large namespaces (especially 64-bit.) Increased the value from 0x400 to
108290x800.
10830
10831Due to universal disagreement as to the meaning of the 'c' in the
10832calloc()
10833function, the ACPI_MEM_CALLOCATE macro has been renamed to
10834ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
10835ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
10836ACPI_FREE.
10837
10838Code and Data Size: These are the sizes for the acpica.lib produced by
10839the
10840Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10841ACPI
10842driver or OSPM code. The debug version of the code includes the debug
10843output
10844trace mechanism and has a much larger code and data size. Note that these
10845values will vary depending on the efficiency of the compiler and the
10846compiler options used during generation.
10847
10848  Previous Release:
10849    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10850    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10851  Current Release:
10852    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10853    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10854
10855
108562) iASL Compiler/Disassembler:
10857
10858Disassembler: implemented support for symbolic resource descriptor
10859references. If a CreateXxxxField operator references a fixed offset
10860within
10861a
10862resource descriptor, a name is assigned to the descriptor and the offset
10863is
10864translated to the appropriate resource tag and pathname. The addition of
10865this support brings the disassembled code very close to the original ASL
10866source code and helps eliminate run-time errors when the disassembled
10867code
10868is modified (and recompiled) in such a way as to invalidate the original
10869fixed offsets.
10870
10871Implemented support for a Descriptor Name as the last parameter to the
10872ASL
10873Register() macro. This parameter was inadvertently left out of the ACPI
10874specification, and will be added for ACPI 3.0b.
10875
10876Fixed a problem where the use of the "_OSI" string (versus the full path
10877"\_OSI") caused an internal compiler error. ("No back ptr to op")
10878
10879Fixed a problem with the error message that occurs when an invalid string
10880is
10881used for a _HID object (such as one with an embedded asterisk:
10882"*PNP010A".)
10883The correct message is now displayed.
10884
10885----------------------------------------
1088617 February 2006. Summary of changes for version 20060217:
10887
108881) ACPI CA Core Subsystem:
10889
10890Implemented a change to the IndexField support to match the behavior of
10891the
10892Microsoft AML interpreter. The value written to the Index register is now
10893a
10894byte offset, no longer an index based upon the width of the Data
10895register.
10896This should fix IndexField problems seen on some machines where the Data
10897register is not exactly one byte wide. The ACPI specification will be
10898clarified on this point.
10899
10900Fixed a problem where several resource descriptor types could overrun the
10901internal descriptor buffer due to size miscalculation: VendorShort,
10902VendorLong, and Interrupt. This was noticed on IA64 machines, but could
10903affect all platforms.
10904
10905Fixed a problem where individual resource descriptors were misaligned
10906within
10907the internal buffer, causing alignment faults on IA64 platforms.
10908
10909Code and Data Size: These are the sizes for the acpica.lib produced by
10910the
10911Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10912ACPI
10913driver or OSPM code. The debug version of the code includes the debug
10914output
10915trace mechanism and has a much larger code and data size. Note that these
10916values will vary depending on the efficiency of the compiler and the
10917compiler options used during generation.
10918
10919  Previous Release:
10920    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10921    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10922  Current Release:
10923    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10924    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10925
10926
109272) iASL Compiler/Disassembler:
10928
10929Implemented support for new reserved names: _WDG and _WED are Microsoft
10930extensions for Windows Instrumentation Management, _TDL is a new ACPI-
10931defined method (Throttling Depth Limit.)
10932
10933Fixed a problem where a zero-length VendorShort or VendorLong resource
10934descriptor was incorrectly emitted as a descriptor of length one.
10935
10936----------------------------------------
1093710 February 2006. Summary of changes for version 20060210:
10938
109391) ACPI CA Core Subsystem:
10940
10941Removed a couple of extraneous ACPI_ERROR messages that appeared during
10942normal execution. These became apparent after the conversion from
10943ACPI_DEBUG_PRINT.
10944
10945Fixed a problem where the CreateField operator could hang if the BitIndex
10946or
10947NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
10948
10949Fixed a problem where a DeRefOf operation on a buffer object incorrectly
10950failed with an exception. This also fixes a couple of related RefOf and
10951DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
10952
10953Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
10954of
10955AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
10956BZ
109575480)
10958
10959Implemented a memory cleanup at the end of the execution of each
10960iteration
10961of an AML While() loop, preventing the accumulation of outstanding
10962objects.
10963(Valery Podrezov, BZ 5427)
10964
10965Eliminated a chunk of duplicate code in the object resolution code.
10966(Valery
10967Podrezov, BZ 5336)
10968
10969Fixed several warnings during the 64-bit code generation.
10970
10971The AcpiSrc source code conversion tool now inserts one line of
10972whitespace
10973after an if() statement that is followed immediately by a comment,
10974improving
10975readability of the Linux code.
10976
10977Code and Data Size: The current and previous library sizes for the core
10978subsystem are shown below. These are the code and data sizes for the
10979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10980These
10981values do not include any ACPI driver or OSPM code. The debug version of
10982the
10983code includes the debug output trace mechanism and has a much larger code
10984and data size. Note that these values will vary depending on the
10985efficiency
10986of the compiler and the compiler options used during generation.
10987
10988  Previous Release:
10989    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10990    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10991  Current Release:
10992    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10993    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10994
10995
109962) iASL Compiler/Disassembler:
10997
10998Fixed a problem with the disassembly of a BankField operator with a
10999complex
11000expression for the BankValue parameter.
11001
11002----------------------------------------
1100327 January 2006. Summary of changes for version 20060127:
11004
110051) ACPI CA Core Subsystem:
11006
11007Implemented support in the Resource Manager to allow unresolved
11008namestring
11009references within resource package objects for the _PRT method. This
11010support
11011is in addition to the previously implemented unresolved reference support
11012within the AML parser. If the interpreter slack mode is enabled, these
11013unresolved references will be passed through to the caller as a NULL
11014package
11015entry.
11016
11017Implemented and deployed new macros and functions for error and warning
11018messages across the subsystem. These macros are simpler and generate less
11019code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11020ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11021macros remain defined to allow ACPI drivers time to migrate to the new
11022macros.
11023
11024Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11025the
11026Acquire/Release Lock OSL interfaces.
11027
11028Fixed a problem where Alias ASL operators are sometimes not correctly
11029resolved, in both the interpreter and the iASL compiler.
11030
11031Fixed several problems with the implementation of the
11032ConcatenateResTemplate
11033ASL operator. As per the ACPI specification, zero length buffers are now
11034treated as a single EndTag. One-length buffers always cause a fatal
11035exception. Non-zero length buffers that do not end with a full 2-byte
11036EndTag
11037cause a fatal exception.
11038
11039Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11040interface. (With assistance from Thomas Renninger)
11041
11042Code and Data Size: The current and previous library sizes for the core
11043subsystem are shown below. These are the code and data sizes for the
11044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11045These
11046values do not include any ACPI driver or OSPM code. The debug version of
11047the
11048code includes the debug output trace mechanism and has a much larger code
11049and data size. Note that these values will vary depending on the
11050efficiency
11051of the compiler and the compiler options used during generation.
11052
11053  Previous Release:
11054    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11055    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11056  Current Release:
11057    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11058    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11059
11060
110612) iASL Compiler/Disassembler:
11062
11063Fixed an internal error that was generated for any forward references to
11064ASL
11065Alias objects.
11066
11067----------------------------------------
1106813 January 2006. Summary of changes for version 20060113:
11069
110701) ACPI CA Core Subsystem:
11071
11072Added 2006 copyright to all module headers and signons. This affects
11073virtually every file in the ACPICA core subsystem, iASL compiler, and the
11074utilities.
11075
11076Enhanced the ACPICA error reporting in order to simplify user migration
11077to
11078the non-debug version of ACPICA. Replaced all instances of the
11079ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11080debug
11081levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11082respectively. This preserves all error and warning messages in the non-
11083debug
11084version of the ACPICA code (this has been referred to as the "debug lite"
11085option.) Over 200 cases were converted to create a total of over 380
11086error/warning messages across the ACPICA code. This increases the code
11087and
11088data size of the default non-debug version of the code somewhat (about
1108913K),
11090but all error/warning reporting may be disabled if desired (and code
11091eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11092configuration option. The size of the debug version of ACPICA remains
11093about
11094the same.
11095
11096Fixed a memory leak within the AML Debugger "Set" command. One object was
11097not properly deleted for every successful invocation of the command.
11098
11099Code and Data Size: The current and previous library sizes for the core
11100subsystem are shown below. These are the code and data sizes for the
11101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11102These
11103values do not include any ACPI driver or OSPM code. The debug version of
11104the
11105code includes the debug output trace mechanism and has a much larger code
11106and data size. Note that these values will vary depending on the
11107efficiency
11108of the compiler and the compiler options used during generation.
11109
11110  Previous Release:
11111    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11112    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11113  Current Release:
11114    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11115    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11116
11117
111182) iASL Compiler/Disassembler:
11119
11120The compiler now officially supports the ACPI 3.0a specification that was
11121released on December 30, 2005. (Specification is available at
11122www.acpi.info)
11123
11124----------------------------------------
1112516 December 2005. Summary of changes for version 20051216:
11126
111271) ACPI CA Core Subsystem:
11128
11129Implemented optional support to allow unresolved names within ASL Package
11130objects. A null object is inserted in the package when a named reference
11131cannot be located in the current namespace. Enabled via the interpreter
11132slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11133machines
11134that contain such code.
11135
11136Implemented an optimization to the initialization sequence that can
11137improve
11138boot time. During ACPI device initialization, the _STA method is now run
11139if
11140and only if the _INI method exists. The _STA method is used to determine
11141if
11142the device is present; An _INI can only be run if _STA returns present,
11143but
11144it is a waste of time to run the _STA method if the _INI does not exist.
11145(Prototype and assistance from Dong Wei)
11146
11147Implemented use of the C99 uintptr_t for the pointer casting macros if it
11148is
11149available in the current compiler. Otherwise, the default (void *) cast
11150is
11151used as before.
11152
11153Fixed some possible memory leaks found within the execution path of the
11154Break, Continue, If, and CreateField operators. (Valery Podrezov)
11155
11156Fixed a problem introduced in the 20051202 release where an exception is
11157generated during method execution if a control method attempts to declare
11158another method.
11159
11160Moved resource descriptor string constants that are used by both the AML
11161disassembler and AML debugger to the common utilities directory so that
11162these components are independent.
11163
11164Implemented support in the AcpiExec utility (-e switch) to globally
11165ignore
11166exceptions during control method execution (method is not aborted.)
11167
11168Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11169generation.
11170
11171Code and Data Size: The current and previous library sizes for the core
11172subsystem are shown below. These are the code and data sizes for the
11173acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11174These
11175values do not include any ACPI driver or OSPM code. The debug version of
11176the
11177code includes the debug output trace mechanism and has a much larger code
11178and data size. Note that these values will vary depending on the
11179efficiency
11180of the compiler and the compiler options used during generation.
11181
11182  Previous Release:
11183    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11184    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11185  Current Release:
11186    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11187    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11188
11189
111902) iASL Compiler/Disassembler:
11191
11192Fixed a problem where a CPU stack overflow fault could occur if a
11193recursive
11194method call was made from within a Return statement.
11195
11196----------------------------------------
1119702 December 2005. Summary of changes for version 20051202:
11198
111991) ACPI CA Core Subsystem:
11200
11201Modified the parsing of control methods to no longer create namespace
11202objects during the first pass of the parse. Objects are now created only
11203during the execute phase, at the moment the namespace creation operator
11204is
11205encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11206This
11207should eliminate ALREADY_EXISTS exceptions seen on some machines where
11208reentrant control methods are protected by an AML mutex. The mutex will
11209now
11210correctly block multiple threads from attempting to create the same
11211object
11212more than once.
11213
11214Increased the number of available Owner Ids for namespace object tracking
11215from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11216on
11217some machines with a large number of ACPI tables (either static or
11218dynamic).
11219
11220Fixed a problem with the AcpiExec utility where a fault could occur when
11221the
11222-b switch (batch mode) is used.
11223
11224Enhanced the namespace dump routine to output the owner ID for each
11225namespace object.
11226
11227Code and Data Size: The current and previous library sizes for the core
11228subsystem are shown below. These are the code and data sizes for the
11229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11230These
11231values do not include any ACPI driver or OSPM code. The debug version of
11232the
11233code includes the debug output trace mechanism and has a much larger code
11234and data size. Note that these values will vary depending on the
11235efficiency
11236of the compiler and the compiler options used during generation.
11237
11238  Previous Release:
11239    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11240    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11241  Current Release:
11242    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11243    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11244
11245
112462) iASL Compiler/Disassembler:
11247
11248Fixed a parse error during compilation of certain Switch/Case constructs.
11249To
11250simplify the parse, the grammar now allows for multiple Default
11251statements
11252and this error is now detected and flagged during the analysis phase.
11253
11254Disassembler: The disassembly now includes the contents of the original
11255table header within a comment at the start of the file. This includes the
11256name and version of the original ASL compiler.
11257
11258----------------------------------------
1125917 November 2005. Summary of changes for version 20051117:
11260
112611) ACPI CA Core Subsystem:
11262
11263Fixed a problem in the AML parser where the method thread count could be
11264decremented below zero if any errors occurred during the method parse
11265phase.
11266This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11267machines.
11268This also fixed a related regression with the mechanism that detects and
11269corrects methods that cannot properly handle reentrancy (related to the
11270deployment of the new OwnerId mechanism.)
11271
11272Eliminated the pre-parsing of control methods (to detect errors) during
11273table load. Related to the problem above, this was causing unwind issues
11274if
11275any errors occurred during the parse, and it seemed to be overkill. A
11276table
11277load should not be aborted if there are problems with any single control
11278method, thus rendering this feature rather pointless.
11279
11280Fixed a problem with the new table-driven resource manager where an
11281internal
11282buffer overflow could occur for small resource templates.
11283
11284Implemented a new external interface, AcpiGetVendorResource. This
11285interface
11286will find and return a vendor-defined resource descriptor within a _CRS
11287or
11288_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11289Helgaas.
11290
11291Removed the length limit (200) on string objects as per the upcoming ACPI
112923.0A specification. This affects the following areas of the interpreter:
112931)
11294any implicit conversion of a Buffer to a String, 2) a String object
11295result
11296of the ASL Concatentate operator, 3) the String object result of the ASL
11297ToString operator.
11298
11299Fixed a problem in the Windows OS interface layer (OSL) where a
11300WAIT_FOREVER
11301on a semaphore object would incorrectly timeout. This allows the
11302multithreading features of the AcpiExec utility to work properly under
11303Windows.
11304
11305Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11306the recently added file named "utresrc.c".
11307
11308Code and Data Size: The current and previous library sizes for the core
11309subsystem are shown below. These are the code and data sizes for the
11310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11311These
11312values do not include any ACPI driver or OSPM code. The debug version of
11313the
11314code includes the debug output trace mechanism and has a much larger code
11315and data size. Note that these values will vary depending on the
11316efficiency
11317of the compiler and the compiler options used during generation.
11318
11319  Previous Release:
11320    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11321    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11322  Current Release:
11323    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11324    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11325
11326
113272) iASL Compiler/Disassembler:
11328
11329Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11330specification. For the iASL compiler, this means that string literals
11331within
11332the source ASL can be of any length.
11333
11334Enhanced the listing output to dump the AML code for resource descriptors
11335immediately after the ASL code for each descriptor, instead of in a block
11336at
11337the end of the entire resource template.
11338
11339Enhanced the compiler debug output to dump the entire original parse tree
11340constructed during the parse phase, before any transforms are applied to
11341the
11342tree. The transformed tree is dumped also.
11343
11344----------------------------------------
1134502 November 2005. Summary of changes for version 20051102:
11346
113471) ACPI CA Core Subsystem:
11348
11349Modified the subsystem initialization sequence to improve GPE support.
11350The
11351GPE initialization has been split into two parts in order to defer
11352execution
11353of the _PRW methods (Power Resources for Wake) until after the hardware
11354is
11355fully initialized and the SCI handler is installed. This allows the _PRW
11356methods to access fields protected by the Global Lock. This will fix
11357systems
11358where a NO_GLOBAL_LOCK exception has been seen during initialization.
11359
11360Converted the ACPI internal object disassemble and display code within
11361the
11362AML debugger to fully table-driven operation, reducing code size and
11363increasing maintainability.
11364
11365Fixed a regression with the ConcatenateResTemplate() ASL operator
11366introduced
11367in the 20051021 release.
11368
11369Implemented support for "local" internal ACPI object types within the
11370debugger "Object" command and the AcpiWalkNamespace external interfaces.
11371These local types include RegionFields, BankFields, IndexFields, Alias,
11372and
11373reference objects.
11374
11375Moved common AML resource handling code into a new file, "utresrc.c".
11376This
11377code is shared by both the Resource Manager and the AML Debugger.
11378
11379Code and Data Size: The current and previous library sizes for the core
11380subsystem are shown below. These are the code and data sizes for the
11381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11382These
11383values do not include any ACPI driver or OSPM code. The debug version of
11384the
11385code includes the debug output trace mechanism and has a much larger code
11386and data size. Note that these values will vary depending on the
11387efficiency
11388of the compiler and the compiler options used during generation.
11389
11390  Previous Release:
11391    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11392    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11393  Current Release:
11394    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11395    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11396
11397
113982) iASL Compiler/Disassembler:
11399
11400Fixed a problem with very large initializer lists (more than 4000
11401elements)
11402for both Buffer and Package objects where the parse stack could overflow.
11403
11404Enhanced the pre-compile source code scan for non-ASCII characters to
11405ignore
11406characters within comment fields. The scan is now always performed and is
11407no
11408longer optional, detecting invalid characters within a source file
11409immediately rather than during the parse phase or later.
11410
11411Enhanced the ASL grammar definition to force early reductions on all
11412list-
11413style grammar elements so that the overall parse stack usage is greatly
11414reduced. This should improve performance and reduce the possibility of
11415parse
11416stack overflow.
11417
11418Eliminated all reduce/reduce conflicts in the iASL parser generation.
11419Also,
11420with the addition of a %expected statement, the compiler generates from
11421source with no warnings.
11422
11423Fixed a possible segment fault in the disassembler if the input filename
11424does not contain a "dot" extension (Thomas Renninger).
11425
11426----------------------------------------
1142721 October 2005. Summary of changes for version 20051021:
11428
114291) ACPI CA Core Subsystem:
11430
11431Implemented support for the EM64T and other x86-64 processors. This
11432essentially entails recognizing that these processors support non-aligned
11433memory transfers. Previously, all 64-bit processors were assumed to lack
11434hardware support for non-aligned transfers.
11435
11436Completed conversion of the Resource Manager to nearly full table-driven
11437operation. Specifically, the resource conversion code (convert AML to
11438internal format and the reverse) and the debug code to dump internal
11439resource descriptors are fully table-driven, reducing code and data size
11440and
11441improving maintainability.
11442
11443The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
11444word
11445on 64-bit processors instead of a fixed 32-bit word. (With assistance
11446from
11447Alexey Starikovskiy)
11448
11449Implemented support within the resource conversion code for the Type-
11450Specific byte within the various ACPI 3.0 *WordSpace macros.
11451
11452Fixed some issues within the resource conversion code for the type-
11453specific
11454flags for both Memory and I/O address resource descriptors. For Memory,
11455implemented support for the MTP and TTP flags. For I/O, split the TRS and
11456TTP flags into two separate fields.
11457
11458Code and Data Size: The current and previous library sizes for the core
11459subsystem are shown below. These are the code and data sizes for the
11460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11461These
11462values do not include any ACPI driver or OSPM code. The debug version of
11463the
11464code includes the debug output trace mechanism and has a much larger code
11465and data size. Note that these values will vary depending on the
11466efficiency
11467of the compiler and the compiler options used during generation.
11468
11469  Previous Release:
11470    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11471    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11472  Current Release:
11473    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11474    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11475
11476
11477
114782) iASL Compiler/Disassembler:
11479
11480Relaxed a compiler restriction that disallowed a ResourceIndex byte if
11481the
11482corresponding ResourceSource string was not also present in a resource
11483descriptor declaration. This restriction caused problems with existing
11484AML/ASL code that includes the Index byte without the string. When such
11485AML
11486was disassembled, it could not be compiled without modification. Further,
11487the modified code created a resource template with a different size than
11488the
11489original, breaking code that used fixed offsets into the resource
11490template
11491buffer.
11492
11493Removed a recent feature of the disassembler to ignore a lone
11494ResourceIndex
11495byte. This byte is now emitted if present so that the exact AML can be
11496reproduced when the disassembled code is recompiled.
11497
11498Improved comments and text alignment for the resource descriptor code
11499emitted by the disassembler.
11500
11501Implemented disassembler support for the ACPI 3.0 AccessSize field within
11502a
11503Register() resource descriptor.
11504
11505----------------------------------------
1150630 September 2005. Summary of changes for version 20050930:
11507
115081) ACPI CA Core Subsystem:
11509
11510Completed a major overhaul of the Resource Manager code - specifically,
11511optimizations in the area of the AML/internal resource conversion code.
11512The
11513code has been optimized to simplify and eliminate duplicated code, CPU
11514stack
11515use has been decreased by optimizing function parameters and local
11516variables, and naming conventions across the manager have been
11517standardized
11518for clarity and ease of maintenance (this includes function, parameter,
11519variable, and struct/typedef names.) The update may force changes in some
11520driver code, depending on how resources are handled by the host OS.
11521
11522All Resource Manager dispatch and information tables have been moved to a
11523single location for clarity and ease of maintenance. One new file was
11524created, named "rsinfo.c".
11525
11526The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
11527guarantee that the argument is not evaluated twice, making them less
11528prone
11529to macro side-effects. However, since there exists the possibility of
11530additional stack use if a particular compiler cannot optimize them (such
11531as
11532in the debug generation case), the original macros are optionally
11533available.
11534Note that some invocations of the return_VALUE macro may now cause size
11535mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
11536to
11537eliminate these. (From Randy Dunlap)
11538
11539Implemented a new mechanism to enable debug tracing for individual
11540control
11541methods. A new external interface, AcpiDebugTrace, is provided to enable
11542this mechanism. The intent is to allow the host OS to easily enable and
11543disable tracing for problematic control methods. This interface can be
11544easily exposed to a user or debugger interface if desired. See the file
11545psxface.c for details.
11546
11547AcpiUtCallocate will now return a valid pointer if a length of zero is
11548specified - a length of one is used and a warning is issued. This matches
11549the behavior of AcpiUtAllocate.
11550
11551Code and Data Size: The current and previous library sizes for the core
11552subsystem are shown below. These are the code and data sizes for the
11553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11554These
11555values do not include any ACPI driver or OSPM code. The debug version of
11556the
11557code includes the debug output trace mechanism and has a much larger code
11558and data size. Note that these values will vary depending on the
11559efficiency
11560of the compiler and the compiler options used during generation.
11561
11562  Previous Release:
11563    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11564    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11565  Current Release:
11566    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11567    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11568
11569
115702) iASL Compiler/Disassembler:
11571
11572A remark is issued if the effective compile-time length of a package or
11573buffer is zero. Previously, this was a warning.
11574
11575----------------------------------------
1157616 September 2005. Summary of changes for version 20050916:
11577
115781) ACPI CA Core Subsystem:
11579
11580Fixed a problem within the Resource Manager where support for the Generic
11581Register descriptor was not fully implemented. This descriptor is now
11582fully
11583recognized, parsed, disassembled, and displayed.
11584
11585Completely restructured the Resource Manager code to utilize table-driven
11586dispatch and lookup, eliminating many of the large switch() statements.
11587This
11588reduces overall subsystem code size and code complexity. Affects the
11589resource parsing and construction, disassembly, and debug dump output.
11590
11591Cleaned up and restructured the debug dump output for all resource
11592descriptors. Improved readability of the output and reduced code size.
11593
11594Fixed a problem where changes to internal data structures caused the
11595optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
11596
11597Code and Data Size: The current and previous library sizes for the core
11598subsystem are shown below. These are the code and data sizes for the
11599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11600These
11601values do not include any ACPI driver or OSPM code. The debug version of
11602the
11603code includes the debug output trace mechanism and has a much larger code
11604and data size. Note that these values will vary depending on the
11605efficiency
11606of the compiler and the compiler options used during generation.
11607
11608  Previous Release:
11609    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11610    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11611  Current Release:
11612    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11613    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11614
11615
116162) iASL Compiler/Disassembler:
11617
11618Updated the disassembler to automatically insert an EndDependentFn()
11619macro
11620into the ASL stream if this macro is missing in the original AML code,
11621simplifying compilation of the resulting ASL module.
11622
11623Fixed a problem in the disassembler where a disassembled ResourceSource
11624string (within a large resource descriptor) was not surrounded by quotes
11625and
11626not followed by a comma, causing errors when the resulting ASL module was
11627compiled. Also, escape sequences within a ResourceSource string are now
11628handled correctly (especially "\\")
11629
11630----------------------------------------
1163102 September 2005. Summary of changes for version 20050902:
11632
116331) ACPI CA Core Subsystem:
11634
11635Fixed a problem with the internal Owner ID allocation and deallocation
11636mechanisms for control method execution and recursive method invocation.
11637This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
11638messages seen on some systems. Recursive method invocation depth is
11639currently limited to 255. (Alexey Starikovskiy)
11640
11641Completely eliminated all vestiges of support for the "module-level
11642executable code" until this support is fully implemented and debugged.
11643This
11644should eliminate the NO_RETURN_VALUE exceptions seen during table load on
11645some systems that invoke this support.
11646
11647Fixed a problem within the resource manager code where the transaction
11648flags
11649for a 64-bit address descriptor were handled incorrectly in the type-
11650specific flag byte.
11651
11652Consolidated duplicate code within the address descriptor resource
11653manager
11654code, reducing overall subsystem code size.
11655
11656Fixed a fault when using the AML debugger "disassemble" command to
11657disassemble individual control methods.
11658
11659Removed references to the "release_current" directory within the Unix
11660release package.
11661
11662Code and Data Size: The current and previous core subsystem library sizes
11663are shown below. These are the code and data sizes for the acpica.lib
11664produced by the Microsoft Visual C++ 6.0 compiler. These values do not
11665include any ACPI driver or OSPM code. The debug version of the code
11666includes
11667the debug output trace mechanism and has a much larger code and data
11668size.
11669Note that these values will vary depending on the efficiency of the
11670compiler
11671and the compiler options used during generation.
11672
11673  Previous Release:
11674    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11675    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11676  Current Release:
11677    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11678    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11679
11680
116812) iASL Compiler/Disassembler:
11682
11683Implemented an error check for illegal duplicate values in the interrupt
11684and
11685dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
11686Interrupt().
11687
11688Implemented error checking for the Irq() and IrqNoFlags() macros to
11689detect
11690too many values in the interrupt list (16 max) and invalid values in the
11691list (range 0 - 15)
11692
11693The maximum length string literal within an ASL file is now restricted to
11694200 characters as per the ACPI specification.
11695
11696Fixed a fault when using the -ln option (generate namespace listing).
11697
11698Implemented an error check to determine if a DescriptorName within a
11699resource descriptor has already been used within the current scope.
11700
11701----------------------------------------
1170215 August 2005.  Summary of changes for version 20050815:
11703
117041) ACPI CA Core Subsystem:
11705
11706Implemented a full bytewise compare to determine if a table load request
11707is
11708attempting to load a duplicate table. The compare is performed if the
11709table
11710signatures and table lengths match. This will allow different tables with
11711the same OEM Table ID and revision to be loaded - probably against the
11712ACPI
11713specification, but discovered in the field nonetheless.
11714
11715Added the changes.txt logfile to each of the zipped release packages.
11716
11717Code and Data Size: Current and previous core subsystem library sizes are
11718shown below. These are the code and data sizes for the acpica.lib
11719produced
11720by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11721any ACPI driver or OSPM code. The debug version of the code includes the
11722debug output trace mechanism and has a much larger code and data size.
11723Note
11724that these values will vary depending on the efficiency of the compiler
11725and
11726the compiler options used during generation.
11727
11728  Previous Release:
11729    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11730    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11731  Current Release:
11732    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11733    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11734
11735
117362) iASL Compiler/Disassembler:
11737
11738Fixed a problem where incorrect AML code could be generated for Package
11739objects if optimization is disabled (via the -oa switch).
11740
11741Fixed a problem with where incorrect AML code is generated for variable-
11742length packages when the package length is not specified and the number
11743of
11744initializer values is greater than 255.
11745
11746
11747----------------------------------------
1174829 July 2005.  Summary of changes for version 20050729:
11749
117501) ACPI CA Core Subsystem:
11751
11752Implemented support to ignore an attempt to install/load a particular
11753ACPI
11754table more than once. Apparently there exists BIOS code that repeatedly
11755attempts to load the same SSDT upon certain events. With assistance from
11756Venkatesh Pallipadi.
11757
11758Restructured the main interface to the AML parser in order to correctly
11759handle all exceptional conditions. This will prevent leakage of the
11760OwnerId
11761resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
11762some
11763machines. With assistance from Alexey Starikovskiy.
11764
11765Support for "module level code" has been disabled in this version due to
11766a
11767number of issues that have appeared on various machines. The support can
11768be
11769enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
11770compilation. When the issues are fully resolved, the code will be enabled
11771by
11772default again.
11773
11774Modified the internal functions for debug print support to define the
11775FunctionName parameter as a (const char *) for compatibility with
11776compiler
11777built-in macros such as __FUNCTION__, etc.
11778
11779Linted the entire ACPICA source tree for both 32-bit and 64-bit.
11780
11781Implemented support to display an object count summary for the AML
11782Debugger
11783commands Object and Methods.
11784
11785Code and Data Size: Current and previous core subsystem library sizes are
11786shown below. These are the code and data sizes for the acpica.lib
11787produced
11788by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11789any ACPI driver or OSPM code. The debug version of the code includes the
11790debug output trace mechanism and has a much larger code and data size.
11791Note
11792that these values will vary depending on the efficiency of the compiler
11793and
11794the compiler options used during generation.
11795
11796  Previous Release:
11797    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11798    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11799  Current Release:
11800    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11801    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11802
11803
118042) iASL Compiler/Disassembler:
11805
11806Fixed a regression that appeared in the 20050708 version of the compiler
11807where an error message was inadvertently emitted for invocations of the
11808_OSI
11809reserved control method.
11810
11811----------------------------------------
1181208 July 2005.  Summary of changes for version 20050708:
11813
118141) ACPI CA Core Subsystem:
11815
11816The use of the CPU stack in the debug version of the subsystem has been
11817considerably reduced. Previously, a debug structure was declared in every
11818function that used the debug macros. This structure has been removed in
11819favor of declaring the individual elements as parameters to the debug
11820functions. This reduces the cumulative stack use during nested execution
11821of
11822ACPI function calls at the cost of a small increase in the code size of
11823the
11824debug version of the subsystem. With assistance from Alexey Starikovskiy
11825and
11826Len Brown.
11827
11828Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
11829headers to define a macro that will return the current function name at
11830runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
11831by
11832the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
11833compiler-dependent header, the function name is saved on the CPU stack
11834(one
11835pointer per function.) This mechanism is used because apparently there
11836exists no standard ANSI-C defined macro that that returns the function
11837name.
11838
11839Redesigned and reimplemented the "Owner ID" mechanism used to track
11840namespace objects created/deleted by ACPI tables and control method
11841execution. A bitmap is now used to allocate and free the IDs, thus
11842solving
11843the wraparound problem present in the previous implementation. The size
11844of
11845the namespace node descriptor was reduced by 2 bytes as a result (Alexey
11846Starikovskiy).
11847
11848Removed the UINT32_BIT and UINT16_BIT types that were used for the
11849bitfield
11850flag definitions within the headers for the predefined ACPI tables. These
11851have been replaced by UINT8_BIT in order to increase the code portability
11852of
11853the subsystem. If the use of UINT8 remains a problem, we may be forced to
11854eliminate bitfields entirely because of a lack of portability.
11855
11856Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
11857This
11858is a frequently used function and this improvement increases the
11859performance
11860of the entire subsystem (Alexey Starikovskiy).
11861
11862Fixed several possible memory leaks and the inverse - premature object
11863deletion (Alexey Starikovskiy).
11864
11865Code and Data Size: Current and previous core subsystem library sizes are
11866shown below. These are the code and data sizes for the acpica.lib
11867produced
11868by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11869any ACPI driver or OSPM code. The debug version of the code includes the
11870debug output trace mechanism and has a much larger code and data size.
11871Note
11872that these values will vary depending on the efficiency of the compiler
11873and
11874the compiler options used during generation.
11875
11876  Previous Release:
11877    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11878    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11879  Current Release:
11880    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11881    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11882
11883----------------------------------------
1188424 June 2005.  Summary of changes for version 20050624:
11885
118861) ACPI CA Core Subsystem:
11887
11888Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
11889the host-defined cache object. This allows the OSL implementation to
11890define
11891and type this object in any manner desired, simplifying the OSL
11892implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
11893Linux, and should be defined in the OS-specific header file for other
11894operating systems as required.
11895
11896Changed the interface to AcpiOsAcquireObject to directly return the
11897requested object as the function return (instead of ACPI_STATUS.) This
11898change was made for performance reasons, since this is the purpose of the
11899interface in the first place. AcpiOsAcquireObject is now similar to the
11900AcpiOsAllocate interface.
11901
11902Implemented a new AML debugger command named Businfo. This command
11903displays
11904information about all devices that have an associate _PRT object. The
11905_ADR,
11906_HID, _UID, and _CID are displayed for these devices.
11907
11908Modified the initialization sequence in AcpiInitializeSubsystem to call
11909the
11910OSL interface AcpiOslInitialize first, before any local initialization.
11911This
11912change was required because the global initialization now calls OSL
11913interfaces.
11914
11915Enhanced the Dump command to display the entire contents of Package
11916objects
11917(including all sub-objects and their values.)
11918
11919Restructured the code base to split some files because of size and/or
11920because the code logically belonged in a separate file. New files are
11921listed
11922below. All makefiles and project files included in the ACPI CA release
11923have
11924been updated.
11925    utilities/utcache.c           /* Local cache interfaces */
11926    utilities/utmutex.c           /* Local mutex support */
11927    utilities/utstate.c           /* State object support */
11928    interpreter/parser/psloop.c   /* Main AML parse loop */
11929
11930Code and Data Size: Current and previous core subsystem library sizes are
11931shown below. These are the code and data sizes for the acpica.lib
11932produced
11933by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11934any ACPI driver or OSPM code. The debug version of the code includes the
11935debug output trace mechanism and has a much larger code and data size.
11936Note
11937that these values will vary depending on the efficiency of the compiler
11938and
11939the compiler options used during generation.
11940
11941  Previous Release:
11942    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11943    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11944  Current Release:
11945    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11946    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11947
11948
119492) iASL Compiler/Disassembler:
11950
11951Fixed a regression introduced in version 20050513 where the use of a
11952Package
11953object within a Case() statement caused a compile time exception. The
11954original behavior has been restored (a Match() operator is emitted.)
11955
11956----------------------------------------
1195717 June 2005.  Summary of changes for version 20050617:
11958
119591) ACPI CA Core Subsystem:
11960
11961Moved the object cache operations into the OS interface layer (OSL) to
11962allow
11963the host OS to handle these operations if desired (for example, the Linux
11964OSL will invoke the slab allocator). This support is optional; the
11965compile
11966time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
11967cache
11968code in the ACPI CA core. The new OSL interfaces are shown below. See
11969utalloc.c for an example implementation, and acpiosxf.h for the exact
11970interface definitions. With assistance from Alexey Starikovskiy.
11971    AcpiOsCreateCache
11972    AcpiOsDeleteCache
11973    AcpiOsPurgeCache
11974    AcpiOsAcquireObject
11975    AcpiOsReleaseObject
11976
11977Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
11978return
11979and restore a flags parameter. This fits better with many OS lock models.
11980Note: the current execution state (interrupt handler or not) is no longer
11981passed to these interfaces. If necessary, the OSL must determine this
11982state
11983by itself, a simple and fast operation. With assistance from Alexey
11984Starikovskiy.
11985
11986Fixed a problem in the ACPI table handling where a valid XSDT was assumed
11987present if the revision of the RSDP was 2 or greater. According to the
11988ACPI
11989specification, the XSDT is optional in all cases, and the table manager
11990therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
11991Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
11992contain
11993only the RSDT.
11994
11995Fixed an interpreter problem with the Mid() operator in the case of an
11996input
11997string where the resulting output string is of zero length. It now
11998correctly
11999returns a valid, null terminated string object instead of a string object
12000with a null pointer.
12001
12002Fixed a problem with the control method argument handling to allow a
12003store
12004to an Arg object that already contains an object of type Device. The
12005Device
12006object is now correctly overwritten. Previously, an error was returned.
12007
12008
12009Enhanced the debugger Find command to emit object values in addition to
12010the
12011found object pathnames. The output format is the same as the dump
12012namespace
12013command.
12014
12015Enhanced the debugger Set command. It now has the ability to set the
12016value
12017of any Named integer object in the namespace (Previously, only method
12018locals
12019and args could be set.)
12020
12021Code and Data Size: Current and previous core subsystem library sizes are
12022shown below. These are the code and data sizes for the acpica.lib
12023produced
12024by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12025any ACPI driver or OSPM code. The debug version of the code includes the
12026debug output trace mechanism and has a much larger code and data size.
12027Note
12028that these values will vary depending on the efficiency of the compiler
12029and
12030the compiler options used during generation.
12031
12032  Previous Release:
12033    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12034    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12035  Current Release:
12036    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12037    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12038
12039
120402) iASL Compiler/Disassembler:
12041
12042Fixed a regression in the disassembler where if/else/while constructs
12043were
12044output incorrectly. This problem was introduced in the previous release
12045(20050526). This problem also affected the single-step disassembly in the
12046debugger.
12047
12048Fixed a problem where compiling the reserved _OSI method would randomly
12049(but
12050rarely) produce compile errors.
12051
12052Enhanced the disassembler to emit compilable code in the face of
12053incorrect
12054AML resource descriptors. If the optional ResourceSourceIndex is present,
12055but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12056disassembly. Otherwise, the resulting code cannot be compiled without
12057errors.
12058
12059----------------------------------------
1206026 May 2005.  Summary of changes for version 20050526:
12061
120621) ACPI CA Core Subsystem:
12063
12064Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12065the module level (not within a control method.) These opcodes are
12066executed
12067exactly once at the time the table is loaded. This type of code was legal
12068up
12069until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12070in
12071order to provide backwards compatibility with earlier BIOS
12072implementations.
12073This eliminates the "Encountered executable code at module level" warning
12074that was previously generated upon detection of such code.
12075
12076Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12077inadvertently be generated during the lookup of namespace objects in the
12078second pass parse of ACPI tables and control methods. It appears that
12079this
12080problem could occur during the resolution of forward references to
12081namespace
12082objects.
12083
12084Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12085corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12086allows the deadlock detection debug code to be compiled out in the normal
12087case, improving mutex performance (and overall subsystem performance)
12088considerably.
12089
12090Implemented a handful of miscellaneous fixes for possible memory leaks on
12091error conditions and error handling control paths. These fixes were
12092suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12093
12094Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12095(tbxfroot.c)
12096to prevent a fault in this error case.
12097
12098Code and Data Size: Current and previous core subsystem library sizes are
12099shown below. These are the code and data sizes for the acpica.lib
12100produced
12101by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12102any ACPI driver or OSPM code. The debug version of the code includes the
12103debug output trace mechanism and has a much larger code and data size.
12104Note
12105that these values will vary depending on the efficiency of the compiler
12106and
12107the compiler options used during generation.
12108
12109  Previous Release:
12110    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12111    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12112  Current Release:
12113    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12114    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12115
12116
121172) iASL Compiler/Disassembler:
12118
12119Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12120the module level (not within a control method.) These operators will be
12121executed once at the time the table is loaded. This type of code was
12122legal
12123up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12124compiler in order to provide backwards compatibility with earlier BIOS
12125ASL
12126code.
12127
12128The ACPI integer width (specified via the table revision ID or the -r
12129override, 32 or 64 bits) is now used internally during compile-time
12130constant
12131folding to ensure that constants are truncated to 32 bits if necessary.
12132Previously, the revision ID value was only emitted in the AML table
12133header.
12134
12135An error message is now generated for the Mutex and Method operators if
12136the
12137SyncLevel parameter is outside the legal range of 0 through 15.
12138
12139Fixed a problem with the Method operator ParameterTypes list handling
12140(ACPI
121413.0). Previously, more than 2 types or 2 arguments generated a syntax
12142error.
12143The actual underlying implementation of method argument typechecking is
12144still under development, however.
12145
12146----------------------------------------
1214713 May 2005.  Summary of changes for version 20050513:
12148
121491) ACPI CA Core Subsystem:
12150
12151Implemented support for PCI Express root bridges -- added support for
12152device
12153PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12154
12155The interpreter now automatically truncates incoming 64-bit constants to
1215632
12157bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12158This
12159also affects the iASL compiler constant folding. (Note: as per below, the
12160iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12161
12162Fixed a problem where string and buffer objects with "static" pointers
12163(pointers to initialization data within an ACPI table) were not handled
12164consistently. The internal object copy operation now always copies the
12165data
12166to a newly allocated buffer, regardless of whether the source object is
12167static or not.
12168
12169Fixed a problem with the FromBCD operator where an implicit result
12170conversion was improperly performed while storing the result to the
12171target
12172operand. Since this is an "explicit conversion" operator, the implicit
12173conversion should never be performed on the output.
12174
12175Fixed a problem with the CopyObject operator where a copy to an existing
12176named object did not always completely overwrite the existing object
12177stored
12178at name. Specifically, a buffer-to-buffer copy did not delete the
12179existing
12180buffer.
12181
12182Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12183and
12184structs for consistency.
12185
12186Code and Data Size: Current and previous core subsystem library sizes are
12187shown below. These are the code and data sizes for the acpica.lib
12188produced
12189by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12190any ACPI driver or OSPM code. The debug version of the code includes the
12191debug output trace mechanism and has a much larger code and data size.
12192Note
12193that these values will vary depending on the efficiency of the compiler
12194and
12195the compiler options used during generation.
12196
12197  Previous Release:
12198    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12199    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12200  Current Release: (Same sizes)
12201    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12202    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12203
12204
122052) iASL Compiler/Disassembler:
12206
12207The compiler now emits a warning if an attempt is made to generate a 64-
12208bit
12209integer constant from within a 32-bit ACPI table (Revision < 2). The
12210integer
12211is truncated to 32 bits.
12212
12213Fixed a problem with large package objects: if the static length of the
12214package is greater than 255, the "variable length package" opcode is
12215emitted. Previously, this caused an error. This requires an update to the
12216ACPI spec, since it currently (incorrectly) states that packages larger
12217than
12218255 elements are not allowed.
12219
12220The disassembler now correctly handles variable length packages and
12221packages
12222larger than 255 elements.
12223
12224----------------------------------------
1222508 April 2005.  Summary of changes for version 20050408:
12226
122271) ACPI CA Core Subsystem:
12228
12229Fixed three cases in the interpreter where an "index" argument to an ASL
12230function was still (internally) 32 bits instead of the required 64 bits.
12231This was the Index argument to the Index, Mid, and Match operators.
12232
12233The "strupr" function is now permanently local (AcpiUtStrupr), since this
12234is
12235not a POSIX-defined function and not present in most kernel-level C
12236libraries. All references to the C library strupr function have been
12237removed
12238from the headers.
12239
12240Completed the deployment of static functions/prototypes. All prototypes
12241with
12242the static attribute have been moved from the headers to the owning C
12243file.
12244
12245Implemented an extract option (-e) for the AcpiBin utility (AML binary
12246utility). This option allows the utility to extract individual ACPI
12247tables
12248from the output of AcpiDmp. It provides the same functionality of the
12249acpixtract.pl perl script without the worry of setting the correct perl
12250options. AcpiBin runs on Windows and has not yet been generated/validated
12251in
12252the Linux/Unix environment (but should be soon).
12253
12254Updated and fixed the table dump option for AcpiBin (-d). This option
12255converts a single ACPI table to a hex/ascii file, similar to the output
12256of
12257AcpiDmp.
12258
12259Code and Data Size: Current and previous core subsystem library sizes are
12260shown below. These are the code and data sizes for the acpica.lib
12261produced
12262by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12263any ACPI driver or OSPM code. The debug version of the code includes the
12264debug output trace mechanism and has a much larger code and data size.
12265Note
12266that these values will vary depending on the efficiency of the compiler
12267and
12268the compiler options used during generation.
12269
12270  Previous Release:
12271    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12272    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12273  Current Release:
12274    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12275    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12276
12277
122782) iASL Compiler/Disassembler:
12279
12280Disassembler fix: Added a check to ensure that the table length found in
12281the
12282ACPI table header within the input file is not longer than the actual
12283input
12284file size. This indicates some kind of file or table corruption.
12285
12286----------------------------------------
1228729 March 2005.  Summary of changes for version 20050329:
12288
122891) ACPI CA Core Subsystem:
12290
12291An error is now generated if an attempt is made to create a Buffer Field
12292of
12293length zero (A CreateField with a length operand of zero.)
12294
12295The interpreter now issues a warning whenever executable code at the
12296module
12297level is detected during ACPI table load. This will give some idea of the
12298prevalence of this type of code.
12299
12300Implemented support for references to named objects (other than control
12301methods) within package objects.
12302
12303Enhanced package object output for the debug object. Package objects are
12304now
12305completely dumped, showing all elements.
12306
12307Enhanced miscellaneous object output for the debug object. Any object can
12308now be written to the debug object (for example, a device object can be
12309written, and the type of the object will be displayed.)
12310
12311The "static" qualifier has been added to all local functions across both
12312the
12313core subsystem and the iASL compiler.
12314
12315The number of "long" lines (> 80 chars) within the source has been
12316significantly reduced, by about 1/3.
12317
12318Cleaned up all header files to ensure that all CA/iASL functions are
12319prototyped (even static functions) and the formatting is consistent.
12320
12321Two new header files have been added, acopcode.h and acnames.h.
12322
12323Removed several obsolete functions that were no longer used.
12324
12325Code and Data Size: Current and previous core subsystem library sizes are
12326shown below. These are the code and data sizes for the acpica.lib
12327produced
12328by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12329any ACPI driver or OSPM code. The debug version of the code includes the
12330debug output trace mechanism and has a much larger code and data size.
12331Note
12332that these values will vary depending on the efficiency of the compiler
12333and
12334the compiler options used during generation.
12335
12336  Previous Release:
12337    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12338    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12339  Current Release:
12340    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12341    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12342
12343
12344
123452) iASL Compiler/Disassembler:
12346
12347Fixed a problem with the resource descriptor generation/support. For the
12348ResourceSourceIndex and the ResourceSource fields, both must be present,
12349or
12350both must be not present - can't have one without the other.
12351
12352The compiler now returns non-zero from the main procedure if any errors
12353have
12354occurred during the compilation.
12355
12356
12357----------------------------------------
1235809 March 2005.  Summary of changes for version 20050309:
12359
123601) ACPI CA Core Subsystem:
12361
12362The string-to-buffer implicit conversion code has been modified again
12363after
12364a change to the ACPI specification.  In order to match the behavior of
12365the
12366other major ACPI implementation, the target buffer is no longer truncated
12367if
12368the source string is smaller than an existing target buffer. This change
12369requires an update to the ACPI spec, and should eliminate the recent
12370AE_AML_BUFFER_LIMIT issues.
12371
12372The "implicit return" support was rewritten to a new algorithm that
12373solves
12374the general case. Rather than attempt to determine when a method is about
12375to
12376exit, the result of every ASL operator is saved momentarily until the
12377very
12378next ASL operator is executed. Therefore, no matter how the method exits,
12379there will always be a saved implicit return value. This feature is only
12380enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12381eliminate
12382AE_AML_NO_RETURN_VALUE errors when enabled.
12383
12384Implemented implicit conversion support for the predicate (operand) of
12385the
12386If, Else, and While operators. String and Buffer arguments are
12387automatically
12388converted to Integers.
12389
12390Changed the string-to-integer conversion behavior to match the new ACPI
12391errata: "If no integer object exists, a new integer is created. The ASCII
12392string is interpreted as a hexadecimal constant. Each string character is
12393interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12394with the first character as the most significant digit, and ending with
12395the
12396first non-hexadecimal character or end-of-string." This means that the
12397first
12398non-hex character terminates the conversion and this is the code that was
12399changed.
12400
12401Fixed a problem where the ObjectType operator would fail (fault) when
12402used
12403on an Index of a Package which pointed to a null package element. The
12404operator now properly returns zero (Uninitialized) in this case.
12405
12406Fixed a problem where the While operator used excessive memory by not
12407properly popping the result stack during execution. There was no memory
12408leak
12409after execution, however. (Code provided by Valery Podrezov.)
12410
12411Fixed a problem where references to control methods within Package
12412objects
12413caused the method to be invoked, instead of producing a reference object
12414pointing to the method.
12415
12416Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
12417to
12418improve performance and reduce code size. (Code provided by Alexey
12419Starikovskiy.)
12420
12421Code and Data Size: Current and previous core subsystem library sizes are
12422shown below. These are the code and data sizes for the acpica.lib
12423produced
12424by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12425any ACPI driver or OSPM code. The debug version of the code includes the
12426debug output trace mechanism and has a much larger code and data size.
12427Note
12428that these values will vary depending on the efficiency of the compiler
12429and
12430the compiler options used during generation.
12431
12432  Previous Release:
12433    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12434    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12435  Current Release:
12436    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12437    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12438
12439
124402) iASL Compiler/Disassembler:
12441
12442Fixed a problem with the Return operator with no arguments. Since the AML
12443grammar for the byte encoding requires an operand for the Return opcode,
12444the
12445compiler now emits a Return(Zero) for this case.  An ACPI specification
12446update has been written for this case.
12447
12448For tables other than the DSDT, namepath optimization is automatically
12449disabled. This is because SSDTs can be loaded anywhere in the namespace,
12450the
12451compiler has no knowledge of where, and thus cannot optimize namepaths.
12452
12453Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
12454inadvertently omitted from the ACPI specification, and will require an
12455update to the spec.
12456
12457The source file scan for ASCII characters is now optional (-a). This
12458change
12459was made because some vendors place non-ascii characters within comments.
12460However, the scan is simply a brute-force byte compare to ensure all
12461characters in the file are in the range 0x00 to 0x7F.
12462
12463Fixed a problem with the CondRefOf operator where the compiler was
12464inappropriately checking for the existence of the target. Since the point
12465of
12466the operator is to check for the existence of the target at run-time, the
12467compiler no longer checks for the target existence.
12468
12469Fixed a problem where errors generated from the internal AML interpreter
12470during constant folding were not handled properly, causing a fault.
12471
12472Fixed a problem with overly aggressive range checking for the Stall
12473operator. The valid range (max 255) is now only checked if the operand is
12474of
12475type Integer. All other operand types cannot be statically checked.
12476
12477Fixed a problem where control method references within the RefOf,
12478DeRefOf,
12479and ObjectType operators were not treated properly. They are now treated
12480as
12481actual references, not method invocations.
12482
12483Fixed and enhanced the "list namespace" option (-ln). This option was
12484broken
12485a number of releases ago.
12486
12487Improved error handling for the Field, IndexField, and BankField
12488operators.
12489The compiler now cleanly reports and recovers from errors in the field
12490component (FieldUnit) list.
12491
12492Fixed a disassembler problem where the optional ResourceDescriptor fields
12493TRS and TTP were not always handled correctly.
12494
12495Disassembler - Comments in output now use "//" instead of "/*"
12496
12497----------------------------------------
1249828 February 2005.  Summary of changes for version 20050228:
12499
125001) ACPI CA Core Subsystem:
12501
12502Fixed a problem where the result of an Index() operator (an object
12503reference) must increment the reference count on the target object for
12504the
12505life of the object reference.
12506
12507Implemented AML Interpreter and Debugger support for the new ACPI 3.0
12508Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
12509WordSpace
12510resource descriptors.
12511
12512Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
12513Space Descriptor" string, indicating interpreter support for the
12514descriptors
12515above.
12516
12517Implemented header support for the new ACPI 3.0 FADT flag bits.
12518
12519Implemented header support for the new ACPI 3.0 PCI Express bits for the
12520PM1
12521status/enable registers.
12522
12523Updated header support for the MADT processor local Apic struct and MADT
12524platform interrupt source struct for new ACPI 3.0 fields.
12525
12526Implemented header support for the SRAT and SLIT ACPI tables.
12527
12528Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
12529flag
12530at runtime.
12531
12532Code and Data Size: Current and previous core subsystem library sizes are
12533shown below. These are the code and data sizes for the acpica.lib
12534produced
12535by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12536any ACPI driver or OSPM code. The debug version of the code includes the
12537debug output trace mechanism and has a much larger code and data size.
12538Note
12539that these values will vary depending on the efficiency of the compiler
12540and
12541the compiler options used during generation.
12542
12543  Previous Release:
12544    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12545    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12546  Current Release:
12547    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12548    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12549
12550
125512) iASL Compiler/Disassembler:
12552
12553Fixed a problem with the internal 64-bit String-to-integer conversion
12554with
12555strings less than two characters long.
12556
12557Fixed a problem with constant folding where the result of the Index()
12558operator can not be considered a constant. This means that Index() cannot
12559be
12560a type3 opcode and this will require an update to the ACPI specification.
12561
12562Disassembler: Implemented support for the TTP, MTP, and TRS resource
12563descriptor fields. These fields were inadvertently ignored and not output
12564in
12565the disassembly of the resource descriptor.
12566
12567
12568 ----------------------------------------
1256911 February 2005.  Summary of changes for version 20050211:
12570
125711) ACPI CA Core Subsystem:
12572
12573Implemented ACPI 3.0 support for implicit conversion within the Match()
12574operator. MatchObjects can now be of type integer, buffer, or string
12575instead
12576of just type integer.  Package elements are implicitly converted to the
12577type
12578of the MatchObject. This change aligns the behavior of Match() with the
12579behavior of the other logical operators (LLess(), etc.) It also requires
12580an
12581errata change to the ACPI specification as this support was intended for
12582ACPI 3.0, but was inadvertently omitted.
12583
12584Fixed a problem with the internal implicit "to buffer" conversion.
12585Strings
12586that are converted to buffers will cause buffer truncation if the string
12587is
12588smaller than the target buffer. Integers that are converted to buffers
12589will
12590not cause buffer truncation, only zero extension (both as per the ACPI
12591spec.) The problem was introduced when code was added to truncate the
12592buffer, but this should not be performed in all cases, only the string
12593case.
12594
12595Fixed a problem with the Buffer and Package operators where the
12596interpreter
12597would get confused if two such operators were used as operands to an ASL
12598operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
12599stack was not being popped after the execution of these operators,
12600resulting
12601in an AE_NO_RETURN_VALUE exception.
12602
12603Fixed a problem with constructs of the form Store(Index(...),...). The
12604reference object returned from Index was inadvertently resolved to an
12605actual
12606value. This problem was introduced in version 20050114 when the behavior
12607of
12608Store() was modified to restrict the object types that can be used as the
12609source operand (to match the ACPI specification.)
12610
12611Reduced excessive stack use within the AcpiGetObjectInfo procedure.
12612
12613Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
12614
12615Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
12616
12617Code and Data Size: Current and previous core subsystem library sizes are
12618shown below. These are the code and data sizes for the acpica.lib
12619produced
12620by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12621any ACPI driver or OSPM code. The debug version of the code includes the
12622debug output trace mechanism and has a much larger code and data size.
12623Note
12624that these values will vary depending on the efficiency of the compiler
12625and
12626the compiler options used during generation.
12627
12628  Previous Release:
12629    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
12630    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
12631  Current Release:
12632    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12633    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12634
12635
126362) iASL Compiler/Disassembler:
12637
12638Fixed a code generation problem in the constant folding optimization code
12639where incorrect code was generated if a constant was reduced to a buffer
12640object (i.e., a reduced type 5 opcode.)
12641
12642Fixed a typechecking problem for the ToBuffer operator. Caused by an
12643incorrect return type in the internal opcode information table.
12644
12645----------------------------------------
1264625 January 2005.  Summary of changes for version 20050125:
12647
126481) ACPI CA Core Subsystem:
12649
12650Fixed a recently introduced problem with the Global Lock where the
12651underlying semaphore was not created.  This problem was introduced in
12652version 20050114, and caused an AE_AML_NO_OPERAND exception during an
12653Acquire() operation on _GL.
12654
12655The local object cache is now optional, and is disabled by default. Both
12656AcpiExec and the iASL compiler enable the cache because they run in user
12657mode and this enhances their performance. #define
12658ACPI_ENABLE_OBJECT_CACHE
12659to enable the local cache.
12660
12661Fixed an issue in the internal function AcpiUtEvaluateObject concerning
12662the
12663optional "implicit return" support where an error was returned if no
12664return
12665object was expected, but one was implicitly returned. AE_OK is now
12666returned
12667in this case and the implicitly returned object is deleted.
12668AcpiUtEvaluateObject is only occasionally used, and only to execute
12669reserved
12670methods such as _STA and _INI where the return type is known up front.
12671
12672Fixed a few issues with the internal convert-to-integer code. It now
12673returns
12674an error if an attempt is made to convert a null string, a string of only
12675blanks/tabs, or a zero-length buffer. This affects both implicit
12676conversion
12677and explicit conversion via the ToInteger() operator.
12678
12679The internal debug code in AcpiUtAcquireMutex has been commented out. It
12680is
12681not needed for normal operation and should increase the performance of
12682the
12683entire subsystem. The code remains in case it is needed for debug
12684purposes
12685again.
12686
12687The AcpiExec source and makefile are included in the Unix/Linux package
12688for
12689the first time.
12690
12691Code and Data Size: Current and previous core subsystem library sizes are
12692shown below. These are the code and data sizes for the acpica.lib
12693produced
12694by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12695any ACPI driver or OSPM code. The debug version of the code includes the
12696debug output trace mechanism and has a much larger code and data size.
12697Note
12698that these values will vary depending on the efficiency of the compiler
12699and
12700the compiler options used during generation.
12701
12702  Previous Release:
12703    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12704    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12705  Current Release:
12706    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
12707    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
12708
127092) iASL Compiler/Disassembler:
12710
12711Switch/Case support: A warning is now issued if the type of the Switch
12712value
12713cannot be determined at compile time. For example, Switch(Arg0) will
12714generate the warning, and the type is assumed to be an integer. As per
12715the
12716ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
12717the
12718warning.
12719
12720Switch/Case support: Implemented support for buffer and string objects as
12721the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
12722buffers and strings.
12723
12724Switch/Case support: The emitted code for the LEqual() comparisons now
12725uses
12726the switch value as the first operand, not the second. The case value is
12727now
12728the second operand, and this allows the case value to be implicitly
12729converted to the type of the switch value, not the other way around.
12730
12731Switch/Case support: Temporary variables are now emitted immediately
12732within
12733the control method, not at the global level. This means that there are
12734now
1273536 temps available per-method, not 36 temps per-module as was the case
12736with
12737the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
12738
12739----------------------------------------
1274014 January 2005.  Summary of changes for version 20050114:
12741
12742Added 2005 copyright to all module headers.  This affects every module in
12743the core subsystem, iASL compiler, and the utilities.
12744
127451) ACPI CA Core Subsystem:
12746
12747Fixed an issue with the String-to-Buffer conversion code where the string
12748null terminator was not included in the buffer after conversion, but
12749there
12750is existing ASL that assumes the string null terminator is included. This
12751is
12752the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
12753introduced in the previous version when the code was updated to correctly
12754set the converted buffer size as per the ACPI specification. The ACPI
12755spec
12756is ambiguous and will be updated to specify that the null terminator must
12757be
12758included in the converted buffer. This also affects the ToBuffer() ASL
12759operator.
12760
12761Fixed a problem with the Mid() ASL/AML operator where it did not work
12762correctly on Buffer objects. Newly created sub-buffers were not being
12763marked
12764as initialized.
12765
12766
12767Fixed a problem in AcpiTbFindTable where incorrect string compares were
12768performed on the OemId and OemTableId table header fields.  These fields
12769are
12770not null terminated, so strncmp is now used instead of strcmp.
12771
12772Implemented a restriction on the Store() ASL/AML operator to align the
12773behavior with the ACPI specification.  Previously, any object could be
12774used
12775as the source operand.  Now, the only objects that may be used are
12776Integers,
12777Buffers, Strings, Packages, Object References, and DDB Handles.  If
12778necessary, the original behavior can be restored by enabling the
12779EnableInterpreterSlack flag.
12780
12781Enhanced the optional "implicit return" support to allow an implicit
12782return
12783value from methods that are invoked externally via the AcpiEvaluateObject
12784interface.  This enables implicit returns from the _STA and _INI methods,
12785for example.
12786
12787Changed the Revision() ASL/AML operator to return the current version of
12788the
12789AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
12790returned
12791the supported ACPI version (This is the function of the _REV method).
12792
12793Updated the _REV predefined method to return the currently supported
12794version
12795of ACPI, now 3.
12796
12797Implemented batch mode option for the AcpiExec utility (-b).
12798
12799Code and Data Size: Current and previous core subsystem library sizes are
12800shown below. These are the code and data sizes for the acpica.lib
12801produced
12802by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12803any ACPI driver or OSPM code. The debug version of the code includes the
12804debug output trace mechanism and has a much larger code and data size.
12805Note
12806that these values will vary depending on the efficiency of the compiler
12807and
12808the compiler options used during generation.
12809
12810  Previous Release:
12811    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12812    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
12813  Current Release:
12814    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12815    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12816
12817----------------------------------------
1281810 December 2004.  Summary of changes for version 20041210:
12819
12820ACPI 3.0 support is nearing completion in both the iASL compiler and the
12821ACPI CA core subsystem.
12822
128231) ACPI CA Core Subsystem:
12824
12825Fixed a problem in the ToDecimalString operator where the resulting
12826string
12827length was incorrectly calculated. The length is now calculated exactly,
12828eliminating incorrect AE_STRING_LIMIT exceptions.
12829
12830Fixed a problem in the ToHexString operator to allow a maximum 200
12831character
12832string to be produced.
12833
12834Fixed a problem in the internal string-to-buffer and buffer-to-buffer
12835copy
12836routine where the length of the resulting buffer was not truncated to the
12837new size (if the target buffer already existed).
12838
12839Code and Data Size: Current and previous core subsystem library sizes are
12840shown below. These are the code and data sizes for the acpica.lib
12841produced
12842by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12843any ACPI driver or OSPM code. The debug version of the code includes the
12844debug output trace mechanism and has a much larger code and data size.
12845Note
12846that these values will vary depending on the efficiency of the compiler
12847and
12848the compiler options used during generation.
12849
12850  Previous Release:
12851    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12852    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12853  Current Release:
12854    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12855    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
12856
12857
128582) iASL Compiler/Disassembler:
12859
12860Implemented the new ACPI 3.0 resource template macros - DWordSpace,
12861ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
12862Includes support in the disassembler.
12863
12864Implemented support for the new (ACPI 3.0) parameter to the Register
12865macro,
12866AccessSize.
12867
12868Fixed a problem where the _HE resource name for the Interrupt macro was
12869referencing bit 0 instead of bit 1.
12870
12871Implemented check for maximum 255 interrupts in the Interrupt macro.
12872
12873Fixed a problem with the predefined resource descriptor names where
12874incorrect AML code was generated if the offset within the resource buffer
12875was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
12876but did not update the surrounding package lengths.
12877
12878Changes to the Dma macro:  All channels within the channel list must be
12879in
12880the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
12881optional (default is BusMaster).
12882
12883Implemented check for maximum 7 data bytes for the VendorShort macro.
12884
12885The ReadWrite parameter is now optional for the Memory32 and similar
12886macros.
12887
12888----------------------------------------
1288903 December 2004.  Summary of changes for version 20041203:
12890
128911) ACPI CA Core Subsystem:
12892
12893The low-level field insertion/extraction code (exfldio) has been
12894completely
12895rewritten to eliminate unnecessary complexity, bugs, and boundary
12896conditions.
12897
12898Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
12899ToDecimalString
12900operators where the input operand could be inadvertently deleted if no
12901conversion was necessary (e.g., if the input to ToInteger was an Integer
12902object.)
12903
12904Fixed a problem with the ToDecimalString and ToHexString where an
12905incorrect
12906exception code was returned if the resulting string would be > 200 chars.
12907AE_STRING_LIMIT is now returned.
12908
12909Fixed a problem with the Concatenate operator where AE_OK was always
12910returned, even if the operation failed.
12911
12912Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
12913semaphores to be allocated.
12914
12915Code and Data Size: Current and previous core subsystem library sizes are
12916shown below. These are the code and data sizes for the acpica.lib
12917produced
12918by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12919any ACPI driver or OSPM code. The debug version of the code includes the
12920debug output trace mechanism and has a much larger code and data size.
12921Note
12922that these values will vary depending on the efficiency of the compiler
12923and
12924the compiler options used during generation.
12925
12926  Previous Release:
12927    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12928    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12929  Current Release:
12930    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12931    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12932
12933
129342) iASL Compiler/Disassembler:
12935
12936Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
12937recently introduced in 20041119.
12938
12939Fixed a problem with the ToUUID macro where the upper nybble of each
12940buffer
12941byte was inadvertently set to zero.
12942
12943----------------------------------------
1294419 November 2004.  Summary of changes for version 20041119:
12945
129461) ACPI CA Core Subsystem:
12947
12948Fixed a problem in the internal ConvertToInteger routine where new
12949integers
12950were not truncated to 32 bits for 32-bit ACPI tables. This routine
12951converts
12952buffers and strings to integers.
12953
12954Implemented support to store a value to an Index() on a String object.
12955This
12956is an ACPI 2.0 feature that had not yet been implemented.
12957
12958Implemented new behavior for storing objects to individual package
12959elements
12960(via the Index() operator). The previous behavior was to invoke the
12961implicit
12962conversion rules if an object was already present at the index.  The new
12963behavior is to simply delete any existing object and directly store the
12964new
12965object. Although the ACPI specification seems unclear on this subject,
12966other
12967ACPI implementations behave in this manner.  (This is the root of the
12968AE_BAD_HEX_CONSTANT issue.)
12969
12970Modified the RSDP memory scan mechanism to support the extended checksum
12971for
12972ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
12973RSDP signature is found with a valid checksum.
12974
12975Code and Data Size: Current and previous core subsystem library sizes are
12976shown below. These are the code and data sizes for the acpica.lib
12977produced
12978by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12979any ACPI driver or OSPM code. The debug version of the code includes the
12980debug output trace mechanism and has a much larger code and data size.
12981Note
12982that these values will vary depending on the efficiency of the compiler
12983and
12984the compiler options used during generation.
12985
12986  Previous Release:
12987    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12988    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12989  Current Release:
12990    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12991    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12992
12993
129942) iASL Compiler/Disassembler:
12995
12996Fixed a missing semicolon in the aslcompiler.y file.
12997
12998----------------------------------------
1299905 November 2004.  Summary of changes for version 20041105:
13000
130011) ACPI CA Core Subsystem:
13002
13003Implemented support for FADT revision 2.  This was an interim table
13004(between
13005ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13006
13007Implemented optional support to allow uninitialized LocalX and ArgX
13008variables in a control method.  The variables are initialized to an
13009Integer
13010object with a value of zero.  This support is enabled by setting the
13011AcpiGbl_EnableInterpreterSlack flag to TRUE.
13012
13013Implemented support for Integer objects for the SizeOf operator.  Either
130144
13015or 8 is returned, depending on the current integer size (32-bit or 64-
13016bit,
13017depending on the parent table revision).
13018
13019Fixed a problem in the implementation of the SizeOf and ObjectType
13020operators
13021where the operand was resolved to a value too early, causing incorrect
13022return values for some objects.
13023
13024Fixed some possible memory leaks during exceptional conditions.
13025
13026Code and Data Size: Current and previous core subsystem library sizes are
13027shown below. These are the code and data sizes for the acpica.lib
13028produced
13029by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13030any ACPI driver or OSPM code. The debug version of the code includes the
13031debug output trace mechanism and has a much larger code and data size.
13032Note
13033that these values will vary depending on the efficiency of the compiler
13034and
13035the compiler options used during generation.
13036
13037  Previous Release:
13038    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13039    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13040  Current Release:
13041    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13042    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13043
13044
130452) iASL Compiler/Disassembler:
13046
13047Implemented support for all ACPI 3.0 reserved names and methods.
13048
13049Implemented all ACPI 3.0 grammar elements in the front-end, including
13050support for semicolons.
13051
13052Implemented the ACPI 3.0 Function() and ToUUID() macros
13053
13054Fixed a problem in the disassembler where a Scope() operator would not be
13055emitted properly if the target of the scope was in another table.
13056
13057----------------------------------------
1305815 October 2004.  Summary of changes for version 20041015:
13059
13060Note:  ACPI CA is currently undergoing an in-depth and complete formal
13061evaluation to test/verify the following areas. Other suggestions are
13062welcome. This will result in an increase in the frequency of releases and
13063the number of bug fixes in the next few months.
13064  - Functional tests for all ASL/AML operators
13065  - All implicit/explicit type conversions
13066  - Bit fields and operation regions
13067  - 64-bit math support and 32-bit-only "truncated" math support
13068  - Exceptional conditions, both compiler and interpreter
13069  - Dynamic object deletion and memory leaks
13070  - ACPI 3.0 support when implemented
13071  - External interfaces to the ACPI subsystem
13072
13073
130741) ACPI CA Core Subsystem:
13075
13076Fixed two alignment issues on 64-bit platforms - within debug statements
13077in
13078AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13079Address
13080field within the non-aligned ACPI generic address structure.
13081
13082Fixed a problem in the Increment and Decrement operators where incorrect
13083operand resolution could result in the inadvertent modification of the
13084original integer when the integer is passed into another method as an
13085argument and the arg is then incremented/decremented.
13086
13087Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13088bit
13089BCD number were truncated during conversion.
13090
13091Fixed a problem in the ToDecimal operator where the length of the
13092resulting
13093string could be set incorrectly too long if the input operand was a
13094Buffer
13095object.
13096
13097Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13098(0)
13099within a buffer would prematurely terminate a compare between buffer
13100objects.
13101
13102Added a check for string overflow (>200 characters as per the ACPI
13103specification) during the Concatenate operator with two string operands.
13104
13105Code and Data Size: Current and previous core subsystem library sizes are
13106shown below. These are the code and data sizes for the acpica.lib
13107produced
13108by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13109any ACPI driver or OSPM code. The debug version of the code includes the
13110debug output trace mechanism and has a much larger code and data size.
13111Note
13112that these values will vary depending on the efficiency of the compiler
13113and
13114the compiler options used during generation.
13115
13116  Previous Release:
13117    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13118    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13119  Current Release:
13120    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13121    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13122
13123
13124
131252) iASL Compiler/Disassembler:
13126
13127Allow the use of the ObjectType operator on uninitialized Locals and Args
13128(returns 0 as per the ACPI specification).
13129
13130Fixed a problem where the compiler would fault if there was a syntax
13131error
13132in the FieldName of all of the various CreateXXXField operators.
13133
13134Disallow the use of lower case letters within the EISAID macro, as per
13135the
13136ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13137Where
13138U is an uppercase letter and N is a hex digit.
13139
13140
13141----------------------------------------
1314206 October 2004.  Summary of changes for version 20041006:
13143
131441) ACPI CA Core Subsystem:
13145
13146Implemented support for the ACPI 3.0 Timer operator. This ASL function
13147implements a 64-bit timer with 100 nanosecond granularity.
13148
13149Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13150implement the ACPI 3.0 Timer operator.  This allows the host OS to
13151implement
13152the timer with the best clock available. Also, it keeps the core
13153subsystem
13154out of the clock handling business, since the host OS (usually) performs
13155this function.
13156
13157Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13158functions use a 64-bit address which is part of the packed ACPI Generic
13159Address Structure. Since the structure is non-aligned, the alignment
13160macros
13161are now used to extract the address to a local variable before use.
13162
13163Fixed a problem where the ToInteger operator assumed all input strings
13164were
13165hexadecimal. The operator now handles both decimal strings and hex
13166strings
13167(prefixed with "0x").
13168
13169Fixed a problem where the string length in the string object created as a
13170result of the internal ConvertToString procedure could be incorrect. This
13171potentially affected all implicit conversions and also the
13172ToDecimalString
13173and ToHexString operators.
13174
13175Fixed two problems in the ToString operator. If the length parameter was
13176zero, an incorrect string object was created and the value of the input
13177length parameter was inadvertently changed from zero to Ones.
13178
13179Fixed a problem where the optional ResourceSource string in the
13180ExtendedIRQ
13181resource macro was ignored.
13182
13183Simplified the interfaces to the internal division functions, reducing
13184code
13185size and complexity.
13186
13187Code and Data Size: Current and previous core subsystem library sizes are
13188shown below. These are the code and data sizes for the acpica.lib
13189produced
13190by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13191any ACPI driver or OSPM code. The debug version of the code includes the
13192debug output trace mechanism and has a much larger code and data size.
13193Note
13194that these values will vary depending on the efficiency of the compiler
13195and
13196the compiler options used during generation.
13197
13198  Previous Release:
13199    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13200    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13201  Current Release:
13202    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13203    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13204
13205
132062) iASL Compiler/Disassembler:
13207
13208Implemented support for the ACPI 3.0 Timer operator.
13209
13210Fixed a problem where the Default() operator was inadvertently ignored in
13211a
13212Switch/Case block.  This was a problem in the translation of the Switch
13213statement to If...Else pairs.
13214
13215Added support to allow a standalone Return operator, with no parentheses
13216(or
13217operands).
13218
13219Fixed a problem with code generation for the ElseIf operator where the
13220translated Else...If parse tree was improperly constructed leading to the
13221loss of some code.
13222
13223----------------------------------------
1322422 September 2004.  Summary of changes for version 20040922:
13225
132261) ACPI CA Core Subsystem:
13227
13228Fixed a problem with the implementation of the LNot() operator where
13229"Ones"
13230was not returned for the TRUE case. Changed the code to return Ones
13231instead
13232of (!Arg) which was usually 1. This change affects iASL constant folding
13233for
13234this operator also.
13235
13236Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13237not
13238initialized properly -- Now zero the entire buffer in this case where the
13239buffer already exists.
13240
13241Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13242Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13243related code considerably. This will require changes/updates to all OS
13244interface layers (OSLs.)
13245
13246Implemented a new external interface, AcpiInstallExceptionHandler, to
13247allow
13248a system exception handler to be installed. This handler is invoked upon
13249any
13250run-time exception that occurs during control method execution.
13251
13252Added support for the DSDT in AcpiTbFindTable. This allows the
13253DataTableRegion() operator to access the local copy of the DSDT.
13254
13255Code and Data Size: Current and previous core subsystem library sizes are
13256shown below. These are the code and data sizes for the acpica.lib
13257produced
13258by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13259any ACPI driver or OSPM code. The debug version of the code includes the
13260debug output trace mechanism and has a much larger code and data size.
13261Note
13262that these values will vary depending on the efficiency of the compiler
13263and
13264the compiler options used during generation.
13265
13266  Previous Release:
13267    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13268    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13269  Current Release:
13270    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13271    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13272
13273
132742) iASL Compiler/Disassembler:
13275
13276Fixed a problem with constant folding and the LNot operator. LNot was
13277returning 1 in the TRUE case, not Ones as per the ACPI specification.
13278This
13279could result in the generation of an incorrect folded/reduced constant.
13280
13281End-Of-File is now allowed within a "//"-style comment.  A parse error no
13282longer occurs if such a comment is at the very end of the input ASL
13283source
13284file.
13285
13286Implemented the "-r" option to override the Revision in the table header.
13287The initial use of this option will be to simplify the evaluation of the
13288AML
13289interpreter by allowing a single ASL source module to be compiled for
13290either
1329132-bit or 64-bit integers.
13292
13293
13294----------------------------------------
1329527 August 2004.  Summary of changes for version 20040827:
13296
132971) ACPI CA Core Subsystem:
13298
13299- Implemented support for implicit object conversion in the non-numeric
13300logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13301and
13302LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
13303the second operand is implicitly converted on the fly to match the type
13304of
13305the first operand.  For example:
13306
13307    LEqual (Source1, Source2)
13308
13309Source1 and Source2 must each evaluate to an integer, a string, or a
13310buffer.
13311The data type of Source1 dictates the required type of Source2. Source2
13312is
13313implicitly converted if necessary to match the type of Source1.
13314
13315- Updated and corrected the behavior of the string conversion support.
13316The
13317rules concerning conversion of buffers to strings (according to the ACPI
13318specification) are as follows:
13319
13320ToDecimalString - explicit byte-wise conversion of buffer to string of
13321decimal values (0-255) separated by commas. ToHexString - explicit byte-
13322wise
13323conversion of buffer to string of hex values (0-FF) separated by commas.
13324ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13325byte
13326copy with no transform except NULL terminated. Any other implicit buffer-
13327to-
13328string conversion - byte-wise conversion of buffer to string of hex
13329values
13330(0-FF) separated by spaces.
13331
13332- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13333
13334- Fixed a problem in AcpiNsGetPathnameLength where the returned length
13335was
13336one byte too short in the case of a node in the root scope.  This could
13337cause a fault during debug output.
13338
13339- Code and Data Size: Current and previous core subsystem library sizes
13340are
13341shown below.  These are the code and data sizes for the acpica.lib
13342produced
13343by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13344any ACPI driver or OSPM code.  The debug version of the code includes the
13345debug output trace mechanism and has a much larger code and data size.
13346Note
13347that these values will vary depending on the efficiency of the compiler
13348and
13349the compiler options used during generation.
13350
13351  Previous Release:
13352    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13353    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13354  Current Release:
13355    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13356    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13357
13358
133592) iASL Compiler/Disassembler:
13360
13361- Fixed a Linux generation error.
13362
13363
13364----------------------------------------
1336516 August 2004.  Summary of changes for version 20040816:
13366
133671) ACPI CA Core Subsystem:
13368
13369Designed and implemented support within the AML interpreter for the so-
13370called "implicit return".  This support returns the result of the last
13371ASL
13372operation within a control method, in the absence of an explicit Return()
13373operator.  A few machines depend on this behavior, even though it is not
13374explicitly supported by the ASL language.  It is optional support that
13375can
13376be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13377
13378Removed support for the PCI_Config address space from the internal low
13379level
13380hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
13381support was not used internally, and would not work correctly anyway
13382because
13383the PCI bus number and segment number were not supported.  There are
13384separate interfaces for PCI configuration space access because of the
13385unique
13386interface.
13387
13388Code and Data Size: Current and previous core subsystem library sizes are
13389shown below.  These are the code and data sizes for the acpica.lib
13390produced
13391by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13392any ACPI driver or OSPM code.  The debug version of the code includes the
13393debug output trace mechanism and has a much larger code and data size.
13394Note
13395that these values will vary depending on the efficiency of the compiler
13396and
13397the compiler options used during generation.
13398
13399  Previous Release:
13400    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13401    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13402  Current Release:
13403    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13404    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13405
13406
134072) iASL Compiler/Disassembler:
13408
13409Fixed a problem where constants in ASL expressions at the root level (not
13410within a control method) could be inadvertently truncated during code
13411generation.  This problem was introduced in the 20040715 release.
13412
13413
13414----------------------------------------
1341515 July 2004.  Summary of changes for version 20040715:
13416
134171) ACPI CA Core Subsystem:
13418
13419Restructured the internal HW GPE interfaces to pass/track the current
13420state
13421of interrupts (enabled/disabled) in order to avoid possible deadlock and
13422increase flexibility of the interfaces.
13423
13424Implemented a "lexicographical compare" for String and Buffer objects
13425within
13426the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
13427-
13428as per further clarification to the ACPI specification.  Behavior is
13429similar
13430to C library "strcmp".
13431
13432Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
13433external function.  In the 32-bit non-debug case, the stack use has been
13434reduced from 168 bytes to 32 bytes.
13435
13436Deployed a new run-time configuration flag,
13437AcpiGbl_EnableInterpreterSlack,
13438whose purpose is to allow the AML interpreter to forgive certain bad AML
13439constructs.  Default setting is FALSE.
13440
13441Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
13442IO
13443support code.  If enabled, it allows field access to go beyond the end of
13444a
13445region definition if the field is within the region length rounded up to
13446the
13447next access width boundary (a common coding error.)
13448
13449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
13450ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
13451these
13452symbols are lowercased by the latest version of the AcpiSrc tool.
13453
13454The prototypes for the PCI interfaces in acpiosxf.h have been updated to
13455rename "Register" to simply "Reg" to prevent certain compilers from
13456complaining.
13457
13458Code and Data Size: Current and previous core subsystem library sizes are
13459shown below.  These are the code and data sizes for the acpica.lib
13460produced
13461by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13462any ACPI driver or OSPM code.  The debug version of the code includes the
13463debug output trace mechanism and has a much larger code and data size.
13464Note
13465that these values will vary depending on the efficiency of the compiler
13466and
13467the compiler options used during generation.
13468
13469  Previous Release:
13470    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13471    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13472  Current Release:
13473    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13474    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13475
13476
134772) iASL Compiler/Disassembler:
13478
13479Implemented full support for Package objects within the Case() operator.
13480Note: The Break() operator is currently not supported within Case blocks
13481(TermLists) as there is some question about backward compatibility with
13482ACPI
134831.0 interpreters.
13484
13485
13486Fixed a problem where complex terms were not supported properly within
13487the
13488Switch() operator.
13489
13490Eliminated extraneous warning for compiler-emitted reserved names of the
13491form "_T_x".  (Used in Switch/Case operators.)
13492
13493Eliminated optimization messages for "_T_x" objects and small constants
13494within the DefinitionBlock operator.
13495
13496
13497----------------------------------------
1349815 June 2004.  Summary of changes for version 20040615:
13499
135001) ACPI CA Core Subsystem:
13501
13502Implemented support for Buffer and String objects (as per ACPI 2.0) for
13503the
13504following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13505LLessEqual.
13506
13507All directory names in the entire source package are lower case, as they
13508were in earlier releases.
13509
13510Implemented "Disassemble" command in the AML debugger that will
13511disassemble
13512a single control method.
13513
13514Code and Data Size: Current and previous core subsystem library sizes are
13515shown below.  These are the code and data sizes for the acpica.lib
13516produced
13517by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13518any ACPI driver or OSPM code.  The debug version of the code includes the
13519debug output trace mechanism and has a much larger code and data size.
13520Note
13521that these values will vary depending on the efficiency of the compiler
13522and
13523the compiler options used during generation.
13524
13525  Previous Release:
13526    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13527    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13528
13529  Current Release:
13530    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13531    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13532
13533
135342) iASL Compiler/Disassembler:
13535
13536Implemented support for Buffer and String objects (as per ACPI 2.0) for
13537the
13538following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13539LLessEqual.
13540
13541All directory names in the entire source package are lower case, as they
13542were in earlier releases.
13543
13544Fixed a fault when using the -g or -d<nofilename> options if the FADT was
13545not found.
13546
13547Fixed an issue with the Windows version of the compiler where later
13548versions
13549of Windows place the FADT in the registry under the name "FADT" and not
13550"FACP" as earlier versions did.  This applies when using the -g or -
13551d<nofilename> options.  The compiler now looks for both strings as
13552necessary.
13553
13554Fixed a problem with compiler namepath optimization where a namepath
13555within
13556the Scope() operator could not be optimized if the namepath was a subpath
13557of
13558the current scope path.
13559
13560----------------------------------------
1356127 May 2004.  Summary of changes for version 20040527:
13562
135631) ACPI CA Core Subsystem:
13564
13565Completed a new design and implementation for EBDA (Extended BIOS Data
13566Area)
13567support in the RSDP scan code.  The original code improperly scanned for
13568the
13569EBDA by simply scanning from memory location 0 to 0x400.  The correct
13570method
13571is to first obtain the EBDA pointer from within the BIOS data area, then
13572scan 1K of memory starting at the EBDA pointer.  There appear to be few
13573if
13574any machines that place the RSDP in the EBDA, however.
13575
13576Integrated a fix for a possible fault during evaluation of BufferField
13577arguments.  Obsolete code that was causing the problem was removed.
13578
13579Found and fixed a problem in the Field Support Code where data could be
13580corrupted on a bit field read that starts on an aligned boundary but does
13581not end on an aligned boundary.  Merged the read/write "datum length"
13582calculation code into a common procedure.
13583
13584Rolled in a couple of changes to the FreeBSD-specific header.
13585
13586
13587Code and Data Size: Current and previous core subsystem library sizes are
13588shown below.  These are the code and data sizes for the acpica.lib
13589produced
13590by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13591any ACPI driver or OSPM code.  The debug version of the code includes the
13592debug output trace mechanism and has a much larger code and data size.
13593Note
13594that these values will vary depending on the efficiency of the compiler
13595and
13596the compiler options used during generation.
13597
13598  Previous Release:
13599    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13600    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13601  Current Release:
13602    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13603    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13604
13605
136062) iASL Compiler/Disassembler:
13607
13608Fixed a generation warning produced by some overly-verbose compilers for
13609a
1361064-bit constant.
13611
13612----------------------------------------
1361314 May 2004.  Summary of changes for version 20040514:
13614
136151) ACPI CA Core Subsystem:
13616
13617Fixed a problem where hardware GPE enable bits sometimes not set properly
13618during and after GPE method execution.  Result of 04/27 changes.
13619
13620Removed extra "clear all GPEs" when sleeping/waking.
13621
13622Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
13623AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
13624to
13625the new AcpiEv* calls as appropriate.
13626
13627ACPI_OS_NAME was removed from the OS-specific headers.  The default name
13628is
13629now "Microsoft Windows NT" for maximum compatibility.  However this can
13630be
13631changed by modifying the acconfig.h file.
13632
13633Allow a single invocation of AcpiInstallNotifyHandler for a handler that
13634traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
13635
13636Run _INI methods on ThermalZone objects.  This is against the ACPI
13637specification, but there is apparently ASL code in the field that has
13638these
13639_INI methods, and apparently "other" AML interpreters execute them.
13640
13641Performed a full 16/32/64 bit lint that resulted in some small changes.
13642
13643Added a sleep simulation command to the AML debugger to test sleep code.
13644
13645Code and Data Size: Current and previous core subsystem library sizes are
13646shown below.  These are the code and data sizes for the acpica.lib
13647produced
13648by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13649any ACPI driver or OSPM code.  The debug version of the code includes the
13650debug output trace mechanism and has a much larger code and data size.
13651Note
13652that these values will vary depending on the efficiency of the compiler
13653and
13654the compiler options used during generation.
13655
13656  Previous Release:
13657    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13658    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13659  Current Release:
13660    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13661    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13662
13663----------------------------------------
1366427 April 2004.  Summary of changes for version 20040427:
13665
136661) ACPI CA Core Subsystem:
13667
13668Completed a major overhaul of the GPE handling within ACPI CA.  There are
13669now three types of GPEs:  wake-only, runtime-only, and combination
13670wake/run.
13671The only GPEs allowed to be combination wake/run are for button-style
13672devices such as a control-method power button, control-method sleep
13673button,
13674or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
13675not
13676referenced by any _PRW methods are marked for "runtime" and hardware
13677enabled.  Any GPE that is referenced by a _PRW method is marked for
13678"wake"
13679(and disabled at runtime).  However, at sleep time, only those GPEs that
13680have been specifically enabled for wake via the AcpiEnableGpe interface
13681will
13682actually be hardware enabled.
13683
13684A new external interface has been added, AcpiSetGpeType(), that is meant
13685to
13686be used by device drivers to force a GPE to a particular type.  It will
13687be
13688especially useful for the drivers for the button devices mentioned above.
13689
13690Completed restructuring of the ACPI CA initialization sequence so that
13691default operation region handlers are installed before GPEs are
13692initialized
13693and the _PRW methods are executed.  This will prevent errors when the
13694_PRW
13695methods attempt to access system memory or I/O space.
13696
13697GPE enable/disable no longer reads the GPE enable register.  We now keep
13698the
13699enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
13700thus no longer depend on the hardware to maintain these bits.
13701
13702Always clear the wake status and fixed/GPE status bits before sleep, even
13703for state S5.
13704
13705Improved the AML debugger output for displaying the GPE blocks and their
13706current status.
13707
13708Added new strings for the _OSI method, of the form "Windows 2001 SPx"
13709where
13710x = 0,1,2,3,4.
13711
13712Fixed a problem where the physical address was incorrectly calculated
13713when
13714the Load() operator was used to directly load from an Operation Region
13715(vs.
13716loading from a Field object.)  Also added check for minimum table length
13717for
13718this case.
13719
13720Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
13721mutex release.
13722
13723Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
13724consistency with the other fields returned.
13725
13726Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
13727structure for each GPE in the system, so the size of this structure is
13728important.
13729
13730CPU stack requirement reduction:  Cleaned up the method execution and
13731object
13732evaluation paths so that now a parameter structure is passed, instead of
13733copying the various method parameters over and over again.
13734
13735In evregion.c:  Correctly exit and reenter the interpreter region if and
13736only if dispatching an operation region request to a user-installed
13737handler.
13738Do not exit/reenter when dispatching to a default handler (e.g., default
13739system memory or I/O handlers)
13740
13741
13742Notes for updating drivers for the new GPE support.  The following
13743changes
13744must be made to ACPI-related device drivers that are attached to one or
13745more
13746GPEs: (This information will be added to the ACPI CA Programmer
13747Reference.)
13748
137491) AcpiInstallGpeHandler no longer automatically enables the GPE, you
13750must
13751explicitly call AcpiEnableGpe.
137522) There is a new interface called AcpiSetGpeType. This should be called
13753before enabling the GPE.  Also, this interface will automatically disable
13754the GPE if it is currently enabled.
137553) AcpiEnableGpe no longer supports a GPE type flag.
13756
13757Specific drivers that must be changed:
137581) EC driver:
13759    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
13760AeGpeHandler, NULL);
13761    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
13762    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
13763
137642) Button Drivers (Power, Lid, Sleep):
13765Run _PRW method under parent device
13766If _PRW exists: /* This is a control-method button */
13767    Extract GPE number and possibly GpeDevice
13768    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
13769    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
13770
13771For all other devices that have _PRWs, we automatically set the GPE type
13772to
13773ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
13774This
13775must be done on a selective basis, usually requiring some kind of user
13776app
13777to allow the user to pick the wake devices.
13778
13779
13780Code and Data Size: Current and previous core subsystem library sizes are
13781shown below.  These are the code and data sizes for the acpica.lib
13782produced
13783by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13784any ACPI driver or OSPM code.  The debug version of the code includes the
13785debug output trace mechanism and has a much larger code and data size.
13786Note
13787that these values will vary depending on the efficiency of the compiler
13788and
13789the compiler options used during generation.
13790
13791  Previous Release:
13792    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13793    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13794  Current Release:
13795
13796    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13797    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13798
13799
13800
13801----------------------------------------
1380202 April 2004.  Summary of changes for version 20040402:
13803
138041) ACPI CA Core Subsystem:
13805
13806Fixed an interpreter problem where an indirect store through an ArgX
13807parameter was incorrectly applying the "implicit conversion rules" during
13808the store.  From the ACPI specification: "If the target is a method local
13809or
13810argument (LocalX or ArgX), no conversion is performed and the result is
13811stored directly to the target".  The new behavior is to disable implicit
13812conversion during ALL stores to an ArgX.
13813
13814Changed the behavior of the _PRW method scan to ignore any and all errors
13815returned by a given _PRW.  This prevents the scan from aborting from the
13816failure of any single _PRW.
13817
13818Moved the runtime configuration parameters from the global init procedure
13819to
13820static variables in acglobal.h.  This will allow the host to override the
13821default values easily.
13822
13823Code and Data Size: Current and previous core subsystem library sizes are
13824shown below.  These are the code and data sizes for the acpica.lib
13825produced
13826by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13827any ACPI driver or OSPM code.  The debug version of the code includes the
13828debug output trace mechanism and has a much larger code and data size.
13829Note
13830that these values will vary depending on the efficiency of the compiler
13831and
13832the compiler options used during generation.
13833
13834  Previous Release:
13835    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13836    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13837  Current Release:
13838    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13839    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13840
13841
138422) iASL Compiler/Disassembler:
13843
13844iASL now fully disassembles SSDTs.  However, External() statements are
13845not
13846generated automatically for unresolved symbols at this time.  This is a
13847planned feature for future implementation.
13848
13849Fixed a scoping problem in the disassembler that occurs when the type of
13850the
13851target of a Scope() operator is overridden.  This problem caused an
13852incorrectly nested internal namespace to be constructed.
13853
13854Any warnings or errors that are emitted during disassembly are now
13855commented
13856out automatically so that the resulting file can be recompiled without
13857any
13858hand editing.
13859
13860----------------------------------------
1386126 March 2004.  Summary of changes for version 20040326:
13862
138631) ACPI CA Core Subsystem:
13864
13865Implemented support for "wake" GPEs via interaction between GPEs and the
13866_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
13867identified as a WAKE GPE and by default will no longer be enabled at
13868runtime.  Previously, we were blindly enabling all GPEs with a
13869corresponding
13870_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
13871We
13872believe this has been the cause of thousands of "spurious" GPEs on some
13873systems.
13874
13875This new GPE behavior is can be reverted to the original behavior (enable
13876ALL GPEs at runtime) via a runtime flag.
13877
13878Fixed a problem where aliased control methods could not access objects
13879properly.  The proper scope within the namespace was not initialized
13880(transferred to the target of the aliased method) before executing the
13881target method.
13882
13883Fixed a potential race condition on internal object deletion on the
13884return
13885object in AcpiEvaluateObject.
13886
13887Integrated a fix for resource descriptors where both _MEM and _MTP were
13888being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
13889wide, 0x0F instead of 0x03.)
13890
13891Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
13892preventing
13893a
13894fault in some cases.
13895
13896Updated Notify() values for debug statements in evmisc.c
13897
13898Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
13899
13900Code and Data Size: Current and previous core subsystem library sizes are
13901shown below.  These are the code and data sizes for the acpica.lib
13902produced
13903by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13904any ACPI driver or OSPM code.  The debug version of the code includes the
13905debug output trace mechanism and has a much larger code and data size.
13906Note
13907that these values will vary depending on the efficiency of the compiler
13908and
13909the compiler options used during generation.
13910
13911  Previous Release:
13912
13913    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13914    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13915  Current Release:
13916    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13917    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13918
13919----------------------------------------
1392011 March 2004.  Summary of changes for version 20040311:
13921
139221) ACPI CA Core Subsystem:
13923
13924Fixed a problem where errors occurring during the parse phase of control
13925method execution did not abort cleanly.  For example, objects created and
13926installed in the namespace were not deleted.  This caused all subsequent
13927invocations of the method to return the AE_ALREADY_EXISTS exception.
13928
13929Implemented a mechanism to force a control method to "Serialized"
13930execution
13931if the method attempts to create namespace objects. (The root of the
13932AE_ALREADY_EXISTS problem.)
13933
13934Implemented support for the predefined _OSI "internal" control method.
13935Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
13936and
13937"Windows 2001.1", and can be easily upgraded for new strings as
13938necessary.
13939This feature will allow "other" operating systems to execute the fully
13940tested, "Windows" code path through the ASL code
13941
13942Global Lock Support:  Now allows multiple acquires and releases with any
13943internal thread.  Removed concept of "owning thread" for this special
13944mutex.
13945
13946Fixed two functions that were inappropriately declaring large objects on
13947the
13948CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
13949during
13950method execution considerably.
13951
13952Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
13953S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
13954
13955Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
13956defined on the machine.
13957
13958Implemented two runtime options:  One to force all control method
13959execution
13960to "Serialized" to mimic Windows behavior, another to disable _OSI
13961support
13962if it causes problems on a given machine.
13963
13964Code and Data Size: Current and previous core subsystem library sizes are
13965shown below.  These are the code and data sizes for the acpica.lib
13966produced
13967by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13968any ACPI driver or OSPM code.  The debug version of the code includes the
13969debug output trace mechanism and has a much larger code and data size.
13970Note
13971that these values will vary depending on the efficiency of the compiler
13972and
13973the compiler options used during generation.
13974
13975  Previous Release:
13976    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13977    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13978  Current Release:
13979    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13980    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13981
139822) iASL Compiler/Disassembler:
13983
13984Fixed an array size problem for FreeBSD that would cause the compiler to
13985fault.
13986
13987----------------------------------------
1398820 February 2004.  Summary of changes for version 20040220:
13989
13990
139911) ACPI CA Core Subsystem:
13992
13993Implemented execution of _SxD methods for Device objects in the
13994GetObjectInfo interface.
13995
13996Fixed calls to _SST method to pass the correct arguments.
13997
13998Added a call to _SST on wake to restore to "working" state.
13999
14000Check for End-Of-Buffer failure case in the WalkResources interface.
14001
14002Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14003structures to the beginning of the file.
14004
14005After wake, clear GPE status register(s) before enabling GPEs.
14006
14007After wake, clear/enable power button.  (Perhaps we should clear/enable
14008all
14009fixed events upon wake.)
14010
14011Fixed a couple of possible memory leaks in the Namespace manager.
14012
14013Integrated latest acnetbsd.h file.
14014
14015----------------------------------------
1401611 February 2004.  Summary of changes for version 20040211:
14017
14018
140191) ACPI CA Core Subsystem:
14020
14021Completed investigation and implementation of the call-by-reference
14022mechanism for control method arguments.
14023
14024Fixed a problem where a store of an object into an indexed package could
14025fail if the store occurs within a different method than the method that
14026created the package.
14027
14028Fixed a problem where the ToDecimal operator could return incorrect
14029results.
14030
14031Fixed a problem where the CopyObject operator could fail on some of the
14032more
14033obscure objects (e.g., Reference objects.)
14034
14035Improved the output of the Debug object to display buffer, package, and
14036index objects.
14037
14038Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14039return
14040the expected result.
14041
14042Added permanent ACPI_REPORT_ERROR macros for all instances of the
14043ACPI_AML_INTERNAL exception.
14044
14045Integrated latest version of acfreebsd.h
14046
14047----------------------------------------
1404816 January 2004.  Summary of changes for version 20040116:
14049
14050The purpose of this release is primarily to update the copyright years in
14051each module, thus causing a huge number of diffs.  There are a few small
14052functional changes, however.
14053
140541) ACPI CA Core Subsystem:
14055
14056Improved error messages when there is a problem finding one or more of
14057the
14058required base ACPI tables
14059
14060Reintroduced the definition of APIC_HEADER in actbl.h
14061
14062Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14063
14064Removed extraneous reference to NewObj in dsmthdat.c
14065
140662) iASL compiler
14067
14068Fixed a problem introduced in December that disabled the correct
14069disassembly
14070of Resource Templates
14071
14072
14073----------------------------------------
1407403 December 2003.  Summary of changes for version 20031203:
14075
140761) ACPI CA Core Subsystem:
14077
14078Changed the initialization of Operation Regions during subsystem
14079init to perform two entire walks of the ACPI namespace; The first
14080to initialize the regions themselves, the second to execute the
14081_REG methods.  This fixed some interdependencies across _REG
14082methods found on some machines.
14083
14084Fixed a problem where a Store(Local0, Local1) could simply update
14085the object reference count, and not create a new copy of the
14086object if the Local1 is uninitialized.
14087
14088Implemented support for the _SST reserved method during sleep
14089transitions.
14090
14091Implemented support to clear the SLP_TYP and SLP_EN bits when
14092waking up, this is apparently required by some machines.
14093
14094When sleeping, clear the wake status only if SleepState is not S5.
14095
14096Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14097pointer arithmetic advanced a string pointer too far.
14098
14099Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14100could be returned if the requested table has not been loaded.
14101
14102Within the support for IRQ resources, restructured the handling of
14103the active and edge/level bits.
14104
14105Fixed a few problems in AcpiPsxExecute() where memory could be
14106leaked under certain error conditions.
14107
14108Improved error messages for the cases where the ACPI mode could
14109not be entered.
14110
14111Code and Data Size: Current and previous core subsystem library
14112sizes are shown below.  These are the code and data sizes for the
14113acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14114these values do not include any ACPI driver or OSPM code.  The
14115debug version of the code includes the debug output trace
14116mechanism and has a much larger code and data size.  Note that
14117these values will vary depending on the efficiency of the compiler
14118and the compiler options used during generation.
14119
14120  Previous Release (20031029):
14121    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14122    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14123  Current Release:
14124    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14125    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14126
141272) iASL Compiler/Disassembler:
14128
14129Implemented a fix for the iASL disassembler where a bad index was
14130generated.  This was most noticeable on 64-bit platforms
14131
14132
14133----------------------------------------
1413429 October 2003.  Summary of changes for version 20031029:
14135
141361) ACPI CA Core Subsystem:
14137
14138
14139Fixed a problem where a level-triggered GPE with an associated
14140_Lxx control method was incorrectly cleared twice.
14141
14142Fixed a problem with the Field support code where an access can
14143occur beyond the end-of-region if the field is non-aligned but
14144extends to the very end of the parent region (resulted in an
14145AE_AML_REGION_LIMIT exception.)
14146
14147Fixed a problem with ACPI Fixed Events where an RT Clock handler
14148would not get invoked on an RTC event.  The RTC event bitmasks for
14149the PM1 registers were not being initialized properly.
14150
14151Implemented support for executing _STA and _INI methods for
14152Processor objects.  Although this is currently not part of the
14153ACPI specification, there is existing ASL code that depends on the
14154init-time execution of these methods.
14155
14156Implemented and deployed a GetDescriptorName function to decode
14157the various types of internal descriptors.  Guards against null
14158descriptors during debug output also.
14159
14160Implemented and deployed a GetNodeName function to extract the 4-
14161character namespace node name.  This function simplifies the debug
14162and error output, as well as guarding against null pointers during
14163output.
14164
14165Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14166simplify the debug and error output of 64-bit integers.  This
14167macro replaces the HIDWORD and LODWORD macros for dumping these
14168integers.
14169
14170Updated the implementation of the Stall() operator to only call
14171AcpiOsStall(), and also return an error if the operand is larger
14172than 255.  This preserves the required behavior of not
14173relinquishing the processor, as would happen if AcpiOsSleep() was
14174called for "long stalls".
14175
14176Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14177initialized are now treated as NOOPs.
14178
14179Cleaned up a handful of warnings during 64-bit generation.
14180
14181Fixed a reported error where and incorrect GPE number was passed
14182to the GPE dispatch handler.  This value is only used for error
14183output, however.  Used this opportunity to clean up and streamline
14184the GPE dispatch code.
14185
14186Code and Data Size: Current and previous core subsystem library
14187sizes are shown below.  These are the code and data sizes for the
14188acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14189these values do not include any ACPI driver or OSPM code.  The
14190
14191debug version of the code includes the debug output trace
14192mechanism and has a much larger code and data size.  Note that
14193these values will vary depending on the efficiency of the compiler
14194and the compiler options used during generation.
14195
14196  Previous Release (20031002):
14197    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14198    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14199  Current Release:
14200    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14201    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14202
14203
142042) iASL Compiler/Disassembler:
14205
14206Updated the iASL compiler to return an error if the operand to the
14207Stall() operator is larger than 255.
14208
14209
14210----------------------------------------
1421102 October 2003.  Summary of changes for version 20031002:
14212
14213
142141) ACPI CA Core Subsystem:
14215
14216Fixed a problem with Index Fields where the index was not
14217incremented for fields that require multiple writes to the
14218index/data registers (Fields that are wider than the data
14219register.)
14220
14221Fixed a problem with all Field objects where a write could go
14222beyond the end-of-field if the field was larger than the access
14223granularity and therefore required multiple writes to complete the
14224request.  An extra write beyond the end of the field could happen
14225inadvertently.
14226
14227Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14228would incorrectly be returned if the width of the Data Register
14229was larger than the specified field access width.
14230
14231Completed fixes for LoadTable() and Unload() and verified their
14232operation.  Implemented full support for the "DdbHandle" object
14233throughout the ACPI CA subsystem.
14234
14235Implemented full support for the MADT and ECDT tables in the ACPI
14236CA header files.  Even though these tables are not directly
14237consumed by ACPI CA, the header definitions are useful for ACPI
14238device drivers.
14239
14240Integrated resource descriptor fixes posted to the Linux ACPI
14241list.  This included checks for minimum descriptor length, and
14242support for trailing NULL strings within descriptors that have
14243optional string elements.
14244
14245Code and Data Size: Current and previous core subsystem library
14246sizes are shown below.  These are the code and data sizes for the
14247acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14248these values do not include any ACPI driver or OSPM code.  The
14249debug version of the code includes the debug output trace
14250mechanism and has a much larger code and data size.  Note that
14251these values will vary depending on the efficiency of the compiler
14252and the compiler options used during generation.
14253
14254  Previous Release (20030918):
14255    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14256    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14257  Current Release:
14258    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14259    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14260
14261
142622) iASL Compiler:
14263
14264Implemented detection of non-ASCII characters within the input
14265source ASL file.  This catches attempts to compile binary (AML)
14266files early in the compile, with an informative error message.
14267
14268Fixed a problem where the disassembler would fault if the output
14269filename could not be generated or if the output file could not be
14270opened.
14271
14272----------------------------------------
1427318 September 2003.  Summary of changes for version 20030918:
14274
14275
142761) ACPI CA Core Subsystem:
14277
14278Found and fixed a longstanding problem with the late execution of
14279the various deferred AML opcodes (such as Operation Regions,
14280Buffer Fields, Buffers, and Packages).  If the name string
14281specified for the name of the new object placed the object in a
14282scope other than the current scope, the initialization/execution
14283of the opcode failed.  The solution to this problem was to
14284implement a mechanism where the late execution of such opcodes
14285does not attempt to lookup/create the name a second time in an
14286incorrect scope.  This fixes the "region size computed
14287incorrectly" problem.
14288
14289Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14290Global Lock AE_BAD_PARAMETER error.
14291
14292Fixed several 64-bit issues with prototypes, casting and data
14293types.
14294
14295Removed duplicate prototype from acdisasm.h
14296
14297Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14298
14299Code and Data Size: Current and previous core subsystem library
14300sizes are shown below.  These are the code and data sizes for the
14301acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14302these values do not include any ACPI driver or OSPM code.  The
14303debug version of the code includes the debug output trace
14304mechanism and has a much larger code and data size.  Note that
14305these values will vary depending on the efficiency of the compiler
14306and the compiler options used during generation.
14307
14308  Previous Release:
14309
14310    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14311    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14312  Current Release:
14313    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14314    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14315
14316
143172) Linux:
14318
14319Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14320correct sleep time in seconds.
14321
14322----------------------------------------
1432314 July 2003.  Summary of changes for version 20030619:
14324
143251) ACPI CA Core Subsystem:
14326
14327Parse SSDTs in order discovered, as opposed to reverse order
14328(Hrvoje Habjanic)
14329
14330Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14331Klausner,
14332   Nate Lawson)
14333
14334
143352) Linux:
14336
14337Dynamically allocate SDT list (suggested by Andi Kleen)
14338
14339proc function return value cleanups (Andi Kleen)
14340
14341Correctly handle NMI watchdog during long stalls (Andrew Morton)
14342
14343Make it so acpismp=force works (reported by Andrew Morton)
14344
14345
14346----------------------------------------
1434719 June 2003.  Summary of changes for version 20030619:
14348
143491) ACPI CA Core Subsystem:
14350
14351Fix To/FromBCD, eliminating the need for an arch-specific #define.
14352
14353Do not acquire a semaphore in the S5 shutdown path.
14354
14355Fix ex_digits_needed for 0. (Takayoshi Kochi)
14356
14357Fix sleep/stall code reversal. (Andi Kleen)
14358
14359Revert a change having to do with control method calling
14360semantics.
14361
143622) Linux:
14363
14364acpiphp update (Takayoshi Kochi)
14365
14366Export acpi_disabled for sonypi (Stelian Pop)
14367
14368Mention acpismp=force in config help
14369
14370Re-add acpitable.c and acpismp=force. This improves backwards
14371
14372compatibility and also cleans up the code to a significant degree.
14373
14374Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14375
14376----------------------------------------
1437722 May 2003.  Summary of changes for version 20030522:
14378
143791) ACPI CA Core Subsystem:
14380
14381Found and fixed a reported problem where an AE_NOT_FOUND error
14382occurred occasionally during _BST evaluation.  This turned out to
14383be an Owner ID allocation issue where a called method did not get
14384a new ID assigned to it.  Eventually, (after 64k calls), the Owner
14385ID UINT16 would wraparound so that the ID would be the same as the
14386caller's and the called method would delete the caller's
14387namespace.
14388
14389Implemented extended error reporting for control methods that are
14390aborted due to a run-time exception.  Output includes the exact
14391AML instruction that caused the method abort, a dump of the method
14392locals and arguments at the time of the abort, and a trace of all
14393nested control method calls.
14394
14395Modified the interpreter to allow the creation of buffers of zero
14396length from the AML code. Implemented new code to ensure that no
14397attempt is made to actually allocate a memory buffer (of length
14398zero) - instead, a simple buffer object with a NULL buffer pointer
14399and length zero is created.  A warning is no longer issued when
14400the AML attempts to create a zero-length buffer.
14401
14402Implemented a workaround for the "leading asterisk issue" in
14403_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
14404asterisk is automatically removed if present in any HID, UID, or
14405CID strings.  The iASL compiler will still flag this asterisk as
14406an error, however.
14407
14408Implemented full support for _CID methods that return a package of
14409multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
14410now additionally returns a device _CID list if present.  This
14411required a change to the external interface in order to pass an
14412ACPI_BUFFER object as a parameter since the _CID list is of
14413variable length.
14414
14415Fixed a problem with the new AE_SAME_HANDLER exception where
14416handler initialization code did not know about this exception.
14417
14418Code and Data Size: Current and previous core subsystem library
14419sizes are shown below.  These are the code and data sizes for the
14420acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14421these values do not include any ACPI driver or OSPM code.  The
14422debug version of the code includes the debug output trace
14423mechanism and has a much larger code and data size.  Note that
14424these values will vary depending on the efficiency of the compiler
14425and the compiler options used during generation.
14426
14427  Previous Release (20030509):
14428    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14429    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14430  Current Release:
14431    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14432    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14433
14434
144352) Linux:
14436
14437Fixed a bug in which we would reinitialize the ACPI interrupt
14438after it was already working, thus disabling all ACPI and the IRQs
14439for any other device sharing the interrupt. (Thanks to Stian
14440Jordet)
14441
14442Toshiba driver update (John Belmonte)
14443
14444Return only 0 or 1 for our interrupt handler status (Andrew
14445Morton)
14446
14447
144483) iASL Compiler:
14449
14450Fixed a reported problem where multiple (nested) ElseIf()
14451statements were not handled correctly by the compiler, resulting
14452in incorrect warnings and incorrect AML code.  This was a problem
14453in both the ASL parser and the code generator.
14454
14455
144564) Documentation:
14457
14458Added changes to existing interfaces, new exception codes, and new
14459text concerning reference count object management versus garbage
14460collection.
14461
14462----------------------------------------
1446309 May 2003.  Summary of changes for version 20030509.
14464
14465
144661) ACPI CA Core Subsystem:
14467
14468Changed the subsystem initialization sequence to hold off
14469installation of address space handlers until the hardware has been
14470initialized and the system has entered ACPI mode.  This is because
14471the installation of space handlers can cause _REG methods to be
14472run.  Previously, the _REG methods could potentially be run before
14473ACPI mode was enabled.
14474
14475Fixed some memory leak issues related to address space handler and
14476notify handler installation.  There were some problems with the
14477reference count mechanism caused by the fact that the handler
14478objects are shared across several namespace objects.
14479
14480Fixed a reported problem where reference counts within the
14481namespace were not properly updated when named objects created by
14482method execution were deleted.
14483
14484Fixed a reported problem where multiple SSDTs caused a deletion
14485issue during subsystem termination.  Restructured the table data
14486structures to simplify the linked lists and the related code.
14487
14488Fixed a problem where the table ID associated with secondary
14489tables (SSDTs) was not being propagated into the namespace objects
14490created by those tables.  This would only present a problem for
14491tables that are unloaded at run-time, however.
14492
14493Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
14494type as the length parameter (instead of UINT32).
14495
14496Solved a long-standing problem where an ALREADY_EXISTS error
14497appears on various systems.  This problem could happen when there
14498are multiple PCI_Config operation regions under a single PCI root
14499bus.  This doesn't happen very frequently, but there are some
14500systems that do this in the ASL.
14501
14502Fixed a reported problem where the internal DeleteNode function
14503was incorrectly handling the case where a namespace node was the
14504first in the parent's child list, and had additional peers (not
14505the only child, but first in the list of children.)
14506
14507Code and Data Size: Current core subsystem library sizes are shown
14508below.  These are the code and data sizes for the acpica.lib
14509produced by the Microsoft Visual C++ 6.0 compiler, and these
14510values do not include any ACPI driver or OSPM code.  The debug
14511version of the code includes the debug output trace mechanism and
14512has a much larger code and data size.  Note that these values will
14513vary depending on the efficiency of the compiler and the compiler
14514options used during generation.
14515
14516  Previous Release
14517    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14518    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14519  Current Release:
14520    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14521    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14522
14523
145242) Linux:
14525
14526Allow ":" in OS override string (Ducrot Bruno)
14527
14528Kobject fix (Greg KH)
14529
14530
145313 iASL Compiler/Disassembler:
14532
14533Fixed a problem in the generation of the C source code files (AML
14534is emitted in C source statements for BIOS inclusion) where the
14535Ascii dump that appears within a C comment at the end of each line
14536could cause a compile time error if the AML sequence happens to
14537have an open comment or close comment sequence embedded.
14538
14539
14540----------------------------------------
1454124 April 2003.  Summary of changes for version 20030424.
14542
14543
145441) ACPI CA Core Subsystem:
14545
14546Support for big-endian systems has been implemented.  Most of the
14547support has been invisibly added behind big-endian versions of the
14548ACPI_MOVE_* macros.
14549
14550Fixed a problem in AcpiHwDisableGpeBlock() and
14551AcpiHwClearGpeBlock() where an incorrect offset was passed to the
14552low level hardware write routine.  The offset parameter was
14553actually eliminated from the low level read/write routines because
14554they had become obsolete.
14555
14556Fixed a problem where a handler object was deleted twice during
14557the removal of a fixed event handler.
14558
14559
145602) Linux:
14561
14562A fix for SMP systems with link devices was contributed by
14563
14564Compaq's Dan Zink.
14565
14566(2.5) Return whether we handled the interrupt in our IRQ handler.
14567(Linux ISRs no longer return void, so we can propagate the handler
14568return value from the ACPI CA core back to the OS.)
14569
14570
14571
145723) Documentation:
14573
14574The ACPI CA Programmer Reference has been updated to reflect new
14575interfaces and changes to existing interfaces.
14576
14577----------------------------------------
1457828 March 2003.  Summary of changes for version 20030328.
14579
145801) ACPI CA Core Subsystem:
14581
14582The GPE Block Device support has been completed.  New interfaces
14583are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
14584interfaces (enable, disable, clear, getstatus) have been split
14585into separate interfaces for Fixed Events and General Purpose
14586Events (GPEs) in order to support GPE Block Devices properly.
14587
14588Fixed a problem where the error message "Failed to acquire
14589semaphore" would appear during operations on the embedded
14590controller (EC).
14591
14592Code and Data Size: Current core subsystem library sizes are shown
14593below.  These are the code and data sizes for the acpica.lib
14594produced by the Microsoft Visual C++ 6.0 compiler, and these
14595values do not include any ACPI driver or OSPM code.  The debug
14596version of the code includes the debug output trace mechanism and
14597has a much larger code and data size.  Note that these values will
14598vary depending on the efficiency of the compiler and the compiler
14599options used during generation.
14600
14601  Previous Release
14602    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14603    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14604  Current Release:
14605    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14606    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14607
14608
14609----------------------------------------
1461028 February 2003.  Summary of changes for version 20030228.
14611
14612
146131) ACPI CA Core Subsystem:
14614
14615The GPE handling and dispatch code has been completely overhauled
14616in preparation for support of GPE Block Devices (ID ACPI0006).
14617This affects internal data structures and code only; there should
14618be no differences visible externally.  One new file has been
14619added, evgpeblk.c
14620
14621The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
14622fields that are used to determine the GPE block lengths.  The
14623REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
14624structures are ignored.  This is per the ACPI specification but it
14625isn't very clear.  The full 256 Block 0/1 GPEs are now supported
14626(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
14627
14628In the SCI interrupt handler, removed the read of the PM1_CONTROL
14629register to look at the SCI_EN bit.  On some machines, this read
14630causes an SMI event and greatly slows down SCI events.  (This may
14631in fact be the cause of slow battery status response on some
14632systems.)
14633
14634Fixed a problem where a store of a NULL string to a package object
14635could cause the premature deletion of the object.  This was seen
14636during execution of the battery _BIF method on some systems,
14637resulting in no battery data being returned.
14638
14639Added AcpiWalkResources interface to simplify parsing of resource
14640lists.
14641
14642Code and Data Size: Current core subsystem library sizes are shown
14643below.  These are the code and data sizes for the acpica.lib
14644produced by the Microsoft Visual C++ 6.0 compiler, and these
14645values do not include any ACPI driver or OSPM code.  The debug
14646version of the code includes the debug output trace mechanism and
14647has a much larger code and data size.  Note that these values will
14648vary depending on the efficiency of the compiler and the compiler
14649options used during generation.
14650
14651  Previous Release
14652    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14653    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14654  Current Release:
14655    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14656    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14657
14658
146592) Linux
14660
14661S3 fixes (Ole Rohne)
14662
14663Update ACPI PHP driver with to use new acpi_walk_resource API
14664(Bjorn Helgaas)
14665
14666Add S4BIOS support (Pavel Machek)
14667
14668Map in entire table before performing checksum (John Stultz)
14669
14670Expand the mem= cmdline to allow the specification of reserved and
14671ACPI DATA blocks (Pavel Machek)
14672
14673Never use ACPI on VISWS
14674
14675Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
14676
14677Revert a change that allowed P_BLK lengths to be 4 or 5. This is
14678causing us to think that some systems support C2 when they really
14679don't.
14680
14681Do not count processor objects for non-present CPUs (Thanks to
14682Dominik Brodowski)
14683
14684
146853) iASL Compiler:
14686
14687Fixed a problem where ASL include files could not be found and
14688opened.
14689
14690Added support for the _PDC reserved name.
14691
14692
14693----------------------------------------
1469422 January 2003.  Summary of changes for version 20030122.
14695
14696
146971) ACPI CA Core Subsystem:
14698
14699Added a check for constructs of the form:  Store (Local0, Local0)
14700where Local0 is not initialized.  Apparently, some BIOS
14701programmers believe that this is a NOOP.  Since this store doesn't
14702do anything anyway, the new prototype behavior will ignore this
14703error.  This is a case where we can relax the strict checking in
14704the interpreter in the name of compatibility.
14705
14706
147072) Linux
14708
14709The AcpiSrc Source Conversion Utility has been released with the
14710Linux package for the first time.  This is the utility that is
14711used to convert the ACPI CA base source code to the Linux version.
14712
14713(Both) Handle P_BLK lengths shorter than 6 more gracefully
14714
14715(Both) Move more headers to include/acpi, and delete an unused
14716header.
14717
14718(Both) Move drivers/acpi/include directory to include/acpi
14719
14720(Both) Boot functions don't use cmdline, so don't pass it around
14721
14722(Both) Remove include of unused header (Adrian Bunk)
14723
14724(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
14725the
14726former now also includes the latter, acpiphp.h only needs the one,
14727now.
14728
14729(2.5) Make it possible to select method of bios restoring after S3
14730resume. [=> no more ugly ifdefs] (Pavel Machek)
14731
14732(2.5) Make proc write interfaces work (Pavel Machek)
14733
14734(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
14735
14736(2.5) Break out ACPI Perf code into its own module, under cpufreq
14737(Dominik Brodowski)
14738
14739(2.4) S4BIOS support (Ducrot Bruno)
14740
14741(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
14742Visinoni)
14743
14744
147453) iASL Compiler:
14746
14747Added support to disassemble SSDT and PSDTs.
14748
14749Implemented support to obtain SSDTs from the Windows registry if
14750available.
14751
14752
14753----------------------------------------
1475409 January 2003.  Summary of changes for version 20030109.
14755
147561) ACPI CA Core Subsystem:
14757
14758Changed the behavior of the internal Buffer-to-String conversion
14759function.  The current ACPI specification states that the contents
14760of the buffer are "converted to a string of two-character
14761hexadecimal numbers, each separated by a space".  Unfortunately,
14762this definition is not backwards compatible with existing ACPI 1.0
14763implementations (although the behavior was not defined in the ACPI
147641.0 specification).  The new behavior simply copies data from the
14765buffer to the string until a null character is found or the end of
14766the buffer is reached.  The new String object is always null
14767terminated.  This problem was seen during the generation of _BIF
14768battery data where incorrect strings were returned for battery
14769type, etc.  This will also require an errata to the ACPI
14770specification.
14771
14772Renamed all instances of NATIVE_UINT and NATIVE_INT to
14773ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
14774
14775Copyright in all module headers (both Linux and non-Linux) has be
14776updated to 2003.
14777
14778Code and Data Size: Current core subsystem library sizes are shown
14779below.  These are the code and data sizes for the acpica.lib
14780produced by the Microsoft Visual C++ 6.0 compiler, and these
14781values do not include any ACPI driver or OSPM code.  The debug
14782version of the code includes the debug output trace mechanism and
14783has a much larger code and data size.  Note that these values will
14784vary depending on the efficiency of the compiler and the compiler
14785options used during generation.
14786
14787  Previous Release
14788    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14789    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14790  Current Release:
14791    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14792    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14793
14794
147952) Linux
14796
14797Fixed an oops on module insertion/removal (Matthew Tippett)
14798
14799(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
14800
14801(2.5) Replace pr_debug (Randy Dunlap)
14802
14803(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
14804
14805(Both) Eliminate spawning of thread from timer callback, in favor
14806of schedule_work()
14807
14808(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
14809
14810(Both) Added define for Fixed Function HW region (Matthew Wilcox)
14811
14812(Both) Add missing statics to button.c (Pavel Machek)
14813
14814Several changes have been made to the source code translation
14815utility that generates the Linux Code in order to make the code
14816more "Linux-like":
14817
14818All typedefs on structs and unions have been removed in keeping
14819with the Linux coding style.
14820
14821Removed the non-Linux SourceSafe module revision number from each
14822module header.
14823
14824Completed major overhaul of symbols to be lowercased for linux.
14825Doubled the number of symbols that are lowercased.
14826
14827Fixed a problem where identifiers within procedure headers and
14828within quotes were not fully lower cased (they were left with a
14829starting capital.)
14830
14831Some C macros whose only purpose is to allow the generation of 16-
14832bit code are now completely removed in the Linux code, increasing
14833readability and maintainability.
14834
14835----------------------------------------
14836
1483712 December 2002.  Summary of changes for version 20021212.
14838
14839
148401) ACPI CA Core Subsystem:
14841
14842Fixed a problem where the creation of a zero-length AML Buffer
14843would cause a fault.
14844
14845Fixed a problem where a Buffer object that pointed to a static AML
14846buffer (in an ACPI table) could inadvertently be deleted, causing
14847memory corruption.
14848
14849Fixed a problem where a user buffer (passed in to the external
14850ACPI CA interfaces) could be overwritten if the buffer was too
14851small to complete the operation, causing memory corruption.
14852
14853Fixed a problem in the Buffer-to-String conversion code where a
14854string of length one was always returned, regardless of the size
14855of the input Buffer object.
14856
14857Removed the NATIVE_CHAR data type across the entire source due to
14858lack of need and lack of consistent use.
14859
14860Code and Data Size: Current core subsystem library sizes are shown
14861below.  These are the code and data sizes for the acpica.lib
14862produced by the Microsoft Visual C++ 6.0 compiler, and these
14863values do not include any ACPI driver or OSPM code.  The debug
14864version of the code includes the debug output trace mechanism and
14865has a much larger code and data size.  Note that these values will
14866vary depending on the efficiency of the compiler and the compiler
14867options used during generation.
14868
14869  Previous Release
14870    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14871    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14872  Current Release:
14873    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14874    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14875
14876
14877----------------------------------------
1487805 December 2002.  Summary of changes for version 20021205.
14879
148801) ACPI CA Core Subsystem:
14881
14882Fixed a problem where a store to a String or Buffer object could
14883cause corruption of the DSDT if the object type being stored was
14884the same as the target object type and the length of the object
14885being stored was equal to or smaller than the original (existing)
14886target object.  This was seen to cause corruption of battery _BIF
14887buffers if the _BIF method modified the buffer on the fly.
14888
14889Fixed a problem where an internal error was generated if a control
14890method invocation was used in an OperationRegion, Buffer, or
14891Package declaration.  This was caused by the deferred parsing of
14892the control method and thus the deferred creation of the internal
14893method object.  The solution to this problem was to create the
14894internal method object at the moment the method is encountered in
14895the first pass - so that subsequent references to the method will
14896able to obtain the required parameter count and thus properly
14897parse the method invocation.  This problem presented itself as an
14898AE_AML_INTERNAL during the pass 1 parse phase during table load.
14899
14900Fixed a problem where the internal String object copy routine did
14901not always allocate sufficient memory for the target String object
14902and caused memory corruption.  This problem was seen to cause
14903"Allocation already present in list!" errors as memory allocation
14904became corrupted.
14905
14906Implemented a new function for the evaluation of namespace objects
14907that allows the specification of the allowable return object
14908types.  This simplifies a lot of code that checks for a return
14909object of one or more specific objects returned from the
14910evaluation (such as _STA, etc.)  This may become and external
14911function if it would be useful to ACPI-related drivers.
14912
14913Completed another round of prefixing #defines with "ACPI_" for
14914clarity.
14915
14916Completed additional code restructuring to allow more modular
14917linking for iASL compiler and AcpiExec.  Several files were split
14918creating new files.  New files:  nsparse.c dsinit.c evgpe.c
14919
14920Implemented an abort mechanism to terminate an executing control
14921method via the AML debugger.  This feature is useful for debugging
14922control methods that depend (wait) for specific hardware
14923responses.
14924
14925Code and Data Size: Current core subsystem library sizes are shown
14926below.  These are the code and data sizes for the acpica.lib
14927produced by the Microsoft Visual C++ 6.0 compiler, and these
14928values do not include any ACPI driver or OSPM code.  The debug
14929version of the code includes the debug output trace mechanism and
14930has a much larger code and data size.  Note that these values will
14931vary depending on the efficiency of the compiler and the compiler
14932options used during generation.
14933
14934  Previous Release
14935    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14936    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14937  Current Release:
14938    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14939    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14940
14941
149422) iASL Compiler/Disassembler
14943
14944Fixed a compiler code generation problem for "Interrupt" Resource
14945Descriptors.  If specified in the ASL, the optional "Resource
14946Source Index" and "Resource Source" fields were not inserted into
14947the correct location within the AML resource descriptor, creating
14948an invalid descriptor.
14949
14950Fixed a disassembler problem for "Interrupt" resource descriptors.
14951The optional "Resource Source Index" and "Resource Source" fields
14952were ignored.
14953
14954
14955----------------------------------------
1495622 November 2002.  Summary of changes for version 20021122.
14957
14958
149591) ACPI CA Core Subsystem:
14960
14961Fixed a reported problem where an object stored to a Method Local
14962or Arg was not copied to a new object during the store - the
14963object pointer was simply copied to the Local/Arg.  This caused
14964all subsequent operations on the Local/Arg to also affect the
14965original source of the store operation.
14966
14967Fixed a problem where a store operation to a Method Local or Arg
14968was not completed properly if the Local/Arg contained a reference
14969(from RefOf) to a named field.  The general-purpose store-to-
14970namespace-node code is now used so that this case is handled
14971automatically.
14972
14973Fixed a problem where the internal object copy routine would cause
14974a protection fault if the object being copied was a Package and
14975contained either 1) a NULL package element or 2) a nested sub-
14976package.
14977
14978Fixed a problem with the GPE initialization that resulted from an
14979ambiguity in the ACPI specification.  One section of the
14980specification states that both the address and length of the GPE
14981block must be zero if the block is not supported.  Another section
14982implies that only the address need be zero if the block is not
14983supported.  The code has been changed so that both the address and
14984the length must be non-zero to indicate a valid GPE block (i.e.,
14985if either the address or the length is zero, the GPE block is
14986invalid.)
14987
14988Code and Data Size: Current core subsystem library sizes are shown
14989below.  These are the code and data sizes for the acpica.lib
14990produced by the Microsoft Visual C++ 6.0 compiler, and these
14991values do not include any ACPI driver or OSPM code.  The debug
14992version of the code includes the debug output trace mechanism and
14993has a much larger code and data size.  Note that these values will
14994vary depending on the efficiency of the compiler and the compiler
14995options used during generation.
14996
14997  Previous Release
14998    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14999    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15000  Current Release:
15001    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15002    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15003
15004
150052) Linux
15006
15007Cleaned up EC driver. Exported an external EC read/write
15008interface. By going through this, other drivers (most notably
15009sonypi) will be able to serialize access to the EC.
15010
15011
150123) iASL Compiler/Disassembler
15013
15014Implemented support to optionally generate include files for both
15015ASM and C (the -i switch).  This simplifies BIOS development by
15016automatically creating include files that contain external
15017declarations for the symbols that are created within the
15018
15019(optionally generated) ASM and C AML source files.
15020
15021
15022----------------------------------------
1502315 November 2002.  Summary of changes for version 20021115.
15024
150251) ACPI CA Core Subsystem:
15026
15027Fixed a memory leak problem where an error during resolution of
15028
15029method arguments during a method invocation from another method
15030failed to cleanup properly by deleting all successfully resolved
15031argument objects.
15032
15033Fixed a problem where the target of the Index() operator was not
15034correctly constructed if the source object was a package.  This
15035problem has not been detected because the use of a target operand
15036with Index() is very rare.
15037
15038Fixed a problem with the Index() operator where an attempt was
15039made to delete the operand objects twice.
15040
15041Fixed a problem where an attempt was made to delete an operand
15042twice during execution of the CondRefOf() operator if the target
15043did not exist.
15044
15045Implemented the first of perhaps several internal create object
15046functions that create and initialize a specific object type.  This
15047consolidates duplicated code wherever the object is created, thus
15048shrinking the size of the subsystem.
15049
15050Implemented improved debug/error messages for errors that occur
15051during nested method invocations.  All executing method pathnames
15052are displayed (with the error) as the call stack is unwound - thus
15053simplifying debug.
15054
15055Fixed a problem introduced in the 10/02 release that caused
15056premature deletion of a buffer object if a buffer was used as an
15057ASL operand where an integer operand is required (Thus causing an
15058implicit object conversion from Buffer to Integer.)  The change in
15059the 10/02 release was attempting to fix a memory leak (albeit
15060incorrectly.)
15061
15062Code and Data Size: Current core subsystem library sizes are shown
15063below.  These are the code and data sizes for the acpica.lib
15064produced by the Microsoft Visual C++ 6.0 compiler, and these
15065values do not include any ACPI driver or OSPM code.  The debug
15066version of the code includes the debug output trace mechanism and
15067has a much larger code and data size.  Note that these values will
15068vary depending on the efficiency of the compiler and the compiler
15069options used during generation.
15070
15071  Previous Release
15072    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15073    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15074  Current Release:
15075    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15076    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15077
15078
150792) Linux
15080
15081Changed the implementation of the ACPI semaphores to use down()
15082instead of down_interruptable().  It is important that the
15083execution of ACPI control methods not be interrupted by signals.
15084Methods must run to completion, or the system may be left in an
15085unknown/unstable state.
15086
15087Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15088(Shawn Starr)
15089
15090
150913) iASL Compiler/Disassembler
15092
15093
15094Changed the default location of output files.  All output files
15095are now placed in the current directory by default instead of in
15096the directory of the source file.  This change may affect some
15097existing makefiles, but it brings the behavior of the compiler in
15098line with other similar tools.  The location of the output files
15099can be overridden with the -p command line switch.
15100
15101
15102----------------------------------------
1510311 November 2002.  Summary of changes for version 20021111.
15104
15105
151060) ACPI Specification 2.0B is released and is now available at:
15107http://www.acpi.info/index.html
15108
15109
151101) ACPI CA Core Subsystem:
15111
15112Implemented support for the ACPI 2.0 SMBus Operation Regions.
15113This includes the early detection and handoff of the request to
15114the SMBus region handler (avoiding all of the complex field
15115support code), and support for the bidirectional return packet
15116from an SMBus write operation.  This paves the way for the
15117development of SMBus drivers in each host operating system.
15118
15119Fixed a problem where the semaphore WAIT_FOREVER constant was
15120defined as 32 bits, but must be 16 bits according to the ACPI
15121specification.  This had the side effect of causing ASL
15122Mutex/Event timeouts even though the ASL code requested a wait
15123forever.  Changed all internal references to the ACPI timeout
15124parameter to 16 bits to prevent future problems.  Changed the name
15125of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15126
15127Code and Data Size: Current core subsystem library sizes are shown
15128below.  These are the code and data sizes for the acpica.lib
15129produced by the Microsoft Visual C++ 6.0 compiler, and these
15130values do not include any ACPI driver or OSPM code.  The debug
15131version of the code includes the debug output trace mechanism and
15132has a much larger code and data size.  Note that these values will
15133vary depending on the efficiency of the compiler and the compiler
15134options used during generation.
15135
15136  Previous Release
15137    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15138    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15139  Current Release:
15140    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15141    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15142
15143
151442) Linux
15145
15146Module loading/unloading fixes (John Cagle)
15147
15148
151493) iASL Compiler/Disassembler
15150
15151Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15152
15153Implemented support for the disassembly of all SMBus protocol
15154keywords (SMBQuick, SMBWord, etc.)
15155
15156----------------------------------------
1515701 November 2002.  Summary of changes for version 20021101.
15158
15159
151601) ACPI CA Core Subsystem:
15161
15162Fixed a problem where platforms that have a GPE1 block but no GPE0
15163block were not handled correctly.  This resulted in a "GPE
15164overlap" error message.  GPE0 is no longer required.
15165
15166Removed code added in the previous release that inserted nodes
15167into the namespace in alphabetical order.  This caused some side-
15168effects on various machines.  The root cause of the problem is
15169still under investigation since in theory, the internal ordering
15170of the namespace nodes should not matter.
15171
15172
15173Enhanced error reporting for the case where a named object is not
15174found during control method execution.  The full ACPI namepath
15175(name reference) of the object that was not found is displayed in
15176this case.
15177
15178Note: as a result of the overhaul of the namespace object types in
15179the previous release, the namespace nodes for the predefined
15180scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15181instead of ACPI_TYPE_ANY.  This simplifies the namespace
15182management code but may affect code that walks the namespace tree
15183looking for specific object types.
15184
15185Code and Data Size: Current core subsystem library sizes are shown
15186below.  These are the code and data sizes for the acpica.lib
15187produced by the Microsoft Visual C++ 6.0 compiler, and these
15188values do not include any ACPI driver or OSPM code.  The debug
15189version of the code includes the debug output trace mechanism and
15190has a much larger code and data size.  Note that these values will
15191vary depending on the efficiency of the compiler and the compiler
15192options used during generation.
15193
15194  Previous Release
15195    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15196    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15197  Current Release:
15198    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15199    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15200
15201
152022) Linux
15203
15204Fixed a problem introduced in the previous release where the
15205Processor and Thermal objects were not recognized and installed in
15206/proc.  This was related to the scope type change described above.
15207
15208
152093) iASL Compiler/Disassembler
15210
15211Implemented the -g option to get all of the required ACPI tables
15212from the registry and save them to files (Windows version of the
15213compiler only.)  The required tables are the FADT, FACS, and DSDT.
15214
15215Added ACPI table checksum validation during table disassembly in
15216order to catch corrupted tables.
15217
15218
15219----------------------------------------
1522022 October 2002.  Summary of changes for version 20021022.
15221
152221) ACPI CA Core Subsystem:
15223
15224Implemented a restriction on the Scope operator that the target
15225must already exist in the namespace at the time the operator is
15226encountered (during table load or method execution).  In other
15227words, forward references are not allowed and Scope() cannot
15228create a new object. This changes the previous behavior where the
15229interpreter would create the name if not found.  This new behavior
15230correctly enables the search-to-root algorithm during namespace
15231lookup of the target name.  Because of this upsearch, this fixes
15232the known Compaq _SB_.OKEC problem and makes both the AML
15233interpreter and iASL compiler compatible with other ACPI
15234implementations.
15235
15236Completed a major overhaul of the internal ACPI object types for
15237the ACPI Namespace and the associated operand objects.  Many of
15238these types had become obsolete with the introduction of the two-
15239pass namespace load.  This cleanup simplifies the code and makes
15240the entire namespace load mechanism much clearer and easier to
15241understand.
15242
15243Improved debug output for tracking scope opening/closing to help
15244diagnose scoping issues.  The old scope name as well as the new
15245scope name are displayed.  Also improved error messages for
15246problems with ASL Mutex objects and error messages for GPE
15247problems.
15248
15249Cleaned up the namespace dump code, removed obsolete code.
15250
15251All string output (for all namespace/object dumps) now uses the
15252common ACPI string output procedure which handles escapes properly
15253and does not emit non-printable characters.
15254
15255Fixed some issues with constants in the 64-bit version of the
15256local C library (utclib.c)
15257
15258
152592) Linux
15260
15261EC Driver:  No longer attempts to acquire the Global Lock at
15262interrupt level.
15263
15264
152653) iASL Compiler/Disassembler
15266
15267Implemented ACPI 2.0B grammar change that disallows all Type 1 and
152682 opcodes outside of a control method.  This means that the
15269"executable" operators (versus the "namespace" operators) cannot
15270be used at the table level; they can only be used within a control
15271method.
15272
15273Implemented the restriction on the Scope() operator where the
15274target must already exist in the namespace at the time the
15275operator is encountered (during ASL compilation). In other words,
15276forward references are not allowed and Scope() cannot create a new
15277object.  This makes the iASL compiler compatible with other ACPI
15278implementations and makes the Scope() implementation adhere to the
15279ACPI specification.
15280
15281Fixed a problem where namepath optimization for the Alias operator
15282was optimizing the wrong path (of the two namepaths.)  This caused
15283a "Missing alias link" error message.
15284
15285Fixed a problem where an "unknown reserved name" warning could be
15286incorrectly generated for names like "_SB" when the trailing
15287underscore is not used in the original ASL.
15288
15289Fixed a problem where the reserved name check did not handle
15290NamePaths with multiple NameSegs correctly.  The first nameseg of
15291the NamePath was examined instead of the last NameSeg.
15292
15293
15294----------------------------------------
15295
1529602 October 2002.  Summary of changes for this release.
15297
15298
152991) ACPI CA Core Subsystem version 20021002:
15300
15301Fixed a problem where a store/copy of a string to an existing
15302string did not always set the string length properly in the String
15303object.
15304
15305Fixed a reported problem with the ToString operator where the
15306behavior was identical to the ToHexString operator instead of just
15307simply converting a raw buffer to a string data type.
15308
15309Fixed a problem where CopyObject and the other "explicit"
15310conversion operators were not updating the internal namespace node
15311type as part of the store operation.
15312
15313Fixed a memory leak during implicit source operand conversion
15314where the original object was not deleted if it was converted to a
15315new object of a different type.
15316
15317Enhanced error messages for all problems associated with namespace
15318lookups.  Common procedure generates and prints the lookup name as
15319well as the formatted status.
15320
15321Completed implementation of a new design for the Alias support
15322within the namespace.  The existing design did not handle the case
15323where a new object was assigned to one of the two names due to the
15324use of an explicit conversion operator, resulting in the two names
15325pointing to two different objects.  The new design simply points
15326the Alias name to the original name node - not to the object.
15327This results in a level of indirection that must be handled in the
15328name resolution mechanism.
15329
15330Code and Data Size: Current core subsystem library sizes are shown
15331below.  These are the code and data sizes for the acpica.lib
15332produced by the Microsoft Visual C++ 6.0 compiler, and these
15333values do not include any ACPI driver or OSPM code.  The debug
15334version of the code includes the debug output trace mechanism and
15335has a larger code and data size.  Note that these values will vary
15336depending on the efficiency of the compiler and the compiler
15337options used during generation.
15338
15339  Previous Release
15340    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15341    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15342  Current Release:
15343    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15344    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15345
15346
153472) Linux
15348
15349Initialize thermal driver's timer before it is used. (Knut
15350Neumann)
15351
15352Allow handling negative celsius values. (Kochi Takayoshi)
15353
15354Fix thermal management and make trip points. R/W (Pavel Machek)
15355
15356Fix /proc/acpi/sleep. (P. Christeas)
15357
15358IA64 fixes. (David Mosberger)
15359
15360Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15361
15362Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15363Brodowski)
15364
15365
153663) iASL Compiler/Disassembler
15367
15368Clarified some warning/error messages.
15369
15370
15371----------------------------------------
1537218 September 2002.  Summary of changes for this release.
15373
15374
153751) ACPI CA Core Subsystem version 20020918:
15376
15377Fixed a reported problem with reference chaining (via the Index()
15378and RefOf() operators) in the ObjectType() and SizeOf() operators.
15379The definition of these operators includes the dereferencing of
15380all chained references to return information on the base object.
15381
15382Fixed a problem with stores to indexed package elements - the
15383existing code would not complete the store if an "implicit
15384conversion" was not performed.  In other words, if the existing
15385object (package element) was to be replaced completely, the code
15386didn't handle this case.
15387
15388Relaxed typechecking on the ASL "Scope" operator to allow the
15389target name to refer to an object of type Integer, String, or
15390Buffer, in addition to the scoping object types (Device,
15391predefined Scopes, Processor, PowerResource, and ThermalZone.)
15392This allows existing AML code that has workarounds for a bug in
15393Windows to function properly.  A warning is issued, however.  This
15394affects both the AML interpreter and the iASL compiler. Below is
15395an example of this type of ASL code:
15396
15397      Name(DEB,0x00)
15398      Scope(DEB)
15399      {
15400
15401Fixed some reported problems with 64-bit integer support in the
15402local implementation of C library functions (clib.c)
15403
15404
154052) Linux
15406
15407Use ACPI fix map region instead of IOAPIC region, since it is
15408undefined in non-SMP.
15409
15410Ensure that the SCI has the proper polarity and trigger, even on
15411systems that do not have an interrupt override entry in the MADT.
15412
154132.5 big driver reorganization (Pat Mochel)
15414
15415Use early table mapping code from acpitable.c (Andi Kleen)
15416
15417New blacklist entries (Andi Kleen)
15418
15419Blacklist improvements. Split blacklist code out into a separate
15420file. Move checking the blacklist to very early. Previously, we
15421would use ACPI tables, and then halfway through init, check the
15422blacklist -- too late. Now, it's early enough to completely fall-
15423back to non-ACPI.
15424
15425
154263) iASL Compiler/Disassembler version 20020918:
15427
15428Fixed a problem where the typechecking code didn't know that an
15429alias could point to a method.  In other words, aliases were not
15430being dereferenced during typechecking.
15431
15432
15433----------------------------------------
1543429 August 2002.  Summary of changes for this release.
15435
154361) ACPI CA Core Subsystem Version 20020829:
15437
15438If the target of a Scope() operator already exists, it must be an
15439object type that actually opens a scope -- such as a Device,
15440Method, Scope, etc.  This is a fatal runtime error.  Similar error
15441check has been added to the iASL compiler also.
15442
15443Tightened up the namespace load to disallow multiple names in the
15444same scope.  This previously was allowed if both objects were of
15445the same type.  (i.e., a lookup was the same as entering a new
15446name).
15447
15448
154492) Linux
15450
15451Ensure that the ACPI interrupt has the proper trigger and
15452polarity.
15453
15454local_irq_disable is extraneous. (Matthew Wilcox)
15455
15456Make "acpi=off" actually do what it says, and not use the ACPI
15457interpreter *or* the tables.
15458
15459Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
15460Takayoshi)
15461
15462
154633) iASL Compiler/Disassembler  Version 20020829:
15464
15465Implemented namepath optimization for name declarations.  For
15466example, a declaration like "Method (\_SB_.ABCD)" would get
15467optimized to "Method (ABCD)" if the declaration is within the
15468\_SB_ scope.  This optimization is in addition to the named
15469reference path optimization first released in the previous
15470version. This would seem to complete all possible optimizations
15471for namepaths within the ASL/AML.
15472
15473If the target of a Scope() operator already exists, it must be an
15474object type that actually opens a scope -- such as a Device,
15475Method, Scope, etc.
15476
15477Implemented a check and warning for unreachable code in the same
15478block below a Return() statement.
15479
15480Fixed a problem where the listing file was not generated if the
15481compiler aborted if the maximum error count was exceeded (200).
15482
15483Fixed a problem where the typechecking of method return values was
15484broken.  This includes the check for a return value when the
15485method is invoked as a TermArg (a return value is expected.)
15486
15487Fixed a reported problem where EOF conditions during a quoted
15488string or comment caused a fault.
15489
15490
15491----------------------------------------
1549215 August 2002.  Summary of changes for this release.
15493
154941) ACPI CA Core Subsystem Version 20020815:
15495
15496Fixed a reported problem where a Store to a method argument that
15497contains a reference did not perform the indirect store correctly.
15498This problem was created during the conversion to the new
15499reference object model - the indirect store to a method argument
15500code was not updated to reflect the new model.
15501
15502Reworked the ACPI mode change code to better conform to ACPI 2.0,
15503handle corner cases, and improve code legibility (Kochi Takayoshi)
15504
15505Fixed a problem with the pathname parsing for the carat (^)
15506prefix.  The heavy use of the carat operator by the new namepath
15507optimization in the iASL compiler uncovered a problem with the AML
15508interpreter handling of this prefix.  In the case where one or
15509more carats precede a single nameseg, the nameseg was treated as
15510standalone and the search rule (to root) was inadvertently
15511applied.  This could cause both the iASL compiler and the
15512interpreter to find the wrong object or to miss the error that
15513should occur if the object does not exist at that exact pathname.
15514
15515Found and fixed the problem where the HP Pavilion DSDT would not
15516load.  This was a relatively minor tweak to the table loading code
15517(a problem caused by the unexpected encounter with a method
15518invocation not within a control method), but it does not solve the
15519overall issue of the execution of AML code at the table level.
15520This investigation is still ongoing.
15521
15522Code and Data Size: Current core subsystem library sizes are shown
15523below.  These are the code and data sizes for the acpica.lib
15524produced by the Microsoft Visual C++ 6.0 compiler, and these
15525values do not include any ACPI driver or OSPM code.  The debug
15526version of the code includes the debug output trace mechanism and
15527has a larger code and data size.  Note that these values will vary
15528depending on the efficiency of the compiler and the compiler
15529options used during generation.
15530
15531  Previous Release
15532    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15533    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15534  Current Release:
15535    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15536    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15537
15538
155392) Linux
15540
15541Remove redundant slab.h include (Brad Hards)
15542
15543Fix several bugs in thermal.c (Herbert Nachtnebel)
15544
15545Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
15546
15547Change acpi_system_suspend to use updated irq functions (Pavel
15548Machek)
15549
15550Export acpi_get_firmware_table (Matthew Wilcox)
15551
15552Use proper root proc entry for ACPI (Kochi Takayoshi)
15553
15554Fix early-boot table parsing (Bjorn Helgaas)
15555
15556
155573) iASL Compiler/Disassembler
15558
15559Reworked the compiler options to make them more consistent and to
15560use two-letter options where appropriate.  We were running out of
15561sensible letters.   This may break some makefiles, so check the
15562current options list by invoking the compiler with no parameters.
15563
15564Completed the design and implementation of the ASL namepath
15565optimization option for the compiler.  This option optimizes all
15566references to named objects to the shortest possible path.  The
15567first attempt tries to utilize a single nameseg (4 characters) and
15568the "search-to-root" algorithm used by the interpreter.  If that
15569cannot be used (because either the name is not in the search path
15570or there is a conflict with another object with the same name),
15571the pathname is optimized using the carat prefix (usually a
15572shorter string than specifying the entire path from the root.)
15573
15574Implemented support to obtain the DSDT from the Windows registry
15575(when the disassembly option is specified with no input file).
15576Added this code as the implementation for AcpiOsTableOverride in
15577the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
15578utility) to scan memory for the DSDT to the AcpiOsTableOverride
15579function in the DOS OSL to make the disassembler truly OS
15580independent.
15581
15582Implemented a new option to disassemble and compile in one step.
15583When used without an input filename, this option will grab the
15584DSDT from the local machine, disassemble it, and compile it in one
15585step.
15586
15587Added a warning message for invalid escapes (a backslash followed
15588by any character other than the allowable escapes).  This catches
15589the quoted string error "\_SB_" (which should be "\\_SB_" ).
15590
15591Also, there are numerous instances in the ACPI specification where
15592this error occurs.
15593
15594Added a compiler option to disable all optimizations.  This is
15595basically the "compatibility mode" because by using this option,
15596the AML code will come out exactly the same as other ASL
15597compilers.
15598
15599Added error messages for incorrectly ordered dependent resource
15600functions.  This includes: missing EndDependentFn macro at end of
15601dependent resource list, nested dependent function macros (both
15602start and end), and missing StartDependentFn macro.  These are
15603common errors that should be caught at compile time.
15604
15605Implemented _OSI support for the disassembler and compiler.  _OSI
15606must be included in the namespace for proper disassembly (because
15607the disassembler must know the number of arguments.)
15608
15609Added an "optimization" message type that is optional (off by
15610default).  This message is used for all optimizations - including
15611constant folding, integer optimization, and namepath optimization.
15612
15613----------------------------------------
1561425 July 2002.  Summary of changes for this release.
15615
15616
156171) ACPI CA Core Subsystem Version 20020725:
15618
15619The AML Disassembler has been enhanced to produce compilable ASL
15620code and has been integrated into the iASL compiler (see below) as
15621well as the single-step disassembly for the AML debugger and the
15622disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
15623resource templates and macros are fully supported.  The
15624disassembler has been tested on over 30 different AML files,
15625producing identical AML when the resulting disassembled ASL file
15626is recompiled with the same ASL compiler.
15627
15628Modified the Resource Manager to allow zero interrupts and zero
15629dma channels during the GetCurrentResources call.  This was
15630causing problems on some platforms.
15631
15632Added the AcpiOsRedirectOutput interface to the OSL to simplify
15633output redirection for the AcpiOsPrintf and AcpiOsVprintf
15634interfaces.
15635
15636Code and Data Size: Current core subsystem library sizes are shown
15637below.  These are the code and data sizes for the acpica.lib
15638produced by the Microsoft Visual C++ 6.0 compiler, and these
15639values do not include any ACPI driver or OSPM code.  The debug
15640version of the code includes the debug output trace mechanism and
15641has a larger code and data size.  Note that these values will vary
15642depending on the efficiency of the compiler and the compiler
15643options used during generation.
15644
15645  Previous Release
15646    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15647    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15648  Current Release:
15649    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15650    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15651
15652
156532) Linux
15654
15655Fixed a panic in the EC driver (Dominik Brodowski)
15656
15657Implemented checksum of the R/XSDT itself during Linux table scan
15658(Richard Schaal)
15659
15660
156613) iASL compiler
15662
15663The AML disassembler is integrated into the compiler.  The "-d"
15664option invokes the disassembler  to completely disassemble an
15665input AML file, producing as output a text ASL file with the
15666extension ".dsl" (to avoid name collisions with existing .asl
15667source files.)  A future enhancement will allow the disassembler
15668to obtain the BIOS DSDT from the registry under Windows.
15669
15670Fixed a problem with the VendorShort and VendorLong resource
15671descriptors where an invalid AML sequence was created.
15672
15673Implemented a fix for BufferData term in the ASL parser.  It was
15674inadvertently defined twice, allowing invalid syntax to pass and
15675causing reduction conflicts.
15676
15677Fixed a problem where the Ones opcode could get converted to a
15678value of zero if "Ones" was used where a byte, word or dword value
15679was expected.  The 64-bit value is now truncated to the correct
15680size with the correct value.
15681
15682
15683
15684----------------------------------------
1568502 July 2002.  Summary of changes for this release.
15686
15687
156881) ACPI CA Core Subsystem Version 20020702:
15689
15690The Table Manager code has been restructured to add several new
15691features.  Tables that are not required by the core subsystem
15692(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
15693validated in any way and are returned from AcpiGetFirmwareTable if
15694requested.  The AcpiOsTableOverride interface is now called for
15695each table that is loaded by the subsystem in order to allow the
15696host to override any table it chooses.  Previously, only the DSDT
15697could be overridden.  Added one new files, tbrsdt.c and
15698tbgetall.c.
15699
15700Fixed a problem with the conversion of internal package objects to
15701external objects (when a package is returned from a control
15702method.)  The return buffer length was set to zero instead of the
15703proper length of the package object.
15704
15705Fixed a reported problem with the use of the RefOf and DeRefOf
15706operators when passing reference arguments to control methods.  A
15707new type of Reference object is used internally for references
15708produced by the RefOf operator.
15709
15710Added additional error messages in the Resource Manager to explain
15711AE_BAD_DATA errors when they occur during resource parsing.
15712
15713Split the AcpiEnableSubsystem into two primitives to enable a
15714finer granularity initialization sequence.  These two calls should
15715be called in this order: AcpiEnableSubsystem (flags),
15716AcpiInitializeObjects (flags).  The flags parameter remains the
15717same.
15718
15719
157202) Linux
15721
15722Updated the ACPI utilities module to understand the new style of
15723fully resolved package objects that are now returned from the core
15724subsystem.  This eliminates errors of the form:
15725
15726    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
15727    acpi_utils-0430 [145] acpi_evaluate_reference:
15728        Invalid element in package (not a device reference)
15729
15730The method evaluation utility uses the new buffer allocation
15731scheme instead of calling AcpiEvaluate Object twice.
15732
15733Added support for ECDT. This allows the use of the Embedded
15734
15735Controller before the namespace has been fully initialized, which
15736is necessary for ACPI 2.0 support, and for some laptops to
15737initialize properly. (Laptops using ECDT are still rare, so only
15738limited testing was performed of the added functionality.)
15739
15740Fixed memory leaks in the EC driver.
15741
15742Eliminated a brittle code structure in acpi_bus_init().
15743
15744Eliminated the acpi_evaluate() helper function in utils.c. It is
15745no longer needed since acpi_evaluate_object can optionally
15746allocate memory for the return object.
15747
15748Implemented fix for keyboard hang when getting battery readings on
15749some systems (Stephen White)
15750
15751PCI IRQ routing update (Dominik Brodowski)
15752
15753Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
15754support
15755
15756----------------------------------------
1575711 June 2002.  Summary of changes for this release.
15758
15759
157601) ACPI CA Core Subsystem Version 20020611:
15761
15762Fixed a reported problem where constants such as Zero and One
15763appearing within _PRT packages were not handled correctly within
15764the resource manager code.  Originally reported against the ASL
15765compiler because the code generator now optimizes integers to
15766their minimal AML representation (i.e. AML constants if possible.)
15767The _PRT code now handles all AML constant opcodes correctly
15768(Zero, One, Ones, Revision).
15769
15770Fixed a problem with the Concatenate operator in the AML
15771interpreter where a buffer result object was incorrectly marked as
15772not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
15773
15774All package sub-objects are now fully resolved before they are
15775returned from the external ACPI interfaces.  This means that name
15776strings are resolved to object handles, and constant operators
15777(Zero, One, Ones, Revision) are resolved to Integers.
15778
15779Implemented immediate resolution of the AML Constant opcodes
15780(Zero, One, Ones, Revision) to Integer objects upon detection
15781within the AML stream. This has simplified and reduced the
15782generated code size of the subsystem by eliminating about 10
15783switch statements for these constants (which previously were
15784contained in Reference objects.)  The complicating issues are that
15785the Zero opcode is used as a "placeholder" for unspecified
15786optional target operands and stores to constants are defined to be
15787no-ops.
15788
15789Code and Data Size: Current core subsystem library sizes are shown
15790below. These are the code and data sizes for the acpica.lib
15791produced by the Microsoft Visual C++ 6.0 compiler, and these
15792values do not include any ACPI driver or OSPM code.  The debug
15793version of the code includes the debug output trace mechanism and
15794has a larger code and data size.  Note that these values will vary
15795depending on the efficiency of the compiler and the compiler
15796options used during generation.
15797
15798  Previous Release
15799    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15800    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15801  Current Release:
15802    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15803    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15804
15805
158062) Linux
15807
15808
15809Added preliminary support for obtaining _TRA data for PCI root
15810bridges (Bjorn Helgaas).
15811
15812
158133) iASL Compiler Version X2046:
15814
15815Fixed a problem where the "_DDN" reserved name was defined to be a
15816control method with one argument.  There are no arguments, and
15817_DDN does not have to be a control method.
15818
15819Fixed a problem with the Linux version of the compiler where the
15820source lines printed with error messages were the wrong lines.
15821This turned out to be the "LF versus CR/LF" difference between
15822Windows and Unix.  This appears to be the longstanding issue
15823concerning listing output and error messages.
15824
15825Fixed a problem with the Linux version of compiler where opcode
15826names within error messages were wrong.  This was caused by a
15827slight difference in the output of the Flex tool on Linux versus
15828Windows.
15829
15830Fixed a problem with the Linux compiler where the hex output files
15831contained some garbage data caused by an internal buffer overrun.
15832
15833
15834----------------------------------------
1583517 May 2002.  Summary of changes for this release.
15836
15837
158381) ACPI CA Core Subsystem Version 20020517:
15839
15840Implemented a workaround to an BIOS bug discovered on the HP
15841OmniBook where the FADT revision number and the table size are
15842inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
15843behavior is to fallback to using only the ACPI 1.0 fields of the
15844FADT if the table is too small to be a ACPI 2.0 table as claimed
15845by the revision number.  Although this is a BIOS bug, this is a
15846case where the workaround is simple enough and with no side
15847effects, so it seemed prudent to add it.  A warning message is
15848issued, however.
15849
15850Implemented minimum size checks for the fixed-length ACPI tables -
15851- the FADT and FACS, as well as consistency checks between the
15852revision number and the table size.
15853
15854Fixed a reported problem in the table override support where the
15855new table pointer was incorrectly treated as a physical address
15856instead of a logical address.
15857
15858Eliminated the use of the AE_AML_ERROR exception and replaced it
15859with more descriptive codes.
15860
15861Fixed a problem where an exception would occur if an ASL Field was
15862defined with no named Field Units underneath it (used by some
15863index fields).
15864
15865Code and Data Size: Current core subsystem library sizes are shown
15866below.  These are the code and data sizes for the acpica.lib
15867produced by the Microsoft Visual C++ 6.0 compiler, and these
15868values do not include any ACPI driver or OSPM code.  The debug
15869version of the code includes the debug output trace mechanism and
15870has a larger code and data size.  Note that these values will vary
15871depending on the efficiency of the compiler and the compiler
15872options used during generation.
15873
15874  Previous Release
15875    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15876    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15877  Current Release:
15878    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15879    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15880
15881
15882
158832) Linux
15884
15885Much work done on ACPI init (MADT and PCI IRQ routing support).
15886(Paul D. and Dominik Brodowski)
15887
15888Fix PCI IRQ-related panic on boot (Sam Revitch)
15889
15890Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
15891
15892Fix "MHz" typo (Dominik Brodowski)
15893
15894Fix RTC year 2000 issue (Dominik Brodowski)
15895
15896Preclude multiple button proc entries (Eric Brunet)
15897
15898Moved arch-specific code out of include/platform/aclinux.h
15899
159003) iASL Compiler Version X2044:
15901
15902Implemented error checking for the string used in the EISAID macro
15903(Usually used in the definition of the _HID object.)  The code now
15904strictly enforces the PnP format - exactly 7 characters, 3
15905uppercase letters and 4 hex digits.
15906
15907If a raw string is used in the definition of the _HID object
15908(instead of the EISAID macro), the string must contain all
15909alphanumeric characters (e.g., "*PNP0011" is not allowed because
15910of the asterisk.)
15911
15912Implemented checking for invalid use of ACPI reserved names for
15913most of the name creation operators (Name, Device, Event, Mutex,
15914OperationRegion, PowerResource, Processor, and ThermalZone.)
15915Previously, this check was only performed for control methods.
15916
15917Implemented an additional check on the Name operator to emit an
15918error if a reserved name that must be implemented in ASL as a
15919control method is used.  We know that a reserved name must be a
15920method if it is defined with input arguments.
15921
15922The warning emitted when a namespace object reference is not found
15923during the cross reference phase has been changed into an error.
15924The "External" directive should be used for names defined in other
15925modules.
15926
15927
159284) Tools and Utilities
15929
15930The 16-bit tools (adump16 and aexec16) have been regenerated and
15931tested.
15932
15933Fixed a problem with the output of both acpidump and adump16 where
15934the indentation of closing parentheses and brackets was not
15935
15936aligned properly with the parent block.
15937
15938
15939----------------------------------------
1594003 May 2002.  Summary of changes for this release.
15941
15942
159431) ACPI CA Core Subsystem Version 20020503:
15944
15945Added support a new OSL interface that allows the host operating
15946
15947system software to override the DSDT found in the firmware -
15948AcpiOsTableOverride.  With this interface, the OSL can examine the
15949version of the firmware DSDT and replace it with a different one
15950if desired.
15951
15952Added new external interfaces for accessing ACPI registers from
15953device drivers and other system software - AcpiGetRegister and
15954AcpiSetRegister.  This was simply an externalization of the
15955existing AcpiHwBitRegister interfaces.
15956
15957Fixed a regression introduced in the previous build where the
15958ASL/AML CreateField operator always returned an error,
15959"destination must be a NS Node".
15960
15961Extended the maximum time (before failure) to successfully enable
15962ACPI mode to 3 seconds.
15963
15964Code and Data Size: Current core subsystem library sizes are shown
15965below.  These are the code and data sizes for the acpica.lib
15966produced by the Microsoft Visual C++ 6.0 compiler, and these
15967values do not include any ACPI driver or OSPM code.  The debug
15968version of the code includes the debug output trace mechanism and
15969has a larger code and data size.  Note that these values will vary
15970depending on the efficiency of the compiler and the compiler
15971options used during generation.
15972
15973  Previous Release
15974    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15975    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15976  Current Release:
15977    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15978    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15979
15980
159812) Linux
15982
15983Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
15984free. While 3 out of 4 of our in-house systems work fine, the last
15985one still hangs when testing the LAPIC timer.
15986
15987Renamed many files in 2.5 kernel release to omit "acpi_" from the
15988name.
15989
15990Added warning on boot for Presario 711FR.
15991
15992Sleep improvements (Pavel Machek)
15993
15994ACPI can now be built without CONFIG_PCI enabled.
15995
15996IA64: Fixed memory map functions (JI Lee)
15997
15998
159993) iASL Compiler Version X2043:
16000
16001Added support to allow the compiler to be integrated into the MS
16002VC++ development environment for one-button compilation of single
16003files or entire projects -- with error-to-source-line mapping.
16004
16005Implemented support for compile-time constant folding for the
16006Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16007specification.  This allows the ASL writer to use expressions
16008instead of Integer/Buffer/String constants in terms that must
16009evaluate to constants at compile time and will also simplify the
16010emitted AML in any such sub-expressions that can be folded
16011(evaluated at compile-time.)  This increases the size of the
16012compiler significantly because a portion of the ACPI CA AML
16013interpreter is included within the compiler in order to pre-
16014evaluate constant expressions.
16015
16016
16017Fixed a problem with the "Unicode" ASL macro that caused the
16018compiler to fault.  (This macro is used in conjunction with the
16019_STR reserved name.)
16020
16021Implemented an AML opcode optimization to use the Zero, One, and
16022Ones opcodes where possible to further reduce the size of integer
16023constants and thus reduce the overall size of the generated AML
16024code.
16025
16026Implemented error checking for new reserved terms for ACPI version
160272.0A.
16028
16029Implemented the -qr option to display the current list of ACPI
16030reserved names known to the compiler.
16031
16032Implemented the -qc option to display the current list of ASL
16033operators that are allowed within constant expressions and can
16034therefore be folded at compile time if the operands are constants.
16035
16036
160374) Documentation
16038
16039Updated the Programmer's Reference for new interfaces, data types,
16040and memory allocation model options.
16041
16042Updated the iASL Compiler User Reference to apply new format and
16043add information about new features and options.
16044
16045----------------------------------------
1604619 April 2002.  Summary of changes for this release.
16047
160481) ACPI CA Core Subsystem Version 20020419:
16049
16050The source code base for the Core Subsystem has been completely
16051cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16052versions.  The Lint option files used are included in the
16053/acpi/generate/lint directory.
16054
16055Implemented enhanced status/error checking across the entire
16056Hardware manager subsystem.  Any hardware errors (reported from
16057the OSL) are now bubbled up and will abort a running control
16058method.
16059
16060
16061Fixed a problem where the per-ACPI-table integer width (32 or 64)
16062was stored only with control method nodes, causing a fault when
16063non-control method code was executed during table loading.  The
16064solution implemented uses a global variable to indicate table
16065width across the entire ACPI subsystem.  Therefore, ACPI CA does
16066not support mixed integer widths across different ACPI tables
16067(DSDT, SSDT).
16068
16069Fixed a problem where NULL extended fields (X fields) in an ACPI
160702.0 ACPI FADT caused the table load to fail.  Although the
16071existing ACPI specification is a bit fuzzy on this topic, the new
16072behavior is to fall back on a ACPI 1.0 field if the corresponding
16073ACPI 2.0 X field is zero (even though the table revision indicates
16074a full ACPI 2.0 table.)  The ACPI specification will be updated to
16075clarify this issue.
16076
16077Fixed a problem with the SystemMemory operation region handler
16078where memory was always accessed byte-wise even if the AML-
16079specified access width was larger than a byte.  This caused
16080problems on systems with memory-mapped I/O.  Memory is now
16081accessed with the width specified.  On systems that do not support
16082non-aligned transfers, a check is made to guarantee proper address
16083alignment before proceeding in order to avoid an AML-caused
16084alignment fault within the kernel.
16085
16086
16087Fixed a problem with the ExtendedIrq resource where only one byte
16088of the 4-byte Irq field was extracted.
16089
16090Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16091function was out of date and required a rewrite.
16092
16093Code and Data Size: Current core subsystem library sizes are shown
16094below.  These are the code and data sizes for the acpica.lib
16095produced by the Microsoft Visual C++ 6.0 compiler, and these
16096values do not include any ACPI driver or OSPM code.  The debug
16097version of the code includes the debug output trace mechanism and
16098has a larger code and data size.  Note that these values will vary
16099depending on the efficiency of the compiler and the compiler
16100options used during generation.
16101
16102  Previous Release
16103    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16104    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16105  Current Release:
16106    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16107    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16108
16109
161102) Linux
16111
16112PCI IRQ routing fixes (Dominik Brodowski)
16113
16114
161153) iASL Compiler Version X2042:
16116
16117Implemented an additional compile-time error check for a field
16118unit whose size + minimum access width would cause a run-time
16119access beyond the end-of-region.  Previously, only the field size
16120itself was checked.
16121
16122The Core subsystem and iASL compiler now share a common parse
16123object in preparation for compile-time evaluation of the type
161243/4/5 ASL operators.
16125
16126
16127----------------------------------------
16128Summary of changes for this release: 03_29_02
16129
161301) ACPI CA Core Subsystem Version 20020329:
16131
16132Implemented support for late evaluation of TermArg operands to
16133Buffer and Package objects.  This allows complex expressions to be
16134used in the declarations of these object types.
16135
16136Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
161371.0, if the field was larger than 32 bits, it was returned as a
16138buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16139the field is returned as a buffer only if the field is larger than
1614064 bits.  The TableRevision is now considered when making this
16141conversion to avoid incompatibility with existing ASL code.
16142
16143Implemented logical addressing for AcpiOsGetRootPointer.  This
16144allows an RSDP with either a logical or physical address.  With
16145this support, the host OS can now override all ACPI tables with
16146one logical RSDP.  Includes implementation of  "typed" pointer
16147support to allow a common data type for both physical and logical
16148pointers internally.  This required a change to the
16149AcpiOsGetRootPointer interface.
16150
16151Implemented the use of ACPI 2.0 Generic Address Structures for all
16152GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16153mapped I/O for these ACPI features.
16154
16155Initialization now ignores not only non-required tables (All
16156tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16157not validate the table headers of unrecognized tables.
16158
16159Fixed a problem where a notify handler could only be
16160installed/removed on an object of type Device.  All "notify"
16161
16162objects are now supported -- Devices, Processor, Power, and
16163Thermal.
16164
16165Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16166critical information is returned when this debug level is enabled.
16167
16168Code and Data Size: Current core subsystem library sizes are shown
16169below.  These are the code and data sizes for the acpica.lib
16170produced by the Microsoft Visual C++ 6.0 compiler, and these
16171values do not include any ACPI driver or OSPM code.  The debug
16172version of the code includes the debug output trace mechanism and
16173has a larger code and data size.  Note that these values will vary
16174depending on the efficiency of the compiler and the compiler
16175options used during generation.
16176
16177  Previous Release
16178    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16179    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16180  Current Release:
16181    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16182    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16183
16184
161852) Linux:
16186
16187The processor driver (acpi_processor.c) now fully supports ACPI
161882.0-based processor performance control (e.g. Intel(R)
16189SpeedStep(TM) technology) Note that older laptops that only have
16190the Intel "applet" interface are not supported through this.  The
16191'limit' and 'performance' interface (/proc) are fully functional.
16192[Note that basic policy for controlling performance state
16193transitions will be included in the next version of ospmd.]  The
16194idle handler was modified to more aggressively use C2, and PIIX4
16195errata handling underwent a complete overhaul (big thanks to
16196Dominik Brodowski).
16197
16198Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16199based devices in the ACPI namespace are now dynamically bound
16200(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16201This allows, among other things, ACPI to resolve bus numbers for
16202subordinate PCI bridges.
16203
16204Enhanced PCI IRQ routing to get the proper bus number for _PRT
16205entries defined underneath PCI bridges.
16206
16207Added IBM 600E to bad bios list due to invalid _ADR value for
16208PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16209
16210In the process of adding full MADT support (e.g. IOAPIC) for IA32
16211(acpi.c, mpparse.c) -- stay tuned.
16212
16213Added back visual differentiation between fixed-feature and
16214control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16215button/power/PWRF) to simplify button identification.
16216
16217We no longer use -Wno-unused when compiling debug. Please ignore
16218any "_THIS_MODULE defined but not used" messages.
16219
16220Can now shut down the system using "magic sysrq" key.
16221
16222
162233) iASL Compiler version 2041:
16224
16225Fixed a problem where conversion errors for hex/octal/decimal
16226constants were not reported.
16227
16228Implemented a fix for the General Register template Address field.
16229This field was 8 bits when it should be 64.
16230
16231Fixed a problem where errors/warnings were no longer being emitted
16232within the listing output file.
16233
16234Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16235exactly 4 characters, alphanumeric only.
16236
16237
16238
16239
16240----------------------------------------
16241Summary of changes for this release: 03_08_02
16242
16243
162441) ACPI CA Core Subsystem Version 20020308:
16245
16246Fixed a problem with AML Fields where the use of the "AccessAny"
16247keyword could cause an interpreter error due to attempting to read
16248or write beyond the end of the parent Operation Region.
16249
16250Fixed a problem in the SystemMemory Operation Region handler where
16251an attempt was made to map memory beyond the end of the region.
16252This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16253errors on some Linux systems.
16254
16255Fixed a problem where the interpreter/namespace "search to root"
16256algorithm was not functioning for some object types.  Relaxed the
16257internal restriction on the search to allow upsearches for all
16258external object types as well as most internal types.
16259
16260
162612) Linux:
16262
16263We now use safe_halt() macro versus individual calls to sti | hlt.
16264
16265Writing to the processor limit interface should now work. "echo 1"
16266will increase the limit, 2 will decrease, and 0 will reset to the
16267
16268default.
16269
16270
162713) ASL compiler:
16272
16273Fixed segfault on Linux version.
16274
16275
16276----------------------------------------
16277Summary of changes for this release: 02_25_02
16278
162791) ACPI CA Core Subsystem:
16280
16281
16282Fixed a problem where the GPE bit masks were not initialized
16283properly, causing erratic GPE behavior.
16284
16285Implemented limited support for multiple calling conventions.  The
16286code can be generated with either the VPL (variable parameter
16287list, or "C") convention, or the FPL (fixed parameter list, or
16288"Pascal") convention.  The core subsystem is about 3.4% smaller
16289when generated with FPL.
16290
16291
162922) Linux
16293
16294Re-add some /proc/acpi/event functionality that was lost during
16295the rewrite
16296
16297Resolved issue with /proc events for fixed-feature buttons showing
16298up as the system device.
16299
16300Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16301
16302Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16303
16304Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16305
16306Fixed limit interface & usage to fix bugs with passive cooling
16307hysterisis.
16308
16309Restructured PRT support.
16310
16311
16312----------------------------------------
16313Summary of changes for this label: 02_14_02
16314
16315
163161) ACPI CA Core Subsystem:
16317
16318Implemented support in AcpiLoadTable to allow loading of FACS and
16319FADT tables.
16320
16321Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
16322been removed.  All 64-bit platforms should be migrated to the ACPI
163232.0 tables.  The actbl71.h header has been removed from the source
16324tree.
16325
16326All C macros defined within the subsystem have been prefixed with
16327"ACPI_" to avoid collision with other system include files.
16328
16329Removed the return value for the two AcpiOsPrint interfaces, since
16330it is never used and causes lint warnings for ignoring the return
16331value.
16332
16333Added error checking to all internal mutex acquire and release
16334calls.  Although a failure from one of these interfaces is
16335probably a fatal system error, these checks will cause the
16336immediate abort of the currently executing method or interface.
16337
16338Fixed a problem where the AcpiSetCurrentResources interface could
16339fault.  This was a side effect of the deployment of the new memory
16340allocation model.
16341
16342Fixed a couple of problems with the Global Lock support introduced
16343in the last major build.  The "common" (1.0/2.0) internal FACS was
16344being overwritten with the FACS signature and clobbering the
16345Global Lock pointer.  Also, the actual firmware FACS was being
16346unmapped after construction of the "common" FACS, preventing
16347access to the actual Global Lock field within it.  The "common"
16348internal FACS is no longer installed as an actual ACPI table; it
16349is used simply as a global.
16350
16351Code and Data Size: Current core subsystem library sizes are shown
16352below.  These are the code and data sizes for the acpica.lib
16353produced by the Microsoft Visual C++ 6.0 compiler, and these
16354values do not include any ACPI driver or OSPM code.  The debug
16355version of the code includes the debug output trace mechanism and
16356has a larger code and data size.  Note that these values will vary
16357depending on the efficiency of the compiler and the compiler
16358options used during generation.
16359
16360  Previous Release (02_07_01)
16361    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16362    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16363  Current Release:
16364    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16365    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16366
16367
163682) Linux
16369
16370Updated Linux-specific code for core macro and OSL interface
16371changes described above.
16372
16373Improved /proc/acpi/event. It now can be opened only once and has
16374proper poll functionality.
16375
16376Fixed and restructured power management (acpi_bus).
16377
16378Only create /proc "view by type" when devices of that class exist.
16379
16380Fixed "charging/discharging" bug (and others) in acpi_battery.
16381
16382Improved thermal zone code.
16383
16384
163853) ASL Compiler, version X2039:
16386
16387
16388Implemented the new compiler restriction on ASL String hex/octal
16389escapes to non-null, ASCII values.  An error results if an invalid
16390value is used.  (This will require an ACPI 2.0 specification
16391change.)
16392
16393AML object labels that are output to the optional C and ASM source
16394are now prefixed with both the ACPI table signature and table ID
16395to help guarantee uniqueness within a large BIOS project.
16396
16397
16398----------------------------------------
16399Summary of changes for this label: 02_01_02
16400
164011) ACPI CA Core Subsystem:
16402
16403ACPI 2.0 support is complete in the entire Core Subsystem and the
16404ASL compiler. All new ACPI 2.0 operators are implemented and all
16405other changes for ACPI 2.0 support are complete.  With
16406simultaneous code and data optimizations throughout the subsystem,
16407ACPI 2.0 support has been implemented with almost no additional
16408cost in terms of code and data size.
16409
16410Implemented a new mechanism for allocation of return buffers.  If
16411the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
16412be allocated on behalf of the caller.  Consolidated all return
16413buffer validation and allocation to a common procedure.  Return
16414buffers will be allocated via the primary OSL allocation interface
16415since it appears that a separate pool is not needed by most users.
16416If a separate pool is required for these buffers, the caller can
16417still use the original mechanism and pre-allocate the buffer(s).
16418
16419Implemented support for string operands within the DerefOf
16420operator.
16421
16422Restructured the Hardware and Event managers to be table driven,
16423simplifying the source code and reducing the amount of generated
16424code.
16425
16426Split the common read/write low-level ACPI register bitfield
16427procedure into a separate read and write, simplifying the code
16428considerably.
16429
16430Obsoleted the AcpiOsCallocate OSL interface.  This interface was
16431used only a handful of times and didn't have enough critical mass
16432for a separate interface.  Replaced with a common calloc procedure
16433in the core.
16434
16435Fixed a reported problem with the GPE number mapping mechanism
16436that allows GPE1 numbers to be non-contiguous with GPE0.
16437Reorganized the GPE information and shrunk a large array that was
16438originally large enough to hold info for all possible GPEs (256)
16439to simply large enough to hold all GPEs up to the largest GPE
16440number on the machine.
16441
16442Fixed a reported problem with resource structure alignment on 64-
16443bit platforms.
16444
16445Changed the AcpiEnableEvent and AcpiDisableEvent external
16446interfaces to not require any flags for the common case of
16447enabling/disabling a GPE.
16448
16449Implemented support to allow a "Notify" on a Processor object.
16450
16451Most TBDs in comments within the source code have been resolved
16452and eliminated.
16453
16454
16455Fixed a problem in the interpreter where a standalone parent
16456prefix (^) was not handled correctly in the interpreter and
16457debugger.
16458
16459Removed obsolete and unnecessary GPE save/restore code.
16460
16461Implemented Field support in the ASL Load operator.  This allows a
16462table to be loaded from a named field, in addition to loading a
16463table directly from an Operation Region.
16464
16465Implemented timeout and handle support in the external Global Lock
16466interfaces.
16467
16468Fixed a problem in the AcpiDump utility where pathnames were no
16469longer being generated correctly during the dump of named objects.
16470
16471Modified the AML debugger to give a full display of if/while
16472predicates instead of just one AML opcode at a time.  (The
16473predicate can have several nested ASL statements.)  The old method
16474was confusing during single stepping.
16475
16476Code and Data Size: Current core subsystem library sizes are shown
16477below. These are the code and data sizes for the acpica.lib
16478produced by the Microsoft Visual C++ 6.0 compiler, and these
16479values do not include any ACPI driver or OSPM code.  The debug
16480version of the code includes the debug output trace mechanism and
16481has a larger code and data size.  Note that these values will vary
16482depending on the efficiency of the compiler and the compiler
16483options used during generation.
16484
16485  Previous Release (12_18_01)
16486     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16487     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16488   Current Release:
16489     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16490     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16491
164922) Linux
16493
16494 Implemented fix for PIIX reverse throttling errata (Processor
16495driver)
16496
16497Added new Limit interface (Processor and Thermal drivers)
16498
16499New thermal policy (Thermal driver)
16500
16501Many updates to /proc
16502
16503Battery "low" event support (Battery driver)
16504
16505Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
16506
16507IA32 - IA64 initialization unification, no longer experimental
16508
16509Menuconfig options redesigned
16510
165113) ASL Compiler, version X2037:
16512
16513Implemented several new output features to simplify integration of
16514AML code into  firmware: 1) Output the AML in C source code with
16515labels for each named ASL object.  The    original ASL source code
16516is interleaved as C comments. 2) Output the AML in ASM source code
16517with labels and interleaved ASL    source. 3) Output the AML in
16518raw hex table form, in either C or ASM.
16519
16520Implemented support for optional string parameters to the
16521LoadTable operator.
16522
16523Completed support for embedded escape sequences within string
16524literals.  The compiler now supports all single character escapes
16525as well as the Octal and Hex escapes.  Note: the insertion of a
16526null byte into a string literal (via the hex/octal escape) causes
16527the string to be immediately terminated.  A warning is issued.
16528
16529Fixed a problem where incorrect AML was generated for the case
16530where an ASL namepath consists of a single parent prefix (
16531
16532) with no trailing name segments.
16533
16534The compiler has been successfully generated with a 64-bit C
16535compiler.
16536
16537
16538
16539
16540----------------------------------------
16541Summary of changes for this label: 12_18_01
16542
165431) Linux
16544
16545Enhanced blacklist with reason and severity fields. Any table's
16546signature may now be used to identify a blacklisted system.
16547
16548Call _PIC control method to inform the firmware which interrupt
16549model the OS is using. Turn on any disabled link devices.
16550
16551Cleaned up busmgr /proc error handling (Andreas Dilger)
16552
16553 2) ACPI CA Core Subsystem:
16554
16555Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
16556while loop)
16557
16558Completed implementation of the ACPI 2.0 "Continue",
16559"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
16560operators.  All new ACPI 2.0 operators are now implemented in both
16561the ASL compiler and the AML interpreter.  The only remaining ACPI
165622.0 task is support for the String data type in the DerefOf
16563operator.  Fixed a problem with AcquireMutex where the status code
16564was lost if the caller had to actually wait for the mutex.
16565
16566Increased the maximum ASL Field size from 64K bits to 4G bits.
16567
16568Completed implementation of the external Global Lock interfaces --
16569AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
16570Handler parameters were added.
16571
16572Completed another pass at removing warnings and issues when
16573compiling with 64-bit compilers.  The code now compiles cleanly
16574with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
16575add and subtract (diff) macros have changed considerably.
16576
16577
16578Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1657964-bit platforms, 32-bits on all others.  This type is used
16580wherever memory allocation and/or the C sizeof() operator is used,
16581and affects the OSL memory allocation interfaces AcpiOsAllocate
16582and AcpiOsCallocate.
16583
16584Implemented sticky user breakpoints in the AML debugger.
16585
16586Code and Data Size: Current core subsystem library sizes are shown
16587below. These are the code and data sizes for the acpica.lib
16588produced by the Microsoft Visual C++ 6.0 compiler, and these
16589values do not include any ACPI driver or OSPM code.  The debug
16590version of the code includes the debug output trace mechanism and
16591has a larger code and data size. Note that these values will vary
16592depending on the efficiency of the compiler and the compiler
16593options used during generation.
16594
16595  Previous Release (12_05_01)
16596     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16597     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16598   Current Release:
16599     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16600     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16601
16602 3) ASL Compiler, version X2034:
16603
16604Now checks for (and generates an error if detected) the use of a
16605Break or Continue statement without an enclosing While statement.
16606
16607
16608Successfully generated the compiler with the Intel 64-bit C
16609compiler.
16610
16611 ----------------------------------------
16612Summary of changes for this label: 12_05_01
16613
16614 1) ACPI CA Core Subsystem:
16615
16616The ACPI 2.0 CopyObject operator is fully implemented.  This
16617operator creates a new copy of an object (and is also used to
16618bypass the "implicit conversion" mechanism of the Store operator.)
16619
16620The ACPI 2.0 semantics for the SizeOf operator are fully
16621implemented.  The change is that performing a SizeOf on a
16622reference object causes an automatic dereference of the object to
16623tha actual value before the size is evaluated. This behavior was
16624undefined in ACPI 1.0.
16625
16626The ACPI 2.0 semantics for the Extended IRQ resource descriptor
16627have been implemented.  The interrupt polarity and mode are now
16628independently set.
16629
16630Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
16631appearing in Package objects were not properly converted to
16632integers when the internal Package was converted to an external
16633object (via the AcpiEvaluateObject interface.)
16634
16635Fixed a problem with the namespace object deletion mechanism for
16636objects created by control methods.  There were two parts to this
16637problem: 1) Objects created during the initialization phase method
16638parse were not being deleted, and 2) The object owner ID mechanism
16639to track objects was broken.
16640
16641Fixed a problem where the use of the ASL Scope operator within a
16642control method would result in an invalid opcode exception.
16643
16644Fixed a problem introduced in the previous label where the buffer
16645length required for the _PRT structure was not being returned
16646correctly.
16647
16648Code and Data Size: Current core subsystem library sizes are shown
16649below. These are the code and data sizes for the acpica.lib
16650produced by the Microsoft Visual C++ 6.0 compiler, and these
16651values do not include any ACPI driver or OSPM code.  The debug
16652version of the code includes the debug output trace mechanism and
16653has a larger code and data size.  Note that these values will vary
16654depending on the efficiency of the compiler and the compiler
16655options used during generation.
16656
16657  Previous Release (11_20_01)
16658     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16659     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16660
16661  Current Release:
16662     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16663     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16664
16665 2) Linux:
16666
16667Updated all files to apply cleanly against 2.4.16.
16668
16669Added basic PCI Interrupt Routing Table (PRT) support for IA32
16670(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
16671version supports both static and dyanmic PRT entries, but dynamic
16672entries are treated as if they were static (not yet
16673reconfigurable).  Architecture- specific code to use this data is
16674absent on IA32 but should be available shortly.
16675
16676Changed the initialization sequence to start the ACPI interpreter
16677(acpi_init) prior to initialization of the PCI driver (pci_init)
16678in init/main.c.  This ordering is required to support PRT and
16679facilitate other (future) enhancement.  A side effect is that the
16680ACPI bus driver and certain device drivers can no longer be loaded
16681as modules.
16682
16683Modified the 'make menuconfig' options to allow PCI Interrupt
16684Routing support to be included without the ACPI Bus and other
16685device drivers.
16686
16687 3) ASL Compiler, version X2033:
16688
16689Fixed some issues with the use of the new CopyObject and
16690DataTableRegion operators.  Both are fully functional.
16691
16692 ----------------------------------------
16693Summary of changes for this label: 11_20_01
16694
16695 20 November 2001.  Summary of changes for this release.
16696
16697 1) ACPI CA Core Subsystem:
16698
16699Updated Index support to match ACPI 2.0 semantics.  Storing a
16700Integer, String, or Buffer to an Index of a Buffer will store only
16701the least-significant byte of the source to the Indexed buffer
16702byte.  Multiple writes are not performed.
16703
16704Fixed a problem where the access type used in an AccessAs ASL
16705operator was not recorded correctly into the field object.
16706
16707Fixed a problem where ASL Event objects were created in a
16708signalled state. Events are now created in an unsignalled state.
16709
16710The internal object cache is now purged after table loading and
16711initialization to reduce the use of dynamic kernel memory -- on
16712the assumption that object use is greatest during the parse phase
16713of the entire table (versus the run-time use of individual control
16714methods.)
16715
16716ACPI 2.0 variable-length packages are now fully operational.
16717
16718Code and Data Size: Code and Data optimizations have permitted new
16719feature development with an actual reduction in the library size.
16720Current core subsystem library sizes are shown below.  These are
16721the code and data sizes for the acpica.lib produced by the
16722Microsoft Visual C++ 6.0 compiler, and these values do not include
16723any ACPI driver or OSPM code.  The debug version of the code
16724includes the debug output trace mechanism and has a larger code
16725and data size.  Note that these values will vary depending on the
16726efficiency of the compiler and the compiler options used during
16727generation.
16728
16729  Previous Release (11_09_01):
16730     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16731     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16732
16733  Current Release:
16734     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16735     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16736
16737 2) Linux:
16738
16739Enhanced the ACPI boot-time initialization code to allow the use
16740of Local APIC tables for processor enumeration on IA-32, and to
16741pave the way for a fully MPS-free boot (on SMP systems) in the
16742near future.  This functionality replaces
16743arch/i386/kernel/acpitables.c, which was introduced in an earlier
167442.4.15-preX release.  To enable this feature you must add
16745"acpi_boot=on" to the kernel command line -- see the help entry
16746for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
16747the works...
16748
16749Restructured the configuration options to allow boot-time table
16750parsing support without inclusion of the ACPI Interpreter (and
16751other) code.
16752
16753NOTE: This release does not include fixes for the reported events,
16754power-down, and thermal passive cooling issues (coming soon).
16755
16756 3) ASL Compiler:
16757
16758Added additional typechecking for Fields within restricted access
16759Operation Regions.  All fields within EC and CMOS regions must be
16760declared with ByteAcc. All fields withing SMBus regions must be
16761declared with the BufferAcc access type.
16762
16763Fixed a problem where the listing file output of control methods
16764no longer interleaved the actual AML code with the ASL source
16765code.
16766
16767
16768
16769
16770----------------------------------------
16771Summary of changes for this label: 11_09_01
16772
167731) ACPI CA Core Subsystem:
16774
16775Implemented ACPI 2.0-defined support for writes to fields with a
16776Buffer, String, or Integer source operand that is smaller than the
16777target field. In these cases, the source operand is zero-extended
16778to fill the target field.
16779
16780Fixed a problem where a Field starting bit offset (within the
16781parent operation region) was calculated incorrectly if the
16782
16783alignment of the field differed from the access width.  This
16784affected CreateWordField, CreateDwordField, CreateQwordField, and
16785possibly other fields that use the "AccessAny" keyword.
16786
16787Fixed a problem introduced in the 11_02_01 release where indirect
16788stores through method arguments did not operate correctly.
16789
167902) Linux:
16791
16792Implemented boot-time ACPI table parsing support
16793(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
16794facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
16795legacy BIOS interfaces (e.g. MPS) for the configuration of system
16796processors, memory, and interrupts during setup_arch().  Note that
16797this patch does not include the required architecture-specific
16798changes required to apply this information -- subsequent patches
16799will be posted for both IA32 and IA64 to achieve this.
16800
16801Added low-level sleep support for IA32 platforms, courtesy of Pat
16802Mochel. This allows IA32 systems to transition to/from various
16803sleeping states (e.g. S1, S3), although the lack of a centralized
16804driver model and power-manageable drivers will prevent its
16805(successful) use on most systems.
16806
16807Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
16808submenu, unified IA32 and IA64 options, added new "Boot using ACPI
16809tables" option, etc.
16810
16811Increased the default timeout for the EC driver from 1ms to 10ms
16812(1000 cycles of 10us) to try to address AE_TIME errors during EC
16813transactions.
16814
16815 ----------------------------------------
16816Summary of changes for this label: 11_02_01
16817
168181) ACPI CA Core Subsystem:
16819
16820ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
16821(QWordAcc keyword). All ACPI 2.0 64-bit support is now
16822implemented.
16823
16824OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
16825changes to support ACPI 2.0 Qword field access.  Read/Write
16826PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
16827accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
16828the value parameter for the address space handler interface is now
16829an ACPI_INTEGER.  OSL implementations of these interfaces must now
16830handle the case where the Width parameter is 64.
16831
16832Index Fields: Fixed a problem where unaligned bit assembly and
16833disassembly for IndexFields was not supported correctly.
16834
16835Index and Bank Fields:  Nested Index and Bank Fields are now
16836supported. During field access, a check is performed to ensure
16837that the value written to an Index or Bank register is not out of
16838the range of the register.  The Index (or Bank) register is
16839written before each access to the field data. Future support will
16840include allowing individual IndexFields to be wider than the
16841DataRegister width.
16842
16843Fields: Fixed a problem where the AML interpreter was incorrectly
16844attempting to write beyond the end of a Field/OpRegion.  This was
16845a boundary case that occurred when a DWORD field was written to a
16846BYTE access OpRegion, forcing multiple writes and causing the
16847interpreter to write one datum too many.
16848
16849Fields: Fixed a problem with Field/OpRegion access where the
16850starting bit address of a field was incorrectly calculated if the
16851current access type was wider than a byte (WordAcc, DwordAcc, or
16852QwordAcc).
16853
16854Fields: Fixed a problem where forward references to individual
16855FieldUnits (individual Field names within a Field definition) were
16856not resolved during the AML table load.
16857
16858Fields: Fixed a problem where forward references from a Field
16859definition to the parent Operation Region definition were not
16860resolved during the AML table load.
16861
16862Fields: Duplicate FieldUnit names within a scope are now detected
16863during AML table load.
16864
16865Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
16866returned an incorrect name for the root node.
16867
16868Code and Data Size: Code and Data optimizations have permitted new
16869feature development with an actual reduction in the library size.
16870Current core subsystem library sizes are shown below.  These are
16871the code and data sizes for the acpica.lib produced by the
16872Microsoft Visual C++ 6.0 compiler, and these values do not include
16873any ACPI driver or OSPM code.  The debug version of the code
16874includes the debug output trace mechanism and has a larger code
16875and data size.  Note that these values will vary depending on the
16876efficiency of the compiler and the compiler options used during
16877generation.
16878
16879  Previous Release (10_18_01):
16880     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16881     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16882
16883  Current Release:
16884     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16885     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16886
16887 2) Linux:
16888
16889Improved /proc processor output (Pavel Machek) Re-added
16890MODULE_LICENSE("GPL") to all modules.
16891
16892 3) ASL Compiler version X2030:
16893
16894Duplicate FieldUnit names within a scope are now detected and
16895flagged as errors.
16896
16897 4) Documentation:
16898
16899Programmer Reference updated to reflect OSL and address space
16900handler interface changes described above.
16901
16902----------------------------------------
16903Summary of changes for this label: 10_18_01
16904
16905ACPI CA Core Subsystem:
16906
16907Fixed a problem with the internal object reference count mechanism
16908that occasionally caused premature object deletion. This resolves
16909all of the outstanding problem reports where an object is deleted
16910in the middle of an interpreter evaluation.  Although this problem
16911only showed up in rather obscure cases, the solution to the
16912problem involved an adjustment of all reference counts involving
16913objects attached to namespace nodes.
16914
16915Fixed a problem with Field support in the interpreter where
16916writing to an aligned field whose length is an exact multiple (2
16917or greater) of the field access granularity would cause an attempt
16918to write beyond the end of the field.
16919
16920The top level AML opcode execution functions within the
16921interpreter have been renamed with a more meaningful and
16922consistent naming convention.  The modules exmonad.c and
16923exdyadic.c were eliminated.  New modules are exoparg1.c,
16924exoparg2.c, exoparg3.c, and exoparg6.c.
16925
16926Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
16927
16928Fixed a problem where the AML debugger was causing some internal
16929objects to not be deleted during subsystem termination.
16930
16931Fixed a problem with the external AcpiEvaluateObject interface
16932where the subsystem would fault if the named object to be
16933evaluated refered to a constant such as Zero, Ones, etc.
16934
16935Fixed a problem with IndexFields and BankFields where the
16936subsystem would fault if the index, data, or bank registers were
16937not defined in the same scope as the field itself.
16938
16939Added printf format string checking for compilers that support
16940this feature.  Corrected more than 50 instances of issues with
16941format specifiers within invocations of ACPI_DEBUG_PRINT
16942throughout the core subsystem code.
16943
16944The ASL "Revision" operator now returns the ACPI support level
16945implemented in the core - the value "2" since the ACPI 2.0 support
16946is more than 50% implemented.
16947
16948Enhanced the output of the AML debugger "dump namespace" command
16949to output in a more human-readable form.
16950
16951Current core subsystem library code sizes are shown below.  These
16952
16953are the code and data sizes for the acpica.lib produced by the
16954Microsoft Visual C++ 6.0 compiler, and these values do not include
16955any ACPI driver or OSPM code.  The debug version of the code
16956includes the full debug trace mechanism -- leading to a much
16957
16958larger code and data size.  Note that these values will vary
16959depending on the efficiency of the compiler and the compiler
16960options used during generation.
16961
16962     Previous Label (09_20_01):
16963     Non-Debug Version:    65K Code,     5K Data,     70K Total
16964     Debug Version:       138K Code,    58K Data,    196K Total
16965
16966     This Label:
16967
16968     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16969     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16970
16971Linux:
16972
16973Implemented a "Bad BIOS Blacklist" to track machines that have
16974known ASL/AML problems.
16975
16976Enhanced the /proc interface for the thermal zone driver and added
16977support for _HOT (the critical suspend trip point).  The 'info'
16978file now includes threshold/policy information, and allows setting
16979of _SCP (cooling preference) and _TZP (polling frequency) values
16980to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
16981frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
16982preference to the passive/quiet mode (if supported by the ASL).
16983
16984Implemented a workaround for a gcc bug that resuted in an OOPs
16985when loading the control method battery driver.
16986
16987 ----------------------------------------
16988Summary of changes for this label: 09_20_01
16989
16990 ACPI CA Core Subsystem:
16991
16992The AcpiEnableEvent and AcpiDisableEvent interfaces have been
16993modified to allow individual GPE levels to be flagged as wake-
16994enabled (i.e., these GPEs are to remain enabled when the platform
16995sleeps.)
16996
16997The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
16998support wake-enabled GPEs.  This means that upon entering the
16999sleep state, all GPEs that are not wake-enabled are disabled.
17000When leaving the sleep state, these GPEs are reenabled.
17001
17002A local double-precision divide/modulo module has been added to
17003enhance portability to OS kernels where a 64-bit math library is
17004not available.  The new module is "utmath.c".
17005
17006Several optimizations have been made to reduce the use of CPU
17007stack.  Originally over 2K, the maximum stack usage is now below
170082K at 1860  bytes (1.82k)
17009
17010Fixed a problem with the AcpiGetFirmwareTable interface where the
17011root table pointer was not mapped into a logical address properly.
17012
17013Fixed a problem where a NULL pointer was being dereferenced in the
17014interpreter code for the ASL Notify operator.
17015
17016Fixed a problem where the use of the ASL Revision operator
17017returned an error. This operator now returns the current version
17018of the ACPI CA core subsystem.
17019
17020Fixed a problem where objects passed as control method parameters
17021to AcpiEvaluateObject were always deleted at method termination.
17022However, these objects may end up being stored into the namespace
17023by the called method.  The object reference count mechanism was
17024applied to these objects instead of a force delete.
17025
17026Fixed a problem where static strings or buffers (contained in the
17027AML code) that are declared as package elements within the ASL
17028code could cause a fault because the interpreter would attempt to
17029delete them.  These objects are now marked with the "static
17030object" flag to prevent any attempt to delete them.
17031
17032Implemented an interpreter optimization to use operands directly
17033from the state object instead of extracting the operands to local
17034variables.  This reduces stack use and code size, and improves
17035performance.
17036
17037The module exxface.c was eliminated as it was an unnecessary extra
17038layer of code.
17039
17040Current core subsystem library code sizes are shown below.  These
17041are the code and data sizes for the acpica.lib produced by the
17042Microsoft Visual C++ 6.0 compiler, and these values do not include
17043any ACPI driver or OSPM code.  The debug version of the code
17044includes the full debug trace mechanism -- leading to a much
17045larger code and data size.  Note that these values will vary
17046depending on the efficiency of the compiler and the compiler
17047options used during generation.
17048
17049  Non-Debug Version:  65K Code,   5K Data,   70K Total
17050(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17051Total  (Previously 195K)
17052
17053Linux:
17054
17055Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17056Integer objects are now 64 bits wide
17057
17058All Acpi data types and structures are now in lower case.  Only
17059Acpi macros are upper case for differentiation.
17060
17061 Documentation:
17062
17063Changes to the external interfaces as described above.
17064
17065 ----------------------------------------
17066Summary of changes for this label: 08_31_01
17067
17068 ACPI CA Core Subsystem:
17069
17070A bug with interpreter implementation of the ASL Divide operator
17071was found and fixed.  The implicit function return value (not the
17072explicit store operands) was returning the remainder instead of
17073the quotient.  This was a longstanding bug and it fixes several
17074known outstanding issues on various platforms.
17075
17076The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17077been further optimized for size.  There are 700 invocations of the
17078DEBUG_PRINT macro alone, so each optimization reduces the size of
17079the debug version of the subsystem significantly.
17080
17081A stack trace mechanism has been implemented.  The maximum stack
17082usage is about 2K on 32-bit platforms.  The debugger command "stat
17083stack" will display the current maximum stack usage.
17084
17085All public symbols and global variables within the subsystem are
17086now prefixed with the string "Acpi".  This keeps all of the
17087symbols grouped together in a kernel map, and avoids conflicts
17088with other kernel subsystems.
17089
17090Most of the internal fixed lookup tables have been moved into the
17091code segment via the const operator.
17092
17093Several enhancements have been made to the interpreter to both
17094reduce the code size and improve performance.
17095
17096Current core subsystem library code sizes are shown below.  These
17097are the code and data sizes for the acpica.lib produced by the
17098Microsoft Visual C++ 6.0 compiler, and these values do not include
17099any ACPI driver or OSPM code.  The debug version of the code
17100includes the full debug trace mechanism which contains over 700
17101invocations of the DEBUG_PRINT macro, 500 function entry macro
17102invocations, and over 900 function exit macro invocations --
17103leading to a much larger code and data size.  Note that these
17104values will vary depending on the efficiency of the compiler and
17105the compiler options used during generation.
17106
17107        Non-Debug Version:  64K Code,   5K Data,   69K Total
17108Debug Version:     137K Code,  58K Data,  195K Total
17109
17110 Linux:
17111
17112Implemented wbinvd() macro, pending a kernel-wide definition.
17113
17114Fixed /proc/acpi/event to handle poll() and short reads.
17115
17116 ASL Compiler, version X2026:
17117
17118Fixed a problem introduced in the previous label where the AML
17119
17120code emitted for package objects produced packages with zero
17121length.
17122
17123 ----------------------------------------
17124Summary of changes for this label: 08_16_01
17125
17126ACPI CA Core Subsystem:
17127
17128The following ACPI 2.0 ASL operators have been implemented in the
17129AML interpreter (These are already supported by the Intel ASL
17130compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17131ToBuffer.  Support for 64-bit AML constants is implemented in the
17132AML parser, debugger, and disassembler.
17133
17134The internal memory tracking mechanism (leak detection code) has
17135been upgraded to reduce the memory overhead (a separate tracking
17136block is no longer allocated for each memory allocation), and now
17137supports all of the internal object caches.
17138
17139The data structures and code for the internal object caches have
17140been coelesced and optimized so that there is a single cache and
17141memory list data structure and a single group of functions that
17142implement generic cache management.  This has reduced the code
17143size in both the debug and release versions of the subsystem.
17144
17145The DEBUG_PRINT macro(s) have been optimized for size and replaced
17146by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17147different, because it generates a single call to an internal
17148function.  This results in a savings of about 90 bytes per
17149invocation, resulting in an overall code and data savings of about
1715016% in the debug version of the subsystem.
17151
17152 Linux:
17153
17154Fixed C3 disk corruption problems and re-enabled C3 on supporting
17155machines.
17156
17157Integrated low-level sleep code by Patrick Mochel.
17158
17159Further tweaked source code Linuxization.
17160
17161Other minor fixes.
17162
17163 ASL Compiler:
17164
17165Support for ACPI 2.0 variable length packages is fixed/completed.
17166
17167Fixed a problem where the optional length parameter for the ACPI
171682.0 ToString operator.
17169
17170Fixed multiple extraneous error messages when a syntax error is
17171detected within the declaration line of a control method.
17172
17173 ----------------------------------------
17174Summary of changes for this label: 07_17_01
17175
17176ACPI CA Core Subsystem:
17177
17178Added a new interface named AcpiGetFirmwareTable to obtain any
17179ACPI table via the ACPI signature.  The interface can be called at
17180any time during kernel initialization, even before the kernel
17181virtual memory manager is initialized and paging is enabled.  This
17182allows kernel subsystems to obtain ACPI tables very early, even
17183before the ACPI CA subsystem is initialized.
17184
17185Fixed a problem where Fields defined with the AnyAcc attribute
17186could be resolved to the incorrect address under the following
17187conditions: 1) the field width is larger than 8 bits and 2) the
17188parent operation region is not defined on a DWORD boundary.
17189
17190Fixed a problem where the interpreter is not being locked during
17191namespace initialization (during execution of the _INI control
17192methods), causing an error when an attempt is made to release it
17193later.
17194
17195ACPI 2.0 support in the AML Interpreter has begun and will be
17196ongoing throughout the rest of this year.  In this label, The Mod
17197operator is implemented.
17198
17199Added a new data type to contain full PCI addresses named
17200ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17201and Function values.
17202
17203 Linux:
17204
17205Enhanced the Linux version of the source code to change most
17206capitalized ACPI type names to lowercase. For example, all
17207instances of ACPI_STATUS are changed to acpi_status.  This will
17208result in a large diff, but the change is strictly cosmetic and
17209aligns the CA code closer to the Linux coding standard.
17210
17211OSL Interfaces:
17212
17213The interfaces to the PCI configuration space have been changed to
17214add the PCI Segment number and to split the single 32-bit combined
17215DeviceFunction field into two 16-bit fields.  This was
17216accomplished by moving the four values that define an address in
17217PCI configuration space (segment, bus, device, and function) to
17218the new ACPI_PCI_ID structure.
17219
17220The changes to the PCI configuration space interfaces led to a
17221reexamination of the complete set of address space access
17222interfaces for PCI, I/O, and Memory.  The previously existing 18
17223interfaces have proven difficult to maintain (any small change
17224must be propagated across at least 6 interfaces) and do not easily
17225allow for future expansion to 64 bits if necessary.  Also, on some
17226systems, it would not be appropriate to demultiplex the access
17227width (8, 16, 32,or 64) before calling the OSL if the
17228corresponding native OS interfaces contain a similar access width
17229parameter.  For these reasons, the 18 address space interfaces
17230have been replaced by these 6 new ones:
17231
17232AcpiOsReadPciConfiguration
17233AcpiOsWritePciConfiguration
17234AcpiOsReadMemory
17235AcpiOsWriteMemory
17236AcpiOsReadPort
17237AcpiOsWritePort
17238
17239Added a new interface named AcpiOsGetRootPointer to allow the OSL
17240to perform the platform and/or OS-specific actions necessary to
17241obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17242interface will simply call down to the CA core to perform the low-
17243memory search for the table.  On IA-64, the RSDP is obtained from
17244EFI.  Migrating this interface to the OSL allows the CA core to
17245
17246remain OS and platform independent.
17247
17248Added a new interface named AcpiOsSignal to provide a generic
17249"function code and pointer" interface for various miscellaneous
17250signals and notifications that must be made to the host OS.   The
17251first such signals are intended to support the ASL Fatal and
17252Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17253interface has been obsoleted.
17254
17255The definition of the AcpiFormatException interface has been
17256changed to simplify its use.  The caller no longer must supply a
17257buffer to the call; A pointer to a const string is now returned
17258directly.  This allows the call to be easily used in printf
17259statements, etc. since the caller does not have to manage a local
17260buffer.
17261
17262
17263 ASL Compiler, Version X2025:
17264
17265The ACPI 2.0 Switch/Case/Default operators have been implemented
17266and are fully functional.  They will work with all ACPI 1.0
17267interpreters, since the operators are simply translated to If/Else
17268pairs.
17269
17270The ACPI 2.0 ElseIf operator is implemented and will also work
17271with 1.0 interpreters, for the same reason.
17272
17273Implemented support for ACPI 2.0 variable-length packages.  These
17274packages have a separate opcode, and their size is determined by
17275the interpreter at run-time.
17276
17277Documentation The ACPI CA Programmer Reference has been updated to
17278reflect the new interfaces and changes to existing interfaces.
17279
17280 ------------------------------------------
17281Summary of changes for this label: 06_15_01
17282
17283 ACPI CA Core Subsystem:
17284
17285Fixed a problem where a DWORD-accessed field within a Buffer
17286object would get its byte address inadvertently rounded down to
17287the nearest DWORD.  Buffers are always Byte-accessible.
17288
17289 ASL Compiler, version X2024:
17290
17291Fixed a problem where the Switch() operator would either fault or
17292hang the compiler.  Note however, that the AML code for this ACPI
172932.0 operator is not yet implemented.
17294
17295Compiler uses the new AcpiOsGetTimer interface to obtain compile
17296timings.
17297
17298Implementation of the CreateField operator automatically converts
17299a reference to a named field within a resource descriptor from a
17300byte offset to a bit offset if required.
17301
17302Added some missing named fields from the resource descriptor
17303support. These are the names that are automatically created by the
17304compiler to reference fields within a descriptor.  They are only
17305valid at compile time and are not passed through to the AML
17306interpreter.
17307
17308Resource descriptor named fields are now typed as Integers and
17309subject to compile-time typechecking when used in expressions.
17310
17311 ------------------------------------------
17312Summary of changes for this label: 05_18_01
17313
17314 ACPI CA Core Subsystem:
17315
17316Fixed a couple of problems in the Field support code where bits
17317from adjacent fields could be returned along with the proper field
17318bits. Restructured the field support code to improve performance,
17319readability and maintainability.
17320
17321New DEBUG_PRINTP macro automatically inserts the procedure name
17322into the output, saving hundreds of copies of procedure name
17323strings within the source, shrinking the memory footprint of the
17324debug version of the core subsystem.
17325
17326 Source Code Structure:
17327
17328The source code directory tree was restructured to reflect the
17329current organization of the component architecture.  Some files
17330and directories have been moved and/or renamed.
17331
17332 Linux:
17333
17334Fixed leaking kacpidpc processes.
17335
17336Fixed queueing event data even when /proc/acpi/event is not
17337opened.
17338
17339 ASL Compiler, version X2020:
17340
17341Memory allocation performance enhancement - over 24X compile time
17342improvement on large ASL files.  Parse nodes and namestring
17343buffers are now allocated from a large internal compiler buffer.
17344
17345The temporary .SRC file is deleted unless the "-s" option is
17346specified
17347
17348The "-d" debug output option now sends all output to the .DBG file
17349instead of the console.
17350
17351"External" second parameter is now optional
17352
17353"ElseIf" syntax now properly allows the predicate
17354
17355Last operand to "Load" now recognized as a Target operand
17356
17357Debug object can now be used anywhere as a normal object.
17358
17359ResourceTemplate now returns an object of type BUFFER
17360
17361EISAID now returns an object of type INTEGER
17362
17363"Index" now works with a STRING operand
17364
17365"LoadTable" now accepts optional parameters
17366
17367"ToString" length parameter is now optional
17368
17369"Interrupt (ResourceType," parse error fixed.
17370
17371"Register" with a user-defined region space parse error fixed
17372
17373Escaped backslash at the end of a string ("\\") scan/parse error
17374fixed
17375
17376"Revision" is now an object of type INTEGER.
17377
17378
17379
17380------------------------------------------
17381Summary of changes for this label: 05_02_01
17382
17383Linux:
17384
17385/proc/acpi/event now blocks properly.
17386
17387Removed /proc/sys/acpi. You can still dump your DSDT from
17388/proc/acpi/dsdt.
17389
17390 ACPI CA Core Subsystem:
17391
17392Fixed a problem introduced in the previous label where some of the
17393"small" resource descriptor types were not recognized.
17394
17395Improved error messages for the case where an ASL Field is outside
17396the range of the parent operation region.
17397
17398 ASL Compiler, version X2018:
17399
17400
17401Added error detection for ASL Fields that extend beyond the length
17402of the parent operation region (only if the length of the region
17403is known at compile time.)  This includes fields that have a
17404minimum access width that is smaller than the parent region, and
17405individual field units that are partially or entirely beyond the
17406extent of the parent.
17407
17408
17409
17410------------------------------------------
17411Summary of changes for this label: 04_27_01
17412
17413 ACPI CA Core Subsystem:
17414
17415Fixed a problem where the namespace mutex could be released at the
17416wrong time during execution of AcpiRemoveAddressSpaceHandler.
17417
17418Added optional thread ID output for debug traces, to simplify
17419debugging of multiple threads.  Added context switch notification
17420when the debug code realizes that a different thread is now
17421executing ACPI code.
17422
17423Some additional external data types have been prefixed with the
17424string "ACPI_" for consistency.  This may effect existing code.
17425The data types affected are the external callback typedefs - e.g.,
17426
17427WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
17428
17429 Linux:
17430
17431Fixed an issue with the OSL semaphore implementation where a
17432thread was waking up with an error from receiving a SIGCHLD
17433signal.
17434
17435Linux version of ACPI CA now uses the system C library for string
17436manipulation routines instead of a local implementation.
17437
17438Cleaned up comments and removed TBDs.
17439
17440 ASL Compiler, version X2017:
17441
17442Enhanced error detection and reporting for all file I/O
17443operations.
17444
17445 Documentation:
17446
17447Programmer Reference updated to version 1.06.
17448
17449
17450
17451------------------------------------------
17452Summary of changes for this label: 04_13_01
17453
17454 ACPI CA Core Subsystem:
17455
17456Restructured support for BufferFields and RegionFields.
17457BankFields support is now fully operational.  All known 32-bit
17458limitations on field sizes have been removed.  Both BufferFields
17459and (Operation) RegionFields are now supported by the same field
17460management code.
17461
17462Resource support now supports QWORD address and IO resources. The
1746316/32/64 bit address structures and the Extended IRQ structure
17464have been changed to properly handle Source Resource strings.
17465
17466A ThreadId of -1 is now used to indicate a "mutex not acquired"
17467condition internally and must never be returned by AcpiOsThreadId.
17468This reserved value was changed from 0 since Unix systems allow a
17469thread ID of 0.
17470
17471Linux:
17472
17473Driver code reorganized to enhance portability
17474
17475Added a kernel configuration option to control ACPI_DEBUG
17476
17477Fixed the EC driver to honor _GLK.
17478
17479ASL Compiler, version X2016:
17480
17481Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
17482address space was set to 0, not 0x7f as it should be.
17483
17484 ------------------------------------------
17485Summary of changes for this label: 03_13_01
17486
17487 ACPI CA Core Subsystem:
17488
17489During ACPI initialization, the _SB_._INI method is now run if
17490present.
17491
17492Notify handler fix - notifies are deferred until the parent method
17493completes execution.  This fixes the "mutex already acquired"
17494issue seen occasionally.
17495
17496Part of the "implicit conversion" rules in ACPI 2.0 have been
17497found to cause compatibility problems with existing ASL/AML.  The
17498convert "result-to-target-type" implementation has been removed
17499for stores to method Args and Locals.  Source operand conversion
17500is still fully implemented.  Possible changes to ACPI 2.0
17501specification pending.
17502
17503Fix to AcpiRsCalculatePciRoutingTableLength to return correct
17504length.
17505
17506Fix for compiler warnings for 64-bit compiles.
17507
17508 Linux:
17509
17510/proc output aligned for easier parsing.
17511
17512Release-version compile problem fixed.
17513
17514New kernel configuration options documented in Configure.help.
17515
17516IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
17517context" message.
17518
17519 OSPM:
17520
17521Power resource driver integrated with bus manager.
17522
17523Fixed kernel fault during active cooling for thermal zones.
17524
17525Source Code:
17526
17527The source code tree has been restructured.
17528
17529
17530
17531------------------------------------------
17532Summary of changes for this label: 03_02_01
17533
17534 Linux OS Services Layer (OSL):
17535
17536Major revision of all Linux-specific code.
17537
17538Modularized all ACPI-specific drivers.
17539
17540Added new thermal zone and power resource drivers.
17541
17542Revamped /proc interface (new functionality is under /proc/acpi).
17543
17544New kernel configuration options.
17545
17546 Linux known issues:
17547
17548New kernel configuration options not documented in Configure.help
17549yet.
17550
17551
17552Module dependencies not currently implemented. If used, they
17553should be loaded in this order: busmgr, power, ec, system,
17554processor, battery, ac_adapter, button, thermal.
17555
17556Modules will not load if CONFIG_MODVERSION is set.
17557
17558IBM 600E - entering S5 may reboot instead of shutting down.
17559
17560IBM 600E - Sleep button may generate "Invalid <NULL> context"
17561message.
17562
17563Some systems may fail with "execution mutex already acquired"
17564message.
17565
17566 ACPI CA Core Subsystem:
17567
17568Added a new OSL Interface, AcpiOsGetThreadId.  This was required
17569for the  deadlock detection code. Defined to return a non-zero, 32-
17570bit thread ID for the currently executing thread.  May be a non-
17571zero constant integer on single-thread systems.
17572
17573Implemented deadlock detection for internal subsystem mutexes.  We
17574may add conditional compilation for this code (debug only) later.
17575
17576ASL/AML Mutex object semantics are now fully supported.  This
17577includes multiple acquires/releases by owner and support for the
17578
17579Mutex SyncLevel parameter.
17580
17581A new "Force Release" mechanism automatically frees all ASL
17582Mutexes that have been acquired but not released when a thread
17583exits the interpreter.  This forces conformance to the ACPI spec
17584("All mutexes must be released when an invocation exits") and
17585prevents deadlocked ASL threads.  This mechanism can be expanded
17586(later) to monitor other resource acquisitions if OEM ASL code
17587continues to misbehave (which it will).
17588
17589Several new ACPI exception codes have been added for the Mutex
17590support.
17591
17592Recursive method calls are now allowed and supported (the ACPI
17593spec does in fact allow recursive method calls.)  The number of
17594recursive calls is subject to the restrictions imposed by the
17595SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
17596parameter.
17597
17598Implemented support for the SyncLevel parameter for control
17599methods (ACPI 2.0 feature)
17600
17601Fixed a deadlock problem when multiple threads attempted to use
17602the interpreter.
17603
17604Fixed a problem where the string length of a String package
17605element was not always set in a package returned from
17606AcpiEvaluateObject.
17607
17608Fixed a problem where the length of a String package element was
17609not always included in the length of the overall package returned
17610from AcpiEvaluateObject.
17611
17612Added external interfaces (Acpi*) to the ACPI debug memory
17613manager.  This manager keeps a list of all outstanding
17614allocations, and can therefore detect memory leaks and attempts to
17615free memory blocks more than once. Useful for code such as the
17616power manager, etc.  May not be appropriate for device drivers.
17617Performance with the debug code enabled is slow.
17618
17619The ACPI Global Lock is now an optional hardware element.
17620
17621 ASL Compiler Version X2015:
17622
17623Integrated changes to allow the compiler to be generated on
17624multiple platforms.
17625
17626Linux makefile added to generate the compiler on Linux
17627
17628 Source Code:
17629
17630All platform-specific headers have been moved to their own
17631subdirectory, Include/Platform.
17632
17633New source file added, Interpreter/ammutex.c
17634
17635New header file, Include/acstruct.h
17636
17637 Documentation:
17638
17639The programmer reference has been updated for the following new
17640interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
17641
17642 ------------------------------------------
17643Summary of changes for this label: 02_08_01
17644
17645Core ACPI CA Subsystem: Fixed a problem where an error was
17646incorrectly returned if the return resource buffer was larger than
17647the actual data (in the resource interfaces).
17648
17649References to named objects within packages are resolved to the
17650
17651full pathname string before packages are returned directly (via
17652the AcpiEvaluateObject interface) or indirectly via the resource
17653interfaces.
17654
17655Linux OS Services Layer (OSL):
17656
17657Improved /proc battery interface.
17658
17659
17660Added C-state debugging output and other miscellaneous fixes.
17661
17662ASL Compiler Version X2014:
17663
17664All defined method arguments can now be used as local variables,
17665including the ones that are not actually passed in as parameters.
17666The compiler tracks initialization of the arguments and issues an
17667exception if they are used without prior assignment (just like
17668locals).
17669
17670The -o option now specifies a filename prefix that is used for all
17671output files, including the AML output file.  Otherwise, the
17672default behavior is as follows:  1) the AML goes to the file
17673specified in the DSDT.  2) all other output files use the input
17674source filename as the base.
17675
17676 ------------------------------------------
17677Summary of changes for this label: 01_25_01
17678
17679Core ACPI CA Subsystem: Restructured the implementation of object
17680store support within the  interpreter.  This includes support for
17681the Store operator as well  as any ASL operators that include a
17682target operand.
17683
17684Partially implemented support for Implicit Result-to-Target
17685conversion. This is when a result object is converted on the fly
17686to the type of  an existing target object.  Completion of this
17687support is pending  further analysis of the ACPI specification
17688concerning this matter.
17689
17690CPU-specific code has been removed from the subsystem (hardware
17691directory).
17692
17693New Power Management Timer functions added
17694
17695Linux OS Services Layer (OSL): Moved system state transition code
17696to the core, fixed it, and modified  Linux OSL accordingly.
17697
17698Fixed C2 and C3 latency calculations.
17699
17700
17701We no longer use the compilation date for the version message on
17702initialization, but retrieve the version from AcpiGetSystemInfo().
17703
17704Incorporated for fix Sony VAIO machines.
17705
17706Documentation:  The Programmer Reference has been updated and
17707reformatted.
17708
17709
17710ASL Compiler:  Version X2013: Fixed a problem where the line
17711numbering and error reporting could get out  of sync in the
17712presence of multiple include files.
17713
17714 ------------------------------------------
17715Summary of changes for this label: 01_15_01
17716
17717Core ACPI CA Subsystem:
17718
17719Implemented support for type conversions in the execution of the
17720ASL  Concatenate operator (The second operand is converted to
17721match the type  of the first operand before concatenation.)
17722
17723Support for implicit source operand conversion is partially
17724implemented.   The ASL source operand types Integer, Buffer, and
17725String are freely  interchangeable for most ASL operators and are
17726converted by the interpreter  on the fly as required.  Implicit
17727Target operand conversion (where the  result is converted to the
17728target type before storing) is not yet implemented.
17729
17730Support for 32-bit and 64-bit BCD integers is implemented.
17731
17732Problem fixed where a field read on an aligned field could cause a
17733read  past the end of the field.
17734
17735New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
17736does not return a value, but the caller expects one.  (The ASL
17737compiler flags this as a warning.)
17738
17739ASL Compiler:
17740
17741Version X2011:
177421. Static typechecking of all operands is implemented. This
17743prevents the use of invalid objects (such as using a Package where
17744an Integer is required) at compile time instead of at interpreter
17745run-time.
177462. The ASL source line is printed with ALL errors and warnings.
177473. Bug fix for source EOF without final linefeed.
177484. Debug option is split into a parse trace and a namespace trace.
177495. Namespace output option (-n) includes initial values for
17750integers and strings.
177516. Parse-only option added for quick syntax checking.
177527. Compiler checks for duplicate ACPI name declarations
17753
17754Version X2012:
177551. Relaxed typechecking to allow interchangeability between
17756strings, integers, and buffers.  These types are now converted by
17757the interpreter at runtime.
177582. Compiler reports time taken by each internal subsystem in the
17759debug         output file.
17760
17761
17762 ------------------------------------------
17763Summary of changes for this label: 12_14_00
17764
17765ASL Compiler:
17766
17767This is the first official release of the compiler. Since the
17768compiler requires elements of the Core Subsystem, this label
17769synchronizes everything.
17770
17771------------------------------------------
17772Summary of changes for this label: 12_08_00
17773
17774
17775Fixed a problem where named references within the ASL definition
17776of both OperationRegions and CreateXXXFields did not work
17777properly.  The symptom was an AE_AML_OPERAND_TYPE during
17778initialization of the region/field. This is similar (but not
17779related internally) to the problem that was fixed in the last
17780label.
17781
17782Implemented both 32-bit and 64-bit support for the BCD ASL
17783functions ToBCD and FromBCD.
17784
17785Updated all legal headers to include "2000" in the copyright
17786years.
17787
17788 ------------------------------------------
17789Summary of changes for this label: 12_01_00
17790
17791Fixed a problem where method invocations within the ASL definition
17792of both OperationRegions and CreateXXXFields did not work
17793properly.  The symptom was an AE_AML_OPERAND_TYPE during
17794initialization of the region/field:
17795
17796  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
17797[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
17798(0x3005)
17799
17800Fixed a problem where operators with more than one nested
17801subexpression would fail.  The symptoms were varied, by mostly
17802AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
17803problem that has gone unnoticed until now.
17804
17805  Subtract (Add (1,2), Multiply (3,4))
17806
17807Fixed a problem where AcpiGetHandle didn't quite get fixed in the
17808previous build (The prefix part of a relative path was handled
17809incorrectly).
17810
17811Fixed a problem where Operation Region initialization failed if
17812the operation region name was a "namepath" instead of a simple
17813"nameseg". Symptom was an AE_NO_OPERAND error.
17814
17815Fixed a problem where an assignment to a local variable via the
17816indirect RefOf mechanism only worked for the first such
17817assignment.  Subsequent assignments were ignored.
17818
17819 ------------------------------------------
17820Summary of changes for this label: 11_15_00
17821
17822ACPI 2.0 table support with backwards support for ACPI 1.0 and the
178230.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
17824the AML  interpreter does NOT have support for the new 2.0 ASL
17825grammar terms at this time.
17826
17827All ACPI hardware access is via the GAS structures in the ACPI 2.0
17828FADT.
17829
17830All physical memory addresses across all platforms are now 64 bits
17831wide. Logical address width remains dependent on the platform
17832(i.e., "void *").
17833
17834AcpiOsMapMemory interface changed to a 64-bit physical address.
17835
17836The AML interpreter integer size is now 64 bits, as per the ACPI
178372.0 specification.
17838
17839For backwards compatibility with ACPI 1.0, ACPI tables with a
17840revision number less than 2 use 32-bit integers only.
17841
17842Fixed a problem where the evaluation of OpRegion operands did not
17843always resolve them to numbers properly.
17844
17845------------------------------------------
17846Summary of changes for this label: 10_20_00
17847
17848Fix for CBN_._STA issue.  This fix will allow correct access to
17849CBN_ OpRegions when the _STA returns 0x8.
17850
17851Support to convert ACPI constants (Ones, Zeros, One) to actual
17852values before a package object is returned
17853
17854Fix for method call as predicate to if/while construct causing
17855incorrect if/while behavior
17856
17857Fix for Else block package lengths sometimes calculated wrong (if
17858block > 63 bytes)
17859
17860Fix for Processor object length field, was always zero
17861
17862Table load abort if FACP sanity check fails
17863
17864Fix for problem with Scope(name) if name already exists
17865
17866Warning emitted if a named object referenced cannot be found
17867(resolved) during method execution.
17868
17869
17870
17871
17872
17873------------------------------------------
17874Summary of changes for this label: 9_29_00
17875
17876New table initialization interfaces: AcpiInitializeSubsystem no
17877longer has any parameters AcpiFindRootPointer - Find the RSDP (if
17878necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
17879>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
17880AcpiLoadTables
17881
17882Note: These interface changes require changes to all existing OSDs
17883
17884The PCI_Config default address space handler is always installed
17885at the root namespace object.
17886
17887-------------------------------------------
17888Summary of changes for this label: 09_15_00
17889
17890The new initialization architecture is implemented.  New
17891interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
17892AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
17893
17894(Namespace is automatically loaded when a table is loaded)
17895
17896The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1789752 bytes to 32 bytes.  There is usually one of these for every
17898namespace object, so the memory savings is significant.
17899
17900Implemented just-in-time evaluation of the CreateField operators.
17901
17902Bug fixes for IA-64 support have been integrated.
17903
17904Additional code review comments have been implemented
17905
17906The so-called "third pass parse" has been replaced by a final walk
17907through the namespace to initialize all operation regions (address
17908spaces) and fields that have not yet been initialized during the
17909execution of the various _INI and REG methods.
17910
17911New file - namespace/nsinit.c
17912
17913-------------------------------------------
17914Summary of changes for this label: 09_01_00
17915
17916Namespace manager data structures have been reworked to change the
17917primary  object from a table to a single object.  This has
17918resulted in dynamic memory  savings of 3X within the namespace and
179192X overall in the ACPI CA subsystem.
17920
17921Fixed problem where the call to AcpiEvFindPciRootBuses was
17922inadvertently left  commented out.
17923
17924Reduced the warning count when generating the source with the GCC
17925compiler.
17926
17927Revision numbers added to each module header showing the
17928SourceSafe version of the file.  Please refer to this version
17929number when giving us feedback or comments on individual modules.
17930
17931The main object types within the subsystem have been renamed to
17932clarify their  purpose:
17933
17934ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
17935ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
17936ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
17937
17938NOTE: no changes to the initialization sequence are included in
17939this label.
17940
17941-------------------------------------------
17942Summary of changes for this label: 08_23_00
17943
17944Fixed problem where TerminateControlMethod was being called
17945multiple times per  method
17946
17947Fixed debugger problem where single stepping caused a semaphore to
17948be  oversignalled
17949
17950Improved performance through additional parse object caching -
17951added  ACPI_EXTENDED_OP type
17952
17953-------------------------------------------
17954Summary of changes for this label: 08_10_00
17955
17956Parser/Interpreter integration:  Eliminated the creation of
17957complete parse trees  for ACPI tables and control methods.
17958Instead, parse subtrees are created and  then deleted as soon as
17959they are processed (Either entered into the namespace or  executed
17960by the interpreter).  This reduces the use of dynamic kernel
17961memory  significantly. (about 10X)
17962
17963Exception codes broken into classes and renumbered.  Be sure to
17964recompile all  code that includes acexcep.h.  Hopefully we won't
17965have to renumber the codes  again now that they are split into
17966classes (environment, programmer, AML code,  ACPI table, and
17967internal).
17968
17969Fixed some additional alignment issues in the Resource Manager
17970subcomponent
17971
17972Implemented semaphore tracking in the AcpiExec utility, and fixed
17973several places  where mutexes/semaphores were being unlocked
17974without a corresponding lock  operation.  There are no known
17975semaphore or mutex "leaks" at this time.
17976
17977Fixed the case where an ASL Return operator is used to return an
17978unnamed  package.
17979
17980-------------------------------------------
17981Summary of changes for this label: 07_28_00
17982
17983Fixed a problem with the way addresses were calculated in
17984AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
17985manifested itself when a Field was  created with WordAccess or
17986DwordAccess, but the field unit defined within the  Field was less
17987
17988than a Word or Dword.
17989
17990Fixed a problem in AmlDumpOperands() module's loop to pull
17991operands off of the  operand stack to display information. The
17992problem manifested itself as a TLB  error on 64-bit systems when
17993accessing an operand stack with two or more  operands.
17994
17995Fixed a problem with the PCI configuration space handlers where
17996context was  getting confused between accesses. This required a
17997change to the generic address  space handler and address space
17998setup definitions. Handlers now get both a  global handler context
17999(this is the one passed in by the user when executing
18000AcpiInstallAddressSpaceHandler() and a specific region context
18001that is unique to  each region (For example, the _ADR, _SEG and
18002_BBN values associated with a  specific region). The generic
18003function definitions have changed to the  following:
18004
18005typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18006UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18007*HandlerContext, // This used to be void *Context void
18008*RegionContext); // This is an additional parameter
18009
18010typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18011RegionHandle, UINT32 Function, void *HandlerContext,  void
18012**RegionContext); // This used to be **ReturnContext
18013
18014-------------------------------------------
18015Summary of changes for this label: 07_21_00
18016
18017Major file consolidation and rename.  All files within the
18018interpreter have been  renamed as well as most header files.  This
18019was done to prevent collisions with  existing files in the host
18020OSs -- filenames such as "config.h" and "global.h"  seem to be
18021quite common.  The VC project files have been updated.  All
18022makefiles  will require modification.
18023
18024The parser/interpreter integration continues in Phase 5 with the
18025implementation  of a complete 2-pass parse (the AML is parsed
18026twice) for each table;  This  avoids the construction of a huge
18027parse tree and therefore reduces the amount of  dynamic memory
18028required by the subsystem.  Greater use of the parse object cache
18029means that performance is unaffected.
18030
18031Many comments from the two code reviews have been rolled in.
18032
18033The 64-bit alignment support is complete.
18034
18035-------------------------------------------
18036Summary of changes for this label: 06_30_00
18037
18038With a nod and a tip of the hat to the technology of yesteryear,
18039we've added  support in the source code for 80 column output
18040devices.  The code is now mostly  constrained to 80 columns or
18041less to support environments and editors that 1)  cannot display
18042or print more than 80 characters on a single line, and 2) cannot
18043disable line wrapping.
18044
18045A major restructuring of the namespace data structure has been
18046completed.  The  result is 1) cleaner and more
18047understandable/maintainable code, and 2) a  significant reduction
18048in the dynamic memory requirement for each named ACPI  object
18049(almost half).
18050
18051-------------------------------------------
18052Summary of changes for this label: 06_23_00
18053
18054Linux support has been added.  In order to obtain approval to get
18055the ACPI CA  subsystem into the Linux kernel, we've had to make
18056quite a few changes to the  base subsystem that will affect all
18057users (all the changes are generic and OS- independent).  The
18058effects of these global changes have been somewhat far  reaching.
18059Files have been merged and/or renamed and interfaces have been
18060renamed.   The major changes are described below.
18061
18062Osd* interfaces renamed to AcpiOs* to eliminate namespace
18063pollution/confusion  within our target kernels.  All OSD
18064interfaces must be modified to match the new  naming convention.
18065
18066Files merged across the subsystem.  A number of the smaller source
18067and header  files have been merged to reduce the file count and
18068increase the density of the  existing files.  There are too many
18069to list here.  In general, makefiles that  call out individual
18070files will require rebuilding.
18071
18072Interpreter files renamed.  All interpreter files now have the
18073prefix am*  instead of ie* and is*.
18074
18075Header files renamed:  The acapi.h file is now acpixf.h.  The
18076acpiosd.h file is  now acpiosxf.h.  We are removing references to
18077the acronym "API" since it is  somewhat windowsy. The new name is
18078"external interface" or xface or xf in the  filenames.j
18079
18080
18081All manifest constants have been forced to upper case (some were
18082mixed case.)   Also, the string "ACPI_" has been prepended to many
18083(not all) of the constants,  typedefs, and structs.
18084
18085The globals "DebugLevel" and "DebugLayer" have been renamed
18086"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18087
18088All other globals within the subsystem are now prefixed with
18089"AcpiGbl_" Internal procedures within the subsystem are now
18090prefixed with "Acpi" (with only  a few exceptions).  The original
18091two-letter abbreviation for the subcomponent  remains after "Acpi"
18092- for example, CmCallocate became AcpiCmCallocate.
18093
18094Added a source code translation/conversion utility.  Used to
18095generate the Linux  source code, it can be modified to generate
18096other types of source as well. Can  also be used to cleanup
18097existing source by removing extraneous spaces and blank  lines.
18098Found in tools/acpisrc/*
18099
18100OsdUnMapMemory was renamed to OsdUnmapMemory and then
18101AcpiOsUnmapMemory.  (UnMap  became Unmap).
18102
18103A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18104When set to  one, this indicates that the caller wants to use the
18105
18106semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18107both types.  However, implementers of this  call may want to use
18108different OS primitives depending on the type of semaphore
18109requested.  For example, some operating systems provide separate
18110
18111"mutex" and  "semaphore" interfaces - where the mutex interface is
18112much faster because it  doesn't have all the overhead of a full
18113semaphore implementation.
18114
18115Fixed a deadlock problem where a method that accesses the PCI
18116address space can  block forever if it is the first access to the
18117space.
18118
18119-------------------------------------------
18120Summary of changes for this label: 06_02_00
18121
18122Support for environments that cannot handle unaligned data
18123accesses (e.g.  firmware and OS environments devoid of alignment
18124handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18125been added (via configurable macros) in  these three areas: -
18126Transfer of data from the raw AML byte stream is done via byte
18127moves instead of    word/dword/qword moves. - External objects are
18128aligned within the user buffer, including package   elements (sub-
18129objects). - Conversion of name strings to UINT32 Acpi Names is now
18130done byte-wise.
18131
18132The Store operator was modified to mimic Microsoft's
18133implementation when storing  to a Buffer Field.
18134
18135Added a check of the BM_STS bit before entering C3.
18136
18137The methods subdirectory has been obsoleted and removed.  A new
18138file, cmeval.c  subsumes the functionality.
18139
18140A 16-bit (DOS) version of AcpiExec has been developed.  The
18141makefile is under  the acpiexec directory.
18142